/* ============================================================
   Pair Up — one board, every tile twice
   Reuses the tile / callout / board chrome from match.css.
   ============================================================ */

.pshell {
  width: min(880px, 100% - 2.2rem);
  margin-inline: auto;
  padding: clamp(1.1rem, 2.6vw, 1.9rem) 0 3rem;
}

/* A single board sits centred rather than sharing the row with a twin. */
.board3d--solo {
  padding: clamp(0.85rem, 2vw, 1.25rem);
}
/* Cards are sized against whatever height is left once the topbar, HUD and
   callout have taken their share, so a full 4×4 deal never needs scrolling. */
.board3d--solo .grid {
  --cell: clamp(3.4rem, min(9.5vw, (100svh - 28.5rem) / var(--rows, 4)), 8.4rem);
  grid-template-columns: repeat(var(--cols, 4), var(--cell));
}
.board3d--solo .board3d__step {
  color: var(--plasma);
  border-color: rgba(255, 209, 102, 0.4);
  background: rgba(255, 209, 102, 0.12);
}

/* The lone board is always the active one, so it keeps its glow. */
.board3d--solo {
  border-color: var(--stroke-hot);
  box-shadow: var(--sh-md), 0 0 46px -20px rgba(240, 73, 106, 0.7);
}
/* …except while the cards are on show or a pair is resolving. */
.board3d--solo.is-waiting {
  border-color: rgba(255, 176, 32, 0.45);
  box-shadow: var(--sh-md), 0 0 46px -20px rgba(255, 176, 32, 0.6);
}

/* The first card of a turn stays lit while its partner is hunted for. */
.tile.is-first .tile__face--item {
  border-color: var(--amber-400);
  box-shadow: 0 0 0 1px rgba(255, 176, 32, 0.5), 0 8px 34px -8px rgba(255, 176, 32, 0.7);
}

@media (max-width: 560px) {
  .board3d--solo .grid {
    grid-template-columns: repeat(var(--cols, 4), minmax(0, 1fr));
  }
  .tile__label {
    font-size: 0.52rem;
  }
}
