/* Apogee Games v1.12.0
   Bonus Shelf identity layer.
   Each card reflects the visual language of the game it launches while
   preserving the shared Apogee card structure and interaction model. */

#bonus .bonus-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
  gap: var(--gap, 18px);
  align-items: stretch;
}

/* Keep cards balanced as the shelf grows beyond three entries. */
#bonus .bonus-grid .bonus-card {
  min-width: 0;
  height: 100%;
  display: flex;
  flex-direction: column;
}

#bonus .bonus-grid .bonus-card .button-row {
  margin-top: auto;
}


#bonus .bonus-card {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  border-width: 1px;
  transition: transform 160ms ease, border-color 160ms ease, box-shadow 160ms ease;
}

#bonus .bonus-card::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -2;
  pointer-events: none;
}

#bonus .bonus-card::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  opacity: .7;
}

#bonus .bonus-card:hover,
#bonus .bonus-card:focus-within {
  transform: translateY(-2px);
}

#bonus .bonus-card .meta-list {
  grid-template-columns: 1fr;
}

/* Golf: retain the established green identity. */
#bonus .bonus-golf {
  --bonus-accent: #77b879;
  --bonus-strong: #a6d39d;
  --bonus-text: #f4f8f2;
  --bonus-muted: #c0d2bd;
  color: var(--bonus-text);
  border-color: rgba(119,184,121,.62);
  box-shadow: inset 0 0 0 1px rgba(119,184,121,.08);
}

#bonus .bonus-golf::before {
  background:
    linear-gradient(180deg, rgba(11,32,18,.96), rgba(7,20,12,.98)),
    #09180e;
}

#bonus .bonus-golf::after {
  background:
    radial-gradient(circle at 85% 10%, rgba(119,184,121,.17), transparent 34%),
    linear-gradient(135deg, transparent 0 68%, rgba(119,184,121,.06) 68% 69%, transparent 69% 100%);
}

/* Boggle: mirror the Clean Black board with warm ivory and gold tracing. */
#bonus .bonus-boggle {
  --bonus-accent: #d6b45a;
  --bonus-strong: #f3f2ec;
  --bonus-text: #f3f2ec;
  --bonus-muted: #a6a8a4;
  color: var(--bonus-text);
  border-color: rgba(214,180,90,.56);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.035);
}

#bonus .bonus-boggle::before {
  background:
    linear-gradient(180deg, rgba(11,13,15,.98), rgba(5,6,7,.99)),
    #050607;
}

#bonus .bonus-boggle::after {
  background:
    linear-gradient(rgba(255,255,255,.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px),
    radial-gradient(circle at 84% 12%, rgba(214,180,90,.12), transparent 28%);
  background-size: 30px 30px, 30px 30px, auto;
}

/* Chess PRO: reference its neutral interface and classic board palette. */
#bonus .bonus-chess {
  --bonus-accent: #b58863;
  --bonus-strong: #f0d9b5;
  --bonus-text: #f4f1eb;
  --bonus-muted: #c0b7aa;
  color: var(--bonus-text);
  border-color: rgba(181,136,99,.60);
  box-shadow: inset 0 0 0 1px rgba(240,217,181,.05);
}

#bonus .bonus-chess::before {
  background:
    linear-gradient(180deg, rgba(22,24,28,.98), rgba(11,13,16,.99)),
    #0d1015;
}

#bonus .bonus-chess::after {
  background:
    linear-gradient(45deg, rgba(240,217,181,.055) 25%, transparent 25% 75%, rgba(240,217,181,.055) 75%),
    linear-gradient(45deg, rgba(181,136,99,.07) 25%, transparent 25% 75%, rgba(181,136,99,.07) 75%);
  background-position: 0 0, 18px 18px;
  background-size: 36px 36px;
  mask-image: linear-gradient(to left, #000, transparent 68%);
}


/* Reel Recall: neon game-show palette drawn from its 90s/CRT presentation. */
#bonus .bonus-reel {
  --bonus-accent: #21d4fd;
  --bonus-strong: #ffe55c;
  --bonus-text: #f8f5ff;
  --bonus-muted: #c9c2d8;
  color: var(--bonus-text);
  border-color: rgba(33,212,253,.58);
  box-shadow: inset 0 0 0 1px rgba(255,229,92,.05);
}

#bonus .bonus-reel::before {
  background:
    linear-gradient(180deg, rgba(27,10,43,.98), rgba(7,8,22,.99)),
    #090916;
}

#bonus .bonus-reel::after {
  background:
    radial-gradient(circle at 86% 14%, rgba(255,57,166,.22), transparent 30%),
    radial-gradient(circle at 70% 74%, rgba(33,212,253,.15), transparent 34%),
    linear-gradient(135deg, transparent 0 65%, rgba(255,229,92,.07) 65% 66%, transparent 66% 100%);
}

/* Shared typography inside themed cards. */
#bonus .bonus-card h2,
#bonus .bonus-card h3,
#bonus .bonus-card strong {
  color: var(--bonus-strong);
}

#bonus .bonus-card p,
#bonus .bonus-card .meta-list span {
  color: var(--bonus-muted);
}

#bonus .bonus-card .badge {
  color: var(--bonus-strong);
  border-color: color-mix(in srgb, var(--bonus-accent) 55%, transparent);
  background: color-mix(in srgb, var(--bonus-accent) 10%, transparent);
}

#bonus .bonus-card .badge.current {
  color: var(--bonus-text);
  border-color: color-mix(in srgb, var(--bonus-accent) 78%, transparent);
  background: color-mix(in srgb, var(--bonus-accent) 18%, transparent);
}

#bonus .bonus-card .btn {
  border-color: color-mix(in srgb, var(--bonus-accent) 50%, transparent);
  color: var(--bonus-strong);
  background: rgba(0,0,0,.18);
}

#bonus .bonus-card .btn:hover,
#bonus .bonus-card .btn:focus-visible {
  border-color: var(--bonus-accent);
  background: color-mix(in srgb, var(--bonus-accent) 12%, rgba(0,0,0,.22));
}

#bonus .bonus-card .btn.primary {
  background: var(--bonus-accent);
  border-color: var(--bonus-accent);
  color: #080a0c;
}

#bonus .bonus-golf .btn.primary {
  color: #071008;
}

#bonus .bonus-boggle .btn.primary {
  color: #0c0d0e;
}

#bonus .bonus-chess .btn.primary {
  color: #111318;
}

#bonus .bonus-reel .btn.primary {
  color: #071018;
}

@media (prefers-reduced-motion: reduce) {
  #bonus .bonus-card { transition: none; }
}
