/* Casino — saldo virtual + juegos provably fair. Reusa tokens de index.css. */

/* página scrolleable: el juego ocupa ~1 pantalla y el panel de abajo asoma (estilo Shuffle) */
/* overflow-x: CLIP (no hidden): clipea el desborde horizontal igual que hidden PERO no
   crea un contenedor de scroll → no rompe el position:sticky de la barra de saldo mobile.
   Con `hidden` el body se volvía scroll-container y la barra no quedaba fija al bajar. */
html, body { height: auto; min-height: 100%; overflow-x: clip; }

.casino { position: relative; z-index: 2; }

/* ==================== GATE (sin login) ==================== */
.casino-gate {
  min-height: calc(100vh - var(--topbar-h));
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 18px;
  text-align: center;
  padding: 24px;
}
.casino-gate .gate-emoji { font-size: 64px; }
.casino-gate h1 {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 40px;
  letter-spacing: 4px;
}
.casino-gate p { color: var(--text-dim); max-width: 420px; line-height: 1.6; }
.casino-gate .gate-login {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: 'Bebas Neue', sans-serif; font-size: 20px; letter-spacing: 2px;
  text-decoration: none; color: #0a0a0e;
  background: #53fc18; padding: 12px 30px; border-radius: 999px;
  box-shadow: 0 6px 24px rgba(83, 252, 24, 0.35);
}

/* ==================== SHELL (grilla: izq | [juego / panel] | der) ==================== */
/* Página scrolleable estilo Shuffle: el juego (columna del medio) ocupa ~1 pantalla
   y el panel inferior queda asomando debajo. Las columnas laterales son STICKY:
   quedan pegadas arriba mientras scrolleás el centro. */
.casino-shell {
  display: grid;
  grid-template-columns: 170px minmax(0, 1fr) 258px;
  gap: 14px;
  max-width: 1500px;
  margin: 0 auto;
  padding: 14px;
  align-items: start; /* clave: los laterales toman su alto de contenido y hacen sticky */
}

/* IZQUIERDA: lista de originales (sticky) */
.casino-side {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 9px;
  padding: 12px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  position: sticky;
  top: 14px;
  max-height: calc(100vh - 28px);
  overflow-y: auto;
}

