.memory-grid {
  width: min(420px, 92vw);
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
}

.card {
  aspect-ratio: 1 / 1;
  position: relative;
  cursor: pointer;
  perspective: 600px;
}

.card-inner {
  position: relative;
  width: 100%;
  height: 100%;
  transition: transform 0.35s ease;
  transform-style: preserve-3d;
}

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

.card-face {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  backface-visibility: hidden;
  font-size: clamp(1.4rem, 5vw, 2rem);
}

.card-back {
  background: var(--panel);
  border: 1px solid var(--panel-edge);
  color: var(--violet);
  font-family: var(--display-font);
  font-size: 1.2rem;
}

.card-front {
  background: var(--bg-alt);
  border: 1px solid var(--violet);
  transform: rotateY(180deg);
}

.card.matched .card-front {
  border-color: var(--teal);
  opacity: 0.55;
}
