/* Keno ball animations */
@keyframes keno-reveal {
  0%   { transform: scale(0.3) rotate(-15deg); opacity: 0; }
  60%  { transform: scale(1.2) rotate(3deg); }
  100% { transform: scale(1) rotate(0deg); opacity: 1; }
}

.keno-ball-reveal {
  animation: keno-reveal 0.35s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
}

/* Grid number button */
.keno-btn {
  aspect-ratio: 1;
  border-radius: 8px;
  border: none;
  font-size: 0.75rem;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.2s, color 0.2s, box-shadow 0.2s;
  background: rgba(255,255,255,0.05);
  color: rgba(255,255,255,0.5);
  display: flex;
  align-items: center;
  justify-content: center;
}
.keno-btn:hover {
  background: rgba(255,255,255,0.1);
  color: #fff;
}
/* Picked by player */
.keno-btn.picked {
  background: rgba(8,106,215,0.35);
  color: #93c5fd;
  box-shadow: 0 0 0 1px rgba(8,106,215,0.5);
}
/* Drawn by game */
.keno-btn.drawn {
  background: rgba(59,130,246,0.25);
  color: #bfdbfe;
}
/* Match: picked AND drawn */
.keno-btn.match {
  background: rgba(16,185,129,0.3);
  color: #6ee7b7;
  box-shadow: 0 0 0 2px rgba(16,185,129,0.5);
}
/* Miss: picked but NOT drawn */
.keno-btn.miss {
  background: rgba(239,68,68,0.2);
  color: #fca5a5;
}
