.catalog-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin: 14px 0 0;
}
#panel-error:not(:empty) {
  margin: 10px 18px;
}
.source-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 8px;
  border: 1px solid #bcc8a9;
  background: #fffeed;
  font-size: 10px;
  text-align: center;
}
.source-card img {
  width: 80px;
  height: 90px;
  object-fit: contain;
  image-rendering: pixelated;
}
#panel-body select {
  display: block;
  width: 100%;
  padding: 10px;
  margin: 12px 0;
  font: inherit;
  color: #35533c;
  background: #fffdef;
  border: 1px solid #a6b497;
}
#panel-body select + button {
  margin-right: 10px;
}
.reversi-board {
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  width: min(100%, 400px);
  aspect-ratio: 1;
  border: 5px solid #304f3c;
  background: #254936;
  margin: 18px auto;
}
.reversi-cell {
  position: relative;
  padding: 0;
  border: 1px solid #345e40;
  background: #6d9a61;
  box-shadow: none;
  border-radius: 0;
}
.reversi-cell:disabled {
  opacity: 1;
  cursor: default;
}
.reversi-cell.black::after,
.reversi-cell.white::after {
  content: "";
  display: block;
  position: absolute;
  inset: 11%;
  border-radius: 50%;
  box-shadow: 1px 2px 3px #243c3c88;
}
.reversi-cell.black::after {
  background: radial-gradient(circle at 35% 30%, #4a534d, #121d16 75%);
}
.reversi-cell.white::after {
  background: radial-gradient(circle at 35% 30%, #fffff2, #cfdbbd 75%);
}
.reversi-cell.legal::after {
  content: "";
  position: absolute;
  inset: 40%;
  border-radius: 50%;
  background: #e6edaf99;
}
@media (max-width: 700px) {
  .joystick {
    display: block;
  }
}
