/* skin-aware */
.board {
  display: grid;
  gap: 0.6rem;
}
.board.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.board.cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.board.cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.board.cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }

.card {
  aspect-ratio: 3 / 4;
  perspective: 900px;
  border: 0;
  padding: 0;
  background: transparent;
  cursor: pointer;
}

.card-inner {
  position: relative;
  width: 100%;
  height: 100%;
  transform-style: preserve-3d;
  transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
  border-radius: 16px;
}

.card.is-flipped .card-inner,
.card.is-matched .card-inner {
  transform: rotateY(180deg);
}

.face {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  backface-visibility: hidden;
  border-radius: 16px;
  border: 1px solid rgba(16, 24, 32, 0.08);
  font-family: var(--font-display);
  font-size: clamp(1.15rem, 3.6vw, 1.9rem);
  font-weight: 800;
  box-shadow: 0 10px 24px rgba(16, 24, 32, 0.08);
}

.face.back {
  background:
    radial-gradient(circle at 30% 25%, rgba(255, 255, 255, 0.2), transparent 45%),
    linear-gradient(145deg, #17a898, #055c54);
  color: rgba(255, 255, 255, 0.9);
  letter-spacing: 0.08em;
}

.face.front {
  transform: rotateY(180deg);
  background: linear-gradient(180deg, #fff, #f3f8fb);
  color: var(--ink);
}

.card.is-matched .face.front {
  background: linear-gradient(180deg, #e7f8f4, #d4f0ea);
  border-color: rgba(10, 122, 111, 0.35);
  animation: match-pop 0.45s var(--ease);
}

.card:hover:not(:disabled) .card-inner {
  transform: translateY(-2px);
}

.card.is-flipped:hover:not(:disabled) .card-inner,
.card.is-matched:hover .card-inner {
  transform: rotateY(180deg) translateY(-2px);
}

.card:disabled {
  cursor: default;
}

@keyframes match-pop {
  0% { transform: rotateY(180deg) scale(1); }
  50% { transform: rotateY(180deg) scale(1.05); }
  100% { transform: rotateY(180deg) scale(1); }
}