/* CENTRO: juego (alto ~1 pantalla) + panel inferior asomando */
.casino-center {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.side-title {
  font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 2px;
  color: var(--text-dim); padding: 4px 8px 8px;
}

/* DERECHA: saldo + rakeback (sticky) */
.casino-right {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 9px;
  padding: 14px;
  position: sticky;
  top: 14px;
  max-height: calc(100vh - 28px);
  overflow-y: auto;
}

/* cada item del panel derecho en su propio recuadro, con aire entre ellos */
.bal-card { text-align: center; display: flex; flex-direction: column; gap: 14px; }
.bal-top {
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid var(--border);
  border-radius: 9px;
  padding: 16px 12px 14px;
}
.bal-label { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 2px; color: var(--text-dim); }
.bal-amount {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 40px;
  line-height: 1.1;
  color: var(--gold);
  margin: 4px 0 0;
  transition: transform 0.15s;
  display: inline-flex; align-items: center; gap: 9px;   /* moneda centrada con el número */
}
.bal-amount.bump { transform: scale(1.12); }
.bal-amount .coin { font-size: 36px; }

/* Bob Coin como imagen (NO depende de la fuente de emoji, se ve en todos los
   dispositivos). Se dimensiona con font-size: 1em = diámetro. El círculo recorta
   las esquinas oscuras de la imagen. */
.coin {
  display: inline-block; width: 1em; height: 1em; vertical-align: -0.16em;
  border-radius: 50%;
  background: url('/img/bobcoin.png') center / cover no-repeat;
  box-shadow: 0 1px 2px rgba(0,0,0,0.4);
}
.pf-btn {
  width: 100%;
  font-family: 'JetBrains Mono', monospace; font-size: 12px; letter-spacing: 1px;
  color: #d8d8de; background: rgba(255,255,255,0.04);
  border: 1px solid var(--border); border-radius: 11px; padding: 12px;
  cursor: pointer; transition: all 0.15s;
}
.pf-btn:hover { color: #fff; border-color: var(--border-hot); background: rgba(255,255,255,0.07); }
.pf-btn.off { opacity: 0.55; }

.dev-box { display: flex; gap: 6px; }
.dev-box input { flex: 1; min-width: 0; background: var(--bg-1); border: 1px solid var(--border); border-radius: 6px; color: #fff; padding: 6px; font-size: 12px; }
.dev-box button { background: var(--gold); color: #000; border: none; border-radius: 6px; padding: 6px 10px; font-weight: 800; cursor: pointer; font-size: 12px; }

.game-list { display: flex; flex-direction: column; gap: 6px; }
.game-item {
  display: flex; align-items: center; justify-content: space-between;
  font-family: 'Bebas Neue', sans-serif; font-size: 18px; letter-spacing: 2px;
  color: var(--text-dim); background: transparent;
  border: 1px solid transparent; border-radius: 10px; padding: 11px 14px;
  cursor: pointer; transition: all 0.15s; text-align: left;
}
.game-item:hover:not(:disabled) { color: #fff; background: rgba(255,255,255,0.03); }
.game-item.active { color: #fff; background: rgba(255, 26, 60, 0.13); border-color: var(--border-hot); }
.game-item:disabled { opacity: 0.4; cursor: not-allowed; }
.game-item .soon {
  font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 1px;
  padding: 2px 6px; border-radius: 999px; background: rgba(255,201,64,0.14); color: var(--gold);
}

/* ==================== CENTRO: el juego (stage estilo Shuffle) ==================== */
.casino-main {
  /* alto contenido tipo Shuffle (no pantalla completa): el panel de abajo asoma.
     El fondo/borde/sombra viven en .casino-stage (que envuelve juego + barra). */
  height: min(calc(100vh - var(--topbar-h) - 32px), 720px);
  min-height: 520px;
  min-width: 0; overflow: hidden; flex-shrink: 0;
}
.pane { height: 100%; display: none; }
.pane.active { display: flex; }
/* zona de juego: un punto más clara que los controles, como el "stage" de Shuffle */
.pk-board { background: rgba(255, 255, 255, 0.022); }

/* ==================== PLINKO ==================== */
#pane-plinko { gap: 0; }
.pk-controls {
  width: 280px; flex-shrink: 0;
  padding: 18px; display: flex; flex-direction: column; gap: 14px;
  border-right: 1px solid var(--border);
  /* si el panel supera el alto del stage (p. ej. modo auto con muchos campos),
     scrollea acá adentro en vez de recortarse contra el overflow:hidden del stage */
  overflow-y: auto; min-height: 0;
}
.pk-field label {
  display: block; font-family: 'JetBrains Mono', monospace; font-size: 12px;
  letter-spacing: 1px; color: #c9c9d2; margin-bottom: 8px; font-weight: 600;
}
.seg { display: flex; gap: 6px; }
.seg button {
  flex: 1; font-family: 'Bebas Neue', sans-serif; font-size: 17px; letter-spacing: 1px;
  color: #e8e8ee; background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.13);
  border-radius: 8px; padding: 10px 0; cursor: pointer; transition: all 0.15s;
}
.seg button:hover { color: #fff; background: rgba(255, 255, 255, 0.09); border-color: var(--border-hot); }
.seg button.on[data-risk="low"]    { color: var(--green); border-color: var(--green); }
.seg button.on[data-risk="classic"]{ color: #fff; border-color: var(--border-hot); }
.seg button.on[data-risk="medium"] { color: #ff9b3d; border-color: #ff9b3d; }
.seg button.on[data-risk="high"]   { color: var(--red); border-color: var(--red); }

/* Dificultad de Keno: dropdown (reemplaza los botones .seg; ahora muestra la selección
   y deja lugar para más niveles). color-scheme + option oscuras para que el popup no sea blanco. */
.kn-risk {
  width: 100%; box-sizing: border-box; cursor: pointer; color-scheme: dark;
  appearance: none; -webkit-appearance: none; -moz-appearance: none;
  font-family: 'Bebas Neue', sans-serif; font-size: 18px; letter-spacing: 1px; color: #fff;
  /* chevron custom (SVG inline) en vez de la flecha nativa fea */
  background: rgba(255, 255, 255, 0.05)
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E")
    no-repeat right 12px center;
  border: 1px solid rgba(255, 255, 255, 0.13);
  border-radius: 8px; padding: 10px 36px 10px 12px; transition: border-color 0.15s;
}
.kn-risk:hover, .kn-risk:focus { outline: none; border-color: var(--border-hot); }
.kn-risk:disabled { opacity: 0.5; cursor: default; }
.kn-risk option { background: var(--bg-1); color: #fff; }

.rows-row { display: flex; align-items: center; gap: 12px; }
.rows-row input[type=range] { flex: 1; accent-color: var(--red); }
.rows-val {
  font-family: 'Bebas Neue', sans-serif; font-size: 22px; min-width: 30px; text-align: center; color: #fff;
}

.bet-input { display: flex; gap: 6px; }
.bet-input input {
  flex: 1; min-width: 0; background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: 8px; color: #fff; padding: 11px 12px; font-family: 'JetBrains Mono', monospace; font-size: 16px; font-weight: 700;
}
.bet-input input:focus { outline: none; border-color: var(--border-hot); }
.bet-input button {
  background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.13); border-radius: 8px;
  color: #e8e8ee; padding: 0 13px; cursor: pointer; font-size: 14px; font-weight: 700;
}
.bet-input button:hover { color: #fff; background: rgba(255, 255, 255, 0.09); border-color: var(--border-hot); }

.bet-btn {
  font-family: 'Bebas Neue', sans-serif; font-size: 24px; letter-spacing: 3px;
  color: #fff; background: linear-gradient(135deg, var(--red), var(--red-deep));
  border: none; border-radius: 12px; padding: 16px; cursor: pointer;
  box-shadow: 0 6px 24px var(--red-glow); transition: all 0.15s;
}
.bet-btn:hover { transform: translateY(-1px); }
.bet-btn:active { transform: translateY(1px); }
.bet-btn:disabled { opacity: 0.5; cursor: not-allowed; box-shadow: none; transform: none; }
/* modo libre: apuesta 0, se juega gratis. Look sobrio (no el rojo de plata real). */
.bet-btn.free { background: linear-gradient(135deg, #2b6f6a, #1e4f57); box-shadow: 0 6px 24px rgba(43, 111, 106, 0.35); }

.pk-hint { font-family: 'JetBrains Mono', monospace; font-size: 11px; color: #8e8e98; line-height: 1.55; }

/* ==================== MODO AUTO ==================== */
/* toggle Manual / Auto arriba de los controles */
.mode-toggle { display: flex; gap: 6px; background: rgba(255,255,255,0.04); border: 1px solid var(--border); border-radius: 10px; padding: 4px; }
.mode-btn {
  flex: 1; font-family: 'Bebas Neue', sans-serif; font-size: 16px; letter-spacing: 1px;
  color: var(--text-dim); background: transparent; border: none; border-radius: 7px;
  padding: 8px 0; cursor: pointer; transition: all 0.15s;
}
.mode-btn:hover { color: #fff; }
.mode-btn.on { color: #fff; background: rgba(255, 26, 60, 0.16); }
.mode-toggle.locked { opacity: 0.5; pointer-events: none; }

.auto-block { display: flex; flex-direction: column; gap: 14px; }
.auto-inf {
  background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.13); border-radius: 8px;
  color: #e8e8ee; padding: 0 13px; cursor: pointer; font-size: 17px; font-weight: 700;
}
.auto-inf:hover { color: #fff; border-color: var(--border-hot); }
.auto-cfg {
  font-family: 'JetBrains Mono', monospace; font-size: 13px; font-weight: 700; color: #d8d8de;
  background: rgba(255,255,255,0.04); border: 1px solid var(--border); border-radius: 10px;
  padding: 12px; cursor: pointer; transition: all 0.15s;
}
.auto-cfg:hover { color: #fff; border-color: var(--border-hot); background: rgba(255,255,255,0.07); }

/* botón iniciar/detener autoapuesta */
.auto-start { background: linear-gradient(135deg, var(--red), var(--red-deep)); box-shadow: 0 6px 24px var(--red-glow); }
.auto-start.stop { background: linear-gradient(135deg, var(--red), var(--red-deep)); box-shadow: 0 6px 24px var(--red-glow); }

/* dificultad bloqueada durante una ronda/autoapuesta */
.seg.locked { opacity: 0.45; pointer-events: none; }
input[type=range]:disabled { opacity: 0.45; }

/* modal Configurar Auto (reusa .pf-modal / .pf-card) */
.auto-card { max-width: 480px; }
.auto-row { margin-bottom: 16px; }
.auto-row > label {
  display: block; font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 1px;
  color: var(--text-dim); margin-bottom: 7px;
}
.auto-seg { display: flex; gap: 6px; align-items: stretch; }
.auto-seg button {
  font-family: 'Bebas Neue', sans-serif; font-size: 16px; letter-spacing: 1px;
  color: #e8e8ee; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.13);
  border-radius: 8px; padding: 9px 16px; cursor: pointer; transition: all 0.15s;
}
.auto-seg button:hover { color: #fff; border-color: var(--border-hot); }
.auto-seg button.on { color: #fff; background: rgba(226,17,46,0.20); border-color: var(--red); }
.auto-pct { flex: 1; display: flex; align-items: center; gap: 4px; justify-content: flex-end; }
.auto-pct input {
  width: 80px; background: var(--bg-1); border: 1px solid var(--border); border-radius: 8px;
  color: #fff; padding: 9px; font-family: 'JetBrains Mono', monospace; font-size: 14px; font-weight: 700; text-align: right;
}
.auto-pct input:disabled { opacity: 0.4; }
.auto-pct span { color: var(--text-dim); font-family: 'JetBrains Mono', monospace; font-size: 13px; }
.auto-stop {
  width: 100%; background: var(--bg-1); border: 1px solid var(--border); border-radius: 8px;
  color: #fff; padding: 11px; font-family: 'JetBrains Mono', monospace; font-size: 15px; font-weight: 700;
}
.auto-stop:focus, .auto-pct input:focus { outline: none; border-color: var(--border-hot); }

.pk-board {
  flex: 1; min-width: 0; position: relative;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 20px;
}
#pkCanvas { max-width: 100%; max-height: 100%; }

.pk-sound {
  position: absolute; top: 14px; left: 16px; z-index: 3;
  background: rgba(255,255,255,0.04); border: 1px solid var(--border);
  border-radius: 8px; padding: 6px 10px; cursor: pointer; font-size: 15px;
  transition: all 0.15s;
}
.pk-sound:hover { border-color: var(--border-hot); }
.pk-sound.off { opacity: 0.45; }

/* últimas caídas: columna de chips de multiplicador a la derecha del tablero
   (dentro del card, estilo Shuffle). El más reciente arriba. */
.pk-recent {
  position: absolute; top: 14px; right: 12px; z-index: 3;
  display: flex; flex-direction: column; gap: 6px;
  pointer-events: none;
}
.pk-recent .pk-chip {
  font-family: 'JetBrains Mono', monospace; font-weight: 800; font-size: 12px;
  color: #160e05; text-align: center;
  min-width: 44px; padding: 5px 8px; border-radius: 7px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.35);
  animation: chipIn 0.18s ease;
}
@keyframes chipIn { from { opacity: 0; transform: translateX(14px); } to { opacity: 1; transform: none; } }
/* chips de Dice/Limbo: verde si ganaste, neutro si perdiste (color por clase, no inline) */
.pk-chip.win { background: var(--green); color: #042b15; }
.pk-chip.loss { background: var(--panel-solid); color: #cfcfd6; border: 1px solid var(--border); box-shadow: none; }

.pk-tip {
  position: absolute; z-index: 5; pointer-events: none;
  background: var(--panel-solid); border: 1px solid var(--border-hot);
  border-radius: 8px; padding: 7px 10px; transform: translate(-50%, -130%);
  font-family: 'JetBrains Mono', monospace; font-size: 12px; white-space: nowrap;
  box-shadow: 0 6px 20px rgba(0,0,0,0.5);
}
.pk-tip .tip-mult { color: #fff; font-weight: 700; }
.pk-tip .tip-chance { color: var(--text-dim); }

/* ==================== TOASTS ==================== */
.toast-wrap { position: fixed; top: 78px; right: 18px; z-index: 50; display: flex; flex-direction: column; gap: 8px; }
.toast {
  font-family: 'JetBrains Mono', monospace; font-size: 13px; font-weight: 700;
  padding: 10px 16px; border-radius: 10px; backdrop-filter: blur(8px);
  border: 1px solid var(--border); animation: toastIn 0.2s ease;
}
.toast.win  { color: var(--green); background: rgba(0,230,118,0.12); border-color: rgba(0,230,118,0.4); }
.toast.loss { color: var(--text-dim); background: rgba(255,255,255,0.04); }
@keyframes toastIn { from { opacity: 0; transform: translateX(20px); } to { opacity: 1; transform: none; } }

/* ==================== PF MODAL ==================== */
.pf-modal {
  position: fixed; inset: 0; z-index: 100;
  background: rgba(0,0,0,0.7); backdrop-filter: blur(4px);
  display: flex; align-items: center; justify-content: center; padding: 20px;
}
.pf-modal .pf-card {
  background: var(--panel-solid); border: 1px solid var(--border-hot);
  border-radius: 9px; padding: 26px; max-width: 520px; width: 100%;
  /* No pasar del alto de pantalla (mobile con varias tarjetas) → scroll interno. */
  max-height: calc(100vh - 40px); max-height: calc(100dvh - 40px); overflow-y: auto;
  /* el scroll del modal NO se encadena al fondo (no arrastra la página de atrás). */
  overscroll-behavior: contain;
}
/* Con el menú abierto, el fondo queda clavado (solo scrollea el menú). */
body.menu-open { overflow: hidden; }
.pf-card h2 { font-family: 'Bebas Neue', sans-serif; font-size: 26px; letter-spacing: 2px; margin-bottom: 6px; }
.pf-card .pf-sub { color: var(--text-dim); font-size: 13px; line-height: 1.5; margin-bottom: 18px; }
.pf-row { margin-bottom: 14px; }
.pf-row label { display: block; font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 1px; color: var(--text-dim); margin-bottom: 5px; }
.pf-row .mono { font-family: 'JetBrains Mono', monospace; font-size: 12px; word-break: break-all; color: #fff; background: var(--bg-1); border: 1px solid var(--border); border-radius: 8px; padding: 9px; }
.pf-row input.mono { width: 100%; }
.pf-actions { display: flex; gap: 10px; margin-top: 18px; }
.pf-actions button {
  flex: 1; font-family: 'Bebas Neue', sans-serif; font-size: 16px; letter-spacing: 2px;
  border-radius: 10px; padding: 11px; cursor: pointer; border: 1px solid var(--border);
}
.pf-actions .rotate { color: #fff; background: linear-gradient(135deg, var(--red), var(--red-deep)); border: none; }
.pf-actions .close { color: var(--text-dim); background: transparent; }
.pf-revealed { margin-top: 16px; padding: 12px; border-radius: 10px; background: rgba(0,230,118,0.06); border: 1px solid rgba(0,230,118,0.25); }
.pf-revealed .lbl { font-family: 'JetBrains Mono', monospace; font-size: 10px; color: var(--green); letter-spacing: 1px; }
.pf-revealed .val { font-family: 'JetBrains Mono', monospace; font-size: 11px; word-break: break-all; color: #fff; margin-top: 3px; }

/* modal confirmar "max" (apostar TODO el saldo): contenido centrado + botón rojo a lo ancho */
.maxbet-card { text-align: center; max-width: 440px; }
.maxbet-card .pf-sub { margin-bottom: 20px; }
.maxbet-card #maxBetGo { display: block; width: 100%; }

/* ==================== KENO ==================== */
.kn-board-wrap { gap: 18px; }
.kn-actions { display: flex; gap: 8px; }
.kn-actions button {
  flex: 1; background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.13); border-radius: 8px;
  color: #e8e8ee; padding: 10px 0; cursor: pointer; font-size: 14px; font-weight: 700;
}
.kn-actions button:hover { color: #fff; background: rgba(255, 255, 255, 0.09); border-color: var(--border-hot); }
/* durante una ronda (revelado/auto) los controles quedan deshabilitados y atenuados */
.kn-actions button:disabled, .bet-input button:disabled {
  opacity: 0.4; cursor: not-allowed; pointer-events: none;
}

.kn-grid {
  display: grid; grid-template-columns: repeat(8, 1fr); gap: 8px;   /* aire entre celdas (estilo Shuffle) */
  width: min(100%, 720px);                                          /* un poco más chico */
}
.keno-cell {
  aspect-ratio: 1; display: flex; align-items: center; justify-content: center;
  font-family: 'JetBrains Mono', monospace; font-weight: 800; font-size: clamp(16px, 2.4vw, 26px);
  background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 10px;
  color: #fff; cursor: pointer; transition: transform 0.1s, background 0.15s, color 0.15s, box-shadow 0.15s;
  user-select: none;
}
.keno-cell:hover { background: rgba(255, 255, 255, 0.1); border-color: var(--border-hot); transform: translateY(-1px); }
.keno-cell.selected { background: linear-gradient(135deg, var(--red), var(--red-deep)); color: #fff; border-color: transparent; box-shadow: 0 4px 16px var(--red-glow); }
/* sorteado pero NO elegido: bolita clara y bien marcada (antes era solo una línea fina) */
.keno-cell.drawn {
  background: rgba(255, 255, 255, 0.22); border-color: rgba(255, 255, 255, 0.7); color: #fff;
  box-shadow: 0 0 14px rgba(255, 255, 255, 0.28); transform: scale(1.04);
}
/* acierto (elegido Y sorteado): verde, gana a todo lo demás */
.keno-cell.hit {
  background: linear-gradient(135deg, var(--green), #00a152); color: #042b15; border-color: transparent;
  box-shadow: 0 0 22px rgba(0, 230, 118, 0.65); transform: scale(1.1);
}
.keno-cell.disabled { opacity: 0.5; pointer-events: none; }

/* tabla de pagos estilo Shuffle: caja de multiplicador arriba + "Nx 💎" abajo */
.kn-paytable { display: flex; gap: 6px; justify-content: center; width: min(100%, 720px); }
.kn-pay { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 5px; text-align: center; }
.kn-pay-mult {
  font-family: 'JetBrains Mono', monospace; font-weight: 800; font-size: 12px; color: #fff;
  background: var(--panel-solid); border: 1px solid var(--border); border-radius: 8px;
  padding: 9px 4px; transition: all 0.15s; white-space: nowrap;
}
.kn-pay-hits {
  font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 700; color: var(--text-dim);
  display: flex; align-items: center; justify-content: center; gap: 4px;
}
.kn-gem {
  width: 9px; height: 9px; border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #8effc0, #16c264);
  box-shadow: 0 0 5px rgba(22, 194, 100, 0.6); display: inline-block;
}
/* fila ganadora: la caja del multiplicador acertado se prende en verde */
.kn-pay.on .kn-pay-mult {
  border-color: var(--green); background: rgba(0, 230, 118, 0.16); color: var(--green);
  box-shadow: 0 0 16px rgba(0, 230, 118, 0.35); transform: translateY(-2px);
}
.kn-pay.on .kn-pay-hits { color: var(--green); }
/* barra/selector de estado (cuando no hay números elegidos): caja oscura full-width
   centrada, estilo Shuffle ("Seleccione 1-10 números para jugar"). */
.kn-pay-msg {
  color: var(--text-dim); font-size: 13px; text-align: center; width: 100%;
  padding: 18px 16px; background: var(--panel-solid);
  border: 1px solid var(--border); border-radius: 6px;
}
/* mobile: con 11 casillas (0..10 aciertos) el ancho por celda es chico y los
   multiplicadores largos ("100x", "1000x") se salían de la caja. Achicamos fuente,
   padding y gap para que SIEMPRE entren. */
@media (max-width: 620px) {
  .kn-paytable { gap: 3px; }
  .kn-pay-mult { font-size: 9px; padding: 7px 1px; letter-spacing: -0.4px; }
  .kn-pay-hits { font-size: 9px; gap: 2px; }
  .kn-gem { width: 7px; height: 7px; }
}

/* ==================== MINES ==================== */
.mn-grid {
  display: grid; grid-template-columns: repeat(5, 1fr); grid-template-rows: repeat(5, 1fr); gap: 10px;
  width: min(94%, 540px); aspect-ratio: 1;
}
.mine-cell {
  display: flex; align-items: center; justify-content: center;
  font-size: clamp(20px, 4vw, 30px);
  background: var(--panel); border: 1px solid var(--border); border-radius: 12px;
  cursor: pointer; transition: transform 0.1s, background 0.15s;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.03);
}
.mine-cell:hover:not(.revealed) { background: rgba(255,255,255,0.06); transform: translateY(-2px); border-color: var(--border-hot); }
.mine-cell.revealed { cursor: default; }
.mine-cell.gem { background: rgba(0,230,118,0.12); border-color: rgba(0,230,118,0.4); animation: pop 0.2s ease; }
.mine-cell.mine { background: rgba(255,26,60,0.16); border-color: var(--border-hot); animation: pop 0.2s ease; }
.mine-cell.mine.hit { box-shadow: 0 0 22px var(--red-glow); }
.mine-cell.dim { opacity: 0.4; }
@keyframes pop { from { transform: scale(0.6); } to { transform: scale(1); } }
.mn-grid.locked { pointer-events: none; }

.mn-status { display: flex; gap: 10px; }
.mn-stat {
  flex: 1; background: var(--bg-1); border: 1px solid var(--border); border-radius: 10px;
  padding: 10px; text-align: center;
}
.mn-stat span { font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 1px; color: var(--text-dim); display: block; }
.mn-stat b { font-family: 'Bebas Neue', sans-serif; font-size: 22px; color: var(--gold); }
.mn-cashout { background: linear-gradient(135deg, var(--green), #00a152); box-shadow: 0 4px 20px rgba(0,230,118,0.35); }
.mn-random {
  background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.15);
  color: #e8e8ee; box-shadow: none; font-size: 18px; letter-spacing: 1px;
}
.mn-random:hover { background: rgba(255, 255, 255, 0.1); border-color: var(--border-hot); transform: translateY(-1px); }
.mn-random:disabled { opacity: 0.5; cursor: not-allowed; }
/* casilla marcada como auto-pick (modo auto de Mines) */
/* casilla auto-pick: SOLO color (sin ◎ en el medio). Azul cian para no confundir con
   el rojo (que significa mina/malo) ni con el verde de los aciertos. */
.mine-cell.planned { background: rgba(45,182,255,0.15); border-color: #2db6ff; box-shadow: inset 0 0 0 2px rgba(45,182,255,0.5); }
/* resalte de TUS elegidas sobre el tablero ya revelado (auto) — bien marcado */
.mine-cell.pick {
  border-color: #7cd4ff !important;
  box-shadow: inset 0 0 0 3px #7cd4ff, 0 0 18px rgba(45,182,255,0.8);
  z-index: 2;
}
.mine-cell.planned { z-index: 2; }

/* ==================== TOWER ==================== */
/* Escenario: la torre a la izquierda + la waifu asomada en una "ventana" de
   castillo (todo CSS) a la derecha. Sin cuadrícula: fondo limpio con glow rojo. */
.tw-board { position: relative; }
.tw-stage {
  position: relative; width: min(96%, 680px); height: min(72vh, 580px);
  display: flex; align-items: center; justify-content: center; gap: 16px;
  padding: 18px; border-radius: 18px;
  background:
    radial-gradient(85% 65% at 50% -8%, rgba(180,18,45,0.22), transparent 60%),
    linear-gradient(180deg, #1f121a 0%, #160c12 55%, #0f090d 100%);
  border: 1px solid rgba(180,18,45,0.28);
  box-shadow: inset 0 0 90px rgba(0,0,0,0.6), 0 12px 44px rgba(0,0,0,0.55);
}
/* La torre tiene ALTURA FIJA: las 9 filas se reparten el alto por igual (flex:1),
   así mide lo mismo en cualquier dificultad. Solo cambia el ANCHO de cada ladrillo
   según las columnas (2 a 4), nunca la altura total. */
.tw-tower {
  --tw-cols: 4;
  flex: 1 1 auto; height: 100%; align-self: stretch;
  display: flex; flex-direction: column; gap: 8px;
  padding: 14px; border-radius: 14px;
  background: linear-gradient(180deg, rgba(0,0,0,0.28), rgba(0,0,0,0.45));
  border: 1px solid rgba(255,255,255,0.05);
}
.tw-row { flex: 1 1 0; min-height: 0; display: flex; align-items: stretch; gap: 12px; }
.tw-cells { flex: 1; display: grid; grid-template-columns: repeat(var(--tw-cols), 1fr); gap: 8px; }
.tw-cell {
  height: 100%; min-height: 0;
  border-radius: 9px;
  background: linear-gradient(180deg, #2b1a23, #1c1119);
  border: 1px solid rgba(255,255,255,0.05);
  background-size: auto 90%; background-repeat: no-repeat; background-position: center;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.05), inset 0 -5px 12px rgba(0,0,0,0.5);
  transition: box-shadow 0.12s, background-color 0.12s;
}
/* camino pre-elegido en modo AUTO */
.tw-cell.planned { background: rgba(0,230,118,0.16); border-color: #00e676; box-shadow: inset 0 0 0 2px rgba(0,230,118,0.55), 0 0 12px rgba(0,230,118,0.35); }
/* fila actual = jugable: SOLO cambian los ladrillos (color/borde). Nada se mueve,
   ni se anima el marco — igual que Shuffle. */
/* OJO: scopear con :not(.reveal) para NO pisarle el background-image (llave/bomba)
   a las casillas reveladas — estas reglas tienen más especificidad que .tw-cell.key. */
.tw-row.current .tw-cell:not(.reveal) { cursor: pointer; background: linear-gradient(180deg, #3c1422, #2a0e18); border-color: var(--border-hot); box-shadow: inset 0 0 0 1px rgba(180,18,45,0.55); }
.tw-row.current .tw-cell:not(.reveal):hover { background: linear-gradient(180deg, #511a2c, #38121f); box-shadow: inset 0 0 0 1px rgba(255,110,135,0.85); }
/* filas aún no jugadas (arriba) y ya subidas (abajo) */
.tw-row.locked { opacity: 0.42; }
.tw-row.done .tw-cell:not(.reveal) { background: linear-gradient(180deg, #241620, #170e15); }
/* ladrillo revelado: llave (seguro) o bomba */
.tw-cell.reveal { cursor: default; }
.tw-cell.key { background-color: rgba(0,230,118,0.22); border-color: #00e676; background-image: url('/img/tower/key.png'); box-shadow: inset 0 0 14px rgba(0,230,118,0.35), 0 0 12px rgba(0,230,118,0.3); animation: pop 0.2s ease; }
.tw-cell.bomb { background-color: rgba(180,18,45,0.38); border-color: #ff3b5c; background-image: url('/img/tower/bomb.png'); box-shadow: inset 0 0 14px rgba(255,59,92,0.4), 0 0 12px rgba(180,18,45,0.45); animation: pop 0.2s ease; }
.tw-cell.bomb.hit { box-shadow: 0 0 30px var(--red-glow), inset 0 0 16px rgba(255,59,92,0.6); }
.tw-cell.dim { opacity: 0.4; }
.tw-cell.pick { border-color: #00e676 !important; box-shadow: inset 0 0 0 2px #00e676; z-index: 2; }
.tw-tower.locked { pointer-events: none; }
.tw-rmult {
  width: 58px; flex: none; text-align: left;
  font-family: 'JetBrains Mono', monospace; font-size: 12px; color: var(--text-dim);
}
.tw-row.current .tw-rmult { color: var(--gold); font-weight: 800; }

/* la waifu en una ventana ojival de piedra (CSS), CHICA y centrada en vertical
   (≈ media altura del tablero) y recortada bien arriba (cabeza+escote) — las
   piernas/torso bajo quedan fuera, como en Shuffle. */
.tw-waifu {
  flex: 0 0 29%; max-width: 188px; align-self: center; height: 60%; position: relative;
  border-radius: 90px 90px 12px 12px; overflow: hidden;
  background: linear-gradient(180deg, #2a1620, #140b11);
  border: 3px solid #3a2731;
  box-shadow: inset 0 0 0 3px rgba(180,18,45,0.25), inset 0 -30px 50px rgba(0,0,0,0.6), 0 8px 30px rgba(0,0,0,0.5);
}
/* zoom al torso (hombros → manos), recortando cabeza-arriba y piernas — el "recuadro
   celeste" que marcó el user. transform-origin define en qué parte se centra el zoom. */
.tw-waifu img { width: 100%; height: 100%; object-fit: cover; object-position: center top; transform: scale(1.18); transform-origin: 50% 12%; display: block; }
/* repisa inferior de la ventana */
.tw-waifu::after {
  content: ''; position: absolute; left: -3px; right: -3px; bottom: 0; height: 15px;
  background: linear-gradient(180deg, #4a3340, #271a22); border-top: 2px solid rgba(180,18,45,0.45);
}

/* mini-íconos llave/bomba (dropdown de dificultad + popup) */
.tw-ic { display: inline-block; width: 16px; height: 16px; background-size: contain; background-repeat: no-repeat; background-position: center; vertical-align: middle; }
.tw-ic.key { background-image: url('/img/tower/key.png'); }
.tw-ic.bomb { background-image: url('/img/tower/bomb.png'); }

/* selector de dificultad (dropdown estilo Shuffle) */
.tw-diff { position: relative; }
.tw-diff-btn {
  width: 100%; box-sizing: border-box; display: flex; align-items: center; gap: 10px;
  background: var(--bg-1); border: 1px solid var(--border); border-radius: 8px;
  color: #fff; padding: 11px 12px; cursor: pointer; font: inherit; font-weight: 700;
}
.tw-diff-btn .tw-diff-ics { margin-left: auto; display: inline-flex; gap: 3px; }
.tw-diff-btn .tw-caret { color: var(--text-dim); transition: transform 0.15s; }
.tw-diff.open .tw-diff-btn .tw-caret { transform: rotate(180deg); }
.tw-diff-btn.locked { opacity: 0.55; pointer-events: none; }
.tw-diff-menu {
  display: none; position: absolute; top: calc(100% + 6px); left: 0; right: 0; z-index: 20;
  background: var(--panel-solid); border: 1px solid var(--border); border-radius: 10px;
  padding: 6px; box-shadow: 0 16px 44px rgba(0,0,0,0.6);
}
.tw-diff.open .tw-diff-menu { display: block; }
.tw-diff-opt {
  width: 100%; box-sizing: border-box; display: flex; align-items: center; gap: 10px;
  background: transparent; border: none; border-radius: 7px; color: #e8e8ee;
  padding: 9px 10px; cursor: pointer; font: inherit; font-weight: 700; text-align: left;
}
.tw-diff-opt .tw-diff-ics { margin-left: auto; display: inline-flex; gap: 3px; }
.tw-diff-opt:hover { background: rgba(255,255,255,0.06); }
.tw-diff-opt.on { color: #fff; background: rgba(180,18,45,0.22); }

@media (max-width: 720px) { .tw-waifu { display: none; } .tw-rmult { width: 44px; font-size: 10px; } .tw-cell { min-height: 34px; } }

/* popup centrado de ganancia por ronda (estilo Shuffle): pastilla VERDE con el
   multiplicador arriba + franja OSCURA con el monto ganado y las gemas debajo.
   Clase compartida .cz-winpop → la usan Mines (#mnWinPop) y Keno (#knWinPop). */
.cz-winpop {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  z-index: 6; pointer-events: none;
  display: flex; flex-direction: column; align-items: stretch; min-width: 132px;
  border-radius: 9px; overflow: hidden;
  box-shadow: 0 14px 44px rgba(0, 230, 118, 0.45);
  animation: winPop 0.18s ease;
}
.cz-wp-mult {
  background: var(--green); color: #042b15; text-align: center;
  font-family: 'Bebas Neue', sans-serif; font-size: 40px; line-height: 1; letter-spacing: 1px;
  padding: 12px 26px;
}
.cz-wp-stats {
  background: rgba(8, 12, 9, 0.96); text-align: center;
  display: flex; align-items: center; justify-content: center; gap: 16px; padding: 9px 18px;
  font-family: 'JetBrains Mono', monospace; font-weight: 800; font-size: 15px; color: #fff;
  border-top: 1px solid rgba(0, 230, 118, 0.4);
}
.cz-wp-amt { display: inline-flex; align-items: center; gap: 5px; }
.cz-wp-amt .coin { font-size: 16px; }
.cz-wp-gems { display: inline-flex; align-items: center; gap: 5px; color: var(--text-dim); }
.cz-wp-dot {
  width: 11px; height: 11px; border-radius: 50%; display: inline-block;
  background: radial-gradient(circle at 35% 30%, #8effc0, #16c264);
  box-shadow: 0 0 6px rgba(22, 194, 100, 0.6);
}
/* Variantes del punto para el popup de la ruleta (color del número ganador). */
.cz-wp-dot.red   { background: radial-gradient(circle at 35% 30%, #ff7a90, #d4133a); box-shadow: 0 0 6px rgba(212,19,58,0.6); }
.cz-wp-dot.black { background: radial-gradient(circle at 35% 30%, #5a5a66, #1c1c22); box-shadow: 0 0 6px rgba(0,0,0,0.6); }
@keyframes winPop { from { opacity: 0; transform: translate(-50%, -50%) scale(0.7); } to { opacity: 1; transform: translate(-50%, -50%) scale(1); } }

/* ==================== DICE ==================== */
.dc-board { flex-direction: column; gap: 26px; padding: 30px 40px; justify-content: center; }
.dc-result { font-family: 'Bebas Neue', sans-serif; font-size: 56px; line-height: 1; color: var(--text-dim); min-height: 56px; }
.dc-result.win { color: var(--green); text-shadow: 0 0 22px rgba(0,230,118,0.4); }
.dc-result.loss { color: var(--red); }
.dc-slidewrap { position: relative; width: min(100%, 620px); height: 40px; display: flex; align-items: center; }
.dc-bar { position: relative; width: 100%; height: 12px; border-radius: 999px; background: var(--red); overflow: hidden; }
.dc-bar-win { position: absolute; top: 0; bottom: 0; right: 0; left: 50%; background: var(--green); }
.dc-range {
  position: absolute; left: 0; width: 100%; margin: 0; height: 40px; background: transparent;
  -webkit-appearance: none; appearance: none; cursor: pointer;
}
.dc-range::-webkit-slider-thumb {
  -webkit-appearance: none; appearance: none; width: 16px; height: 34px; border-radius: 6px;
  background: linear-gradient(180deg, #fff, #c9c9d6); border: 1px solid #888; box-shadow: 0 2px 8px rgba(0,0,0,0.5);
}
.dc-range::-moz-range-thumb {
  width: 16px; height: 34px; border-radius: 6px; background: linear-gradient(180deg, #fff, #c9c9d6); border: 1px solid #888;
}
.dc-marker {
  position: absolute; top: -32px; transform: translateX(-50%); z-index: 4; pointer-events: none;
  font-family: 'JetBrains Mono', monospace; font-weight: 800; font-size: 13px; color: #160e05;
  background: #fff; padding: 3px 8px; border-radius: 6px; white-space: nowrap;
}
.dc-marker::after { content: ''; position: absolute; left: 50%; bottom: -5px; transform: translateX(-50%); border: 5px solid transparent; border-top-color: #fff; }
.dc-marker.win { background: var(--green); } .dc-marker.win::after { border-top-color: var(--green); }
.dc-marker.loss { background: var(--red); color: #fff; } .dc-marker.loss::after { border-top-color: var(--red); }
.dc-scale { width: min(100%, 620px); display: flex; justify-content: space-between; font-family: 'JetBrains Mono', monospace; font-size: 12px; color: var(--text-dim); }
.dc-fields { width: min(100%, 620px); display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 6px; }
.dc-fieldbox label { display: block; font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 1px; color: var(--text-dim); margin-bottom: 5px; }
.dc-fieldbox input {
  width: 100%; background: var(--bg-1); border: 1px solid var(--border); border-radius: 8px;
  color: #fff; padding: 10px; font-family: 'JetBrains Mono', monospace; font-size: 15px; font-weight: 700;
}
.dc-fieldbox input:focus { outline: none; border-color: var(--border-hot); }
.dc-fieldbox input:read-only { opacity: 0.7; }
/* toggle por encima / por debajo (icono dentro del campo objetivo, estilo Shuffle) */
.dc-over-wrap { position: relative; }
.dc-over-wrap input { padding-right: 40px; }
#dcFlip {
  position: absolute; right: 5px; top: 50%; transform: translateY(-50%);
  width: 30px; height: 30px; display: flex; align-items: center; justify-content: center;
  background: rgba(255, 255, 255, 0.06); border: 1px solid var(--border); border-radius: 6px;
  color: var(--text-dim); cursor: pointer; font-size: 15px; line-height: 1; transition: all 0.15s;
}
#dcFlip:hover { color: #fff; border-color: var(--border-hot); background: rgba(255, 26, 60, 0.12); }

/* ==================== LIMBO ==================== */
.lb-board { justify-content: center; }
.lb-display {
  font-family: 'Bebas Neue', sans-serif; font-size: clamp(56px, 11vw, 120px); line-height: 1; letter-spacing: 2px;
  color: #fff; background: rgba(255, 255, 255, 0.03); border: 1px solid var(--border); border-radius: 10px;
  padding: 36px 64px; transition: color 0.12s, transform 0.12s, text-shadow 0.12s;
}
.lb-display.win { color: var(--green); text-shadow: 0 0 34px rgba(0, 230, 118, 0.55); transform: scale(1.04); }
.lb-display.loss { color: var(--red); }

/* ==================== POLLITO (cruzá la ruta, con estado) ==================== */
/* Escena estilo Shuffle: vereda (pasto + semáforo + señal) + ruta de carriles con
   alcantarilla y chip de multiplicador. Todo CSS/SVG (los sprites viven en chicken.js).
   El pollito es un hijo absoluto del strip scrolleable (scrollea con la ruta) y está
   PARADO sobre la fila de alcantarillas (top = 46% - su altura).
   OJO: --ck-side-w / --ck-lane-w tienen que coincidir con SIDE_W/LANE_W del JS. */
.ck-board { position: relative; justify-content: center; }
.ck-road {
  --ck-side-w: 112px; --ck-lane-w: 104px;
  position: relative; display: flex; align-items: stretch;
  width: 100%; height: min(560px, 64vh);
  overflow-x: auto; overflow-y: hidden; border-radius: 14px;
  background:
    radial-gradient(ellipse at 50% 30%, rgba(255, 255, 255, 0.025), transparent 60%),
    linear-gradient(180deg, #1c1518, #151013 55%, #120d10);
  border: 1px solid rgba(255, 255, 255, 0.08);
  scrollbar-width: none; /* sin barra: el juego auto-centra al pollito */
}
.ck-road::-webkit-scrollbar { display: none; }
/* con luz verde, SOLO el próximo carril es clickeable (= IR) */
.ck-road.go .ck-lane.next { cursor: pointer; }
.ck-road.shake { animation: ck-shake 0.42s; }
@keyframes ck-shake {
  0%, 100% { transform: translateX(0); }
  20% { transform: translateX(-7px); }
  40% { transform: translateX(6px); }
  60% { transform: translateX(-4px); }
  80% { transform: translateX(3px); }
}

/* vereda: franja de pasto con arbustos + caminito de baldosas con cordón blanco */
.ck-side { flex: 0 0 var(--ck-side-w); display: flex; align-items: stretch; }
.ck-grass {
  width: 32%;
  background:
    radial-gradient(circle at 45% 14%, #2a3f26 0 34%, transparent 35%),
    radial-gradient(circle at 72% 42%, #223420 0 28%, transparent 29%),
    radial-gradient(circle at 38% 66%, #2a3f26 0 30%, transparent 31%),
    radial-gradient(circle at 65% 90%, #223420 0 26%, transparent 27%),
    #1b2a18;
}
.ck-walk {
  flex: 1; position: relative;
  display: flex; flex-direction: column; align-items: center; justify-content: space-between;
  padding: 14px 0 12px;
  background: repeating-linear-gradient(180deg, #2f282c 0 52px, #282126 52px 56px);
  border-right: 5px solid #ece6da;
  box-shadow: inset -10px 0 16px rgba(0, 0, 0, 0.3);
}
.ck-side-end .ck-walk { border-right: 0; box-shadow: inset 10px 0 16px rgba(0, 0, 0, 0.3); }
.ck-light-svg { width: 32px; height: auto; filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.45)); }
.ck-sign-svg { width: 50px; height: auto; filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.45)); }
/* trofeo de la meta: un poco MÁS ARRIBA que la fila de alcantarillas, bien grande */
.ck-trophy-svg {
  position: absolute; left: 50%; top: calc(46% - 150px); transform: translateX(-50%);
  width: 86px; height: auto;
  filter: drop-shadow(0 7px 12px rgba(0, 0, 0, 0.5)) drop-shadow(0 0 22px rgba(255, 201, 64, 0.3));
}
/* franja de META a cuadros (borde de la vereda de llegada) */
.ck-finish {
  flex: 0 0 16px;
  background: conic-gradient(#ece6da 0 25%, #15100d 25% 50%, #ece6da 50% 75%, #15100d 75%);
  background-size: 16px 16px;
}
/* LEDs del semáforo: verde mientras se juega, rojo cuando lo agarran */
.ck-road.go .ck-led-green { fill: #2ecc71; }
.ck-road.go .ck-led-red { fill: #451016; }
.ck-road.stop .ck-led-red { fill: #ff1a3c; }
.ck-road.stop .ck-led-green { fill: #0e3d22; }

/* carril: asfalto + alcantarilla al centro + chip de multiplicador abajo */
.ck-lane {
  position: relative; flex: 0 0 var(--ck-lane-w);
  border-right: 3px dashed rgba(255, 255, 255, 0.14);
  transition: background 0.18s;
  overflow: hidden;
}
.ck-lane:last-of-type { border-right: 0; }
.ck-hole { position: absolute; left: 50%; top: 46%; transform: translate(-50%, -50%); width: 80px; opacity: 0.95; }
.ck-hole-svg { display: block; width: 100%; height: auto; overflow: visible; }
/* la TAPA de la alcantarilla: sale volando cuando el pollito se cae adentro */
.ck-lid { transform-box: fill-box; transform-origin: center; }
.ck-lane.open .ck-lid { animation: ck-lid-open 0.5s ease-out forwards; }
@keyframes ck-lid-open {
  0%   { transform: translate(0, 0) rotate(0); }
  60%  { transform: translate(30px, -26px) rotate(26deg); }
  100% { transform: translate(40px, -12px) rotate(34deg); }
}
.ck-chip {
  position: absolute; left: 50%; bottom: 11%; transform: translateX(-50%);
  font-family: 'JetBrains Mono', monospace; font-weight: 800; font-size: 13.5px; white-space: nowrap;
  color: var(--text-dim); background: #251c20;
  border: 1px solid rgba(255, 255, 255, 0.16); border-radius: 9px; padding: 6px 11px;
  box-shadow: 0 3px 0 rgba(0, 0, 0, 0.55);
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.ck-lane.next { background: rgba(255, 201, 64, 0.05); }
.ck-lane.next .ck-chip {
  color: #fff; border-color: rgba(255, 201, 64, 0.6);
  animation: ck-chip-pulse 1.3s ease-in-out infinite;
}
@keyframes ck-chip-pulse {
  0%, 100% { box-shadow: 0 3px 0 rgba(0, 0, 0, 0.55), 0 0 0 rgba(255, 201, 64, 0); }
  50% { box-shadow: 0 3px 0 rgba(0, 0, 0, 0.55), 0 0 16px rgba(255, 201, 64, 0.4); }
}
.ck-lane.passed .ck-chip { background: var(--green); color: #06250f; border-color: var(--green); }
/* carril YA CRUZADO: la TAPA misma se pinta de verde (chapa + centro + ranuras) */
.ck-lane.passed .ck-lid-top { fill: #1f6136; }
.ck-lane.passed .ck-lid-in { fill: #174a29; }
.ck-lane.passed .ck-lid-slots { stroke: #2f8a4d; }
.ck-lane.passed .ck-hole { filter: drop-shadow(0 0 10px rgba(0, 230, 118, 0.22)); }
.ck-lane.boom { background: rgba(255, 26, 60, 0.1); }
.ck-lane.boom .ck-chip { background: var(--red); color: #fff; border-color: var(--red); animation: none; }
.ck-lane.ghost .ck-chip { border-color: rgba(255, 26, 60, 0.5); }

/* el pollito (PNG del user en /img/pollito.png): left lo setea el JS en px del
   contenido scrolleable. Parado SOBRE la alcantarilla. transform-origin abajo
   para que el planchado lo aplaste CONTRA el piso. */
.ck-spr { display: block; width: 100%; height: auto; }
.ck-png { display: block; width: 100%; height: auto; }
.ck-chick {
  position: absolute; top: calc(46% - 76px); width: 70px; z-index: 5;
  transform: translateX(-50%); transform-origin: 50% 100%;
  transition: left 0.32s cubic-bezier(0.45, 0, 0.4, 1);
  filter: drop-shadow(0 7px 6px rgba(0, 0, 0, 0.5));
  pointer-events: none;
}
.ck-chick.hop { animation: ck-hop 0.34s ease-out; }
@keyframes ck-hop {
  0%   { transform: translateX(-50%) translateY(0) scale(1, 1); }
  18%  { transform: translateX(-50%) translateY(3px) scale(1.07, 0.88); }
  55%  { transform: translateX(-50%) translateY(-34px) scale(0.93, 1.1); }
  85%  { transform: translateX(-50%) translateY(3px) scale(1.1, 0.86); }
  100% { transform: translateX(-50%) translateY(0) scale(1, 1); }
}
/* muertes: planchado = el MISMO png aplastado contra el piso (origen abajo) */
.ck-chick.flat { animation: ck-flatten 0.22s ease-in forwards; }
@keyframes ck-flatten {
  0%   { transform: translateX(-50%) scale(1, 1); }
  55%  { transform: translateX(-50%) scale(1.5, 0.1); }
  100% { transform: translateX(-50%) scale(1.35, 0.18); }
}
.ck-chick.sink { animation: ck-sink 0.64s ease-in forwards; }
@keyframes ck-sink {
  0%   { transform: translateX(-50%) translateY(0) rotate(0) scale(1); opacity: 1; }
  45%  { transform: translateX(-50%) translateY(22px) rotate(-16deg) scale(0.7); opacity: 1; }
  100% { transform: translateX(-50%) translateY(44px) rotate(-34deg) scale(0.15); opacity: 0; }
}
.ck-chick.roast { width: 62px; top: calc(46% - 44px); animation: ck-roast-in 0.32s ease-out; }
@keyframes ck-roast-in { from { transform: translateX(-50%) scale(0.5); } to { transform: translateX(-50%) scale(1); } }

/* autos: ambient (decorativos, carriles de adelante) y asesino (el que te pisa) */
.ck-amb, .ck-killer {
  position: absolute; top: 0; left: 50%; width: 56px; z-index: 3;
  animation: ck-drive linear forwards;
  filter: drop-shadow(0 6px 7px rgba(0, 0, 0, 0.55));
  pointer-events: none;
}
.ck-killer { width: 62px; z-index: 6; animation-duration: 0.5s; }
@keyframes ck-drive {
  from { transform: translate(-50%, -130px); }
  to   { transform: translate(-50%, 660px); }
}
/* auto fantasma: dónde te esperaba (revelado al cobrar) */
.ck-ghostcar {
  position: absolute; top: 30%; left: 50%; width: 48px; z-index: 2;
  transform: translateX(-50%); opacity: 0.42; pointer-events: none;
}
/* plumitas al caer en la alcantarilla */
.ck-feather {
  position: absolute; top: 40%; left: 50%; width: 10px; height: 10px; z-index: 6;
  background: #fff; border-radius: 60% 40% 55% 45%;
  animation: ck-feather 0.75s ease-out forwards; opacity: 0;
  pointer-events: none;
}
@keyframes ck-feather {
  0%   { opacity: 1; transform: translate(-50%, 0) rotate(0); }
  100% { opacity: 0; transform: translate(calc(-50% + var(--dx, 20px)), -56px) rotate(220deg); }
}
/* llamas que salen de la alcantarilla (muerte "pollo asado") */
.ck-flame {
  position: absolute; top: 36%; left: 50%; width: 18px; height: 30px; z-index: 4;
  transform: translateX(-50%);
  background: radial-gradient(ellipse at 50% 88%, #ffd54d 0 26%, #ff8a2a 52%, #e2112e 78%, transparent 92%);
  border-radius: 50% 50% 38% 62% / 72% 72% 28% 28%;
  transform-origin: 50% 100%;
  animation: ck-flame 0.42s ease-in-out infinite alternate;
  pointer-events: none;
}
@keyframes ck-flame {
  from { transform: translateX(-50%) scale(0.85, 0.9) rotate(-4deg); opacity: 0.85; }
  to   { transform: translateX(-50%) scale(1.1, 1.3) rotate(5deg); opacity: 1; }
}
/* humito del pollo asado */
.ck-smoke {
  position: absolute; top: 28%; left: 50%; width: 28px; height: 28px; z-index: 6;
  background: radial-gradient(circle, rgba(220, 210, 200, 0.85), rgba(220, 210, 200, 0));
  border-radius: 50%;
  animation: ck-smoke 0.85s ease-out forwards;
  pointer-events: none;
}
.ck-smoke.s2 { width: 18px; height: 18px; animation-delay: 0.22s; animation-duration: 1s; }
@keyframes ck-smoke {
  0%   { opacity: 0.9; transform: translate(-50%, 0) scale(0.5); }
  100% { opacity: 0; transform: translate(-50%, -52px) scale(2.2); }
}
/* cartel de cierre al PERDER (al ganar sale el cz-winpop de siempre) */
.ck-endpop {
  position: absolute; left: 50%; top: 34%; transform: translate(-50%, -50%);
  z-index: 30; text-align: center; padding: 18px 28px; border-radius: 14px;
  background: rgba(22, 8, 11, 0.94); border: 1px solid var(--red);
  box-shadow: 0 0 44px rgba(255, 26, 60, 0.28), 0 18px 40px rgba(0, 0, 0, 0.55);
  pointer-events: none;
  animation: ck-endpop-in 0.22s ease-out;
}
@keyframes ck-endpop-in { from { opacity: 0; transform: translate(-50%, -50%) scale(0.85); } to { opacity: 1; transform: translate(-50%, -50%) scale(1); } }
.ck-end-title { font-family: 'Bebas Neue', sans-serif; font-size: 32px; letter-spacing: 0.6px; color: var(--red); }
/* multiplicador siguiente dentro del botón IR */
.ck-go-next {
  margin-left: 8px; font-family: 'JetBrains Mono', monospace; font-size: 12px;
  opacity: 0.85; background: rgba(0, 0, 0, 0.22); border-radius: 6px; padding: 2px 7px;
}
@media (max-width: 640px) {
  .ck-road { height: min(380px, 52vh); }
  .ck-endpop { width: max-content; max-width: 86%; padding: 14px 18px; }
  .ck-end-title { font-size: 24px; }
}


/* ==================== SNAKES (dados → serpiente, con estado) ==================== */
.sn-board { justify-content: center; }
.sn-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(4, 1fr);
  gap: 12px; width: min(560px, 96%); aspect-ratio: 1;
}
.sn-cell {
  display: flex; align-items: center; justify-content: center;
  background: rgba(255, 255, 255, 0.045); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 14px;
  font-family: 'JetBrains Mono', monospace; font-weight: 800; font-size: clamp(14px, 2.6vw, 22px);
  color: var(--text); transition: background 0.15s, border-color 0.15s, box-shadow 0.15s, transform 0.15s;
}
.sn-cell.loss { color: var(--text-mute); background: rgba(255, 255, 255, 0.012); border-color: rgba(255, 255, 255, 0.05); }
.sn-snake { font-size: 1.6em; line-height: 1; opacity: 0.5; }
/* mapa de calor: t0 = suma rara y jugosa (dorado fuerte) … t4 = común y tenue */
.sn-cell.t0 { border-color: rgba(255, 201, 64, 0.6); box-shadow: inset 0 0 20px rgba(255, 201, 64, 0.09); }
.sn-cell.t0 .sn-mult { color: var(--gold); }
.sn-cell.t1 { border-color: rgba(255, 201, 64, 0.4); }
.sn-cell.t1 .sn-mult { color: #ffda7a; }
.sn-cell.t2 { border-color: rgba(255, 201, 64, 0.24); }
.sn-cell.t2 .sn-mult { color: #ffe9b0; }
.sn-cell.t3 { border-color: rgba(255, 255, 255, 0.16); }
.sn-cell.t4 { border-color: rgba(255, 255, 255, 0.1); }
/* casilla de SALIDA (esquina): de acá arranca la serpiente */
.sn-cell.sn-start { background: rgba(255, 255, 255, 0.02); border-style: dashed; border-color: rgba(255, 255, 255, 0.16); }
.sn-start-ic { color: var(--text-mute); font-size: 1.3em; opacity: 0.8; }
.sn-cell.sn-start.trail { background: rgba(255, 201, 64, 0.2); border-style: solid; border-color: rgba(255, 201, 64, 0.5); }
/* el "color" que viaja desde la primera casilla hasta donde cae */
.sn-cell.trail { background: rgba(255, 201, 64, 0.18); border-color: rgba(255, 201, 64, 0.5); transform: scale(1.04); }
/* casilla buena donde aterriza = amarillo */
.sn-cell.win { background: var(--gold); color: #2a1d00; border-color: var(--gold); box-shadow: 0 0 30px rgba(255, 201, 64, 0.55); transform: scale(1.07); }
/* casilla mala = serpiente roja */
.sn-cell.snake { background: var(--red-deep); border-color: var(--red); box-shadow: 0 0 26px var(--red-glow); transform: scale(1.05); }
.sn-cell.snake .sn-snake { opacity: 1; }

.sn-center {
  grid-row: 2 / 4; grid-column: 2 / 4;
  display: flex; flex-direction: column; gap: 12px; align-items: center; justify-content: center; padding: 6px;
}
.sn-dice { display: flex; gap: 12px; }
.sn-die {
  width: clamp(40px, 8vw, 58px); aspect-ratio: 1; padding: 8px;
  background: #f4eff1; border-radius: 13px; box-shadow: 0 4px 14px rgba(0, 0, 0, 0.45);
  display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(3, 1fr); gap: 2px;
}
.sn-pip { border-radius: 50%; }
.sn-pip.on { background: #1a1012; }
.sn-display {
  font-family: 'Bebas Neue', sans-serif; font-size: clamp(30px, 6.5vw, 52px); line-height: 1; letter-spacing: 1px;
  color: var(--text-dim); transition: color 0.12s, text-shadow 0.12s;
}
.sn-display.win { color: var(--green); text-shadow: 0 0 28px rgba(43, 212, 125, 0.5); }
.sn-display.loss { color: var(--red); }

/* ==================== HILO (cartas, con estado) ==================== */
.hl-board { justify-content: center; gap: 20px; }
.hl-stage { position: relative; display: flex; align-items: center; justify-content: center; min-height: 250px; }
.hl-deck {
  position: absolute; width: clamp(120px, 20vw, 168px); aspect-ratio: 5 / 7; border-radius: 14px;
  background: repeating-linear-gradient(135deg, #2a1230 0 8px, #3a1842 8px 16px);
  border: 1px solid var(--border); transform: translate(12px, 12px); box-shadow: 0 6px 18px rgba(0, 0, 0, 0.4);
}
.hl-card {
  position: relative; z-index: 1; width: clamp(120px, 20vw, 168px); aspect-ratio: 5 / 7; border-radius: 14px;
  background: #f4eff1; color: #1a1012; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.5); border-bottom: 5px solid var(--red);
}
.hl-card.red { color: var(--red); }
.hl-card .hl-rank { font-family: 'Bebas Neue', sans-serif; font-size: clamp(48px, 10vw, 86px); line-height: 0.9; }
.hl-card .hl-suit { font-size: clamp(28px, 6vw, 50px); line-height: 1; }
.hl-card.back { background: repeating-linear-gradient(135deg, #2a1230 0 8px, #3a1842 8px 16px); border-bottom-color: var(--border); }
.hl-card.flip { animation: hlFlip 0.23s ease; }
@keyframes hlFlip { from { transform: rotateY(85deg) scale(0.92); opacity: 0.3; } to { transform: none; opacity: 1; } }
.hl-card.win { box-shadow: 0 0 32px rgba(43, 212, 125, 0.55); }
.hl-card.lose { box-shadow: 0 0 32px var(--red-glow); }
.hl-mult {
  position: absolute; top: -8px; right: -8px; z-index: 2; font-family: 'Bebas Neue', sans-serif; font-size: 24px;
  background: var(--panel-solid); border: 1px solid var(--border); border-radius: 8px; padding: 2px 10px; color: var(--green);
}
.hl-history { display: flex; gap: 6px; overflow-x: auto; max-width: 94%; padding: 4px; scrollbar-width: none; }
.hl-history::-webkit-scrollbar { display: none; }
.hl-hist {
  flex: none; width: 34px; height: 46px; border-radius: 6px; background: #f4eff1; color: #1a1012;
  display: flex; flex-direction: column; align-items: center; justify-content: center; font-weight: 800; font-size: 12px; line-height: 1;
  border: 2px solid transparent; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
}
.hl-hist.red { color: var(--red); }
.hl-hist.win { border-color: var(--green); }
.hl-hist.bust { border-color: var(--red); }
.hl-hist.skip { opacity: 0.5; }
.hl-hist.start { border-color: var(--gold); }

/* botones de adivinanza (Mayor/Menor) */
.hl-guess {
  display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%;
  padding: 12px 14px; border-radius: 8px; cursor: pointer;
  background: rgba(255, 255, 255, 0.04); border: 1px solid var(--border); color: var(--text);
  font-family: 'Inter', sans-serif; font-weight: 700; font-size: 14px; transition: all 0.15s;
}
.hl-guess:hover:not(:disabled) { border-color: var(--border-hot); background: rgba(255, 255, 255, 0.07); }
.hl-guess:disabled { opacity: 0.45; cursor: default; }
.hl-guess.up:not(:disabled) { border-color: rgba(43, 212, 125, 0.45); }
.hl-guess.down:not(:disabled) { border-color: rgba(255, 201, 64, 0.45); }
.hl-g-stat { display: flex; flex-direction: column; align-items: flex-end; line-height: 1.15; }
.hl-g-stat b { font-family: 'JetBrains Mono', monospace; font-size: 14px; }
.hl-g-stat i { font-style: normal; font-size: 11px; color: var(--text-dim); }
.hl-skip { background: transparent; border: 1px solid var(--border); }
.hl-skip:disabled { opacity: 0.45; }

/* ==================== RAKEBACK (columna derecha) ==================== */
.rb-card {
  padding: 14px; border-radius: 9px;
  background: rgba(255, 201, 64, 0.07); border: 1px solid rgba(255, 201, 64, 0.28);
}
.rb-row { display: flex; align-items: center; justify-content: space-between; }
.rb-label { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 1.5px; color: var(--gold); }
.rb-amount { font-family: 'Bebas Neue', sans-serif; font-size: 24px; color: var(--gold); line-height: 1; }
.rb-sub { font-size: 10px; color: var(--text-dim); margin: 6px 0 10px; line-height: 1.4; }
.rb-claim {
  width: 100%; font-family: 'Bebas Neue', sans-serif; font-size: 16px; letter-spacing: 2px;
  color: #160e05; background: linear-gradient(135deg, var(--gold), #c89a1f); border: none;
  border-radius: 9px; padding: 10px; cursor: pointer; transition: all 0.15s;
}
.rb-claim:hover:not(:disabled) { transform: translateY(-1px); box-shadow: 0 5px 16px rgba(255, 201, 64, 0.4); }
.rb-claim:disabled { opacity: 0.4; cursor: not-allowed; }

/* ==================== TIPS (tipear a otro jugador) ==================== */
.tip-card {
  padding: 14px; border-radius: 9px; text-align: left;
  background: rgba(0, 230, 118, 0.06); border: 1px solid rgba(0, 230, 118, 0.26);
  display: flex; flex-direction: column; gap: 8px;
}
.tip-title { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 1.5px; color: var(--green); }
.tip-card input {
  width: 100%; box-sizing: border-box; background: var(--bg-1); border: 1px solid var(--border);
  border-radius: 8px; color: #fff; padding: 9px 10px; font-size: 13px; font-family: 'JetBrains Mono', monospace;
}
.tip-card input:focus { outline: none; border-color: var(--green); }
/* Autocompletado del destinatario de la propina (dropdown bajo el input) */
.tip-ac { position: relative; }
.tip-sug {
  position: absolute; top: calc(100% + 2px); left: 0; right: 0; z-index: 20;
  background: var(--panel-solid); border: 1px solid var(--border-hot); border-radius: 8px;
  max-height: 200px; overflow-y: auto; box-shadow: 0 10px 30px rgba(0,0,0,0.5);
}
.tip-sug.hidden { display: none; }
.tip-sug-row {
  padding: 8px 10px; font-size: 13px; font-family: 'JetBrains Mono', monospace; color: #e8e8ec;
  cursor: pointer; border-bottom: 1px solid var(--border);
}
.tip-sug-row:last-child { border-bottom: none; }
.tip-sug-row:hover { background: rgba(0, 230, 118, 0.12); color: #fff; }
.tip-send {
  width: 100%; font-family: 'Bebas Neue', sans-serif; font-size: 16px; letter-spacing: 2px;
  color: #042b15; background: linear-gradient(135deg, var(--green), #00a152); border: none;
  border-radius: 9px; padding: 10px; cursor: pointer; transition: all 0.15s;
}
.tip-send:hover:not(:disabled) { transform: translateY(-1px); box-shadow: 0 5px 16px rgba(0, 230, 118, 0.4); }
.tip-send:disabled { opacity: 0.5; cursor: not-allowed; }
.tip-msg { font-size: 11px; line-height: 1.4; min-height: 14px; }
.tip-msg.err { color: var(--red); }
.tip-msg.ok { color: var(--green); }
/* toggle propina pública/privada */
.tip-public {
  display: flex; align-items: center; gap: 8px; cursor: pointer;
  font-size: 12px; color: var(--text-dim); user-select: none;
}
.tip-public input { width: 16px; height: 16px; accent-color: var(--green); cursor: pointer; flex: none; }
.tip-public b { color: var(--text); }

/* ==================== RECOMPENSAS (Sus premios) ==================== */
.rewards-btn { position: relative; }
.rw-dot {
  position: absolute; top: 9px; right: 11px; width: 9px; height: 9px; border-radius: 50%;
  background: var(--green); box-shadow: 0 0 8px var(--green); animation: rwPulse 1.6s ease-in-out infinite;
}
@keyframes rwPulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }
.rewards-card { max-width: 470px; }
/* Modal "Mi perfil" (tabbar mobile): acciones apiladas + badge VIP arriba. */
.me-actions { display: flex; flex-direction: column; gap: 6px; margin: 14px 0 4px; }
#meModal .account-vip { margin: 12px 0 4px; }
.rw-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 6px 0 4px; }
.rw-item {
  background: rgba(255, 255, 255, 0.03); border: 1px solid var(--border); border-radius: 9px;
  padding: 14px 12px; display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center;
}
.rw-top { width: 100%; display: flex; align-items: center; justify-content: space-between; }
.rw-when { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.5px; color: var(--text-dim); }
.rw-gift { font-size: 14px; opacity: 0.7; }
.rw-emoji { font-size: 34px; line-height: 1; margin: 2px 0; }
.rw-name { font-family: 'Bebas Neue', sans-serif; font-size: 17px; letter-spacing: 1px; color: #fff; line-height: 1.15; }
.rw-slot { color: var(--gold); }
.rw-claim {
  width: 100%; font-family: 'Bebas Neue', sans-serif; font-size: 15px; letter-spacing: 1.5px;
  color: #042b15; background: linear-gradient(135deg, var(--green), #00a152); border: none;
  border-radius: 9px; padding: 9px; cursor: pointer; transition: all 0.15s; margin-top: auto;
}
.rw-claim:hover:not(:disabled) { transform: translateY(-1px); box-shadow: 0 5px 16px rgba(0, 230, 118, 0.4); }
.rw-claim:disabled { opacity: 0.4; cursor: not-allowed; }
.rw-timer {
  width: 100%; font-family: 'JetBrains Mono', monospace; font-size: 15px; font-weight: 800; color: #fff;
  background: var(--bg-1); border: 1px solid var(--border); border-radius: 9px; padding: 9px; margin-top: auto;
}
@media (max-width: 560px) { .rw-grid { grid-template-columns: 1fr; } }

/* En mobile los modales (Recompensas/Perfil/Tip) ocupan TODA la pantalla: sin padding
   afuera no hay zona muerta donde el dedo "scrollee fuera" — todo el toque cae en la
   tarjeta y scrollea su contenido. El botón Cerrar queda STICKY abajo, siempre visible. */
@media (max-width: 560px) {
  .pf-modal { padding: 0; }
  .pf-modal .pf-card {
    max-width: none; border-radius: 0;
    min-height: 100dvh; max-height: 100dvh;
    padding-bottom: 0;
  }
  .pf-modal .pf-card .pf-actions {
    position: sticky; bottom: 0;
    margin: 18px -26px 0; padding: 14px 26px;
    padding-bottom: calc(14px + env(safe-area-inset-bottom));
    background: var(--panel-solid); border-top: 1px solid var(--border);
  }
  /* EXCEPCIÓN: el PERFIL y la TABLA DE PAGOS no van full-screen → card centrada que
     ajusta al contenido, no se come la pantalla. (Recompensas/Tip sí siguen full-screen.) */
  .pf-modal .pf-card.prof-card,
  .pf-modal .pf-card.sl-pay-card,
  .pf-modal .pf-card.vip-rank-card {
    min-height: 0; max-height: calc(100dvh - 28px);
    max-width: 420px; width: calc(100% - 28px); margin: auto;
    border-radius: 14px; overflow-y: auto;
  }
}

/* ==================== PANEL INFERIOR (leaderboard + descripción) ==================== */
/* mismo ancho que el juego (vive en .casino-center); crece con su contenido y la
   página entera scrollea (no scroll interno) */
.casino-bottom {
  background: var(--panel); border: 1px solid var(--border); border-radius: 9px;
  overflow: hidden; display: flex; flex-direction: column;
}
.cb-head {
  display: flex; align-items: center; flex-wrap: wrap; gap: 12px; flex-shrink: 0;
  padding: 13px 18px; border-bottom: 1px solid var(--border);
}
.cb-title { font-family: 'Bebas Neue', sans-serif; font-size: 22px; letter-spacing: 3px; color: #fff; }
.cb-tabs { display: flex; gap: 6px; margin-left: auto; flex-wrap: wrap; }
.cb-tab {
  font-family: 'JetBrains Mono', monospace; font-size: 12px; font-weight: 700; color: var(--text-dim);
  background: rgba(255, 255, 255, 0.04); border: 1px solid var(--border); border-radius: 8px;
  padding: 8px 14px; cursor: pointer; transition: all 0.15s;
}
.cb-tab:hover { color: #fff; }
.cb-tab.active { color: #fff; background: rgba(255, 26, 60, 0.12); border-color: var(--border-hot); }
.cb-body { padding: 6px 8px 12px; min-height: 150px; }
.cb-pane { display: none; }
.cb-pane.active { display: block; }

/* ==================== GUIRNALDA MUNDIAL 2026 ==================== */
/* Banderines triangulares celeste/blanco colgando de un hilo, dibujados con un SVG inline
   (data-URI) → cero requests, livianísimo, se ve igual en todos lados (los emoji de bandera
   no renderizan en Windows). Franja finita arriba del casino. */
.mundial-bunting {
  /* OVERLAY: posición absoluta para NO empujar el layout (cuelga del borde inferior del
     topbar). Puede pisar un poco el tope de las columnas, a propósito (queda como adorno). */
  position: absolute; top: var(--topbar-h); left: 0; right: 0; z-index: 4;
  height: 32px;
  /* banderines PEGADOS uno al lado del otro, pero cuyas puntas siguen una cuerda que se
     hamaca (sube en los anclajes, baja en el medio). Celeste/blanco alternados. SVG inline. */
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='120'%20height='32'%3E%3Cpath%20d='M0,4%20Q60,28%20120,4'%20fill='none'%20stroke='rgba(255,255,255,0.4)'%20stroke-width='1.2'/%3E%3Cpolygon%20points='0,4%2020,10.7%2010,21.7'%20fill='%236cb7e6'/%3E%3Cpolygon%20points='20,10.7%2040,14.7%2030,27'%20fill='%23eef4f9'/%3E%3Cpolygon%20points='40,14.7%2060,16%2050,29.7'%20fill='%236cb7e6'/%3E%3Cpolygon%20points='60,16%2080,14.7%2070,29.7'%20fill='%23eef4f9'/%3E%3Cpolygon%20points='80,14.7%20100,10.7%2090,27'%20fill='%236cb7e6'/%3E%3Cpolygon%20points='100,10.7%20120,4%20110,21.7'%20fill='%23eef4f9'/%3E%3C/svg%3E");
  background-repeat: repeat-x;
  background-position: top center;
  background-size: 120px 32px;
  pointer-events: none;
}
@media (max-width: 740px) {
  .mundial-bunting { height: 26px; background-size: 96px 26px; }
}

/* ==================== FEED DE APUESTAS ==================== */
.bets-feed {
  background: var(--panel); border: 1px solid var(--border); border-radius: 9px;
  overflow: hidden; margin-top: 14px;
}
.bf-head {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 11px 14px; border-bottom: 1px solid var(--border);
}
.bf-collapse {
  background: rgba(255,255,255,0.04); border: 1px solid var(--border); border-radius: 8px;
  color: var(--text-dim); cursor: pointer; width: 32px; height: 32px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center; transition: all 0.15s;
}
.bf-collapse:hover { color: #fff; }
.bf-caret { transition: transform 0.2s; font-size: 13px; }
.bets-feed.collapsed .bf-caret { transform: rotate(-90deg); }
.bets-feed.collapsed .bf-body { display: none; }
.bets-feed.collapsed .bf-head { border-bottom: none; }
.bf-tabs { display: flex; gap: 6px; flex-wrap: wrap; }
.bf-tab {
  font-family: 'JetBrains Mono', monospace; font-size: 12px; font-weight: 700; color: var(--text-dim);
  background: rgba(255,255,255,0.04); border: 1px solid var(--border); border-radius: 8px;
  padding: 8px 14px; cursor: pointer; transition: all 0.15s;
}
.bf-tab:hover { color: #fff; }
.bf-tab.active { color: #fff; background: rgba(255,26,60,0.12); border-color: var(--border-hot); }
.bf-limit {
  margin-left: auto; font-family: 'JetBrains Mono', monospace; font-size: 12px; color: #fff;
  background: rgba(255,255,255,0.04); border: 1px solid var(--border); border-radius: 8px;
  padding: 7px 10px; cursor: pointer;
  color-scheme: dark; /* el popup nativo del select se dibuja oscuro, no en blanco */
}
/* el desplegable del select (las <option>): Chrome/Windows ignora color-scheme acá pero
   SÍ respeta background/color en las option → así el popup queda oscuro como la página */
.bf-limit option, .bf-adminbar select option {
  background: var(--bg-1); color: #fff;
}
.bf-body { padding: 2px 8px 10px; }
.bf-row {
  display: grid; grid-template-columns: 2fr 1.3fr 1.2fr 1.1fr 1.2fr; align-items: center;
  gap: 8px; padding: 9px 10px; border-top: 1px solid var(--border); font-size: 13px; color: #d8d8de;
}
.bf-list .bf-row:nth-child(odd) { background: rgba(255,255,255,0.015); }
.bf-list .bf-row:hover { background: rgba(255,255,255,0.04); }
.bf-header {
  border-top: none; font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 1px;
  text-transform: uppercase; color: var(--text-dim); font-weight: 700;
}
.bf-user { display: flex; align-items: center; gap: 8px; min-width: 0; }
.bf-user img { width: 24px; height: 24px; border-radius: 50%; flex-shrink: 0; object-fit: cover; }
.bf-user .bf-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bf-pay.win { color: var(--green); font-weight: 700; }
.bf-pay.loss { color: var(--red); }
.bf-pay.push { color: var(--text-dim); }
.bf-empty { padding: 30px 12px; text-align: center; color: var(--text-dim); }
.bf-empty a { color: var(--red); }
@media (max-width: 740px) {
  .bf-row { grid-template-columns: 1.6fr 1fr 1fr 0.9fr 1fr; font-size: 11px; gap: 5px; padding: 8px 6px; }
  .bf-user img { width: 20px; height: 20px; }
}

.cb-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.cb-table th {
  font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 1px; text-transform: uppercase;
  color: var(--text-dim); text-align: left; padding: 8px 12px; font-weight: 700;
}
.cb-table td { padding: 9px 12px; border-top: 1px solid var(--border); color: #d8d8de; }
.cb-table td.r { text-align: right; }
.cb-table tr:hover td { background: rgba(255, 255, 255, 0.02); }
/* Filas con detalle de apuesta clickeable (mismo gesto que el feed) */
.cb-table tbody tr[data-betid] { cursor: pointer; }
.cb-table tbody tr[data-betid]:hover td { background: rgba(255, 26, 60, 0.07); }
.cb-rank { color: var(--gold); font-weight: 800; font-family: 'JetBrains Mono', monospace; width: 34px; }
.cb-user { color: #fff; font-weight: 600; }
.cb-mult { color: var(--gold); font-weight: 800; font-family: 'JetBrains Mono', monospace; }
.cb-profit { color: var(--green); font-weight: 700; font-family: 'JetBrains Mono', monospace; }
.cb-empty { color: var(--text-mute); text-align: center; padding: 26px; font-size: 13px; }

.cb-desc { color: #c4c4cc; line-height: 1.65; font-size: 14px; max-width: 820px; padding: 6px 12px 14px; }
.cb-desc h3 { font-family: 'Bebas Neue', sans-serif; font-size: 24px; letter-spacing: 2px; color: #fff; margin-bottom: 8px; }
.cb-desc h4 {
  font-family: 'Bebas Neue', sans-serif; font-size: 17px; letter-spacing: 1.5px; color: #fff;
  margin: 18px 0 6px;
}
.cb-desc p { margin: 0 0 10px; }
.cb-desc ol, .cb-desc ul { margin: 0 0 10px; padding-left: 20px; }
.cb-desc li { margin-bottom: 6px; }
.cb-desc b { color: #ececf2; }
.cb-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
.cb-tag {
  font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 700; color: var(--text-dim);
  background: rgba(255, 255, 255, 0.05); border: 1px solid var(--border); border-radius: 999px;
  padding: 4px 11px;
}
.cb-tag.edge { color: var(--green); border-color: rgba(0, 230, 118, 0.35); background: rgba(0, 230, 118, 0.08); }
.cb-edge {
  display: inline-block; margin-top: 12px; font-family: 'JetBrains Mono', monospace; font-size: 12px; font-weight: 700;
  color: var(--green); background: rgba(0, 230, 118, 0.1); border: 1px solid rgba(0, 230, 118, 0.3);
  border-radius: 8px; padding: 6px 12px;
}

/* ==================== RULETA ==================== */
.rl-board { flex-direction: column; gap: 14px; padding: 16px; overflow-y: auto; justify-content: safe center; }
.rl-wheel-wrap { position: relative; flex-shrink: 0; }
#rlWheel { width: 300px; height: 300px; max-width: 78vw; display: block; border-radius: 50%; filter: drop-shadow(0 8px 22px rgba(0,0,0,0.55)); }
.rl-pointer {
  position: absolute; top: -2px; left: 50%; transform: translateX(-50%);
  width: 0; height: 0; border-left: 9px solid transparent; border-right: 9px solid transparent;
  border-top: 14px solid var(--gold); filter: drop-shadow(0 2px 3px rgba(0,0,0,0.6)); z-index: 2;
}
.rl-result {
  font-family: 'Bebas Neue', sans-serif; font-size: 22px; letter-spacing: 1px;
  padding: 6px 18px; border-radius: 10px; color: #fff; min-height: 20px;
}
.rl-result.green { background: var(--green); color: #042b15; }
.rl-result.red   { background: var(--red); }
.rl-result.black { background: #1c1c22; border: 1px solid var(--border-hot); }

/* Historial de resultados (estilo Shuffle): columna de cuadritos a la izquierda de la
   rueda, el más reciente arriba. Absolute para no descentrar la rueda. */
.rl-history {
  position: absolute; right: 100%; top: 50%; transform: translateY(-50%);
  margin-right: 40px; display: flex; flex-direction: column; gap: 7px; z-index: 2;
}
.rl-hist-cell {
  width: 34px; height: 34px; border-radius: 8px;
  display: flex; align-items: center; justify-content: center;
  font-family: 'JetBrains Mono', monospace; font-weight: 800; font-size: 14px; color: #fff;
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
}
.rl-hist-cell.green { background: var(--green); color: #042b15; }
.rl-hist-cell.red   { background: var(--red); }
.rl-hist-cell.black { background: #1c1c22; border: 1px solid rgba(255,255,255,0.14); }
/* En pantallas angostas no hay lugar a la izquierda → fila horizontal arriba de la rueda. */
@media (max-width: 980px) {
  .rl-history {
    position: static; transform: none; margin: 0 0 4px 0;
    flex-direction: row; flex-wrap: wrap; justify-content: center;
  }
}

/* fichas (valor) */
.rl-chips { display: flex; flex-wrap: wrap; gap: 7px; }
.rl-chip {
  width: 44px; height: 44px; border-radius: 50%; cursor: pointer;
  font-family: 'JetBrains Mono', monospace; font-weight: 800; font-size: 12px; color: #fff;
  border: 2px dashed rgba(255,255,255,0.5); background: radial-gradient(circle at 35% 30%, #555, #2a2a30);
  display: flex; align-items: center; justify-content: center; transition: transform 0.1s;
}
.rl-chip:hover { transform: translateY(-2px); }
.rl-chip.on { border-style: solid; border-color: #fff; box-shadow: 0 0 0 3px rgba(109,77,255,0.5), 0 4px 14px rgba(0,0,0,0.5); transform: translateY(-2px); }
.rl-chip[data-v="1"]      { background: radial-gradient(circle at 35% 30%, #7a8aa0, #3a4658); }
.rl-chip[data-v="10"]     { background: radial-gradient(circle at 35% 30%, #4d9bff, #1f5bbf); }
.rl-chip[data-v="100"]    { background: radial-gradient(circle at 35% 30%, #34d17a, #0c8a45); }
.rl-chip[data-v="1000"]   { background: radial-gradient(circle at 35% 30%, #ff9b3d, #c25f00); }
.rl-chip[data-v="5000"]   { background: radial-gradient(circle at 35% 30%, #b98cff, #6d33d6); }
.rl-chip[data-v="10000"]  { background: radial-gradient(circle at 35% 30%, #ff5470, #b3122f); }

.rl-total { font-family: 'Bebas Neue', sans-serif; font-size: 26px; color: var(--gold); }
.rl-total .coin { font-size: 20px; }
.rl-actions { display: flex; gap: 8px; }
.rl-mini {
  flex: 1; font-family: 'JetBrains Mono', monospace; font-size: 12px; font-weight: 700; color: #d8d8de;
  background: rgba(255,255,255,0.05); border: 1px solid var(--border); border-radius: 9px; padding: 9px; cursor: pointer;
}
.rl-mini:hover { color: #fff; border-color: var(--border-hot); }
/* El símbolo ½ (fracción tipográfica) se renderiza chico → lo agrandamos para que
   quede del tamaño visual del "2x". */
#rlHalf { font-size: 19px; line-height: 1; }

/* Acciones sobre el tablero (estilo Shuffle): links de texto, Deshacer izq / Limpiar der */
.rl-board-actions {
  width: 100%; max-width: 640px;
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: -4px;
}
.rl-link {
  font-family: 'JetBrains Mono', monospace; font-size: 12px; font-weight: 700; color: #9a9aa2;
  background: none; border: 0; padding: 4px 2px; cursor: pointer; letter-spacing: .3px;
}
.rl-link:hover { color: #fff; }

/* tablero de apuestas */
.rl-table-wrap { width: 100%; max-width: 640px; }
.rl-table {
  position: relative;
  width: 100%; max-width: 640px; display: grid;
  grid-template-columns: 40px repeat(12, 1fr) 42px;
  grid-template-rows: repeat(3, 40px) 34px 34px; gap: 4px;
}
/* Ruleta en mobile: la mesa NO se aplasta (celdas y zonas de split quedan tocables) →
   scroll horizontal dentro del wrapper. Mejora la accesibilidad táctil sin rediseñar. */
@media (max-width: 560px) {
  .rl-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; padding-bottom: 4px; }
  .rl-table { min-width: 540px; }
  .rl-c { font-size: 15px; }
  .rl-hot { width: 30px; height: 30px; }
  .rl-hot::after { width: 7px; height: 7px; }
}
.rl-c {
  position: relative; display: flex; align-items: center; justify-content: center;
  font-family: 'JetBrains Mono', monospace; font-weight: 700; font-size: 14px; color: #fff;
  border: 1px solid rgba(255,255,255,0.15); border-radius: 5px; cursor: pointer; user-select: none;
  transition: filter 0.1s;
}
.rl-c:hover { filter: brightness(1.25); outline: 1px solid var(--gold); }
.rl-c.green { background: #0c8a45; }
.rl-c.red   { background: var(--red); }
.rl-c.black { background: #26262e; }
.rl-c.rl-out { background: rgba(255,255,255,0.05); font-size: 12px; letter-spacing: 0.5px; }
.rl-c.rl-red-cell { background: var(--red); }
.rl-c.rl-black-cell { background: #26262e; }
.rl-c.rl-win { outline: 2px solid var(--gold); box-shadow: 0 0 14px rgba(255,201,64,0.7); z-index: 1; }
/* zonas clickeables ENTRE celdas (split/calle/esquina/línea) */
.rl-hot {
  position: absolute; width: 22px; height: 22px; transform: translate(-50%, -50%);
  border-radius: 50%; cursor: pointer; z-index: 3;
}
.rl-hot::after {     /* puntito guía sutil: indica que ahí se puede apostar */
  content: ''; position: absolute; top: 50%; left: 50%; width: 6px; height: 6px;
  transform: translate(-50%, -50%); border-radius: 50%; background: rgba(255,255,255,0.14);
}
.rl-hot:hover { background: rgba(255,201,64,0.22); }
.rl-hot:hover::after { background: var(--gold); width: 8px; height: 8px; }

/* ficha apilada con su monto (redonda, tamaño fijo) */
.rl-chip-badge {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: 28px; height: 28px; padding: 0; border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #6d4dff, #4d2fd6); color: #fff;
  border: 2px solid #fff; font-size: 9px; font-weight: 800; line-height: 1;
  display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 6px rgba(0,0,0,0.6); z-index: 4;
}

/* ==================== BLACKJACK ==================== */
/* Centrada: ya no hay cartel de resultado que empuje (el resultado se muestra
   pintando la mano de verde/rojo), así que la mesa queda quieta al centrar. */
.bj-board { flex-direction: column; gap: 14px; padding: 18px; justify-content: safe center; align-items: center; overflow-y: auto; }

/* Mesa semicircular (estilo Shuffle): borde recto arriba (donde reparte la banca) y
   curva grande abajo. Fieltro con degradé radial + riel oscuro + sombra interior. */
.bj-felt {
  position: relative;
  width: min(100%, 720px);
  aspect-ratio: 720 / 460; min-height: 380px;
  display: flex; flex-direction: column; align-items: center; justify-content: space-between;
  padding: 18px 30px 22px;
  border-radius: 18px 18px 48% 48% / 18px 18px 84% 84%;
  background:
    radial-gradient(ellipse 70% 55% at 50% 20%, rgba(255,255,255,0.06), rgba(0,0,0,0) 60%),
    radial-gradient(ellipse 125% 105% at 50% 8%, #5a1226, #380c18 55%, #210710);
  border: 9px solid #160708;
  box-shadow: inset 0 4px 30px rgba(0,0,0,0.55), inset 0 0 70px rgba(0,0,0,0.45), 0 16px 44px rgba(0,0,0,0.55);
}
.bj-felt-svg { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 0; }
.bj-felt-txt { fill: rgba(255,255,255,0.32); font-family: 'JetBrains Mono', monospace; font-weight: 700; font-size: 12.5px; letter-spacing: 0.5px; }
.bj-felt-brand { fill: rgba(255,255,255,0.44); font-family: 'Bebas Neue', sans-serif; font-size: 23px; letter-spacing: 2px; }
.bj-felt-dash { fill: none; stroke: rgba(255,255,255,0.38); stroke-width: 4; stroke-linecap: round; }
/* Mazo decorativo arriba a la derecha (la pila boca abajo) */
.bj-deck {
  position: absolute; top: 16px; right: 20px; width: 44px; height: 62px; z-index: 1; border-radius: 7px;
  background: repeating-linear-gradient(45deg, #4d2fd6, #4d2fd6 6px, #6d4dff 6px, #6d4dff 12px);
  border: 2px solid rgba(255,255,255,0.25);
  box-shadow: 2px 2px 0 rgba(255,255,255,0.08), 4px 4px 0 rgba(0,0,0,0.3), 0 6px 14px rgba(0,0,0,0.45);
}
.bj-area { display: flex; flex-direction: column; align-items: center; gap: 6px; position: relative; z-index: 1; }
.bj-side { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 2px; color: rgba(255,255,255,0.55); }
.bj-row { display: flex; gap: 8px; min-height: 108px; justify-content: center; flex-wrap: wrap; }
.bj-val {
  font-family: 'Bebas Neue', sans-serif; font-size: 18px; color: #fff; min-height: 22px;
  background: rgba(0,0,0,0.4); border: 1px solid var(--border); border-radius: 999px; padding: 1px 14px;
}
.bj-val:empty { display: none; } /* sin óvalo fantasma cuando no hay valor */
/* En mobile mantenemos la mesa pero con ALTO FIJO (no depende de si hay cartas, así
   no cambia de tamaño entre rondas). Sin adornos curvos para no apretar. */
@media (max-width: 980px) {
  .bj-felt {
    aspect-ratio: auto; min-height: 340px; width: 100%;
    border-radius: 16px 16px 44% 44% / 16px 16px 60% 60%; padding: 16px 16px 22px; gap: 14px; border-width: 6px;
  }
  .bj-felt-svg, .bj-deck { display: none; }
}
/* row-reverse → la mano activa (índice 0, que se juega primero) queda a la DERECHA,
   como en Shuffle: al dividir arrancás por la mano de la derecha */
.bj-hands { display: flex; flex-direction: row-reverse; gap: 22px; justify-content: center; flex-wrap: wrap; position: relative; z-index: 1; }
.bj-hand { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 8px; border-radius: 12px; border: 1px solid transparent; }
.bj-hand.activehand { border-color: rgba(255,255,255,0.18); }
/* Resultado de la mano: borde de color en las cartas + badge de valor, estilo Stake. */
.bj-hand.won .bj-card  { box-shadow: 0 0 0 3px var(--green), 0 4px 12px rgba(0,0,0,0.45); }
.bj-hand.lost .bj-card { box-shadow: 0 0 0 3px var(--red), 0 4px 12px rgba(0,0,0,0.45); }
.bj-hand.push .bj-card { box-shadow: 0 0 0 3px #c9aa5a, 0 4px 12px rgba(0,0,0,0.45); }
.bj-hand.won .bj-val   { background: var(--green); color: #042b15; border-color: transparent; }
.bj-hand.lost .bj-val  { background: var(--red); color: #fff; border-color: transparent; }
.bj-hand.push .bj-val  { background: #c9aa5a; color: #1a1206; border-color: transparent; }

/* carta */
.bj-card {
  width: 76px; height: 108px; border-radius: 9px; background: #f4f4ef; color: #1a1a1e;
  position: relative; box-shadow: 0 4px 12px rgba(0,0,0,0.45); flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  animation: bjDeal 0.24s ease;
}
.bj-card .r { position: absolute; top: 6px; left: 8px; font-family: 'Bebas Neue', sans-serif; font-size: 25px; line-height: 1; }
.bj-card .s { font-size: 42px; }
.bj-card.red { color: #d4133a; }
.bj-card.back {
  background: repeating-linear-gradient(45deg, #4d2fd6, #4d2fd6 6px, #6d4dff 6px, #6d4dff 12px);
  border: 2px solid rgba(255,255,255,0.25);
}
@keyframes bjDeal { from { opacity: 0; transform: translateY(-14px) scale(0.92); } to { opacity: 1; transform: none; } }

/* ==================== BACCARAT ==================== */
.bc-board { flex-direction: column; gap: 14px; padding: 18px; justify-content: safe center; align-items: center; overflow-y: auto; position: relative; }

/* Historial de resultados (roadmap J/B/E) arriba del fieltro */
.bc-history { display: flex; gap: 5px; flex-wrap: wrap; justify-content: center; min-height: 22px; }
.bc-hist-cell {
  width: 22px; height: 22px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-family: 'Bebas Neue', sans-serif; font-size: 14px; color: #fff; border: 1px solid rgba(255,255,255,0.25);
}
.bc-hist-cell.player { background: #1f5bbf; }
.bc-hist-cell.banker { background: #b3122f; }
.bc-hist-cell.tie    { background: #0c8a45; }

/* Fieltro con las dos manos enfrentadas + el resultado al centro */
.bc-felt {
  position: relative; width: min(100%, 720px); min-height: 300px;
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: start; gap: 10px;
  padding: 22px 26px;
  border-radius: 18px;
  background:
    radial-gradient(ellipse 70% 55% at 50% 18%, rgba(255,255,255,0.06), rgba(0,0,0,0) 60%),
    radial-gradient(ellipse 125% 120% at 50% 6%, #5a1226, #380c18 55%, #210710);
  border: 9px solid #160708;
  box-shadow: inset 0 4px 30px rgba(0,0,0,0.55), inset 0 0 70px rgba(0,0,0,0.45), 0 16px 44px rgba(0,0,0,0.55);
}
.bc-hand { display: flex; flex-direction: column; align-items: center; gap: 10px; }
.bc-hand-lbl { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 3px; color: rgba(255,255,255,0.6); }
.bc-player .bc-hand-lbl { color: #7db0ff; }
.bc-banker .bc-hand-lbl { color: #ff8095; }
.bc-row { display: flex; gap: 7px; min-height: 84px; justify-content: center; flex-wrap: wrap; }
.bc-row .bj-card { width: 58px; height: 82px; border-radius: 7px; }
.bc-row .bj-card .r { font-size: 18px; top: 4px; left: 5px; }
.bc-row .bj-card .s { font-size: 30px; }
.bc-val {
  font-family: 'Bebas Neue', sans-serif; font-size: 22px; color: #fff; min-height: 22px;
  background: rgba(0,0,0,0.4); border: 1px solid var(--border); border-radius: 999px; padding: 1px 16px;
}
.bc-val:empty { display: none; }
.bc-mid { align-self: center; display: flex; align-items: center; justify-content: center; min-width: 40px; }
.bc-result {
  font-family: 'Bebas Neue', sans-serif; font-size: 18px; letter-spacing: 1px; text-align: center;
  color: #fff; line-height: 1.1; min-height: 22px; padding: 0 4px;
}
.bc-result.player { color: #7db0ff; }
.bc-result.banker { color: #ff8095; }
.bc-result.tie    { color: #5fd99a; }
/* las cartas heredan la animación bjDeal; la usamos escalonada por animation-delay */
.bc-deal { animation: bjDeal 0.26s ease both; }

/* Zonas de apuesta clickeables */
.bc-spots { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; width: min(100%, 720px); }
.bc-spot {
  position: relative; cursor: pointer; text-align: center; padding: 14px 8px 16px;
  border-radius: 12px; border: 1px solid var(--border); background: rgba(255,255,255,0.03);
  transition: border-color 0.15s, transform 0.1s, background 0.15s;
}
.bc-spot:hover { transform: translateY(-2px); background: rgba(255,255,255,0.06); }
.bc-spot::before { content: ''; position: absolute; left: 14px; right: 14px; top: 0; height: 3px; border-radius: 0 0 3px 3px; }
#bcSpot-player::before { background: #4d9bff; }
#bcSpot-tie::before    { background: #34d17a; }
#bcSpot-banker::before { background: #ff5470; }
.bc-spot-name { font-family: 'Bebas Neue', sans-serif; font-size: 20px; letter-spacing: 1px; color: #fff; }
.bc-spot-pay { font-family: 'JetBrains Mono', monospace; font-size: 12px; color: var(--muted); margin-top: 2px; }
.bc-spot.win { border-color: var(--gold); box-shadow: 0 0 0 2px rgba(201,170,90,0.5), 0 6px 18px rgba(0,0,0,0.4); }
.bc-spot .bc-chip-badge {
  position: absolute; top: -10px; left: 50%; transform: translateX(-50%);
  min-width: 26px; height: 26px; padding: 0 6px; border-radius: 999px;
  background: radial-gradient(circle at 35% 30%, #6d4dff, #4d2fd6); color: #fff;
  border: 2px solid #fff; font-size: 10px; font-weight: 800; line-height: 1;
  display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 6px rgba(0,0,0,0.6); z-index: 4;
}
@media (max-width: 980px) {
  .bc-felt { min-height: 260px; padding: 16px 12px; gap: 6px; border-width: 6px; }
  .bc-row .bj-card { width: 48px; height: 68px; }
  .bc-row .bj-card .r { font-size: 15px; } .bc-row .bj-card .s { font-size: 24px; }
}
/* Toggle Manual/Auto (mismo look que .mode-toggle, pero con su propio handler en el módulo) */
.bc-mode-toggle { display: flex; gap: 6px; background: rgba(255,255,255,0.04); border: 1px solid var(--border); border-radius: 10px; padding: 4px; }
.bc-mode-toggle.locked { opacity: 0.5; pointer-events: none; }
/* Mientras corre el auto, el tablero de apuestas y las fichas no se tocan */
#pane-baccarat.auto-running .bc-spots,
#pane-baccarat.auto-running .rl-chips,
#pane-baccarat.auto-running .rl-actions,
#pane-baccarat.auto-running .rl-board-actions { opacity: 0.55; pointer-events: none; }

/* Baccarat en el detalle de apuesta (estilo Stake: manos con badge de valor + zonas) */
.bm-bacc { display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; }
.bm-bacc-side { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.bm-bacc-cards { position: relative; display: inline-flex; }
.bm-bacc-cards .bj-row { min-height: 0; gap: 6px; }
.bm-bacc-cards .bj-card { width: 46px; height: 66px; border-radius: 6px; }
.bm-bacc-cards .bj-card .r { font-size: 16px; top: 4px; left: 5px; }
.bm-bacc-cards .bj-card .s { font-size: 26px; }
.bm-bacc-badge {
  position: absolute; top: -8px; right: -10px; min-width: 24px; height: 22px; padding: 0 7px;
  display: flex; align-items: center; justify-content: center; border-radius: 999px;
  font-family: 'Bebas Neue', sans-serif; font-size: 15px; color: #1a1206;
  background: linear-gradient(135deg, #ffd34d, #ff9b3d); box-shadow: 0 2px 6px rgba(0,0,0,0.5);
}
.bm-bacc-badge.win { background: linear-gradient(135deg, #34d17a, #0c8a45); color: #042b15; }
.bm-bacc-spots { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 7px; margin-top: 2px; }
.bm-bacc-spot { text-align: center; padding: 8px 6px; border-radius: 9px; background: var(--bg-1); border: 1px solid var(--border); }
.bm-bacc-spot.win { border-color: var(--gold); box-shadow: 0 0 0 1px rgba(201,170,90,0.5); }
.bm-bacc-spot-name { font-family: 'Bebas Neue', sans-serif; font-size: 15px; letter-spacing: 0.5px; color: #fff; }
.bm-bacc-spot-amt { font-size: 12px; color: var(--text-dim); display: flex; align-items: center; justify-content: center; gap: 3px; margin-top: 2px; }
.bm-bacc-spot-amt .coin { width: 12px; height: 12px; }

/* ==================== TOOLTIP DE HOVER (plinko buckets / keno pagos) ==================== */
.cz-hovertip {
  position: fixed; z-index: 200; pointer-events: none;
  transform: translate(-50%, calc(-100% - 10px));
  background: var(--panel-solid); border: 1px solid var(--border-hot); border-radius: 8px;
  padding: 9px 14px; display: flex; gap: 20px; white-space: nowrap;
  box-shadow: 0 8px 24px rgba(0,0,0,0.55);
}
.cz-hovertip[hidden] { display: none; }
.cz-hovertip::after {
  content: ''; position: absolute; left: 50%; bottom: -6px; transform: translateX(-50%);
  border-left: 6px solid transparent; border-right: 6px solid transparent; border-top: 6px solid var(--panel-solid);
}
.cz-ht-cell { display: flex; flex-direction: column; gap: 3px; }
.cz-ht-lbl { font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 1px; text-transform: uppercase; color: var(--text-dim); }
.cz-ht-val { font-size: 14px; font-weight: 700; color: #fff; display: flex; align-items: center; gap: 4px; }
.cz-ht-val .coin { width: 13px; height: 13px; }

/* ==================== CAJAS (reel horizontal estilo CS) ==================== */
.cs-board { flex-direction: column; gap: 14px; padding: 18px; justify-content: safe center; align-items: center; }
.cs-reelwrap {
  position: relative; width: 100%; max-width: 720px; overflow: hidden;
  border-radius: 14px; border: 1px solid var(--border); background: rgba(0,0,0,0.35);
  padding: 14px 0; box-shadow: inset 0 2px 18px rgba(0,0,0,0.5);
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
}
/* puntero central (la "aguja" donde cae el premio) */
.cs-pointer { position: absolute; left: 50%; top: 0; bottom: 0; width: 2px; transform: translateX(-50%); background: var(--gold); z-index: 3; box-shadow: 0 0 10px rgba(255,201,64,0.8); }
.cs-pointer::before, .cs-pointer::after {
  content: ''; position: absolute; left: 50%; transform: translateX(-50%);
  border-left: 6px solid transparent; border-right: 6px solid transparent;
}
.cs-pointer::before { top: -1px; border-top: 7px solid var(--gold); }
.cs-pointer::after { bottom: -1px; border-bottom: 7px solid var(--gold); }
.cs-reel { display: flex; will-change: transform; }
.cs-item {
  flex: 0 0 88px; width: 88px; height: 88px; box-sizing: border-box;
  display: flex; align-items: center; justify-content: center;
  font-family: 'Bebas Neue', sans-serif; font-size: 22px; letter-spacing: 0.5px;
  border-right: 2px solid rgba(0,0,0,0.35); color: #fff;
}
/* 7 tiers de color de Stake, por item (no por umbral): gris/celeste/azul/rojo/verde/morado/oro */
.cs-item.cs-gray   { background: #3a3f47; color: #cfd3da; }
.cs-item.cs-cyan   { background: #2bb6cf; color: #04323b; }
.cs-item.cs-blue   { background: #2563eb; color: #fff; }
.cs-item.cs-red    { background: #e23b4e; color: #fff; }
.cs-item.cs-green  { background: #1faa55; color: #042b15; }
.cs-item.cs-purple { background: #8b3bd6; color: #fff; }
.cs-item.cs-gold   { background: linear-gradient(135deg, #ffd34d, #f0a000); color: #3a2600; }
.cs-item.won { box-shadow: inset 0 0 0 3px var(--gold), 0 0 18px rgba(255,201,64,0.6); z-index: 2; }

/* Fila de cuadraditos de color (tiers) — clickeable, abre el popup de probabilidades */
.cs-tiers { display: flex; gap: 7px; justify-content: center; margin-top: 4px; cursor: pointer; }
.cs-tier-sq { width: 22px; height: 22px; border-radius: 5px; transition: transform 0.12s; }
.cs-tiers:hover .cs-tier-sq { transform: translateY(-1px); }
.cs-tier-sq.cs-gray   { background: #3a3f47; }
.cs-tier-sq.cs-cyan   { background: #2bb6cf; }
.cs-tier-sq.cs-blue   { background: #2563eb; }
.cs-tier-sq.cs-red    { background: #e23b4e; }
.cs-tier-sq.cs-green  { background: #1faa55; }
.cs-tier-sq.cs-purple { background: #8b3bd6; }
.cs-tier-sq.cs-gold   { background: linear-gradient(135deg, #ffd34d, #f0a000); }

/* Tabla de premios del nivel (mult + probabilidad) — dentro del popup csModal */
.cs-modal-card { max-width: 440px; }
.cs-payouts {
  width: 100%; margin-top: 10px;
  border: 1px solid var(--border); border-radius: 12px; background: rgba(0,0,0,0.25);
  overflow: hidden;
}
.cs-pay-head {
  display: flex; justify-content: space-between; padding: 9px 14px;
  font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 1px; text-transform: uppercase;
  color: var(--text-dim); border-bottom: 1px solid var(--border);
}
.cs-pay-row {
  display: flex; justify-content: space-between; align-items: center; padding: 8px 14px;
  border-bottom: 1px solid rgba(255,255,255,0.04); font-size: 13px;
}
.cs-pay-row:last-child { border-bottom: none; }
.cs-pay-mult { display: flex; align-items: center; gap: 9px; font-family: 'Bebas Neue', sans-serif; font-size: 17px; letter-spacing: 0.5px; color: #fff; }
.cs-pay-prob { font-family: 'JetBrains Mono', monospace; color: var(--text-dim); }
.cs-pay-dot { width: 12px; height: 16px; border-radius: 3px; flex-shrink: 0; }
/* el puntito reusa los colores de tier del item */
.cs-pay-dot.cs-gray   { background: #3a3f47; }
.cs-pay-dot.cs-cyan   { background: #2bb6cf; }
.cs-pay-dot.cs-blue   { background: #2563eb; }
.cs-pay-dot.cs-red    { background: #e23b4e; }
.cs-pay-dot.cs-green  { background: #1faa55; }
.cs-pay-dot.cs-purple { background: #8b3bd6; }
.cs-pay-dot.cs-gold   { background: linear-gradient(135deg, #ffd34d, #f0a000); }

/* ==================== BLITZ (cartas únicas) ==================== */
.bl-board { flex-direction: column; gap: 14px; padding: 18px; justify-content: safe center; align-items: center; position: relative; overflow-y: auto; }
/* mult del objetivo a la derecha del label, como Shuffle */
#pane-blitz .pk-field label { display: flex; justify-content: space-between; align-items: baseline; }
.bl-multlbl { font-family: 'JetBrains Mono', monospace; font-size: 12px; font-weight: 800; color: #fff; }
.bl-profit {
  display: flex; align-items: center; gap: 6px; padding: 10px 12px;
  background: rgba(0,0,0,0.25); border: 1px solid var(--border); border-radius: 10px;
  font-family: 'JetBrains Mono', monospace; font-weight: 700; font-size: 14px; color: var(--text-dim);
}
.bl-grid { display: grid; grid-template-columns: repeat(13, 1fr); gap: 6px; width: min(100%, 780px); }
.bl-card {
  aspect-ratio: 5 / 7; border-radius: 6px; user-select: none;
  background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px;
  font-family: 'JetBrains Mono', monospace; color: rgba(255,255,255,0.22);
  transition: transform 0.12s, background 0.15s, color 0.15s, box-shadow 0.15s;
}
.bl-card b { font-size: clamp(9px, 1.3vw, 17px); font-weight: 800; line-height: 1; }
.bl-card span { font-size: clamp(9px, 1.2vw, 15px); line-height: 1; }
.bl-card.red { color: rgba(255, 80, 110, 0.30); } /* ♥/♦ apagadas en rojo tenue */
/* carta sacada (única): se da vuelta en blanco */
.bl-card.on {
  background: #f4f4ef; color: #1a1a1e; border-color: transparent;
  box-shadow: 0 3px 10px rgba(0,0,0,0.4); transform: scale(1.05); animation: blFlip 0.2s ease;
}
.bl-card.on.red { color: #d4133a; }
/* la repetida que mató la ronda: anillo rojo + sacudida sobre la carta ya dada vuelta */
.bl-card.dup {
  box-shadow: 0 0 0 3px var(--red), 0 0 20px rgba(255, 26, 60, 0.55);
  animation: blShake 0.35s ease;
}
.bl-progress { width: min(100%, 780px); height: 6px; background: rgba(255,255,255,0.08); border-radius: 999px; overflow: hidden; }
.bl-progress-fill { height: 100%; width: 0%; background: linear-gradient(90deg, var(--green), #1fae63); border-radius: 999px; transition: width 0.15s ease; }
@keyframes blFlip { from { opacity: 0.4; transform: scale(0.85) rotateY(70deg); } to { opacity: 1; transform: scale(1.05) rotateY(0); } }
@keyframes blShake { 0%, 100% { transform: scale(1.05) translateX(0); } 25% { transform: scale(1.05) translateX(-3px); } 75% { transform: scale(1.05) translateX(3px); } }
@media (max-width: 700px) {
  .bl-grid { gap: 3px; }
  .bl-card { border-radius: 4px; }
  .bl-card b { font-size: 9px; } .bl-card span { font-size: 8px; }
}

.bj-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.bj-act {
  font-family: 'Bebas Neue', sans-serif; font-size: 18px; letter-spacing: 1px; color: #fff;
  background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.15); border-radius: 10px;
  padding: 13px 8px; cursor: pointer; transition: all 0.15s;
}
.bj-act:hover:not(:disabled) { background: rgba(255,255,255,0.11); border-color: var(--border-hot); transform: translateY(-1px); }
.bj-act:disabled { opacity: 0.35; cursor: not-allowed; }
#bjHit { color: var(--green); } #bjStand { color: #ff7a7a; }
.bj-result {
  font-family: 'Bebas Neue', sans-serif; font-size: 26px; letter-spacing: 1px; text-align: center;
  padding: 6px 22px; border-radius: 10px; min-height: 22px;
}
.bj-result.win { background: var(--green); color: #042b15; }
.bj-result.lose { background: var(--red); color: #fff; }
.bj-result.push { background: rgba(255,255,255,0.08); color: #d8d8de; border: 1px solid var(--border); }

[hidden] { display: none !important; }

/* barra de saldo fija (solo mobile) — oculta en desktop */
.cz-mobilebar { display: none; }

@media (max-width: 980px) {
  .casino-shell {
    grid-template-columns: minmax(0, 1fr);   /* minmax(0,..) evita que un hijo ancho agrande la columna */
    max-width: 100%;
    /* OJO: nada de overflow-x:hidden acá — rompería el position:sticky de la barra
       de saldo. El minmax(0,1fr) + min-width:0 ya evitan el desborde; el body tiene
       overflow-x:hidden de red de seguridad. */
  }
  /* ningún item del grid debe forzar la columna más ancha que la pantalla */
  .casino-shell > * { min-width: 0; max-width: 100%; }
  .casino-center, .casino-bottom, .bets-feed { min-width: 0; max-width: 100%; }
  /* en una sola columna no tiene sentido el sticky: apilan barra → side → centro → der */
  .casino-side, .casino-right { position: static; max-height: none; }

  /* TODOS los juegos apilan: controles arriba (ancho completo), tablero abajo */
  .pane.active { flex-direction: column; }
  .pk-controls { width: 100%; flex-shrink: 0; border-right: none; border-bottom: 1px solid var(--border); }
  .pk-board { width: 100%; min-width: 0; }

  /* ===== Rediseño mobile — TODOS los juegos: tablero ARRIBA+grande, APOSTAR debajo ===== */
  .pane.active .pk-board { order: -1; padding: 8px; border-bottom: 1px solid var(--border); }
  /* alto generoso solo para los de tablero canvas/grilla; los demás se dimensionan solos */
  #pane-plinko.active .pk-board,
  #pane-keno.active .pk-board,
  #pane-mines.active .pk-board { min-height: 54vh; }
  .pane.active .pk-controls { border-bottom: none; padding-top: 14px; }
  /* el botón APOSTAR sube al tope de los controles → queda pegado debajo del tablero */
  .pane.active .pk-controls .bet-btn { order: -1; }
  .pane.active .pk-controls .pk-hint { order: 5; }   /* la nota de Provably Fair, al final */

  /* últimas caídas (dice/limbo/plinko): en mobile NO van como columna absoluta a la
     derecha (tapaban el slider). Van en FILA horizontal arriba a la derecha, sobre el
     resultado, igual que Shuffle. Al ser static empujan el contenido hacia abajo. */
  .pk-recent {
    position: static; flex-direction: row; flex-wrap: wrap;
    justify-content: flex-end; align-items: flex-start;
    width: 100%; margin: 0 0 12px; gap: 6px;
  }

  /* HEADER + SALDO los dos FIJOS arriba (header arriba, saldo justo debajo). Antes el
     saldo iba en top:0 y el header le pasaba por detrás al scrollear (se veía feo).
     Fixed queda anclado al viewport pase lo que pase (el sticky no aguantaba en el grid).
     Reservamos su alto con padding-top en el body: solo el header si no hay sesión,
     header + barra de saldo si estás logueado (.casino-auth). El menú hamburguesa va
     anclado al .topbar (position:absolute), así que fijar el header no lo rompe. */
  .topbar { position: fixed; top: 0; left: 0; right: 0; z-index: 55; }
  body { padding-top: var(--topbar-h); }
  body.casino-auth { padding-top: calc(var(--topbar-h) + 50px); }
  .cz-mobilebar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    position: fixed;
    top: var(--topbar-h); left: 0; right: 0;
    height: 50px;
    z-index: 50;
    margin: 0;
    padding: 0 16px;
    background: linear-gradient(180deg, rgba(24, 8, 12, 0.98), rgba(14, 6, 8, 0.98));
    border-bottom: 1px solid var(--border-hot);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
  }
  .czm-label { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 2px; color: var(--text-dim); }
  .czm-bal { font-family: 'Bebas Neue', sans-serif; font-size: 26px; color: var(--gold); display: flex; align-items: center; gap: 7px; }
  .czm-bal .coin { font-size: 24px; }

  /* En mobile la sidebar (originales + eventos) se reemplaza por el botón "Menú" de la
     barra inferior, que abre un modal con todo. Así no queda colgada arriba del tablero. */
  .casino-side { display: none; }

  /* el saldo grande de la tarjeta derecha es redundante con la barra fija */
  .bal-top { display: none; }
  /* en mobile el saldo va en la barra fija (balanceM); el pill de la topbar se oculta */
  .cz-topbal { display: none !important; }

  .casino-main { height: auto; min-height: 70vh; }
}
@media (max-width: 720px) {
  .cb-head { gap: 10px; }
  .cb-tabs { width: 100%; flex-wrap: wrap; }
  .cb-tab { flex: 1; text-align: center; }
}

/* ==================== SALDO EN LA TOPBAR (pill estilo Shuffle, solo casino) ==================== */
.cz-topbal {
  display: inline-flex; align-items: center; gap: 8px;
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  padding: 9px 18px; border-radius: 4px;            /* caja cuadrada (era pill redondo) */
  background: var(--bg-1);
  border: 1px solid var(--border-hot);
  font-family: 'Inter', sans-serif; font-weight: 800; font-size: 18px; letter-spacing: .3px;
  color: var(--gold); line-height: 1; z-index: 1;
}
.cz-topbal .coin { font-size: 18px; }
/* bump al cambiar el saldo: respeta el centrado absoluto (translate + scale) */
.cz-topbal { transition: transform 0.18s ease; }
@keyframes czBalBump {
  0% { transform: translate(-50%, -50%) scale(1); }
  40% { transform: translate(-50%, -50%) scale(1.14); }
  100% { transform: translate(-50%, -50%) scale(1); }
}
.cz-topbal.bump { animation: czBalBump 0.4s ease; }

/* ==================== CONTADOR DE TEMPORADA (vista Temporada, bajo el título) ==================== */
/* Cuánto falta para el cierre de la temporada. Va centrado debajo del título "TEMPORADA". */
.tp-season {
  display: inline-flex; align-items: center; gap: 8px; margin: 10px auto 0;
  padding: 6px 14px; border-radius: 999px; line-height: 1; white-space: nowrap;
  background: rgba(255, 201, 64, .08); border: 1px solid rgba(255, 201, 64, .3);
  color: var(--text-dim); font-size: 13px; font-weight: 700; letter-spacing: .3px;
}
.tp-season b { color: var(--gold); font-weight: 800; font-variant-numeric: tabular-nums; }

/* botones de acción del dropdown de perfil (Recompensas / Tip): planos y rectos,
   en línea con "Cerrar Sesión" (sin caja con borde, sin esquinas redondeadas). */
.account-action {
  display: flex; align-items: center; gap: 9px;
  width: 100%; text-align: left;
  font-family: inherit; font-size: 12px; font-weight: 700; letter-spacing: 0.3px;
  color: var(--text-dim);
  background: transparent; border: none; border-radius: 0;
  padding: 9px 14px; cursor: pointer; transition: all 0.15s;
}
.account-action:hover { color: #fff; background: rgba(255, 255, 255, 0.06); }
.account-action svg { width: 15px; height: 15px; flex-shrink: 0; }
.account-action .rw-dot {
  width: 8px; height: 8px; border-radius: 50%; margin-left: auto;
  background: #53fc18; box-shadow: 0 0 8px #53fc18;
}

/* ==================== BARRA INFERIOR DEL JUEGO (estilo Shuffle) ==================== */
/* El juego + la barra son UNA sola card (.casino-stage): la barra queda DENTRO,
   con el mismo fondo y una línea divisoria arriba, igual que el footer de Shuffle. */
.casino-stage {
  display: flex; flex-direction: column;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.05) 0%, rgba(255, 255, 255, 0.018) 100%);
  border: 1px solid var(--border-hot);
  border-radius: 10px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05), 0 18px 50px rgba(0, 0, 0, 0.45);
  overflow: hidden;
}
.cz-gamebar {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  height: 56px; box-sizing: border-box; padding: 0 14px;
  background: none;
  border-top: 1px solid var(--border);
}
.cz-gamebar-left { display: flex; align-items: center; gap: 8px; }
.cz-gb-btn {
  width: 38px; height: 38px; border-radius: 10px; cursor: pointer;
  background: rgba(255, 255, 255, 0.04); border: 1px solid var(--border);
  color: var(--text); font-size: 17px; line-height: 1;
  display: flex; align-items: center; justify-content: center;
}
.cz-gb-btn:hover { background: rgba(255, 255, 255, 0.08); border-color: var(--border-hot); }
.cz-gb-btn.off { opacity: 0.45; }
.cz-gb-pf {
  display: inline-flex; align-items: center; gap: 6px;
  background: none; border: none; cursor: pointer;
  color: var(--text-dim); font-family: 'JetBrains Mono', monospace; font-size: 12px; letter-spacing: 1px;
}
.cz-gb-pf:hover { color: var(--gold); }
.cz-gamebar .dev-box { margin: 0; }

.tip-modal-card .tip-card { display: flex; flex-direction: column; gap: 10px; }

/* ==================== CHAT DEL CASINO (panel derecho, estilo Shuffle) ==================== */
/* Desktop: 3ª columna del grid (card sticky, igual que la vieja card de saldo, con
   su gutter). Mobile: pasa a overlay slide-over (ver media query más abajo). */
.cz-chat {
  display: flex; flex-direction: column;
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 9px;
  overflow: hidden;
  /* el chat mide lo mismo que la stage (juego + barra) y queda sticky al scrollear */
  position: sticky; top: 14px;
  height: calc(min(100vh - var(--topbar-h) - 32px, 720px) + 58px);
}
/* En desktop el chat es permanente: no se cierra (sin X, sin FAB). */
.cz-chat-close, .chat-fab, .cz-chat-backdrop { display: none; }

.cz-chat-head {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 14px; flex-shrink: 0;
  border-bottom: 1px solid var(--border);
}
.cz-chat-title { font-family: 'Bebas Neue', sans-serif; font-size: 18px; letter-spacing: 2px; }
.cz-chat-online {
  display: inline-flex; align-items: center; gap: 6px; margin-left: auto;
  font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--text-dim);
}
.cz-online-dot { width: 8px; height: 8px; border-radius: 50%; background: #53fc18; box-shadow: 0 0 8px #53fc18; }
#chatOnlineBtn { cursor: pointer; user-select: none; }
#chatOnlineBtn:hover { color: var(--text); }

/* ---- popover "quiénes están en línea" (anclado al chat, que ya tiene position) ---- */
.cz-who {
  position: absolute; top: 44px; right: 10px; z-index: 30;
  width: min(240px, calc(100% - 20px)); max-height: 320px; overflow-y: auto;
  background: var(--panel-solid, #1a0e10); border: 1px solid var(--border);
  border-radius: 9px; padding: 8px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
}
.cz-who-title {
  font-family: 'Bebas Neue', sans-serif; font-size: 15px; letter-spacing: 1px;
  padding: 2px 4px 8px; border-bottom: 1px solid var(--border); margin-bottom: 6px;
}
.cz-who-row { display: flex; align-items: center; gap: 7px; padding: 4px; border-radius: 6px; }
.cz-who-row:hover { background: rgba(255, 255, 255, 0.04); }
.cz-who-av { width: 20px; height: 20px; border-radius: 50%; object-fit: cover; background: rgba(255, 255, 255, 0.06); flex-shrink: 0; }
.cz-who-name { font-size: 12px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cz-who-name.is-admin::after { content: ' ★'; color: #ffc940; }
.cz-who-empty, .cz-who-anon { font-size: 11px; color: var(--text-dim); padding: 4px; }
.cz-who-anon { border-top: 1px solid var(--border); margin-top: 6px; padding-top: 8px; }

/* ---- sorteo del chat (banner fijo arriba del chat, dorado) ---- */
/* ---- mensaje fijado (pin) arriba del chat ---- */
.cz-pin {
  flex-shrink: 0; display: flex; align-items: center; gap: 8px;
  padding: 9px 12px; border-bottom: 1px solid var(--border);
  background: linear-gradient(180deg, rgba(255, 201, 64, 0.14), rgba(0, 0, 0, 0.18));
}
.cz-pin-ic { flex-shrink: 0; font-size: 14px; }
.cz-pin-text {
  font-size: 13px; font-weight: 700; color: #ffc940; line-height: 1.35;
  word-break: break-word;
}

.cz-raffle {
  flex-shrink: 0; padding: 10px 12px; border-bottom: 1px solid var(--border);
  background: linear-gradient(180deg, rgba(255, 201, 64, 0.12), rgba(0, 0, 0, 0.18));
}
.cz-raffle-head { display: flex; align-items: baseline; gap: 8px; }
.cz-raffle-title { font-family: 'Bebas Neue', sans-serif; font-size: 17px; letter-spacing: 1px; color: #ffc940; }
.cz-raffle-time { margin-left: auto; font-family: 'JetBrains Mono', monospace; font-size: 10px; color: var(--text-dim); white-space: nowrap; }
.cz-raffle-time.over { color: var(--green); font-weight: 700; }
.cz-raffle-kw { font-size: 12px; margin-top: 4px; line-height: 1.35; }
.cz-raffle-kw b { color: #ffc940; }
.cz-raffle-winners { font-size: 12px; margin-top: 4px; font-weight: 800; color: #ffc940; line-height: 1.35; }
/* ---- participación con captcha (Turnstile) ---- */
.cz-raffle-join { margin-top: 6px; }
.cz-raffle-btn {
  margin-top: 6px; width: 100%; padding: 9px 12px; border: none; border-radius: 8px; cursor: pointer;
  font-family: 'Bebas Neue', sans-serif; font-size: 16px; letter-spacing: 1px; color: #1a0608;
  background: linear-gradient(180deg, #ffd24a, #ffb300); box-shadow: 0 2px 0 rgba(0,0,0,0.25);
}
.cz-raffle-btn:hover { filter: brightness(1.05); }
.cz-raffle-btn:active { transform: translateY(1px); box-shadow: none; }
.cz-raffle-btn:disabled, .cz-raffle-btn.arming { opacity: 0.55; cursor: default; filter: none; }
.cz-raffle-ts { margin-top: 8px; display: flex; justify-content: center; overflow: hidden; }
.cz-raffle-status { font-size: 12px; margin-top: 6px; color: var(--text-dim); line-height: 1.35; }
.cz-raffle-in { color: var(--green); font-weight: 800; }
/* paso de la palabra (confirmación tras el captcha) */
.cz-raffle-kwstep { margin-top: 8px; }
.cz-raffle-input {
  width: 100%; margin-top: 6px; padding: 8px 10px; border-radius: 8px;
  border: 1px solid var(--border); background: rgba(0,0,0,0.25); color: var(--text);
  font-size: 16px; /* 16px = iOS no hace auto-zoom */ outline: none;
}
.cz-raffle-input:focus { border-color: #ffc940; }
.cz-raffle-kwstep .cz-raffle-btn { margin-top: 8px; }
/* CTA flotante SOLO en mobile cuando hay sorteo y el chat está cerrado */
.cz-raffle-cta {
  position: fixed; left: 50%; transform: translateX(-50%); bottom: 76px; z-index: 60;
  max-width: 92vw; padding: 11px 18px; border: none; border-radius: 999px; cursor: pointer;
  font-family: 'Bebas Neue', sans-serif; font-size: 16px; letter-spacing: 0.5px; color: #1a0608;
  background: linear-gradient(180deg, #ffd24a, #ffb300); box-shadow: 0 4px 16px rgba(0,0,0,0.45);
  animation: czRaffleCta 1.6s ease-in-out infinite;
}
@keyframes czRaffleCta { 0%,100% { transform: translateX(-50%) scale(1); } 50% { transform: translateX(-50%) scale(1.05); } }
@media (min-width: 981px) { .cz-raffle-cta { display: none; } }

/* ---- encuesta (widget arriba del chat) ---- */
.cz-poll {
  flex-shrink: 0; padding: 10px 12px; border-bottom: 1px solid var(--border);
  background: linear-gradient(180deg, rgba(180, 18, 44, 0.10), rgba(0, 0, 0, 0.18));
}
.cz-poll-head { display: flex; align-items: baseline; gap: 8px; }
.cz-poll-q { font-family: 'Bebas Neue', sans-serif; font-size: 17px; letter-spacing: 1px; }
.cz-poll-time { margin-left: auto; font-family: 'JetBrains Mono', monospace; font-size: 10px; color: var(--text-dim); white-space: nowrap; }
.cz-poll-time.over { color: var(--green); font-weight: 700; }
.cz-poll-desc { font-size: 11px; color: var(--text-dim); margin-top: 3px; line-height: 1.35; }
.cz-poll-opts { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-top: 8px; }
.cz-poll-opt {
  position: relative; overflow: hidden; cursor: pointer;
  display: flex; align-items: center; justify-content: space-between; gap: 6px;
  padding: 8px 10px; border-radius: 8px;
  background: rgba(255, 255, 255, 0.05); border: 1px solid var(--border); color: #fff;
  font: inherit; font-size: 12px; transition: border-color 0.15s, background 0.15s;
}
.cz-poll-opt:hover:not(:disabled) { border-color: var(--border-hot); background: rgba(255, 255, 255, 0.08); }
.cz-poll-opt.mine { border-color: var(--red); box-shadow: 0 0 10px var(--red-glow); }
.cz-poll-opt.sel { border-color: var(--border-hot); background: rgba(255, 255, 255, 0.1); }
.cz-poll-opt:disabled { cursor: default; opacity: 0.85; }
.cz-poll-accept {
  width: 100%; margin-top: 6px; padding: 8px 10px; cursor: pointer;
  font-family: 'Bebas Neue', sans-serif; font-size: 15px; letter-spacing: 1px; color: #fff;
  background: linear-gradient(135deg, var(--red), var(--red-deep));
  border: none; border-radius: 8px; transition: filter 0.15s;
}
.cz-poll-accept:hover { filter: brightness(1.15); }
.cz-poll-fill {
  position: absolute; left: 0; top: 0; bottom: 0; width: 0%;
  background: linear-gradient(90deg, rgba(180, 18, 44, 0.45), rgba(180, 18, 44, 0.18));
  transition: width 0.3s ease; pointer-events: none;
}
.cz-poll-name { position: relative; font-weight: 800; }
.cz-poll-pct { position: relative; font-family: 'JetBrains Mono', monospace; font-size: 10px; color: var(--text-dim); white-space: nowrap; }
.cz-poll-foot { margin-top: 6px; font-size: 10px; color: var(--text-dim); }
.cz-chat-close {
  background: none; border: none; color: var(--text-dim); cursor: pointer;
  font-size: 16px; padding: 2px 6px; border-radius: 6px;
}
.cz-chat-close:hover { color: var(--text); background: rgba(255,255,255,0.06); }

.cz-chat-body {
  flex: 1; min-height: 0; overflow-y: auto;
  display: flex; flex-direction: column; gap: 8px;
  padding: 12px 12px 6px;
}
.cz-chat-body::-webkit-scrollbar { width: 8px; }
.cz-chat-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 8px; }

.cz-msg { display: flex; gap: 8px; align-items: flex-start; }
.cz-msg-av {
  width: 26px; height: 26px; border-radius: 50%; flex-shrink: 0;
  object-fit: cover; background: rgba(255,255,255,0.08);
}
.cz-msg-body { min-width: 0; flex: 1; }
.cz-msg-top { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; }
.cz-msg-name { font-weight: 700; font-size: 12px; color: var(--gold); }
.cz-msg-name.is-admin { color: var(--red); }
.cz-msg-vip { width: 15px; height: 15px; object-fit: contain; flex-shrink: 0; }
.cz-msg-del {
  background: none; border: none; color: var(--text-dim); cursor: pointer;
  font-size: 11px; margin-left: auto; opacity: 0; transition: opacity 0.15s;
}
.cz-msg:hover .cz-msg-del { opacity: 0.7; }
.cz-msg-del:hover { opacity: 1; color: var(--red); }
.cz-msg-text { font-size: 13px; line-height: 1.4; color: var(--text); word-wrap: break-word; overflow-wrap: anywhere; white-space: pre-wrap; }

/* responder/citar: botón ↩ (hover-reveal, igual que borrar) */
.cz-msg-reply-btn {
  background: none; border: none; color: var(--text-dim); cursor: pointer;
  font-size: 12px; margin-left: auto; opacity: 0; transition: opacity 0.15s; padding: 0 2px;
}
.cz-msg:hover .cz-msg-reply-btn { opacity: 0.7; }
.cz-msg-reply-btn:hover { opacity: 1; color: var(--gold); }
/* en touch (sin hover) el ↩ queda siempre visible y con área de toque más grande;
   y el long-press de un mensaje dispara responder sin que iOS abra el menú de copiar */
@media (hover: none) {
  .cz-msg-reply-btn { opacity: 0.65; font-size: 15px; padding: 2px 6px; }
  .cz-msg { -webkit-touch-callout: none; -webkit-user-select: none; user-select: none; }
}
/* cita embebida dentro de un mensaje (a qué responde) */
.cz-msg-reply {
  display: flex; flex-direction: column; gap: 1px;
  border-left: 2px solid var(--gold); padding: 2px 6px; margin: 2px 0 3px;
  background: rgba(255, 255, 255, 0.04); border-radius: 0 4px 4px 0; cursor: pointer; max-width: 100%;
}
.cz-msg-reply:hover { background: rgba(255, 255, 255, 0.07); }
.cz-msg-reply-name { font-size: 10px; font-weight: 700; color: var(--gold); }
.cz-msg-reply-text { font-size: 11px; color: var(--text-dim); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* flash al saltar al mensaje citado */
.cz-msg.cz-flash { animation: czFlash 1.5s ease-out; }
@keyframes czFlash { 0% { background: rgba(212, 175, 55, 0.25); } 100% { background: transparent; } }
/* barra "respondiendo a …" arriba del input */
.cz-chat-reply {
  display: flex; align-items: center; gap: 8px; margin-bottom: 6px;
  padding: 5px 8px; border-left: 2px solid var(--gold);
  background: rgba(255, 255, 255, 0.05); border-radius: 0 4px 4px 0;
}
.cz-reply-info { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1; }
.cz-reply-to { font-size: 10px; font-weight: 700; color: var(--gold); }
.cz-reply-snip { font-size: 11px; color: var(--text-dim); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cz-reply-x { background: none; border: none; color: var(--text-dim); cursor: pointer; font-size: 13px; flex-shrink: 0; line-height: 1; }
.cz-reply-x:hover { color: var(--red); }

/* tarjeta de sistema (propinas / anuncios) */
.cz-sys {
  align-self: stretch; text-align: center;
  font-size: 12px; line-height: 1.4;
  padding: 8px 10px; border-radius: 10px;
  background: rgba(83, 252, 24, 0.08);
  border: 1px solid rgba(83, 252, 24, 0.25);
  color: var(--text);
}
.cz-sys b { color: var(--gold); }
.cz-sys .coin { font-size: 13px; }
.cz-sys-levelup {
  background: rgba(255, 201, 64, 0.10);
  border-color: rgba(255, 201, 64, 0.35);
}

.cz-chat-empty { color: var(--text-dim); font-size: 12px; text-align: center; margin: auto 0; }

.cz-chat-foot { flex-shrink: 0; padding: 10px 12px 12px; border-top: 1px solid var(--border); }
.cz-chat-status {
  font-size: 11px; color: var(--red); margin-bottom: 6px; min-height: 14px;
  font-family: 'JetBrains Mono', monospace;
}
.cz-chat-inputrow { display: flex; gap: 8px; }
#chatInput {
  flex: 1; min-width: 0; background: rgba(255,255,255,0.05);
  border: 1px solid var(--border); border-radius: 10px;
  padding: 10px 12px; color: var(--text); font-size: 13px;
}
#chatInput:focus { outline: none; border-color: var(--border-hot); }
#chatInput:disabled { opacity: 0.5; }
#chatSend {
  flex-shrink: 0; width: 42px; border: none; border-radius: 10px; cursor: pointer;
  background: var(--red); color: #fff; font-size: 16px;
}
#chatSend:disabled { opacity: 0.4; cursor: default; }
.cz-chat-rules { margin-top: 8px; font-size: 10px; color: var(--text-dim); text-align: center; line-height: 1.4; }
.cz-chat-login { display: block; margin-top: 8px; text-align: center; font-size: 12px; color: #53fc18; text-decoration: none; }

/* botón flotante para abrir el chat cuando está cerrado */
.chat-fab {
  position: fixed; right: 18px; bottom: 18px; z-index: 41;
  width: 54px; height: 54px; border-radius: 50%; border: none; cursor: pointer;
  background: var(--red); color: #fff; font-size: 22px;
  box-shadow: 0 6px 24px rgba(255, 26, 60, 0.4);
  display: flex; align-items: center; justify-content: center;
}
body.chat-open .chat-fab { display: none; }
.chat-fab-badge {
  position: absolute; top: -2px; right: -2px;
  min-width: 18px; height: 18px; padding: 0 4px; border-radius: 9px;
  background: #53fc18; color: #0a0a0e; font-size: 10px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
}

@media (max-width: 980px) {
  /* Mobile: el chat NO es columna del grid sino un overlay slide-over desde la
     derecha. El header es fixed en mobile → arranca bajo él. Se abre con el FAB 💬. */
  .cz-chat {
    /* Mobile: chat a PANTALLA COMPLETA (debajo del header), opaco. Antes era un
       slide-over angosto + backdrop oscuro → "se oscurecía" la pantalla al abrir. */
    position: fixed; top: var(--topbar-h); left: 0; right: 0; bottom: auto;
    /* Altura = viewport VISIBLE (dvh), no el layout viewport: con bottom:0 el pie
       (input) quedaba debajo de la barra del navegador/gestos y no se veía. */
    height: calc(100vh - var(--topbar-h));
    height: calc(100dvh - var(--topbar-h));
    width: auto; max-height: none; z-index: 60;
    background: #0e0709;
    border: none; border-radius: 0;
    transform: translateX(100%); transition: transform 0.22s ease;
  }
  /* el input tiene que quedar POR ENCIMA de la barra de gestos/nav del teléfono */
  .cz-chat-foot { padding-bottom: calc(12px + env(safe-area-inset-bottom)); }
  /* iOS Safari hace zoom automático al enfocar un input con font-size <16px.
     Subimos el input del chat a 16px SOLO en mobile para frenar ese zoom (en
     desktop queda 13px por densidad de la columna lateral). */
  #chatInput { font-size: 16px; }
  body.chat-open .cz-chat { transform: translateX(0); }
  /* en mobile sí se muestran el botón de cerrar y el FAB para abrir */
  .cz-chat-close { display: inline-flex; }
  .chat-fab { display: flex; }
  body.chat-open .chat-fab { display: none; }
  /* chat full-screen ⇒ no hace falta oscurecer el fondo (se cierra con la ✕). */
  .cz-chat-backdrop { display: none; }
}

/* ==================== MODO MANTENIMIENTO ==================== */
/* Overlay full-screen que tapa TODO el casino mientras está cerrado. */
.cz-maint {
  position: fixed; inset: 0; z-index: 99999;
  display: flex; align-items: center; justify-content: center;
  padding: 24px; background: rgba(10, 8, 12, 0.93);
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
}
.cz-maint[hidden] { display: none; }
body.casino-maint { overflow: hidden; }
.cz-maint-card {
  max-width: 440px; text-align: center;
  background: #1a1216; border: 1px solid #B4122C; border-radius: 14px;
  padding: 34px 28px; box-shadow: 0 14px 52px rgba(0, 0, 0, 0.55);
}
.cz-maint-emoji { font-size: 56px; line-height: 1; margin-bottom: 12px; }
.cz-maint-card h2 { margin: 0 0 10px; color: #fff; font-size: 23px; font-weight: 800; }
.cz-maint-card p { margin: 0; color: #e7c7cd; font-size: 15px; line-height: 1.55; }

/* ==================== DETALLE DE APUESTA (modal estilo Shuffle) ==================== */
/* Filas del feed clickeables */
.bf-list .bf-row { cursor: pointer; }
.bf-list .bf-row:hover { background: rgba(255,26,60,0.07); }
/* en la vista admin, mostramos el kick_id chico bajo el nombre */
.bf-kid { font-family: 'JetBrains Mono', monospace; font-size: 9px; color: var(--text-dim); display: block; }

/* Barra de filtros admin */
.bf-adminbar { display: flex; gap: 8px; padding: 9px 10px; border-top: 1px solid var(--border); }
.bf-adminbar input, .bf-adminbar select {
  background: var(--bg-1); border: 1px solid var(--border); border-radius: 8px; color: #fff;
  padding: 7px 9px; font-size: 12px; color-scheme: dark;
}
.bf-adminbar input { flex: 1; min-width: 0; }
.bf-adminbar input:focus, .bf-adminbar select:focus { outline: none; border-color: var(--border-hot); }
.bf-tab-admin.active { color: var(--gold); background: rgba(255,201,64,0.12); border-color: var(--gold); }

/* ===== Pestaña "Mis tips": barra de totales + filtro, grilla de 4 columnas ===== */
.bf-tipsbar { display: flex; align-items: center; gap: 10px; padding: 9px 10px; border-top: 1px solid var(--border); flex-wrap: wrap; }
.bf-tiptotals { display: flex; gap: 8px; flex: 1; min-width: 0; flex-wrap: wrap; }
.bf-tt {
  font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 700; color: var(--text-dim);
  background: rgba(255,255,255,0.04); border: 1px solid var(--border); border-radius: 8px; padding: 6px 10px;
  display: inline-flex; align-items: center; gap: 5px;
}
.bf-tt b { font-size: 12px; }
.bf-tt.sent b { color: var(--red); }
.bf-tt.recv b { color: var(--green); }
.bf-tipsbar input {
  background: var(--bg-1); border: 1px solid var(--border); border-radius: 8px; color: #fff;
  padding: 7px 9px; font-size: 12px; min-width: 160px; flex: 1;
}
.bf-tipsbar input:focus { outline: none; border-color: var(--border-hot); }
/* grilla de 4 columnas para tips (Tipo · Jugador · Monto · Cuándo) */
.bf-header-tips, .bf-list.bf-tips .bf-row { grid-template-columns: 1fr 2fr 1.2fr 1.4fr; }
.bf-tipdir {
  font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700; letter-spacing: 0.5px;
  padding: 3px 8px; border-radius: 6px; white-space: nowrap;
}
.bf-tipdir.sent { color: var(--red); background: rgba(255,45,79,0.12); }
.bf-tipdir.recv { color: var(--green); background: rgba(0,230,118,0.12); }
.bf-tippriv { font-size: 11px; opacity: 0.8; }
.bf-when { font-size: 11px; color: var(--text-dim); white-space: nowrap; }
@media (max-width: 740px) {
  .bf-header-tips, .bf-list.bf-tips .bf-row { grid-template-columns: 0.9fr 1.6fr 1fr 1.1fr; }
  .bf-tipdir { font-size: 9px; padding: 2px 5px; }
}

/* Card del modal */
.bet-modal-card { position: relative; max-width: 460px; }
.bm-x {
  position: absolute; top: 12px; right: 12px; width: 30px; height: 30px; border-radius: 8px;
  background: rgba(255,255,255,0.06); border: 1px solid var(--border); color: var(--text-dim);
  cursor: pointer; font-size: 15px; line-height: 1;
}
.bm-x:hover { color: #fff; border-color: var(--border-hot); }
.bm-head { display: flex; align-items: center; gap: 9px; font-family: 'Bebas Neue', sans-serif; font-size: 24px; letter-spacing: 1px; }
.bm-head .bm-game { color: #fff; }
.bm-head .bm-id { font-family: 'JetBrains Mono', monospace; font-size: 12px; color: var(--text-dim); letter-spacing: 0; }
.bm-copy { background: none; border: none; color: var(--text-dim); cursor: pointer; font-size: 13px; padding: 2px; }
.bm-copy:hover { color: #fff; }
.bm-meta { color: var(--text-dim); font-size: 12px; margin: 6px 0 16px; }
.bm-meta b { color: #fff; font-weight: 600; }
/* fila de stats: apuesta / multiplicador / pago */
.bm-stats { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 1px; background: var(--border); border: 1px solid var(--border); border-radius: 10px; overflow: hidden; margin-bottom: 16px; }
.bm-stat { background: var(--panel-solid); padding: 11px 12px; }
.bm-stat .lbl { font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 1px; color: var(--text-dim); text-transform: uppercase; }
.bm-stat .val { font-size: 15px; font-weight: 700; color: #fff; display: flex; align-items: center; gap: 4px; margin-top: 3px; }
.bm-stat .val.win { color: var(--green); }
.bm-stat .val.loss { color: var(--red); }
.bm-stat .val .coin { width: 13px; height: 13px; }

/* tablero genérico de detalles (key/value) */
.bm-details { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 16px; }
.bm-kv { background: var(--bg-1); border: 1px solid var(--border); border-radius: 8px; padding: 7px 10px; font-size: 12px; }
.bm-kv .k { color: var(--text-dim); margin-right: 6px; text-transform: capitalize; }
.bm-kv .v { color: #fff; font-weight: 600; }

/* tablero de keno dentro del modal */
.bm-keno { display: grid; grid-template-columns: repeat(8, 1fr); gap: 5px; margin-bottom: 16px; }
.bm-kc {
  aspect-ratio: 1; display: flex; align-items: center; justify-content: center; border-radius: 8px;
  background: var(--bg-1); border: 1px solid var(--border); font-size: 12px; font-weight: 700; color: var(--text-dim);
}
/* NUESTRA elección que NO salió: violeta prominente (como Stake) → se ve clarísimo. */
.bm-kc.pick { background: rgba(124,77,255,0.9); border-color: #9a7cff; color: #fff; box-shadow: 0 0 8px rgba(124,77,255,0.55); }
/* Salió pero no lo elegimos: visible pero secundario (sabés qué números salieron). */
.bm-kc.drawn { background: rgba(255,255,255,0.10); border-color: rgba(255,255,255,0.3); color: #fff; }
/* Elegido Y salió = acierto: verde. */
.bm-kc.hit { background: var(--green); border-color: var(--green); color: #00170c; box-shadow: 0 0 8px rgba(46,204,113,0.5); }

/* Tablero de blackjack dentro del detalle de apuesta (cartas escaladas) */
.bm-bj { display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; }
.bm-bj-side { display: flex; flex-direction: column; gap: 6px; align-items: center; }
.bm-bj-lbl { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.5px; color: var(--text-dim); text-transform: uppercase; }
.bm-bj .bj-row { min-height: 0; gap: 6px; }
.bm-bj .bj-card { width: 46px; height: 66px; border-radius: 6px; }
.bm-bj .bj-card .r { font-size: 16px; top: 4px; left: 5px; }
.bm-bj .bj-card .s { font-size: 26px; }
/* fila de botones compartir / copiar link */
.bm-share-row { display: flex; gap: 8px; flex-wrap: wrap; }
.bm-share-row .bm-share { flex: 1 1 150px; margin: 0; }

/* Dice: track 0-100 con zona ganadora, marca de objetivo y de tiro */
.bm-dice { margin-bottom: 16px; }
.bm-dice-track { position: relative; height: 16px; border-radius: 999px; background: var(--bg-1); border: 1px solid var(--border); }
.bm-dice-zone { position: absolute; top: 0; bottom: 0; background: rgba(46,204,113,0.18); border-radius: 999px; }
.bm-dice-mark { position: absolute; top: 50%; transform: translate(-50%, -50%); }
.bm-dice-mark.target { width: 3px; height: 22px; background: var(--gold); }
.bm-dice-mark.roll { width: 14px; height: 14px; border-radius: 50%; border: 2px solid #fff; }
.bm-dice-mark.roll.win { background: var(--green); }
.bm-dice-mark.roll.loss { background: var(--red); }
.bm-dice-foot { display: flex; justify-content: space-between; margin-top: 10px; font-size: 12px; color: var(--text-dim); }
.bm-dice-foot b.win { color: var(--green); } .bm-dice-foot b.loss { color: var(--red); }
/* Limbo: resultado grande vs objetivo */
.bm-limbo { text-align: center; margin-bottom: 16px; }
.bm-limbo-res { font-family: 'Bebas Neue', sans-serif; font-size: 52px; line-height: 1; }
.bm-limbo-res.win { color: var(--green); } .bm-limbo-res.loss { color: var(--red); }
.bm-limbo-cap { font-size: 12px; color: var(--text-dim); margin-top: 4px; }
/* Plinko: path L/R + casilleros con el de aterrizaje resaltado */
.bm-pk { text-align: center; margin-bottom: 16px; display: flex; flex-direction: column; align-items: center; gap: 10px; }
.bm-pk-chip {
  font-family: 'Bebas Neue', sans-serif; font-size: 30px; letter-spacing: 0.5px; color: #1a1206;
  padding: 6px 18px; border-radius: 10px; min-width: 64px; box-shadow: 0 6px 18px rgba(0,0,0,0.4);
}
.bm-pk-chip.low  { background: linear-gradient(135deg, #ff7a3d, #d4133a); color: #fff; }
.bm-pk-chip.mid  { background: linear-gradient(135deg, #ffd34d, #ff9b3d); }
.bm-pk-chip.green{ background: linear-gradient(135deg, #34d17a, #0c8a45); color: #042b15; }
.bm-pk-chip.gold { background: linear-gradient(135deg, #ffe08a, #c9aa3a); }
.bm-pk-path { font-size: 14px; letter-spacing: 2px; color: var(--text-dim); word-break: break-all; margin-bottom: 8px; }
.bm-pk-slots { display: flex; gap: 3px; justify-content: center; flex-wrap: wrap; }
.bm-pk-slot { width: 14px; height: 14px; border-radius: 3px; background: var(--bg-1); border: 1px solid var(--border); }
.bm-pk-slot.land { background: var(--gold); border-color: var(--gold); box-shadow: 0 0 10px rgba(255,201,64,0.7); }
.bm-pk-cap { font-size: 12px; color: var(--text-dim); margin-top: 16px; margin-bottom: 8px; }
/* Roulette: número resultante + apuestas */
.bm-rl { display: flex; flex-direction: column; align-items: center; gap: 10px; margin-bottom: 16px; }
.bm-rl-num { width: 56px; height: 56px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-family: 'Bebas Neue', sans-serif; font-size: 30px; color: #fff; background: #26262e; }
.bm-rl-num.red { background: var(--red); } .bm-rl-num.green { background: #0c8a45; } .bm-rl-num.black { background: #1c1c22; border: 1px solid var(--border-hot); }
.bm-rl-bets { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; }
.bm-rl-bet { font-size: 11px; background: var(--bg-1); border: 1px solid var(--border); border-radius: 7px; padding: 5px 9px; color: #fff; }
/* Slot: la pantalla del giro base (5 rodillos × 3) con el arte real. Si hubo línea ganadora
   se resaltan esas celdas y se atenúan las demás (solo cuando hay wins). */
.bm-slot { display: flex; gap: 5px; justify-content: center; margin: 0 auto 12px; max-width: 300px; }
.bm-sl-col { display: flex; flex-direction: column; gap: 5px; flex: 1; }
.bm-sl-cell {
  position: relative; aspect-ratio: 1; display: flex; align-items: center; justify-content: center;
  padding: 5px; border-radius: 8px; background: var(--bg-1); border: 1px solid var(--border);
}
.bm-sl-cell img { width: 100%; height: 100%; object-fit: contain; display: block; }
.bm-slot.has-wins .bm-sl-cell:not(.hit) { opacity: 0.32; }            /* fuera de la línea ganadora */
.bm-sl-cell.hit { border-color: #ffc940; box-shadow: inset 0 0 0 1px rgba(255,201,64,0.55), 0 0 11px rgba(255,201,64,0.28); }
.bm-sl-cell.sc { border-color: rgba(255,122,26,0.6); }               /* cofre (scatter) */

/* Mines: grilla 5x5 con minas (💣) y picks seguros (💎) */
.bm-mines { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; margin: 0 auto 16px; max-width: 280px; }
.bm-mc { aspect-ratio: 1; display: flex; align-items: center; justify-content: center; border-radius: 8px; background: var(--bg-1); border: 1px solid var(--border); font-size: 18px; }
.bm-mc.gem { background: rgba(46,204,113,0.15); border-color: rgba(46,204,113,0.5); }
.bm-mc.boom { background: rgba(255,26,60,0.22); border-color: var(--red); }
.bm-mc.mine { opacity: 0.4; }                 /* mina no pisada (atenuada) */
.bm-mc.safe { opacity: 0.28; }                /* gema segura no pisada (más atenuada) */
/* Snakes: secuencia de tiros (dados + multiplicador), serpiente = 🐍 */
/* Pollito en el modal de detalle: una celdita por carril (✓ cruzado / 🚗 auto / 💥 pisado) */
.bm-chicken { display: flex; flex-wrap: wrap; gap: 5px; justify-content: center; margin-bottom: 16px; }
.bm-ck {
  width: 30px; height: 30px; display: flex; align-items: center; justify-content: center;
  border-radius: 7px; background: var(--bg-1); border: 1px solid var(--border); font-size: 14px;
}
.bm-ck.passed { border-color: rgba(46,204,113,0.5); color: var(--green); }
.bm-ck.boom { border-color: var(--red); background: rgba(255,26,60,0.12); }
.bm-ck.car { opacity: 0.65; }
.bm-ck.safe { color: var(--text-mute); }
/* Flip — detalle: coloreado por lado (cara dorado / cruz rojo) */
.bm-ck.fl-d-cara { color: var(--gold); border-color: rgba(231,181,74,0.5); }
.bm-ck.fl-d-cruz { color: var(--red); border-color: rgba(226,17,46,0.5); }
.bm-ck.fl-d-empty { opacity: 0.35; }
.bm-ck.fl-d-lost { background: rgba(255,26,60,0.16); box-shadow: inset 0 0 0 1px var(--red); }

.bm-snakes { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; margin-bottom: 16px; }
.bm-sn { display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 7px 9px; border-radius: 8px; background: var(--bg-1); border: 1px solid var(--border); min-width: 52px; }
.bm-sn.win { border-color: rgba(46,204,113,0.5); }
.bm-sn.bust { border-color: var(--red); background: rgba(255,26,60,0.12); }
/* "lo que hubiera seguido": atenuado + borde punteado (Snakes y Flip) */
.bm-sn.cont { opacity: 0.4; border-style: dashed; }
.bm-ck.fl-cont { opacity: 0.4; }
.bm-sn-dice { font-family: 'JetBrains Mono', monospace; font-size: 12px; color: var(--text-dim); }
.bm-sn-mult { font-family: 'Bebas Neue', sans-serif; font-size: 16px; color: #fff; }
/* Hilo: secuencia de cartas, contorno según resultado */
.bm-hilo { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin-bottom: 16px; }
.bm-hilo .bj-card { width: 40px; height: 58px; border-radius: 5px; }
.bm-hilo .bj-card .r { font-size: 14px; top: 3px; left: 4px; }
.bm-hilo .bj-card .s { font-size: 22px; }
.bm-hl { border-radius: 7px; }
.bm-hl.win { box-shadow: 0 0 0 2px var(--green); }
.bm-hl.bust { box-shadow: 0 0 0 2px var(--red); }
.bm-hl.start { box-shadow: 0 0 0 2px var(--border-hot); }
.bm-hl.skip { opacity: 0.55; }

/* Blitz: secuencia sacada en orden; la repetida (si perdió) en rojo */
.bm-blitz { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin-bottom: 10px; }
.bm-blitz .bj-card { width: 40px; height: 58px; border-radius: 5px; }
.bm-blitz .bj-card .r { font-size: 14px; top: 3px; left: 4px; }
.bm-blitz .bj-card .s { font-size: 22px; }
.bm-bl { border-radius: 7px; }
.bm-bl.dup { box-shadow: 0 0 0 2px var(--red); }

/* sección Provably Fair colapsable */
.bm-pf summary { cursor: pointer; font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 1px; color: var(--text-dim); list-style: none; padding: 6px 0; }
.bm-pf summary::-webkit-details-marker { display: none; }
.bm-pf summary::before { content: '▸ '; }
.bm-pf[open] summary::before { content: '▾ '; }
.bm-pf .row { margin-top: 8px; }
.bm-pf .row .lbl { font-family: 'JetBrains Mono', monospace; font-size: 9px; color: var(--text-dim); letter-spacing: 1px; }
.bm-pf .row .val { font-family: 'JetBrains Mono', monospace; font-size: 11px; word-break: break-all; color: #fff; background: var(--bg-1); border: 1px solid var(--border); border-radius: 6px; padding: 6px; margin-top: 3px; }
.bm-pf .val.pending { color: var(--text-dim); }

.bm-share {
  width: 100%; margin-top: 16px; font-family: 'Bebas Neue', sans-serif; font-size: 16px; letter-spacing: 2px;
  color: #fff; background: linear-gradient(135deg, var(--red), var(--red-deep)); border: none; border-radius: 10px;
  padding: 11px; cursor: pointer;
}
.bm-share:hover { filter: brightness(1.08); }
.bm-share:disabled { opacity: 0.5; cursor: default; }

/* ==================== TARJETA "APUESTA COMPARTIDA" EN EL CHAT ==================== */
.cz-betshare {
  margin: 6px 0; padding: 9px 11px; border-radius: 10px; cursor: pointer;
  background: rgba(124,77,255,0.08); border: 1px solid rgba(124,77,255,0.3);
}
.cz-betshare:hover { background: rgba(124,77,255,0.14); border-color: rgba(124,77,255,0.55); }
.cz-betshare .cz-bs-top { font-size: 11px; color: var(--text-dim); margin-bottom: 4px; }
.cz-betshare .cz-bs-top b { color: #cdbcff; }
.cz-betshare .cz-bs-main { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 13px; }
.cz-betshare .cz-bs-game { color: #fff; font-weight: 700; }
.cz-betshare .cz-bs-mult { font-family: 'JetBrains Mono', monospace; color: var(--text-dim); }
.cz-betshare .cz-bs-pay.win { color: var(--green); font-weight: 700; }
.cz-betshare .cz-bs-pay.loss { color: var(--red); }

/* ████████████████████████████████████████████████████████████████████████████
   REDESIGN 2026-06 — "Agusbob austero"
   Minimal SERIO: esquinas casi rectas, LÍNEAS full-bleed dividiendo (no cards
   flotantes), menos cajas, paleta cálida roja. Capa al final que sobreescribe lo
   viejo. casino.css es casino-only → NO afecta index/picker/sports.
   ████████████████████████████████████████████████████████████████████████████ */

/* 1) PALETA cálida (redefinición de tokens de index.css, solo casino). --red-deep
   pasa a ÁMBAR → los gradientes existentes var(--red)→var(--red-deep) se vuelven la
   firma "fuego" automáticamente (botón Apostar, share, etc). */
:root{
  --bg-0:#0b0708; --bg-1:#140e10;
  --panel:#120c0e; --panel-solid:#140e10;
  --border:rgba(255,255,255,.07); --border-hot:rgba(255,255,255,.18);
  --red:#e2112e; --red-deep:#8a0c1c; --red-glow:rgba(226,17,46,.28);
  --gold:#ffc940; --green:#2bd47d;
  --text:#f4eff1; --text-dim:#a99aa0; --text-mute:#6b5c62;
}

/* 2) Fondo plano serio: fuera la grilla/glow rojos */
.bg-grid, .bg-glow, .bg-orbs { display: none !important; }
body { background: var(--bg-0); }

/* 3) ESQUINAS casi rectas en el chrome (los círculos quedan intactos: .coin, avatars, thumb) */
.casino-side, .casino-right, .casino-bottom, .bets-feed, .casino-main,
.bal-top, .pf-btn, .game-item, .bet-btn, .auto-start, .bet-input input, .bet-input button,
.seg, .seg button, .mode-toggle, .mode-btn, .kn-risk, .bf-limit, .auto-block, .auto-inf,
.auto-cfg, .pk-board, .pk-sound, .pk-chip, .rows-val, .bf-tab, .dev-box input, .dev-box button,
.bm-stats, .bm-kv, .bm-kc, .bm-share, .bm-x, .bf-adminbar input, .bf-adminbar select,
.cz-chat-inputrow input, .cz-betshare { border-radius: 3px; }

/* 4) Layout CONTENIDO con aire (como Shuffle / como estaba antes): espacio entre la topbar
   y el contenido + a los lados. Center MÁS ANGOSTO; ORIGINALES + CHAT más anchos.
   En @media desktop para no romper el apilado mobile. */
@media (min-width: 981px) {
  /* Originales y chat PEGADOS a los bordes de la pantalla (sin padding externo, paneles
     planos al borde). El CENTRO es el que respira: el gap entre columnas le da margen con
     originales y con el chat; el padding-top, margen con el header. Anchos originales →
     el centro ocupa más. */
  /* Modelo Shuffle: el shell ocupa la pantalla y NO scrollea; las barras laterales
     (originales/eventos y chat) quedan FIJAS full-height y SOLO el centro scrollea
     adentro. Esto reemplaza al sticky (que no enganchaba por el grid/overflow). */
  /* la PÁGINA no scrollea en desktop (no hay scrollbar de página): es app de alto fijo,
     solo el .casino-center scrollea. */
  html, body { overflow-y: hidden; height: 100%; }
  .casino-shell {
    gap: 66px; padding: 0; max-width: none; margin: 0;
    grid-template-columns: 224px minmax(0, 1fr) 312px;
    grid-template-rows: minmax(0, 1fr);
    height: calc(100vh - var(--topbar-h));
    align-items: stretch;
    overflow: hidden;
  }
  .casino-side {
    background: var(--panel); border: none; border-radius: 0; padding: 16px 14px;
    position: static; min-height: 0;
    /* Alto = la celda del grid (= alto del shell) y NUNCA más que la vista. Con esto
       el contenido que sobra SIEMPRE entra en scroll interno (no se va abajo de la
       pantalla), en cualquier resolución. */
    height: 100%;
    max-height: calc(100vh - var(--topbar-h));
    max-height: calc(100dvh - var(--topbar-h));
    overflow-y: auto;
    overscroll-behavior: contain;
    /* NUESTRA barra: fina, temática y SIN las flechitas default (eso era lo que se veía feo) */
    scrollbar-width: thin;
    scrollbar-color: var(--border-hot) transparent;
  }
  .casino-side::-webkit-scrollbar { width: 10px; }
  .casino-side::-webkit-scrollbar-track { background: transparent; }
  .casino-side::-webkit-scrollbar-thumb { background: var(--border-hot); border-radius: 6px; border: 3px solid transparent; background-clip: content-box; }
  .casino-side::-webkit-scrollbar-thumb:hover { background: var(--text-mute); background-clip: content-box; }
  .casino-side::-webkit-scrollbar-button { display: none; width: 0; height: 0; }
  .casino-center { padding-top: 32px; padding-bottom: 24px; gap: 18px; min-height: 0; overflow-y: auto; } /* EL scroller del casino */
  /* clave: los hijos NO se comprimen (flex-shrink:0) → mantienen su alto y el centro
     desborda y scrollea, en vez de aplastar el juego/feed para que entren. */
  .casino-center > * { flex-shrink: 0; }
  /* scrollbar del centro OCULTO (sigue scrolleando, no se ve la barra) */
  .casino-center { scrollbar-width: none; -ms-overflow-style: none; }
  .casino-center::-webkit-scrollbar { width: 0; height: 0; display: none; }
  .cz-chat { border: none; border-radius: 0; position: static; height: auto; min-height: 0; } /* full-height vía stretch; el cz-chat-body scrollea solo */
}
/* el saldo deja de ser una card: número grande separado por una línea */
.bal-top { background: transparent; border: none; border-radius: 0; padding: 4px 0 16px; border-bottom: 1px solid var(--border); }
.bal-card{ gap: 16px; }
/* el juego: superficie plana con hairline, sin sombra dramática */
.casino-stage { border: 1px solid var(--border); border-radius: 4px; box-shadow: none; }

/* 5) NAV de juegos: serio, Inter, activo = barra roja a la izquierda (sin caja) */
.game-item { font-family:'Inter',sans-serif; font-size:14px; font-weight:600; letter-spacing:.2px;
  border:none; border-radius:3px; padding:11px 12px; }
.game-item.active { background: rgba(255,26,60,.10); color:#fff; box-shadow: inset 3px 0 0 var(--red); }
.game-item:hover:not(:disabled){ background: rgba(255,255,255,.04); }
.side-title{ color: var(--text-mute); }

/* 6) Botón primario = firma rojo→ámbar (ya hereda var(--red)→var(--red-deep)), serio Inter */
.bet-btn, .auto-start { font-family:'Inter',sans-serif; font-weight:800; font-size:18px; letter-spacing:.4px;
  box-shadow: 0 5px 22px var(--red-glow); }

/* 7) Controles planos, líneas finas, tipografía Inter (números mantienen mono) */
.bet-input input, .bet-input button, .seg { background: var(--bg-1); }
.seg button, .mode-btn, .kn-risk { font-family:'Inter',sans-serif; font-weight:600; letter-spacing:.2px; }
.rows-val, .bal-amount { font-family:'Inter',sans-serif; font-weight:800; letter-spacing:0; }

/* 8) Feed de apuestas: tabla limpia, sin caja extra (líneas separando filas) */
.bets-feed { background: transparent; border: none; border-top: 1px solid var(--border); border-radius:0; }

/* 9) Chat: superficie plana, tipografía seria */
.cz-chat-title { font-family:'Inter',sans-serif; font-weight:800; letter-spacing:.3px; }

/* 10) BARRA INFERIOR (solo mobile) — Inicio / Chat / Recompensas / Perfil */
.cz-tabbar { display: none; }
@media (max-width: 980px) {
  .cz-tabbar {
    display: flex; position: fixed; left:0; right:0; bottom:0; z-index: 60;
    background: var(--panel-solid); border-top: 1px solid var(--border);
    padding-bottom: env(safe-area-inset-bottom);
  }
  .cz-tabbar button {
    flex:1; display:flex; flex-direction:column; align-items:center; gap:3px;
    background:none; border:none; color: var(--text-mute); cursor:pointer;
    font-family:'Inter',sans-serif; font-size:10px; font-weight:600; letter-spacing:.3px; padding:9px 0 11px;
  }
  .cz-tabbar button svg{ width:21px; height:21px; }
  .cz-tabbar button.on{ color: var(--red); }
  .chat-fab{ display:none !important; }                 /* lo reemplaza la barra inferior */
  .casino-shell{ padding-bottom: calc(60px + env(safe-area-inset-bottom)); } /* aire para la barra */
}

/* ==================== MENÚ MOBILE (originales + eventos) ==================== */
/* Modal que abre el botón "Menú" de la barra inferior. Lista todos los juegos y los
   eventos (reemplaza la sidebar que antes colgaba arriba del tablero en mobile). */
.cz-menu-card { max-width: 460px; }
.cz-menu-sec-title {
  font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 2px;
  color: var(--text-dim); margin: 18px 0 8px;
}
.cz-menu-sec-title:first-of-type { margin-top: 6px; }
/* Lista vertical plana (estilo sidebar de desktop / Shuffle): uno debajo del otro,
   sin cards. Reusa el look de .game-item. */
.cz-menu-grid, .cz-menu-list { display: flex; flex-direction: column; gap: 4px; }
.cz-menu-item, .cz-menu-event {
  display: flex; align-items: center; gap: 10px; justify-content: flex-start; text-align: left;
  width: 100%; font-family: 'Bebas Neue', sans-serif; font-size: 18px; letter-spacing: 2px;
  color: var(--text-dim); background: transparent;
  border: 1px solid transparent; border-radius: 10px; padding: 12px 14px;
  cursor: pointer; transition: all 0.15s;
}
.cz-menu-item:hover, .cz-menu-event:hover { color: #fff; background: rgba(255,255,255,0.03); }
.cz-menu-item.active { color: #fff; background: rgba(255, 26, 60, 0.13); border-color: var(--border-hot); }
.cz-menu-event { color: #e7d6a8; }
.cz-menu-event:hover { color: #fff; }

/* ████████████████████████████████████████████████████████████████████████████
   EVENTOS / TORNEOS — entrada en la barra lateral (debajo de Originales, separada por
   una línea) + vista en el centro (header, progreso, cards de juegos, clasificación).
   Toda la data es de solo-lectura (derivada de las apuestas), no rompe nada.
   ████████████████████████████████████████████████████████████████████████████ */

/* Separador + link "Eventos" en la barra lateral */
.side-sep { height: 1px; background: var(--border); margin: 12px 4px; }
.side-links { display: flex; flex-direction: column; gap: 6px; }
.side-link {
  display: flex; align-items: center; gap: 9px; text-align: left;
  font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 600; letter-spacing: .2px;
  color: var(--text-dim); background: transparent; border: none; border-radius: 3px;
  padding: 11px 12px; cursor: pointer; transition: all .15s;
}
.side-link:hover { color: #fff; background: rgba(255,255,255,.04); }
.side-link.active { color: #fff; background: rgba(255,26,60,.10); box-shadow: inset 3px 0 0 var(--red); }

/* La vista de eventos vive fuera de la stage (scroll libre, no la capa el alto fijo del
   juego). Se muestra SOLO con body.events-mode, ocultando el juego/feed. */
.eventos-view { display: none; }
body.events-mode .casino-stage,
body.events-mode .casino-bottom,
body.events-mode .bets-feed { display: none; }
body.events-mode .eventos-view { display: flex; flex-direction: column; gap: 22px; }

/* ===== LOBBY DE ORIGINALES (grilla de cartas; se muestra con body.lobby-mode) ===== */
.lobby-view { display: none; }
body.lobby-mode .casino-stage,
body.lobby-mode .casino-bottom,
body.lobby-mode .bets-feed,
body.lobby-mode .eventos-view { display: none !important; }
body.lobby-mode .lobby-view { display: block; }

.side-home-btn { /* botón "Inicio" del sidebar -> vuelve al lobby */
  display: flex; align-items: center; gap: 10px; width: 100%;
  background: rgba(255,201,64,.08); border: 1px solid rgba(255,201,64,.26);
  color: var(--text); border-radius: 8px; padding: 9px 12px; margin-bottom: 14px;
  cursor: pointer; font: inherit; font-weight: 700; font-size: 14px;
  transition: background .15s, border-color .15s, color .15s;
}
.side-home-btn svg { width: 18px; height: 18px; flex: 0 0 auto; }
.side-home-btn:hover { background: rgba(255,201,64,.16); border-color: rgba(255,201,64,.5); color: var(--gold); }
body.lobby-mode .side-home-btn { background: rgba(255,201,64,.18); border-color: rgba(255,201,64,.6); color: var(--gold); }

.lobby-head { margin: 2px 0 20px; }
.lobby-head h2 { font-size: 23px; font-weight: 800; color: var(--text); letter-spacing: .02em; }
.lobby-head p { margin-top: 4px; font-size: 12px; color: var(--text-dim); letter-spacing: .16em; text-transform: uppercase; }

.lobby-grid { display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(146px, 1fr)); }
.lobby-card {
  position: relative; aspect-ratio: 3 / 4; border-radius: 14px; overflow: hidden;
  cursor: pointer; padding: 0; background: #120b0d;
  border: 2px solid rgba(255,201,64,.38);
  box-shadow: 0 18px 34px -12px rgba(255,193,60,.38), 0 10px 22px rgba(0,0,0,.5);
  transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}
.lobby-card img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.lobby-card::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(7,4,5,.92), rgba(7,4,5,.32) 26%, transparent 50%);
}
.lobby-card .lc-meta { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 12px 8px 13px; text-align: center; }
.lobby-card .lc-name { display: block; font-size: 16px; font-weight: 900; color: #fff; text-transform: uppercase; letter-spacing: .02em; text-shadow: 0 2px 10px rgba(0,0,0,.85); }
.lobby-card .lc-count { display: block; margin-top: 5px; font-size: 10.5px; color: #37d36b; }
.lobby-card .lc-count i { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: #37d36b; margin-right: 5px; vertical-align: middle; }
.lobby-card:hover {
  transform: translateY(-6px);
  border-color: rgba(255,201,64,.85);
  box-shadow: 0 26px 48px -12px rgba(255,193,60,.55), 0 0 26px rgba(226,17,46,.16);
}
/* Mobile: el minmax deja UNA sola columna en pantallas chicas → forzamos 3
   por fila (estilo Shuffle) y achicamos tipografía/gaps para que respiren. */
@media (max-width: 640px) {
  .lobby-grid { grid-template-columns: repeat(3, 1fr); gap: 9px; }
  .lobby-card { border-radius: 9px; border-width: 1.5px; }
  .lobby-card .lc-meta { padding: 6px 4px 7px; }
  .lobby-card .lc-name { font-size: 11.5px; }
  .lobby-card .lc-count { font-size: 8.5px; margin-top: 2px; }
}

.ev-loading { color: var(--text-dim); text-align: center; padding: 60px 20px; font-size: 14px; }

.ev-block { display: flex; flex-direction: column; gap: 20px; }
.ev-head { padding-top: 4px; }
.ev-title { font-family: 'Bebas Neue', sans-serif; font-size: 38px; letter-spacing: 1px; line-height: 1; }
.ev-meta { color: var(--text-dim); font-size: 13px; margin-top: 8px; display: flex; align-items: center; gap: 10px; }
.ev-tag {
  font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 800; letter-spacing: 1px;
  color: #042b15; background: var(--green); padding: 3px 8px; border-radius: 4px;
}
/* evento terminado: etiqueta gris + aviso de que las apuestas nuevas ya no cuentan */
.ev-tag-ended { color: var(--text); background: var(--border); }
.ev-ended-note {
  background: var(--panel); border: 1px solid var(--border); border-left: 3px solid var(--accent);
  border-radius: 8px; padding: 12px 16px; font-size: 13px; color: var(--text-dim);
}
.ev-ended-note b { color: var(--text); }

/* barra de progreso */
.ev-progress { background: var(--panel); border: 1px solid var(--border); border-radius: 8px; padding: 16px 18px; }
.ev-progress-top { display: flex; justify-content: space-between; font-size: 13px; color: var(--text-dim); margin-bottom: 10px; }
.ev-progress-top b, .ev-progress-top span:last-child { color: var(--text); font-weight: 700; }
.ev-bar { height: 8px; background: rgba(255,255,255,.07); border-radius: 999px; overflow: hidden; }
.ev-bar-fill { height: 100%; background: linear-gradient(90deg, var(--green), #1fae63); border-radius: 999px; transition: width .4s ease; }

/* cards de juegos con su target */
.ev-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 12px; }
.ev-card {
  display: flex; flex-direction: column; border: 1px solid var(--border); border-radius: 10px;
  overflow: hidden; background: var(--panel);
}
.ev-card-art {
  height: 110px; display: flex; align-items: center; justify-content: center;
  font-family: 'Bebas Neue', sans-serif; font-size: 26px; letter-spacing: 2px; color: #fff;
  background: linear-gradient(150deg, #2a1a1e, #160e10);
  text-shadow: 0 2px 10px rgba(0,0,0,.5);
}
.ev-card-foot {
  text-align: center; padding: 9px; font-family: 'JetBrains Mono', monospace;
  font-size: 13px; font-weight: 800; color: var(--text-dim);
  border-top: 1px solid var(--border);
}
.ev-card.done .ev-card-art { filter: saturate(1.1); }
.ev-card.done .ev-card-foot { color: var(--green); background: rgba(43,212,125,.12); }
.ev-card.done { border-color: rgba(43,212,125,.5); box-shadow: 0 0 0 1px rgba(43,212,125,.3); }

/* info / cómo jugar */
.ev-info { color: var(--text-dim); font-size: 14px; line-height: 1.6; border-top: 1px solid var(--border); padding-top: 18px; }
.ev-info p { margin: 0 0 12px; }
.ev-info ul { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 6px; }
.ev-info b { color: var(--text); }

/* clasificación */
.ev-lb { border-top: 1px solid var(--border); padding-top: 18px; }
.ev-lb-title { font-family: 'Bebas Neue', sans-serif; font-size: 22px; letter-spacing: 1px; margin-bottom: 12px; }
.ev-lb-row {
  display: grid; grid-template-columns: 48px 1fr auto auto; align-items: center; gap: 10px;
  padding: 11px 12px; border-radius: 6px; font-size: 13px;
}
.ev-lb-row:nth-child(even) { background: rgba(255,255,255,.025); }
.ev-lb-pos { font-family: 'JetBrains Mono', monospace; font-weight: 800; color: var(--gold); }
.ev-lb-user { font-weight: 700; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ev-lb-prize { font-family: 'JetBrains Mono', monospace; font-weight: 800; color: var(--gold); white-space: nowrap; }
.ev-lb-time { font-family: 'JetBrains Mono', monospace; color: var(--text-dim); font-size: 12px; }
.ev-lb-empty { color: var(--text-mute); font-size: 13px; padding: 16px 4px; }
/* contador de completers al lado del título + paginador de la clasificación */
.ev-lb-count { font-family: 'JetBrains Mono', monospace; font-size: 12px; color: var(--gold); background: rgba(255,201,64,.12); border-radius: 999px; padding: 2px 9px; vertical-align: middle; }
.ev-lb-pager { display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 14px; }
.ev-lb-page {
  font-family: 'Inter', sans-serif; font-size: 13px; font-weight: 600; color: #e7e9ef;
  background: rgba(255,255,255,.05); border: 1px solid var(--border); border-radius: 9px;
  padding: 8px 14px; cursor: pointer; transition: all .15s;
}
.ev-lb-page:hover:not(:disabled) { background: rgba(255,255,255,.09); border-color: var(--border-hot); }
.ev-lb-page:disabled { opacity: .4; cursor: default; }
.ev-lb-pageinfo { font-family: 'JetBrains Mono', monospace; font-size: 13px; color: var(--text-dim); }

/* ████████████████████████████████████████████████████████████████████████████
   PERFIL PÚBLICO (modal) + STATS DEL DÍA (admin) + nombres clickeables
   ████████████████████████████████████████████████████████████████████████████ */

/* nombres clickeables (chat, feed, leaderboard) abren el perfil */
[data-profile] { cursor: pointer; }
[data-profile]:hover { text-decoration: underline; }

/* modal de perfil estilo Shuffle: hero con avatar + nombre + rango, y 3 stats abajo */
.prof-card { max-width: 420px; padding: 0; overflow: hidden; text-align: center; }
.prof-hero {
  display: flex; flex-direction: column; align-items: center; gap: 10px;
  padding: 34px 20px 22px; background: linear-gradient(160deg, #2a1a1e, var(--panel-solid));
}
.prof-av {
  width: 84px; height: 84px; border-radius: 50%; overflow: hidden;
  background: rgba(255,255,255,.06); border: 2px solid rgba(255,255,255,.12);
  display: flex; align-items: center; justify-content: center;
}
.prof-av-img { width: 100%; height: 100%; object-fit: cover; }
.prof-av-ph { font-size: 38px; opacity: .6; }

/* ===== Borde de temporada (estilo LoL), coloreado por --tier ===== */
/* MARCO ORNAMENTADO de TODA la carta: doble línea metálica (acento interior) + remaches
   en las esquinas + glow, todo teñido por el tier. */
.pf-modal .pf-card.has-season {
  --tier: #8a8f98;
  --orn-glow: 24%;    /* intensidad del glow exterior (escala por tier) */
  --orn-accent: 45%;  /* opacidad de la línea de acento interior */
  --orn-gem: 2.5px;   /* tamaño de los remaches de esquina */
  position: relative;
  border: 2px solid color-mix(in srgb, var(--tier) 70%, #2a222a);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.10),                                      /* brillo del borde */
    inset 0 0 0 5px #0b0a0e,                                                    /* separación oscura */
    inset 0 0 0 6px color-mix(in srgb, var(--tier) var(--orn-accent), transparent), /* línea de acento */
    0 0 0 1px rgba(0,0,0,.6),
    0 0 28px color-mix(in srgb, var(--tier) var(--orn-glow), transparent),
    0 18px 56px rgba(0,0,0,.6);
}
/* escalonado por tier: más alto = más glow/acento/remaches y borde más grueso */
.pf-modal .pf-card.has-season.orn-2 { --orn-glow: 28%; --orn-accent: 50%; }
.pf-modal .pf-card.has-season.orn-3 { --orn-glow: 34%; --orn-accent: 58%; --orn-gem: 3px; }
.pf-modal .pf-card.has-season.orn-4 { --orn-glow: 44%; --orn-accent: 68%; --orn-gem: 3.2px; }
.pf-modal .pf-card.has-season.orn-5 { --orn-glow: 56%; --orn-accent: 82%; --orn-gem: 3.6px; border-width: 3px; }
/* remaches/gemas en las 4 esquinas del marco interior */
.prof-card.has-season::after {
  content: ''; position: absolute; inset: 9px; pointer-events: none; border-radius: 5px; z-index: 5;
  background:
    radial-gradient(circle at top left,     color-mix(in srgb, var(--tier) 85%, #fff) 0 var(--orn-gem), transparent calc(var(--orn-gem) + 1px)),
    radial-gradient(circle at top right,    color-mix(in srgb, var(--tier) 85%, #fff) 0 var(--orn-gem), transparent calc(var(--orn-gem) + 1px)),
    radial-gradient(circle at bottom left,  color-mix(in srgb, var(--tier) 85%, #fff) 0 var(--orn-gem), transparent calc(var(--orn-gem) + 1px)),
    radial-gradient(circle at bottom right, color-mix(in srgb, var(--tier) 85%, #fff) 0 var(--orn-gem), transparent calc(var(--orn-gem) + 1px));
  background-repeat: no-repeat;
  filter: drop-shadow(0 0 3px color-mix(in srgb, var(--tier) 60%, transparent));
}
/* TOP tiers (orn-5): sheen animado que barre la carta */
.pf-modal .pf-card.has-season.orn-5::before {
  content: ''; position: absolute; inset: 0; z-index: 6; pointer-events: none; border-radius: inherit;
  background: linear-gradient(115deg, transparent 38%, color-mix(in srgb, var(--tier) 30%, #fff) 49%, transparent 60%);
  background-size: 250% 100%; opacity: .5;
  animation: pfSheen 4.8s ease-in-out infinite;
}
@keyframes pfSheen { 0% { background-position: 135% 0; } 100% { background-position: -35% 0; } }
@media (prefers-reduced-motion: reduce) { .pf-card.has-season.orn-5::before { animation: none; opacity: .25; } }
/* ===== preview de bordes (?bordes) ===== */
.bordes-preview { z-index: 200; align-items: flex-start; overflow: auto; padding: 28px; }
.bordes-grid { display: flex; flex-wrap: wrap; gap: 22px; justify-content: center; max-width: 1120px; margin: auto; }
.bordes-preview .pf-card { padding: 0; width: 210px; max-width: 210px; }
.prof-card.has-season .prof-hero {
  background:
    radial-gradient(120% 90% at 50% -10%, color-mix(in srgb, var(--tier) 22%, transparent), transparent 60%),
    linear-gradient(160deg, #241a1e, var(--panel-solid));
}
.prof-frame { position: relative; display: flex; flex-direction: column; align-items: center; color: var(--tier); --tier: #8a8f98; }
/* emblema del rango arriba (distinto por rango) — crece/brilla con el tier */
.pf-emblem {
  height: 26px; margin-bottom: 4px; z-index: 4; display: flex; align-items: center; justify-content: center;
  filter: drop-shadow(0 1px 2px rgba(0,0,0,.6)) drop-shadow(0 0 5px color-mix(in srgb, var(--tier) 55%, transparent));
}
.pf-emblem img { height: 100%; width: auto; object-fit: contain; display: block; }
.orn-4 .pf-emblem { height: 30px; }
.orn-5 .pf-emblem { height: 34px; }
/* alas detrás del avatar — SOLO top tiers (orn-5). Borde externo brillante (w-main) +
   interior oscuro (w-shade). Alzadas a los costados/arriba (top < 50%). */
.prof-av-wrap { position: relative; display: flex; align-items: center; justify-content: center; }
.pf-wings {
  position: absolute; left: 50%; top: 42%; transform: translate(-50%, -50%);
  width: 274px; height: auto; z-index: 0; pointer-events: none;
  filter: drop-shadow(0 0 5px color-mix(in srgb, var(--tier) 45%, transparent));
  animation: pfWingGlow 3.2s ease-in-out infinite;
}
.pf-wings .w-main  { fill: var(--tier); }                                        /* borde externo BRILLANTE */
.pf-wings .w-shade { fill: color-mix(in srgb, var(--tier) 34%, #000); opacity: .82; } /* interior oscuro (encima) */
/* tamaño por estilo: Dragón el MÁS grande (es el rey), Obsidiana un poco más chico */
.pf-wings.pf-wings-grand     { width: 288px; }
.pf-wings.pf-wings-flame     { width: 266px; }
.pf-wings.pf-wings-obsidiana { width: 220px; }
@keyframes pfWingGlow {
  0%, 100% { filter: drop-shadow(0 0 8px color-mix(in srgb, var(--tier) 55%, transparent)); }
  50%      { filter: drop-shadow(0 0 17px color-mix(in srgb, var(--tier) 85%, transparent)); }
}
@media (prefers-reduced-motion: reduce) { .orn-5 .pf-wings { animation: none; } }
.prof-av-ring {
  position: relative; z-index: 2; width: 106px; height: 106px; border-radius: 50%; padding: 5px;
  background: conic-gradient(from 140deg,
    var(--tier),
    color-mix(in srgb, var(--tier) 28%, #07070b) 22%,
    var(--tier) 50%,
    color-mix(in srgb, var(--tier) 28%, #07070b) 72%,
    var(--tier));
  box-shadow: 0 0 0 1px rgba(0,0,0,.55), 0 0 16px color-mix(in srgb, var(--tier) 40%, transparent), inset 0 0 6px rgba(0,0,0,.5);
}
.prof-av-ring .prof-av {
  width: 100%; height: 100%; border: 3px solid #0b0b10;
  /* fondo neutro: si el avatar es transparente (no llena el círculo), se ve oscuro
     limpio en vez del color crudo del tier. Las fotos reales de Kick lo tapan. */
  background: radial-gradient(circle at 50% 38%, #1c1822, #0c0b10);
}
.pf-banner-wrap {
  position: relative; width: 158px; height: 30px; margin-top: -10px; z-index: 3; pointer-events: none;
  filter: drop-shadow(0 1px 3px rgba(0,0,0,.5)) drop-shadow(0 0 5px color-mix(in srgb, var(--tier) 50%, transparent));
}
.pf-banner { position: absolute; inset: 0; width: 100%; height: 100%; }
.pf-banner-txt {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  font-size: 9px; font-weight: 900; letter-spacing: 1px; color: #fff; text-shadow: 0 1px 2px #000;
}
/* ===== Insignias de podio (medallas) ===== */
.prof-badges { padding: 16px 18px 2px; }
.prof-badges-t { font-size: 12px; font-weight: 800; color: var(--text-dim); letter-spacing: .5px; margin-bottom: 11px; }
.prof-badges-season { font-weight: 600; color: var(--text-mute); }
.prof-badges-row { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; }
.bdg { width: 80px; }
.bdg-medal {
  position: relative; width: 54px; height: 54px; margin: 0 auto 7px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center; color: var(--text-dim);
  border: 2px solid var(--border-hot); background: radial-gradient(circle at 50% 34%, #2a2228, #15101a);
  box-shadow: 0 2px 8px rgba(0,0,0,.5), inset 0 0 8px rgba(0,0,0,.45);
}
.bdg.pos-1 .bdg-medal { border-color: var(--gold); color: var(--gold); background: radial-gradient(circle at 50% 34%, #5a4612, #1a1410); box-shadow: 0 0 15px rgba(255,201,64,.35), inset 0 0 8px rgba(0,0,0,.5); }
.bdg.pos-2 .bdg-medal { border-color: #c8c8d2; color: #d6d6de; background: radial-gradient(circle at 50% 34%, #3a3a44, #16161c); box-shadow: 0 0 12px rgba(200,200,210,.22), inset 0 0 8px rgba(0,0,0,.5); }
.bdg.pos-3 .bdg-medal { border-color: #cd7f32; color: #e0964a; background: radial-gradient(circle at 50% 34%, #4a2f16, #181210); box-shadow: 0 0 12px rgba(205,127,50,.25), inset 0 0 8px rgba(0,0,0,.5); }
/* emblema dibujado (corona) toma el color del tono; la BobCoin va como imagen grande */
.bdg-emb { width: 30px; height: 26px; }
.bdg-emb-img { width: 42px; height: 42px; border-radius: 50%; object-fit: cover; display: block; }
.bdg-pos {
  position: absolute; bottom: -5px; right: -6px; min-width: 18px; height: 17px; line-height: 15px;
  padding: 0 4px; border-radius: 999px; font-size: 9px; font-weight: 900;
  color: #fff; background: #1a1014; border: 1px solid var(--border-hot);
}
.bdg.pos-1 .bdg-pos { background: var(--gold); color: #1a1208; border-color: var(--gold); }
.bdg.pos-2 .bdg-pos { background: #c8c8d2; color: #16161c; border-color: #c8c8d2; }
.bdg.pos-3 .bdg-pos { background: #cd7f32; color: #1a1208; border-color: #cd7f32; }
.bdg-lbl { text-align: center; font-size: 10px; font-weight: 700; color: var(--text); line-height: 1.25; }
.bdg-lbl small { display: block; font-size: 9px; color: var(--text-mute); font-weight: 600; }
/* ── insignias: pulido visual (2026-06-22) ── */
.bdg-medal { transition: transform .15s ease; }
.bdg:hover .bdg-medal { transform: translateY(-2px) scale(1.07); }
.bdg-medal::after { /* barrido de luz metálico (gloss) */
  content: ''; position: absolute; inset: 0; border-radius: 50%; pointer-events: none;
  background: linear-gradient(135deg, rgba(255,255,255,.26), rgba(255,255,255,0) 44%);
}
.bdg-medal::before { /* anillo interno premium */
  content: ''; position: absolute; inset: 4px; border-radius: 50%; pointer-events: none;
  border: 1px solid rgba(255,255,255,.13);
}
.bdg.pos-1 .bdg-medal { animation: bdgPulse 2.4s ease-in-out infinite; } /* el campeón late */
@keyframes bdgPulse {
  0%, 100% { box-shadow: 0 0 14px rgba(255,201,64,.3), inset 0 0 8px rgba(0,0,0,.5); }
  50% { box-shadow: 0 0 26px rgba(255,201,64,.65), inset 0 0 8px rgba(0,0,0,.5); }
}
.prof-name { font-family: 'Bebas Neue', sans-serif; font-size: 28px; letter-spacing: 1px; }
.prof-vip {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12px; font-weight: 700; border: 1px solid; border-radius: 999px; padding: 4px 12px;
}
.prof-vip img { width: 15px; height: 15px; object-fit: contain; }
/* Saldo actual, destacado en el hero del perfil (lo ven todos) */
.prof-balance {
  margin-top: 9px; display: inline-flex; align-items: center; gap: 6px;
  background: rgba(255,201,64,0.10); border: 1px solid rgba(255,201,64,0.3);
  border-radius: 999px; padding: 3px 11px;
}
.prof-bal-lbl { font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 1px; text-transform: uppercase; color: var(--text-dim); }
.prof-bal-val { font-family: 'Bebas Neue', sans-serif; font-size: 16px; letter-spacing: 0.5px; color: var(--gold); display: inline-flex; align-items: center; gap: 4px; }
.prof-bal-val .coin { width: 12px; height: 12px; }

.prof-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--border); }
.prof-stat { background: var(--panel-solid); padding: 16px 10px; display: flex; flex-direction: column; gap: 6px; }
.prof-stat span { font-size: 11px; color: var(--text-dim); }
.prof-stat b {
  font-family: 'JetBrains Mono', monospace; font-size: 14px; color: #fff;
  display: inline-flex; align-items: center; justify-content: center; gap: 5px;
}
/* sección admin del perfil: stats del día del jugador */
.prof-daily { border-top: 1px solid var(--border); }
.prof-daily-title {
  font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 1px;
  color: var(--text-mute); text-transform: uppercase; padding: 12px 12px 4px; text-align: left;
}
.prof-stat.pos b { color: var(--green); }
.prof-stat.neg b { color: var(--red); }

/* botón "Dar propina" abajo del perfil de otro jugador */
.prof-actions { padding: 14px 12px 4px; }
.prof-tip-btn {
  width: 100%; padding: 12px; border-radius: 8px; cursor: pointer;
  border: 1px solid rgba(43, 212, 125, 0.5); background: rgba(43, 212, 125, 0.1); color: var(--green);
  font-family: 'Inter', sans-serif; font-weight: 700; font-size: 14px; transition: all 0.15s;
}
.prof-tip-btn:hover { background: rgba(43, 212, 125, 0.18); border-color: var(--green); transform: translateY(-1px); }
.prof-ignore-btn {
  width: 100%; margin-top: 8px; padding: 11px; border-radius: 8px; cursor: pointer;
  border: 1px solid rgba(255, 255, 255, 0.18); background: rgba(255, 255, 255, 0.04); color: #cfcfd6;
  font-family: 'Inter', sans-serif; font-weight: 700; font-size: 13px; transition: all 0.15s;
}
.prof-ignore-btn:hover { background: rgba(255, 255, 255, 0.09); border-color: rgba(255, 255, 255, 0.32); transform: translateY(-1px); }

/* modal de stats del día (admin) */
.daily-card { max-width: 440px; }
.daily-grid { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
.daily-kv {
  display: flex; justify-content: space-between; align-items: center; gap: 12px;
  padding: 12px 14px; background: var(--panel-solid); border: 1px solid var(--border); border-radius: 8px;
}
.daily-kv span { font-size: 13px; color: var(--text-dim); }
.daily-kv b { font-family: 'JetBrains Mono', monospace; font-size: 15px; color: #fff; display: inline-flex; align-items: center; gap: 5px; }
.daily-kv.big { padding: 18px 16px; flex-direction: column; align-items: flex-start; gap: 6px; }
.daily-kv.big b { font-size: 26px; }
.daily-kv.big.pos b { color: var(--green); }
.daily-kv.big.neg b { color: var(--red); }
/* lista de jugadores del día */
.daily-players { margin-top: 14px; }
.dp-title { font-size: 13px; color: var(--text-dim); margin-bottom: 6px; }
.dp-scroll {
  max-height: 290px; overflow-y: auto;
  background: var(--panel-solid); border: 1px solid var(--border); border-radius: 8px;
}
.daily-players table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.daily-players th {
  position: sticky; top: 0; background: var(--panel-solid); z-index: 1;
  text-align: right; font-weight: 600; color: var(--text-dim); padding: 8px 10px; border-bottom: 1px solid var(--border);
}
.daily-players th:nth-child(2) { text-align: left; }
.daily-players td {
  padding: 6px 10px; border-bottom: 1px solid var(--border);
  font-family: 'JetBrains Mono', monospace; text-align: right; color: #fff; white-space: nowrap;
}
.daily-players tr:last-child td { border-bottom: 0; }
.dp-rank { color: var(--text-dim); width: 26px; }
.daily-players td.dp-name { text-align: left; font-family: inherit; }
.dp-name span { cursor: pointer; font-weight: 600; }
.dp-name span:hover { text-decoration: underline; }
.dp-name small { color: var(--text-dim); margin-left: 6px; font-size: 10.5px; }
.dp-net.pos { color: var(--green); }
.dp-net.neg { color: var(--red); }

/* ==================== ESTADÍSTICAS EN VIVO (panel flotante arrastrable) ==================== */
.stats-panel {
  position: fixed; top: 78px; right: 16px; z-index: 60;
  width: 300px; max-width: calc(100vw - 24px);
  background: var(--panel-solid); border: 1px solid var(--border-hot);
  border-radius: 14px; box-shadow: 0 18px 50px rgba(0,0,0,0.55);
  font-size: 13px; overflow: hidden;
}
.stats-panel.dragging { user-select: none; }
.sp-head {
  display: flex; align-items: center; gap: 6px;
  padding: 10px 12px; cursor: grab; touch-action: none;
  background: rgba(255,255,255,0.04); border-bottom: 1px solid var(--border);
}
.stats-panel.dragging .sp-head { cursor: grabbing; }
.sp-title { flex: 1; font-weight: 800; letter-spacing: 0.3px; color: #fff; font-size: 13.5px; }
.sp-ico {
  width: 26px; height: 26px; border-radius: 7px; cursor: pointer; flex: none;
  background: transparent; border: 1px solid transparent; color: var(--text-dim);
  display: flex; align-items: center; justify-content: center; font-size: 14px; line-height: 1;
}
.sp-ico:hover { color: #fff; background: rgba(255,255,255,0.08); border-color: var(--border-hot); }
.sp-ico:active { transform: rotate(-30deg); }
.sp-body { padding: 12px; display: flex; flex-direction: column; gap: 11px; }
.sp-filter {
  width: 100%; background: var(--bg-1); border: 1px solid var(--border); border-radius: 9px;
  color: #fff; padding: 9px 10px; font-size: 13px; cursor: pointer; appearance: none;
  background-image: linear-gradient(45deg, transparent 50%, var(--text-dim) 50%), linear-gradient(135deg, var(--text-dim) 50%, transparent 50%);
  background-position: calc(100% - 16px) 16px, calc(100% - 11px) 16px; background-size: 5px 5px, 5px 5px; background-repeat: no-repeat;
}
.sp-filter:focus { outline: none; border-color: var(--border-hot); }
.sp-filter option { background: var(--bg-1); color: #fff; }
.sp-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 1px;
  background: var(--border); border: 1px solid var(--border); border-radius: 10px; overflow: hidden;
}
.sp-cell { background: var(--bg-1); padding: 10px 12px; display: flex; flex-direction: column; gap: 4px; }
.sp-lbl { color: var(--text-dim); font-size: 11px; letter-spacing: 0.4px; }
.sp-val { font-family: 'JetBrains Mono', monospace; font-size: 15px; font-weight: 700; color: #fff; display: inline-flex; align-items: center; gap: 5px; }
.sp-val.win { color: var(--green); }
.sp-val.loss { color: var(--red); }
.sp-net {
  font-family: 'JetBrains Mono', monospace; font-size: 20px; font-weight: 800; color: #fff;
  display: inline-flex; align-items: center; gap: 6px;
}
.sp-net.win { color: var(--green); }
.sp-net.loss { color: var(--red); }
.sp-chart {
  background: var(--bg-1); border: 1px solid var(--border); border-radius: 10px;
  height: 100px; padding: 2px; overflow: hidden;
}
.sp-svg { width: 100%; height: 100%; display: block; }
.sp-zero { stroke: rgba(255,255,255,0.14); stroke-width: 1; stroke-dasharray: 3 3; }
.sp-line { stroke-width: 2; fill: none; }
.sp-line.pos { stroke: var(--green); }
.sp-line.neg { stroke: var(--red); }
.sp-area { stroke: none; }
.sp-area.pos { fill: rgba(0,230,118,0.16); }
.sp-area.neg { fill: rgba(226,17,46,0.16); }
.sp-chart-empty {
  display: flex; align-items: center; justify-content: center; height: 100%;
  color: var(--text-dim); font-size: 12px; text-align: center; padding: 0 14px;
}
.sp-foot { color: var(--text-dim); font-size: 11px; text-align: center; }
/* el coin dentro del panel un poco más chico para que no rompa la línea */
.stats-panel .coin { width: 14px; height: 14px; }

/* ████████████████████████████████████████████████████████████████████████████
   DEPORTES / MUNDIAL 2026 — sección en el sidebar + vista central (partidos con
   cuotas 1X2 + cuponera simple/combinada + mis apuestas + grupos). Render en
   js/casino/sports.js; data de /api/mundial (caché server-side).
   ████████████████████████████████████████████████████████████████████████████ */

/* visibilidad de la vista (mismo mecanismo que eventos/lobby) */
.sports-view { display: none; }
body.sports-mode .casino-stage,
body.sports-mode .casino-bottom,
body.sports-mode .bets-feed,
body.sports-mode .eventos-view,
body.sports-mode .lobby-view { display: none !important; }
body.sports-mode .sports-view { display: block; }
body.lobby-mode .sports-view,
body.events-mode .sports-view { display: none !important; }

/* sidebar: botón "Buscar juego" (abre el lobby con el foco en el buscador) */
.side-search-btn {
  display: flex; align-items: center; gap: 10px; width: 100%;
  background: rgba(255,255,255,.04); border: 1px solid var(--border);
  color: var(--text-dim); border-radius: 8px; padding: 9px 12px; margin-bottom: 2px;
  cursor: pointer; font: inherit; font-weight: 600; font-size: 13.5px;
  transition: background .15s, border-color .15s, color .15s;
}
.side-search-btn svg { width: 16px; height: 16px; flex: 0 0 auto; }
.side-search-btn:hover { background: rgba(255,255,255,.08); border-color: var(--border-hot); color: var(--text); }

/* buscador del lobby (filtra las cartas por nombre) */
.lobby-search {
  display: block; width: 100%; max-width: 360px; margin-top: 12px;
  background: rgba(255,255,255,.04); border: 1px solid var(--border); border-radius: 8px;
  color: var(--text); font: inherit; font-size: 14px; padding: 9px 13px; outline: none;
}
.lobby-search::placeholder { color: var(--text-dim); }
.lobby-search:focus { border-color: var(--border-hot); background: rgba(255,255,255,.06); }

/* sidebar: ORIGINALES con 3 fijos + "Ver más" plegable (el resto de los juegos) */
.game-list-more { display: flex; flex-direction: column; gap: 4px; }
.game-list-more[hidden] { display: none; }
.game-more {
  display: block; width: 100%; text-align: left;
  background: transparent; border: none; cursor: pointer;
  font-family: 'Inter', sans-serif; font-size: 12.5px; font-weight: 600;
  color: var(--gold); padding: 9px 12px; border-radius: 3px;
  transition: color .15s, background .15s;
}
.game-more:hover { color: #fff; background: rgba(255,201,64,.08); }
/* "Ver más" del menú mobile: contenedor plegable de los juegos extra */
.cz-menu-more { display: flex; flex-direction: column; gap: 4px; }
.cz-menu-more[hidden] { display: none; }

/* menú mobile: ORIGINALES plegable — el título es botón pero se ve IGUAL que los
   otros títulos de sección (sin fondo ni flecha); tocar pliega/despliega la grilla */
button.cz-menu-collap {
  display: block; width: 100%; text-align: left; padding: 0;
  background: transparent; border: none; cursor: pointer;
  appearance: none; -webkit-appearance: none;
  /* font/color/margin los hereda de .cz-menu-sec-title (NO pisar acá: pisarlos fue
     lo que hizo gigante al "ORIGINALES" del sidebar la primera vez) */
}
button.cz-menu-collap:hover { color: var(--text); }

/* "Ver programa VIP" del modal de perfil es un <a>: sin subrayado ni color de link */
a.account-action { text-decoration: none; }
a.account-action:hover { text-decoration: none; }

/* layout: partidos a la izquierda, cuponera sticky a la derecha */
.sb-wrap { display: grid; grid-template-columns: minmax(0, 1fr) 270px; gap: 14px; align-items: start; }
.sb-main { min-width: 0; }
.sb-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.sb-title { font-family: 'Bebas Neue', sans-serif; font-size: 34px; letter-spacing: 1px; line-height: 1; }
.sb-tabs { display: flex; gap: 6px; }
.sb-tab {
  background: var(--panel); border: 1px solid var(--border); color: var(--text-dim);
  font: inherit; font-size: 13px; font-weight: 600; padding: 7px 14px; border-radius: 7px;
  cursor: pointer; transition: all .15s;
}
.sb-tab:hover { color: var(--text); border-color: var(--border-hot); }
.sb-tab.on { color: #fff; background: rgba(255,26,60,.10); border-color: rgba(255,26,60,.45); }

.sb-mock {
  background: rgba(255,201,64,.07); border: 1px solid rgba(255,201,64,.3); color: var(--gold);
  font-size: 12px; padding: 9px 12px; border-radius: 8px; margin-bottom: 12px; line-height: 1.5;
}
.sb-empty { text-align: center; color: var(--text-dim); padding: 50px 16px; font-size: 14px; }

.sb-day {
  font-size: 11.5px; font-weight: 700; color: var(--text-dim); text-transform: uppercase;
  letter-spacing: 1.4px; margin: 16px 2px 8px;
}
.sb-day:first-child { margin-top: 0; }
.sb-day-live { color: var(--red); }

.sb-match {
  background: var(--panel); border: 1px solid var(--border); border-radius: 9px;
  padding: 11px 13px; margin-bottom: 8px;
}
.sb-match.live { border-color: rgba(255,26,60,.4); }
.sb-meta {
  display: flex; justify-content: space-between; align-items: center;
  font-size: 11px; color: var(--text-dim); text-transform: uppercase; letter-spacing: .5px;
  margin-bottom: 8px;
}
.sb-live { color: var(--red); font-weight: 700; animation: sbPulse 1.3s infinite; }
@keyframes sbPulse { 0%,100% { opacity: 1; } 50% { opacity: .45; } }
.sb-fin { color: var(--green); font-weight: 700; }
.sb-teams { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 10px; }
.sb-team { display: flex; align-items: center; gap: 8px; min-width: 0; font-size: 14px; font-weight: 600; color: var(--text); }
.sb-team.away { justify-content: flex-end; text-align: right; }
.sb-tname { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sb-crest { width: 22px; height: 22px; object-fit: contain; flex: 0 0 auto; }
.sb-crest-tla {
  width: 22px; height: 22px; border-radius: 50%; background: rgba(255,255,255,.07);
  color: var(--text-dim); font-size: 7.5px; font-weight: 700; flex: 0 0 auto;
  display: inline-flex; align-items: center; justify-content: center;
}
.sb-crest.s, .sb-crest-tla.s { width: 17px; height: 17px; font-size: 6.5px; }
.sb-score { font-size: 17px; font-weight: 800; letter-spacing: 1px; min-width: 52px; text-align: center; }
.sb-vs { color: var(--text-dim); font-size: 12px; min-width: 52px; text-align: center; }

.sb-odds { display: flex; gap: 8px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--border); }
.sb-odd {
  flex: 1; display: flex; justify-content: space-between; align-items: center; gap: 6px;
  background: rgba(255,255,255,.03); border: 1px solid var(--border); border-radius: 7px;
  padding: 8px 10px; cursor: pointer; font: inherit; transition: all .12s; min-width: 0;
}
.sb-odd:hover:not(:disabled) { border-color: var(--border-hot); background: rgba(255,255,255,.06); }
.sb-odd.on { border-color: var(--red); background: rgba(255,26,60,.13); box-shadow: inset 0 0 0 1px var(--red); }
.sb-odd:disabled { opacity: .45; cursor: default; }
.sb-odd-lbl { font-size: 11px; font-weight: 600; color: var(--text-dim); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sb-odd.on .sb-odd-lbl { color: #fff; }
.sb-odd-val { font-size: 13.5px; font-weight: 800; color: var(--gold); }
.sb-closed {
  margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--border);
  color: var(--text-dim); font-size: 12px;
}
.sb-more {
  display: block; width: 100%; margin-top: 4px;
  background: var(--panel); border: 1px solid var(--border); border-radius: 9px;
  color: var(--text-dim); font: inherit; font-size: 13px; font-weight: 600;
  padding: 12px; cursor: pointer; transition: all .15s;
}
.sb-more:hover { color: var(--text); border-color: var(--border-hot); }
.sb-more span { opacity: .6; font-weight: 500; }

/* cuponera */
.sb-slip {
  position: sticky; top: calc(var(--topbar-h) + 14px);
  background: var(--panel); border: 1px solid var(--border); border-radius: 9px;
  overflow: hidden;
}
.sb-slip-head {
  font-family: 'Bebas Neue', sans-serif; font-size: 19px; letter-spacing: 2px;
  padding: 12px 14px 10px; border-bottom: 1px solid var(--border);
  display: flex; align-items: center; gap: 8px;
}
.sb-slip-n {
  background: var(--red); color: #fff; font-family: 'Inter', sans-serif; font-size: 11px;
  font-weight: 700; min-width: 19px; height: 19px; border-radius: 999px;
  display: inline-flex; align-items: center; justify-content: center; padding: 0 5px;
}
.sb-slip-body { max-height: 300px; overflow-y: auto; }
.sb-slip-empty { color: var(--text-dim); font-size: 12.5px; padding: 18px 14px; line-height: 1.6; }
.sb-slip-empty small { opacity: .75; }
.sb-slip-row {
  display: flex; align-items: center; gap: 8px; padding: 9px 12px;
  border-bottom: 1px solid var(--border);
}
.sb-slip-row.bad { opacity: .55; }
.sb-slip-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.sb-slip-pick { font-size: 12.5px; font-weight: 700; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sb-slip-match { font-size: 11px; color: var(--text-dim); }
.sb-slip-odds { font-size: 13px; font-weight: 800; color: var(--gold); }
.sb-slip-x {
  background: transparent; border: none; color: var(--text-dim); cursor: pointer;
  font-size: 13px; padding: 4px; line-height: 1;
}
.sb-slip-x:hover { color: var(--red); }
.sb-slip-warn { color: var(--gold); font-size: 11px; padding: 8px 12px; line-height: 1.5; }
.sb-slip-bet { padding: 12px 14px; display: flex; flex-direction: column; gap: 9px; }
.sb-slip-bet > label { font-size: 10.5px; font-weight: 700; letter-spacing: 1px; color: var(--text-dim); }
.sb-slip-tot { display: flex; justify-content: space-between; font-size: 12.5px; color: var(--text-dim); }
.sb-slip-tot b { color: var(--text); }
.sb-slip-tot.win b { color: var(--green); }
.sb-slip-go {
  background: var(--red); color: #fff; border: none; border-radius: 7px;
  font-family: 'Bebas Neue', sans-serif; font-size: 19px; letter-spacing: 2px;
  padding: 11px; cursor: pointer; transition: filter .15s;
}
.sb-slip-go:hover:not(:disabled) { filter: brightness(1.12); }
.sb-slip-go:disabled { opacity: .45; cursor: default; }
.sb-slip-note { font-size: 10.5px; color: var(--text-dim); line-height: 1.5; }

/* mis apuestas */
.sb-mybet { background: var(--panel); border: 1px solid var(--border); border-radius: 9px; padding: 11px 13px; margin-bottom: 8px; }
.sb-mybet-head { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.sb-mybet-kind { font-size: 11px; font-weight: 800; letter-spacing: 1px; color: var(--text); }
.sb-mybet-date { font-size: 11px; color: var(--text-dim); flex: 1; }
.sb-chip { font-size: 10.5px; font-weight: 700; padding: 3px 9px; border-radius: 999px; letter-spacing: .4px; }
.sb-chip.pend { background: rgba(255,201,64,.12); color: var(--gold); border: 1px solid rgba(255,201,64,.3); }
.sb-chip.won { background: rgba(46,204,113,.12); color: var(--green); border: 1px solid rgba(46,204,113,.35); }
.sb-chip.lost { background: rgba(255,26,60,.1); color: var(--red); border: 1px solid rgba(255,26,60,.3); }
.sb-chip.void { background: rgba(255,255,255,.06); color: var(--text-dim); border: 1px solid var(--border); }
.sb-legs { display: flex; flex-direction: column; gap: 5px; margin-bottom: 9px; }
.sb-leg { display: flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--text-dim); }
.sb-leg-ic { width: 16px; text-align: center; font-weight: 800; }
.sb-leg.won .sb-leg-ic { color: var(--green); }
.sb-leg.lost .sb-leg-ic { color: var(--red); }
.sb-leg.lost .sb-leg-pick { text-decoration: line-through; opacity: .7; }
.sb-leg-match { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sb-leg-pick { color: var(--text); font-weight: 600; white-space: nowrap; }
.sb-leg-pick b { color: var(--gold); }
.sb-mybet-foot { font-size: 12px; color: var(--text-dim); border-top: 1px solid var(--border); padding-top: 8px; }
.sb-mybet-foot b { color: var(--text); }

/* grupos */
.sb-groups { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 12px; }
.sb-group { background: var(--panel); border: 1px solid var(--border); border-radius: 9px; padding: 12px 14px; }
.sb-group h3 { font-size: 12.5px; color: var(--red); letter-spacing: 1px; text-transform: uppercase; margin: 0 0 9px; }
.sb-group table { width: 100%; border-collapse: collapse; font-size: 12px; }
.sb-group th {
  color: var(--text-dim); font-size: 10px; text-transform: uppercase; letter-spacing: .5px;
  text-align: center; padding: 4px 2px; border-bottom: 1px solid var(--border);
}
.sb-group th.t, .sb-group td.t { text-align: left; }
.sb-group td { padding: 6px 2px; text-align: center; color: var(--text-dim); border-bottom: 1px solid var(--border); }
.sb-group tr:last-child td { border-bottom: none; }
.sb-group td.t { display: flex; align-items: center; gap: 7px; color: var(--text); font-weight: 600; }
.sb-group td.pts { color: var(--gold); font-weight: 700; }
.sb-group tr.q td { background: rgba(46,204,113,.04); }
.sb-group tr.q td:first-child { box-shadow: inset 2px 0 0 rgba(46,204,113,.5); }

/* mobile: cuponera arriba del listado (en una columna) */
@media (max-width: 900px) {
  .sb-wrap { grid-template-columns: 1fr; }
  .sb-slip { position: static; order: -1; }
  .sb-slip-body { max-height: 180px; }
  .sb-groups { grid-template-columns: 1fr; }
  .sb-title { font-size: 28px; }
}

/* ████████████████████████████████████████████████████████████████████████████
   🏁 RACE SEMANAL — podio top 3 escalonado (1º más alto), countdown, tabla 4º-10º.
   Render en js/casino/race.js, data de /api/casino/race.
   ████████████████████████████████████████████████████████████████████████████ */
.race-view { display: none; }
body.race-mode .casino-stage,
body.race-mode .casino-bottom,
body.race-mode .bets-feed,
body.race-mode .eventos-view,
body.race-mode .lobby-view,
body.race-mode .sports-view { display: none !important; }
body.race-mode .race-view { display: block; }
body.lobby-mode .race-view,
body.events-mode .race-view,
body.sports-mode .race-view,
body.temporada-mode .race-view { display: none !important; }

/* 🏆 TEMPORADA — misma maquinaria que la race (reusa los estilos .rc-*) */
.tp-view { display: none; }
body.temporada-mode .casino-stage,
body.temporada-mode .casino-bottom,
body.temporada-mode .bets-feed,
body.temporada-mode .eventos-view,
body.temporada-mode .lobby-view,
body.temporada-mode .sports-view,
body.temporada-mode .race-view { display: none !important; }
body.temporada-mode .tp-view { display: block; }
body.lobby-mode .tp-view,
body.events-mode .tp-view,
body.sports-mode .tp-view,
body.race-mode .tp-view { display: none !important; }
/* tabs Wager/Puntos + tag de rango VIP */
.tp-tabs { display: flex; gap: 8px; justify-content: center; margin-top: 12px; }
.tp-tab { padding: 7px 18px; border-radius: 999px; font-weight: 800; font-size: 13px; cursor: pointer; border: 1px solid var(--border); background: rgba(0,0,0,0.25); color: var(--text-mute); transition: filter .12s; }
.tp-tab:hover { filter: brightness(1.15); }
.tp-tab.on { background: linear-gradient(135deg, var(--red), var(--red-deep)); color: #fff; border-color: transparent; }
.tp-vip { font-size: 10px; font-weight: 800; opacity: .9; white-space: nowrap; }

.rc-head { text-align: center; margin: 6px 0 24px; }
.rc-title { font-family: 'Bebas Neue', sans-serif; font-size: 40px; letter-spacing: 3px; line-height: 1; }
.rc-meta { display: flex; align-items: center; justify-content: center; gap: 12px; color: var(--text-dim); font-size: 13px; margin-top: 10px; }
.rc-pool {
  display: inline-block; background: rgba(255,201,64,.1); border: 1px solid rgba(255,201,64,.35);
  color: var(--gold); font-weight: 800; font-size: 13px; letter-spacing: .5px;
  padding: 4px 12px; border-radius: 999px;
}
.rc-runners, .rc-period {
  display: inline-block; background: rgba(255,255,255,.05); border: 1px solid var(--border);
  color: var(--text-dim); font-weight: 700; font-size: 12px; letter-spacing: 1px;
  padding: 4px 12px; border-radius: 999px;
}

/* podio: orden visual 2-1-3; el 1º arranca más arriba, 2º un poco más abajo, 3º más.
   Todas las cards tienen la MISMA estructura interna y el premio anclado abajo
   (margin-top:auto) para que nada quede descentrado entre llenas y vacías. */
.rc-podium {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px;
  align-items: stretch; max-width: 760px; margin: 0 auto 28px;
}
.rc-pod {
  background: var(--panel); border: 1px solid var(--border); border-radius: 12px;
  padding: 22px 12px 14px; text-align: center; position: relative;
  display: flex; flex-direction: column; align-items: center; gap: 9px;
  min-height: 236px;
}
.rc-pod-1 {
  margin-top: 0;
  border-color: rgba(255,201,64,.55);
  background: linear-gradient(180deg, rgba(255,201,64,.06), var(--panel) 55%);
  box-shadow: 0 0 26px rgba(255,201,64,.10);
}
.rc-pod-2 { margin-top: 26px; border-color: rgba(190,196,210,.30); }
.rc-pod-3 { margin-top: 44px; border-color: rgba(205,127,50,.32); }
.rc-pod.empty .rc-av-big, .rc-pod.empty .rc-pod-stats b { opacity: .5; }
.rc-pod-pos {
  position: absolute; top: -12px; left: 50%; transform: translateX(-50%);
  background: var(--panel-solid); border: 1px solid var(--border); color: var(--text-dim);
  font-size: 12px; font-weight: 800; padding: 3px 11px; border-radius: 999px;
}
.rc-pod-1 .rc-pod-pos { background: var(--gold); border-color: var(--gold); color: #1a1206; }
.rc-pod-2 .rc-pod-pos { border-color: rgba(190,196,210,.45); color: #c9ced9; }
.rc-pod-3 .rc-pod-pos { border-color: rgba(205,127,50,.5); color: #d99a5e; }
.rc-av-big {
  width: 64px; height: 64px; border-radius: 50%; object-fit: cover;
  border: 2px solid var(--border); background: rgba(255,255,255,.05);
  display: inline-flex; align-items: center; justify-content: center;
}
.rc-av-big.rc-av-ph { font-family: 'Bebas Neue', sans-serif; font-size: 28px; color: var(--text-dim); }
.rc-pod-1 .rc-av-big { width: 76px; height: 76px; border-color: rgba(255,201,64,.7); }
.rc-pod-2 .rc-av-big { border-color: rgba(190,196,210,.45); }
.rc-pod-3 .rc-av-big { border-color: rgba(205,127,50,.45); }
.rc-pod-name { font-weight: 800; font-size: 14.5px; color: var(--text); max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; }
.rc-pod-name:hover { color: var(--gold); }
.rc-pod-name.dim { color: var(--text-dim); cursor: default; font-weight: 600; }
.rc-pod-name.dim:hover { color: var(--text-dim); }
.rc-pod-stats { width: 100%; border-top: 1px solid var(--border); padding-top: 8px; font-size: 13px; margin-top: auto; }
.rc-pod-prize { width: 100%; border-top: 1px solid var(--border); padding-top: 8px; font-size: 13px; }
.rc-pod-stats .lbl, .rc-pod-prize .lbl { display: block; font-size: 10px; color: var(--text-dim); text-transform: uppercase; letter-spacing: 1px; margin-bottom: 2px; }
.rc-pod-stats b { color: var(--text); }
.rc-pod-prize b { color: var(--gold); font-size: 15px; }

/* countdown */
.rc-count { display: flex; justify-content: center; gap: 10px; margin: 0 0 26px; }
.rc-cbox {
  background: var(--panel); border: 1px solid var(--border); border-radius: 10px;
  min-width: 64px; padding: 10px 8px; text-align: center;
}
.rc-cbox b { display: block; font-family: 'Bebas Neue', sans-serif; font-size: 26px; letter-spacing: 1px; color: var(--text); }
.rc-cbox span { font-size: 9px; color: var(--text-dim); letter-spacing: 1.5px; }

/* tabla 4º-10º */
.rc-list { max-width: 760px; margin: 0 auto 18px; display: flex; flex-direction: column; gap: 7px; }
.rc-row {
  display: flex; align-items: center; gap: 11px;
  background: var(--panel); border: 1px solid var(--border); border-radius: 10px;
  padding: 9px 13px;
}
.rc-row.you { border-color: rgba(255,26,60,.5); background: rgba(255,26,60,.06); }
.rc-row-pos { font-weight: 800; color: var(--text-dim); font-size: 13px; min-width: 30px; }
.rc-av-s {
  width: 30px; height: 30px; border-radius: 50%; object-fit: cover; flex: 0 0 auto;
  background: rgba(255,255,255,.05); display: inline-flex; align-items: center; justify-content: center; font-size: 14px;
}
.rc-row-name { flex: 1; min-width: 0; font-weight: 700; color: var(--text); font-size: 13.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; }
.rc-row-name:hover { color: var(--gold); }
.rc-row-wag, .rc-row-prize { text-align: right; font-size: 13px; font-weight: 700; color: var(--text); }
.rc-row-prize { color: var(--gold); min-width: 84px; }
.rc-row .lbl { display: block; font-size: 9px; color: var(--text-dim); text-transform: uppercase; letter-spacing: 1px; font-weight: 600; }
.rc-info { max-width: 760px; margin: 0 auto; color: var(--text-dim); font-size: 12.5px; line-height: 1.6; text-align: center; }
.rc-info b { color: var(--text); }

/* paginador de la clasificación (de a 10) */
.rc-pager { display: flex; align-items: center; justify-content: center; gap: 14px; margin-top: 6px; }
.rc-page {
  background: var(--panel); border: 1px solid var(--border); color: var(--text-dim);
  font: inherit; font-size: 12.5px; font-weight: 600; padding: 7px 14px; border-radius: 8px;
  cursor: pointer; transition: all .15s;
}
.rc-page:hover:not(:disabled) { color: var(--text); border-color: var(--border-hot); }
.rc-page:disabled { opacity: .4; cursor: default; }
.rc-pageinfo { color: var(--text-dim); font-size: 12px; }

/* Top Tipeos (modal): filas del ranking */
.tr-list { display: flex; flex-direction: column; gap: 6px; margin: 12px 0 4px; max-height: 50vh; overflow-y: auto; }
.tr-row {
  display: flex; align-items: center; gap: 10px;
  background: rgba(255,255,255,.03); border: 1px solid var(--border); border-radius: 9px;
  padding: 8px 12px;
}
.tr-row:nth-child(1) { border-color: rgba(255,201,64,.45); }
.tr-pos { font-weight: 800; color: var(--text-dim); font-size: 12.5px; min-width: 28px; }
.tr-row:nth-child(1) .tr-pos { color: var(--gold); }
.tr-av {
  width: 28px; height: 28px; border-radius: 50%; object-fit: cover; flex: 0 0 auto;
  background: rgba(255,255,255,.06);
}
.tr-av-ph { display: inline-flex; align-items: center; justify-content: center; font-weight: 800; font-size: 12px; color: var(--text-dim); }
.tr-name { flex: 1; min-width: 0; font-weight: 700; font-size: 13.5px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; }
.tr-name:hover { color: var(--gold); }
.tr-total { text-align: right; font-weight: 800; font-size: 13px; color: var(--gold); }
.tr-total small { display: block; font-weight: 600; font-size: 10px; color: var(--text-dim); }

/* sub-tabs Activas/Determinadas de Mis apuestas (deportes), pill doble estilo Stake */
.sb-subtabs {
  display: inline-flex; gap: 4px; margin-bottom: 12px;
  background: var(--panel); border: 1px solid var(--border); border-radius: 999px; padding: 4px;
}
.sb-subtab {
  background: transparent; border: none; color: var(--text-dim);
  font: inherit; font-size: 13px; font-weight: 700; padding: 7px 18px; border-radius: 999px;
  cursor: pointer; transition: all .15s;
}
.sb-subtab:hover { color: var(--text); }
.sb-subtab.on { background: rgba(255,26,60,.14); color: #fff; }

@media (max-width: 640px) {
  .rc-podium { gap: 7px; }
  .rc-pod { padding: 14px 7px 11px; }
  .rc-av-big { width: 48px; height: 48px; }
  .rc-pod-1 .rc-av-big { width: 58px; height: 58px; }
  .rc-pod-name { font-size: 12.5px; }
  .rc-title { font-size: 32px; }
  .rc-row-wag { display: none; } /* en mobile alcanza con premio (el wager está en el podio propio) */
}

/* ████████████████████████████████████████████████████████████████████████████
   PENALES — 15º original. Escena: arco con red + arquero vino/dorado + pelota +
   tanda arriba (una pelotita por penal con su multiplicador). Generada por
   js/casino/games/penalty.js; acá solo estilos/animaciones.
   ████████████████████████████████████████████████████████████████████████████ */
.pn-scene {
  /* .pk-board centra a sus hijos al ancho del contenido: ancho explícito, si no
     la escena queda angosta (al ancho de la tanda). Con tope: en monitores anchos
     sobraba pasto a los costados. */
  width: 100%; max-width: 900px; align-self: center;
  position: relative; height: min(560px, 64vh); min-height: 420px; border-radius: 10px; overflow: hidden;
  background:
    radial-gradient(120% 90% at 50% 0%, rgba(226,17,46,.10), transparent 55%),
    linear-gradient(180deg, #0c0a10 0%, #0e1311 46%, #122018 60%, #16271d 100%);
  display: flex; flex-direction: column;
}
.pn-scene.shake { animation: pnShake .42s; }
@keyframes pnShake { 0%,100%{transform:none} 25%{transform:translateX(-5px)} 55%{transform:translateX(4px)} 80%{transform:translateX(-2px)} }

/* tanda: una pelotita + multiplicador por penal */
.pn-tally { display: flex; gap: 6px; justify-content: center; padding: 12px 10px 6px; flex-wrap: wrap; position: relative; z-index: 3; }
.pn-t { display: flex; flex-direction: column; align-items: center; gap: 3px; min-width: 38px; }
.pn-t-ball { width: 16px; height: 16px; border-radius: 50%; border: 2px solid rgba(255,255,255,.22); background: rgba(255,255,255,.05); transition: all .2s; }
.pn-t.goal .pn-t-ball { background: #ffc940; border-color: #ffc940; box-shadow: 0 0 10px rgba(255,201,64,.5); }
.pn-t.saved .pn-t-ball { background: var(--red); border-color: var(--red); }
.pn-t.cur .pn-t-ball { border-color: #fff; animation: pnPulse 1s infinite; }
@keyframes pnPulse { 0%,100%{box-shadow:0 0 0 0 rgba(255,255,255,.35)} 50%{box-shadow:0 0 0 5px rgba(255,255,255,0)} }
.pn-t-mult { font-size: 9.5px; color: var(--text-dim); font-weight: 700; }
.pn-t.goal .pn-t-mult { color: var(--gold); }
.pn-t.cur .pn-t-mult { color: #fff; }

.pn-field { position: relative; flex: 1; }
.pn-glow { position: absolute; inset: 0; background: radial-gradient(50% 38% at 50% 38%, rgba(255,201,64,.06), transparent 70%); pointer-events: none; }
/* franjas de césped */
.pn-field::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 56%;
  background: repeating-linear-gradient(180deg, rgba(255,255,255,.018) 0 26px, transparent 26px 52px);
  pointer-events: none; }

/* arco: "cámara cerca" — el arco domina la escena y el arquero queda a escala
   real (~75% de la altura del arco) */
.pn-goal { position: absolute; left: 50%; top: 10%; transform: translateX(-50%); width: min(82%, 660px); height: 44%; }
.pn-net { position: absolute; inset: 7px 7px 0 7px;
  background:
    repeating-linear-gradient(90deg, rgba(244,239,230,.13) 0 1.5px, transparent 1.5px 17px),
    repeating-linear-gradient(0deg, rgba(244,239,230,.13) 0 1.5px, transparent 1.5px 17px);
}
.pn-post { position: absolute; top: 0; bottom: 0; width: 7px; background: linear-gradient(90deg, #f4efe6, #cfc6b5); border-radius: 4px; box-shadow: 0 0 12px rgba(0,0,0,.5); }
.pn-post-l { left: 0; } .pn-post-r { right: 0; }
.pn-bar { position: absolute; left: 0; right: 0; top: 0; height: 7px; background: linear-gradient(180deg, #f4efe6, #cfc6b5); border-radius: 4px; }

/* 5 zonas fijas: esquinas arriba/abajo + centro a todo lo alto */
.pn-zones {
  position: absolute; inset: 7px 7px 0 7px; display: grid; z-index: 4;
  grid-template-columns: 1fr 1.05fr 1fr; grid-template-rows: 1fr 1fr;
}
.pn-zone { position: relative; background: transparent; border: none; cursor: pointer; }
.pn-z0 { grid-column: 1; grid-row: 1; }
.pn-z1 { grid-column: 1; grid-row: 2; }
.pn-z2 { grid-column: 2; grid-row: 1 / span 2; }
.pn-z3 { grid-column: 3; grid-row: 1; }
.pn-z4 { grid-column: 3; grid-row: 2; }
.pn-zone:disabled { cursor: default; }
.pn-ring { position: absolute; left: 50%; top: 50%; width: 54px; height: 54px; transform: translate(-50%,-50%) scale(.8); border-radius: 50%; border: 2px dashed transparent; transition: all .15s; pointer-events: none; }
.pn-zones.on .pn-zone:hover .pn-ring { border-color: rgba(255,201,64,.85); transform: translate(-50%,-50%) scale(1); box-shadow: 0 0 18px rgba(255,201,64,.25), inset 0 0 14px rgba(255,201,64,.12); }
.pn-zones.on .pn-zone:hover { background: radial-gradient(50% 50% at 50% 50%, rgba(255,201,64,.08), transparent 75%); }
.pn-zone.hit { background: radial-gradient(50% 50% at 50% 50%, rgba(255,201,64,.22), transparent 75%); }
/* numeritos de la secuencia del Auto (estilo Tower de Stake) */
.pn-zpicks { position: absolute; top: 6px; left: 6px; display: flex; flex-wrap: wrap; gap: 3px; pointer-events: none; max-width: calc(100% - 10px); }
.pn-zpicks b {
  min-width: 20px; height: 20px; padding: 0 4px; border-radius: 5px;
  background: var(--gold); color: #1a1206; font-size: 11.5px; font-weight: 800;
  display: inline-flex; align-items: center; justify-content: center;
  box-shadow: 0 2px 6px rgba(0,0,0,.5);
}
/* panel "tus penales" del Auto: contador + deshacer/limpiar */
.pn-ap {
  display: flex; align-items: center; gap: 6px;
  background: rgba(255,255,255,.03); border: 1px solid var(--border); border-radius: 8px;
  padding: 8px 10px;
}
.pn-ap-info { flex: 1; min-width: 0; font-size: 12px; color: var(--gold); font-weight: 700; }
.pn-ap button {
  background: rgba(255,255,255,.05); border: 1px solid var(--border); color: var(--text-dim);
  border-radius: 6px; width: 30px; height: 28px; cursor: pointer; font-size: 13px;
  transition: all .15s;
}
.pn-ap button:hover { color: var(--text); border-color: var(--border-hot); }

/* arquero: sprites del user (una pose por zona; la central es también el idle).
   El idle "respira" en el medio; el dive viaja a la zona con su pose. */
.pn-gk {
  position: absolute; left: 50%; bottom: -3%; height: 78%; width: auto;
  transform: translateX(-50%); z-index: 3;
  transition: left .24s cubic-bezier(.3,.9,.4,1), bottom .24s cubic-bezier(.3,.9,.4,1), height .24s;
  filter: drop-shadow(0 8px 10px rgba(0,0,0,.5));
}
.pn-gk:not(.dive) { animation: pnSway 2.4s ease-in-out infinite; }
@keyframes pnSway { 0%,100%{transform:translateX(calc(-50% - 7px))} 50%{transform:translateX(calc(-50% + 7px))} }
.pn-gk.dive { animation: none; }
.pn-gk.dive.up { height: 72%; }
.pn-gk.dive.low { height: 44%; }
.pn-gk.dive.mid { height: 82%; }
.pn-gk.z0 { left: 18%; bottom: 16%; }
.pn-gk.z1 { left: 17%; bottom: -7%; }
.pn-gk.z2 { left: 50%; bottom: -1%; }
.pn-gk.z3 { left: 82%; bottom: 16%; }
.pn-gk.z4 { left: 83%; bottom: -7%; }
.pn-gk.save { filter: drop-shadow(0 0 16px rgba(226,17,46,.55)); }

.pn-spot { position: absolute; left: 50%; bottom: 8.5%; width: 90px; height: 14px; transform: translateX(-50%); border-radius: 50%; background: rgba(0,0,0,.35); }
.pn-ball { position: absolute; left: 50%; bottom: 8%; width: 60px; transform: translateX(-50%); z-index: 5; --bx: 50%; }
.pn-ball-svg { width: 100%; display: block; filter: drop-shadow(0 6px 8px rgba(0,0,0,.45)); }
.pn-ball.fly { left: var(--bx); bottom: var(--by, 60%); transform: translateX(-50%) scale(.45) rotate(360deg);
  transition: left .32s cubic-bezier(.25,.7,.4,1), bottom .32s cubic-bezier(.3,.4,.3,1), transform .32s linear; }
.pn-ball.fly.in-net { transform: translateX(-50%) scale(.4); }
.pn-ball.fly.stopped { bottom: calc(var(--by, 60%) - 14%); transform: translateX(-50%) scale(.55) rotate(180deg); transition: all .22s; }

.pn-flash { position: absolute; inset: 0; pointer-events: none; opacity: 0; transition: opacity .18s; z-index: 6; }
.pn-flash.g { opacity: 1; background: radial-gradient(60% 45% at 50% 32%, rgba(255,201,64,.20), transparent 70%); }
.pn-flash.r { opacity: 1; background: radial-gradient(60% 45% at 50% 32%, rgba(226,17,46,.22), transparent 70%); }

.pn-verdict {
  position: absolute; left: 50%; top: 36%; transform: translate(-50%,-50%); z-index: 7;
  font-family: 'Bebas Neue', sans-serif; font-size: 46px; letter-spacing: 4px; padding: 6px 22px;
  border-radius: 10px; background: rgba(10,8,9,.78); border: 1px solid var(--border);
  animation: pnPop .25s ease;
}
.pn-verdict.w { color: var(--gold); border-color: rgba(255,201,64,.5); text-shadow: 0 0 24px rgba(255,201,64,.35); }
.pn-verdict.l { color: var(--red); border-color: rgba(226,17,46,.5); text-shadow: 0 0 24px rgba(226,17,46,.35); }
@keyframes pnPop { from { transform: translate(-50%,-50%) scale(.7); opacity: 0; } to { transform: translate(-50%,-50%) scale(1); opacity: 1; } }

.pn-kick-hint { color: var(--gold); }

@media (max-width: 640px) {
  .pn-scene { min-height: 350px; }
  .pn-goal { width: 95%; height: 28%; }
  .pn-ball { width: 46px; }
  .pn-t { min-width: 28px; }
  .pn-t-mult { font-size: 8.5px; }
  .pn-verdict { font-size: 32px; }
  .pn-ring { width: 42px; height: 42px; }
}

/* Borrar mi cuenta: acción destructiva en rojo, separada del resto */
.account-action.acct-del { color: #ff7585; border-top: 1px solid var(--border); margin-top: 4px; }
.account-action.acct-del:hover { color: #fff; background: rgba(226,17,46,.12); }
.acct-del-go { background: var(--red); }
.acct-del-go:disabled { opacity: .4; cursor: default; }

/* @menciones del chat: resaltadas + fila destacada cuando te nombran + dropdown @ */
.cz-mention {
  color: var(--gold); font-weight: 700; cursor: pointer;
  background: rgba(255,201,64,.09); border-radius: 4px; padding: 0 3px;
}
.cz-mention:hover { background: rgba(255,201,64,.2); }
.cz-msg.mentioned-me { background: rgba(255,201,64,.06); box-shadow: inset 2px 0 0 var(--gold); border-radius: 6px; }
.cz-mention-sug {
  position: absolute; left: 8px; right: 8px; bottom: calc(100% + 6px); z-index: 30;
  background: var(--panel-solid); border: 1px solid var(--border); border-radius: 9px;
  overflow: hidden; box-shadow: 0 -8px 24px rgba(0,0,0,.45);
}
.cz-mention-opt {
  display: block; width: 100%; text-align: left;
  background: transparent; border: none; cursor: pointer;
  color: var(--gold); font: inherit; font-size: 13px; font-weight: 600; padding: 8px 12px;
}
.cz-mention-opt:hover { background: rgba(255,201,64,.1); color: #fff; }

/* ==================== FLIP (cara o cruz) — 16º original ==================== */
.fl-scene {
  width: 100%; max-width: 720px; align-self: center;
  position: relative; height: min(560px, 66vh); min-height: 420px;
  border-radius: 18px; overflow: hidden;
  background:
    radial-gradient(85% 65% at 50% -8%, rgba(180,18,45,0.22), transparent 60%),
    linear-gradient(180deg, #1f121a 0%, #160c12 55%, #0f090d 100%);
  border: 1px solid rgba(180,18,45,0.28);
  box-shadow: inset 0 0 90px rgba(0,0,0,0.6), 0 12px 44px rgba(0,0,0,0.55);
  display: flex; flex-direction: column; align-items: center;
}
/* escenario de la moneda (modo Manual / animación de las tiradas) */
.fl-stage {
  flex: 1; width: 100%; display: flex; align-items: center; justify-content: center;
  perspective: 1000px; position: relative;
}
/* grilla de tu secuencia (modo Auto): hasta 5 por fila (--fl-cols = mín(n,5)), tamaño
   de celda (--fl-cell) según la cantidad de filas para que entren TODAS sin scrollbar. */
.fl-grid {
  --fl-cell: 120px; --fl-gap: 14px; --fl-maxw: 560px;
  flex: 1; width: 100%;
  display: flex; align-items: center; justify-content: center;
  padding: 18px 16px; overflow-y: auto; scrollbar-width: none; /* Firefox */
}
.fl-grid::-webkit-scrollbar { display: none; } /* WebKit: sin barra */
/* wrapper interno: ancho topeado a --fl-maxw (= perRow celdas) → el flex-wrap arma
   exactamente perRow por fila y justify-center centra cada fila (la última incluida). */
.fl-grid-inner {
  display: flex; flex-wrap: wrap; gap: var(--fl-gap);
  justify-content: center; align-content: center;
  width: 100%; max-width: var(--fl-maxw);
}
.fl-cell {
  position: relative; box-sizing: border-box;
  width: var(--fl-cell); height: var(--fl-cell); cursor: pointer;
  background: rgba(255,255,255,.03); border: 1px solid var(--border); border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  transition: border-color .12s, transform .1s, box-shadow .12s;
}
.fl-cell:hover:not(:disabled) { border-color: var(--border-hot); }
.fl-cell:active:not(:disabled) { transform: scale(.95); }
.fl-cell:disabled { cursor: default; }
.fl-cell.cara { border-color: rgba(231,181,74,.4); }
.fl-cell.cruz { border-color: rgba(226,17,46,.45); }
.fl-cell-face { position: relative; width: 72%; height: 72%; display: block; }
.fl-cell-face svg { width: 100%; height: 100%; display: block; }
/* moneda "fantasma" (lado opuesto) detrás, al revelar el resultado en Auto */
.fl-cell-ghost { position: absolute; top: -14%; left: -14%; width: 60%; height: 60%; opacity: .4; }
.fl-cell-ghost svg { width: 100%; height: 100%; display: block; }
.fl-cell-n {
  position: absolute; top: -9px; left: 50%; transform: translateX(-50%);
  background: var(--panel-solid); border: 1px solid var(--border); border-radius: 999px;
  font-size: 10px; font-weight: 800; min-width: 18px; height: 17px; line-height: 15px;
  text-align: center; color: var(--text-dim); padding: 0 5px; z-index: 2;
}
/* revelado 1×1 en Auto: verde = acierto, rojo = la que cortó la racha */
.fl-cell.win  { border-color: #00e676; box-shadow: inset 0 0 0 2px rgba(0,230,118,.55), 0 0 14px rgba(0,230,118,.28); }
.fl-cell.loss { border-color: #ff3b5c; box-shadow: inset 0 0 0 2px rgba(255,59,92,.6), 0 0 14px rgba(255,59,92,.32); }
.fl-cell.win  .fl-cell-n { background: #0a8a3f; border-color: #00e676; color: #eafff2; }
.fl-cell.loss .fl-cell-n { background: #a31228; border-color: #ff3b5c; color: #ffe4e9; }
.fl-cell.pop { animation: flCellPop .22s ease; }
@keyframes flCellPop { 0% { transform: scale(.82); } 60% { transform: scale(1.06); } 100% { transform: scale(1); } }
/* tira "Historial" al pie del board: label + casilleros que se llenan por tirada */
.fl-hist { width: 100%; padding: 10px 14px 12px; border-top: 1px solid var(--border); }
.fl-hist-lbl { font-size: 12px; font-weight: 800; color: var(--text-dim); letter-spacing: .3px; }
.fl-hist-row {
  margin-top: 7px; display: flex; gap: 6px; flex-wrap: wrap;
  background: rgba(0,0,0,.28); border: 1px solid var(--border); border-radius: 9px; padding: 9px;
}
.fl-slot {
  width: 26px; height: 26px; border-radius: 6px; display: inline-flex; padding: 3px;
  flex: 0 0 auto; background: rgba(255,255,255,.03);
}
.fl-slot svg { width: 100%; height: 100%; display: block; }
.fl-stage.good { animation: flGood .42s; }
.fl-stage.bad  { animation: flBad .42s; }
@keyframes flGood { 0%{filter:none} 35%{filter:drop-shadow(0 0 26px rgba(255,201,64,.6))} 100%{filter:none} }
@keyframes flBad  { 0%,100%{transform:translateX(0)} 25%{transform:translateX(-8px)} 75%{transform:translateX(8px)} }
/* moneda 3D de DOS caras (cara adelante, cruz atrás): gira en Y bajo la perspectiva de
   la escena mostrando ambas caras alternadas, y aterriza en la real (rotateY vía JS). */
.fl-coin {
  width: min(220px, 42vw); height: min(220px, 42vw);
  position: relative; will-change: transform;
  transform-style: preserve-3d;
}
.fl-side {
  position: absolute; inset: 0; border-radius: 50%;
  backface-visibility: hidden; -webkit-backface-visibility: hidden;
  filter: drop-shadow(0 12px 22px rgba(0,0,0,.5));
}
.fl-back { transform: rotateY(180deg); }
.fl-face-svg { width: 100%; height: 100%; display: block; }
/* "Ganancia total (Nx)" en la columna izquierda (estilo Stake) */
.fl-profit label { color: var(--gold); }
.fl-profit-amt {
  display: flex; align-items: center; gap: 6px;
  padding: 11px 12px; border-radius: 9px; font-weight: 800; font-size: 15px;
  background: var(--panel-solid); border: 1px solid rgba(255,201,64,.3); color: var(--text);
}

/* botones CARA / CRUZ / azar (manual) */
.fl-picks { display: flex; gap: 8px; margin-top: 4px; }
.fl-pick {
  flex: 1; display: flex; align-items: center; justify-content: center; gap: 7px;
  padding: 12px 8px; border-radius: 9px; cursor: pointer; font-weight: 800; font-size: 14px;
  background: var(--panel-solid); border: 1px solid var(--border); color: var(--text);
  transition: border-color .12s, transform .05s;
}
.fl-pick:hover:not(:disabled) { border-color: var(--border-hot); }
.fl-pick:active:not(:disabled) { transform: translateY(1px); }
.fl-pick:disabled { opacity: .45; cursor: default; }
.fl-pick.rnd { flex: 0 0 46px; font-size: 18px; }
.fl-pick .fl-pick-coin { width: 18px; height: 18px; border-radius: 50%; flex: 0 0 18px; }
.fl-pick.cara .fl-pick-coin { background: var(--gold); box-shadow: inset 0 0 0 5px #0f1117; }
.fl-pick.cruz .fl-pick-coin { background: var(--red); position: relative; }
.fl-pick.cruz .fl-pick-coin::after { content:''; position:absolute; inset:5px; background:#0f1117; transform:rotate(45deg); }
.fl-pick.cara { border-color: rgba(255,201,64,.35); }
.fl-pick.cruz { border-color: rgba(226,17,46,.35); }

/* modo Auto: info de la secuencia + botón "al azar" (la grilla vive en el board) */
.fl-ap { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.fl-ap-info { flex: 1; font-size: 12px; color: var(--text-dim); font-weight: 700; }
.fl-ap button {
  background: var(--panel-solid); border: 1px solid var(--border); color: var(--text);
  border-radius: 7px; padding: 5px 9px; cursor: pointer; font-size: 12px; font-weight: 700;
}
.fl-ap button:hover { border-color: var(--border-hot); }

/* ===== SLOT (placeholders) ===== */
.sl-board { display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; }
.sl-machine {
  position: relative; overflow: hidden;
  width: 100%; max-width: 640px; align-self: center; padding: 18px;
  border-radius: 16px; border: 1px solid rgba(180,18,45,0.28);
  background:
    radial-gradient(90% 70% at 50% -10%, rgba(180,18,45,0.18), transparent 60%),
    linear-gradient(180deg, #1f121a 0%, #160c12 55%, #0f090d 100%);
  box-shadow: inset 0 0 80px rgba(0,0,0,0.6), 0 12px 40px rgba(0,0,0,0.5);
  transition: background .4s, box-shadow .4s, border-color .4s;
}
/* MODO BONO: la máquina cambia de clima (dorado/morado) durante los giros gratis */
.sl-machine.bonus-mode {
  border-color: rgba(255,201,64,0.55);
  background:
    radial-gradient(90% 70% at 50% -10%, rgba(255,201,64,0.20), transparent 60%),
    linear-gradient(180deg, #2a2138 0%, #1a1428 55%, #100a18 100%);
  box-shadow: inset 0 0 80px rgba(0,0,0,0.6), 0 0 28px rgba(255,201,64,0.28), 0 12px 40px rgba(0,0,0,0.5);
}
/* header de free spins (arriba de la grilla, solo en el bono) */
.sl-fs-bar {
  display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap;
  margin-bottom: 12px; padding: 8px 14px; border-radius: 10px; font-size: 13px; font-weight: 800;
  background: rgba(255,201,64,0.12); border: 1px solid rgba(255,201,64,0.35); color: var(--gold);
}
.sl-fs-bar .sl-fs-tag { letter-spacing: .5px; }
.sl-fs-bar b { color: #fff; }
.sl-fs-bar b.rt { color: #5be8a0; }
.sl-fs-bar .coin { width: 14px; height: 14px; }
/* cartelón de bono (entrada/cierre) sobre la máquina */
.sl-bonus-screen {
  position: absolute; inset: 0; z-index: 10; display: flex; align-items: center; justify-content: center;
  background: radial-gradient(circle at 50% 45%, rgba(40,24,60,0.82), rgba(8,6,12,0.94));
  backdrop-filter: blur(3px); text-align: center; padding: 20px;
}
.sl-bonus-screen.show .sl-bs { animation: slBsIn .5s cubic-bezier(.2,.9,.3,1.3) both; }
@keyframes slBsIn { 0% { transform: scale(.5); opacity: 0; } 60% { transform: scale(1.08); } 100% { transform: scale(1); opacity: 1; } }
.sl-bs-ic { font-size: clamp(48px, 12vw, 78px); line-height: 1; filter: drop-shadow(0 0 18px rgba(255,201,64,.6)); animation: slBsPulse 1.1s ease-in-out infinite; }
@keyframes slBsPulse { 0%,100% { transform: scale(1); } 50% { transform: scale(1.12); } }
.sl-bs-t { font-family: 'Bebas Neue', sans-serif; font-size: clamp(30px, 8vw, 50px); letter-spacing: 3px; color: var(--gold); margin: 6px 0 4px; text-shadow: 0 0 22px rgba(255,201,64,.5); }
.sl-bs-n { font-size: 15px; font-weight: 700; color: var(--text); }
.sl-bs-n b { color: var(--gold); }
.sl-bs-t.win { color: #5be8a0; text-shadow: 0 0 22px rgba(91,232,160,.5); }
.sl-bs-btn {
  margin-top: 16px; padding: 12px 26px; border: none; border-radius: 999px; cursor: pointer;
  font-family: 'Bebas Neue', sans-serif; font-size: 19px; letter-spacing: 1.5px; color: #1a1208;
  background: linear-gradient(135deg, #ffd86b, var(--gold)); box-shadow: 0 6px 22px rgba(255,201,64,0.4);
  transition: transform .1s, filter .12s;
}
.sl-bs-btn:hover { filter: brightness(1.08); }
.sl-bs-btn:active { transform: translateY(1px); }
.sl-grid {
  display: flex; gap: 8px; justify-content: center;
  background: rgba(0,0,0,0.32); border: 1px solid var(--border); border-radius: 12px; padding: 10px;
}
.sl-col { display: flex; flex-direction: column; gap: 8px; flex: 1; min-width: 0; }
/* cada rodillo "cae" en su lugar al frenar (se llama de a uno, izq→der) */
.sl-col.drop { animation: slDrop .26s cubic-bezier(.2,.85,.3,1.25); }
@keyframes slDrop { 0% { transform: translateY(-16%); } 62% { transform: translateY(4%); } 100% { transform: translateY(0); } }
.sl-cell {
  aspect-ratio: 1; border-radius: 11px; display: flex; align-items: center; justify-content: center;
  font-size: clamp(22px, 6vw, 40px); line-height: 1;
  background: radial-gradient(circle at 50% 30%, color-mix(in srgb, var(--sc, #888) 22%, #15101a), #100c14);
  border: 1px solid color-mix(in srgb, var(--sc, #888) 40%, transparent);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.05), inset 0 -6px 14px rgba(0,0,0,0.5);
}
.sl-cell img { width: 84%; height: 84%; object-fit: contain; display: block; pointer-events: none; user-select: none; -webkit-user-drag: none; filter: drop-shadow(0 2px 3px rgba(0,0,0,0.45)); }
.sl-cell.wild { border-color: rgba(255,201,64,0.85); box-shadow: 0 0 14px rgba(255,201,64,0.4), inset 0 -6px 14px rgba(0,0,0,0.5); }
.sl-cell.wild img { width: 96%; height: 96%; }
.sl-cell.scatter { border-color: #ff7a1a; box-shadow: 0 0 14px rgba(255,122,26,0.45), inset 0 -6px 14px rgba(0,0,0,0.5); }
/* líneas ganadoras: las celdas que conectan brillan (barrido izq→der por rodillo) */
.sl-cell.dim { opacity: 0.32; transition: opacity .2s; }
.sl-cell.hit {
  border-color: var(--gold); transform: translateZ(0);
  animation: slHit 0.9s ease both; animation-delay: var(--hd, 0s);
}
@keyframes slHit {
  0% { box-shadow: inset 0 -6px 14px rgba(0,0,0,0.5); }
  18% { box-shadow: 0 0 18px var(--gold), inset 0 0 12px rgba(255,201,64,0.5); transform: scale(1.06); }
  100% { box-shadow: 0 0 10px rgba(255,201,64,0.55), inset 0 -6px 14px rgba(0,0,0,0.5); transform: scale(1); }
}
.sl-msg { text-align: center; margin-top: 14px; min-height: 24px; font-weight: 800; font-size: 14px; color: var(--gold); }
.sl-won {
  display: inline-flex; align-items: center; gap: 6px; padding: 5px 16px; border-radius: 999px;
  background: rgba(43,212,125,0.14); border: 1px solid rgba(43,212,125,0.4); color: #5be8a0;
  font-size: 15px; font-weight: 900;
}
.sl-won .coin { width: 16px; height: 16px; }
.sl-none { color: var(--text-mute); font-weight: 700; font-size: 13px; }

/* tabla de pagos: botón que abre el modal */
/* Auto del slot: secundario (no compite con GIRAR); se pone ROJO cuando está corriendo. */
.sl-auto-field { margin-top: 10px; }
.sl-auto {
  margin-top: 8px; width: 100%; cursor: pointer; padding: 11px 12px; border-radius: 10px;
  font-family: 'Inter', sans-serif; font-weight: 800; font-size: 15px; letter-spacing: .4px;
  color: var(--gold); background: rgba(0,0,0,0.22); border: 1px solid var(--border-hot);
  box-shadow: none; transition: filter .12s, border-color .12s;
}
.sl-auto:hover { filter: brightness(1.12); }
.sl-auto:disabled { opacity: .5; cursor: default; }
.sl-auto.stop { color: #fff; background: linear-gradient(135deg, var(--red), var(--red-deep)); border-color: transparent; box-shadow: 0 5px 22px var(--red-glow); }

.sl-pay-open {
  margin-top: 8px; width: 100%; cursor: pointer; padding: 10px 12px; border-radius: 10px;
  font-weight: 800; font-size: 13px; color: var(--gold);
  background: rgba(0,0,0,0.22); border: 1px solid var(--border); transition: filter .12s, border-color .12s;
}
.sl-pay-open:hover { filter: brightness(1.12); border-color: var(--border-hot); }
/* Modal tabla de pagos: card COMPACTA (antes el .pf-card genérico la dejaba en 520px y
   alta como toda la pantalla) + scrollbar FINA propia (no la del browser). */
.pf-modal .pf-card.sl-pay-card {
  max-width: 420px; padding: 20px 22px;
  max-height: min(80vh, 720px); max-height: min(80dvh, 720px);
}
.sl-pay-card { scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.18) transparent; }
.sl-pay-card::-webkit-scrollbar { width: 8px; }
.sl-pay-card::-webkit-scrollbar-track { background: transparent; }
.sl-pay-card::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.16); border-radius: 8px; }
.sl-pay-card::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.28); }

/* ==================== Modal RANGOS VIP (tabla de la escalera) ==================== */
.pf-modal .pf-card.vip-rank-card {
  max-width: 470px; padding: 20px 22px;
  max-height: min(82vh, 740px); max-height: min(82dvh, 740px);
}
.vip-rank-card { scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.18) transparent; }
.vip-rank-card::-webkit-scrollbar { width: 8px; }
.vip-rank-card::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.16); border-radius: 8px; }
.vr-wrap { overflow-x: auto; scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.18) transparent; }
.vr-wrap::-webkit-scrollbar { height: 8px; }
.vr-wrap::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.16); border-radius: 8px; }
.vr-tbl { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.vr-tbl th {
  text-align: right; font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: .5px;
  color: var(--text-dim); font-weight: 700; padding: 0 0 8px; border-bottom: 1px solid var(--border); white-space: nowrap;
}
.vr-tbl th:first-child { text-align: left; }
.vr-tbl td {
  text-align: right; padding: 7px 0; border-bottom: 1px solid rgba(255,255,255,0.05);
  color: var(--text); font-weight: 700; white-space: nowrap; font-variant-numeric: tabular-nums;
}
.vr-tbl td:not(:first-child), .vr-tbl th:not(:first-child) { padding-left: 12px; }
.vr-rank { text-align: left !important; font-weight: 800; }
.vr-rank img { width: 18px; height: 18px; object-fit: contain; vertical-align: middle; margin-right: 6px; }
.vr-rank span { vertical-align: middle; }
.vr-tbl tr.cur td { background: rgba(255,201,64,0.10); }
.vr-tbl tr.cur td:first-child { box-shadow: inset 3px 0 0 var(--gold); }
.vr-foot { margin-top: 12px; font-size: 11px; color: var(--text-dim); line-height: 1.45; }
.sl-pt-body { padding: 2px 0; }
.sl-pt-row { display: flex; align-items: center; gap: 9px; padding: 5px 0; border-top: 1px solid rgba(255,255,255,0.05); }
.sl-pt-row:first-child { border-top: 0; }
.sl-pt-row img { width: 30px; height: 30px; object-fit: contain; flex: none; filter: drop-shadow(0 1px 2px rgba(0,0,0,0.5)); }
.sl-pt-name { width: 56px; flex: none; font-weight: 800; font-size: 12px; color: var(--text); }
.sl-pt-pays { font-size: 12px; color: var(--text-mute); font-weight: 700; line-height: 1.3; }
.sl-pt-pays b { color: var(--gold); font-weight: 900; margin-right: 2px; }
.sl-pt-pays i { color: rgba(255,255,255,0.25); font-style: normal; margin: 0 5px; }
.sl-pt-sc .sl-pt-name { color: #ffb060; }
.sl-pt-wild .sl-pt-name { color: var(--gold); }
.sl-pt-wild .sl-pt-pays { font-weight: 600; }
.sl-pt-note { padding: 8px 10px 10px; font-size: 11px; line-height: 1.55; color: var(--text-mute); border-top: 1px solid rgba(255,255,255,0.06); margin-top: 2px; }
.sl-pt-note b { color: var(--text); }
/* cómo se gana + las 5 líneas dibujadas + encabezados de sección */
.sl-pt-how { font-size: 12px; line-height: 1.45; color: var(--text-mute); padding: 2px 2px 0; }
.sl-pt-how b { color: var(--text); }
.sl-pl-row { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; margin: 10px 0 4px; }
.sl-pl { display: grid; grid-template-columns: repeat(5, 7px); grid-auto-rows: 7px; gap: 2px; padding: 5px; background: rgba(0,0,0,0.28); border: 1px solid var(--border); border-radius: 6px; }
.sl-pl i { width: 7px; height: 7px; border-radius: 2px; background: rgba(255,255,255,0.1); }
.sl-pl i.on { background: var(--gold); box-shadow: 0 0 5px rgba(255,201,64,0.7); }
.sl-pt-h { font-size: 10px; font-weight: 900; letter-spacing: .6px; color: var(--gold); text-transform: uppercase; margin: 13px 0 1px; opacity: .9; }
.sl-pt-bono { display: flex; flex-direction: column; gap: 3px; margin-top: 6px; }
.sl-pt-bono span { font-size: 12px; color: var(--text); background: rgba(255,122,26,0.08); border-left: 2px solid #ff7a1a; padding: 3px 8px; border-radius: 3px; }
.sl-pt-bono b { color: #ffb060; }

@media (max-width: 760px) {
  .fl-scene { min-height: 360px; }
  .fl-coin { width: 150px; height: 150px; }
  .fl-grid { gap: 8px; padding: 22px 12px 12px; }
  .fl-cell-n { top: -8px; font-size: 9px; height: 15px; line-height: 13px; }
  .fl-slot { width: 22px; height: 22px; }
  .sl-grid { gap: 5px; padding: 7px; }
  .sl-col { gap: 5px; }
}
