body.mock-v3 .freecell-table {
  --freecell-tableau-gap: clamp(36px, calc(var(--card-w) * 0.3), 44px);
}

body.mock-v3 .freecell-table .freecell-slots,
body.mock-v3 .freecell-table .foundations {
  display: flex;
  gap: 0.65rem;
}

body.mock-v3 .freecell-table .tableau-piles {
  grid-template-columns: repeat(8, minmax(0, 1fr));
  gap: clamp(0.18rem, 0.82vw, 0.56rem);
}

body.mock-v3 .freecell-table .pile {
  width: var(--card-w);
}

body.mock-v3 .freecell-table .pile--tableau {
  width: 100%;
  min-height: max(calc(var(--card-h) + var(--freecell-tableau-gap) * 6), 300px);
}

body.mock-v3 .freecell-table .card-placeholder--tableau-empty {
  border-color: rgba(202, 244, 226, 0.5);
}

body.mock-v3 .freecell-table .tableau-column.is-drop-target .card-placeholder--tableau-empty {
  border-color: rgba(255, 214, 10, 0.88);
  box-shadow: inset 0 0 0 1px rgba(255, 214, 10, 0.32);
}

body.mock-v3 .freecell-table .freecell-slot:empty::before {
  content: "+";
}

body.mock-v3 .freecell-table .freecell-slot:empty::before {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: rgba(211, 235, 224, 0.58);
  font-family: var(--font-display);
  font-size: clamp(1.4rem, calc(var(--card-w) * 0.28), 2.3rem);
  font-weight: 800;
  line-height: 1;
}

body.mock-v3 .freecell-table .is-drop-target {
  border-color: rgba(255, 214, 10, 0.88);
  box-shadow: 0 0 0 2px rgba(255, 214, 10, 0.46);
}

body.mock-v3 .freecell-table .playing-card.is-hint-source {
  box-shadow: 0 0 0 2px rgba(255, 214, 10, 0.92), var(--shadow-card);
}

body.mock-v3 .drag-ghost .playing-card {
  position: absolute;
}

@media (max-width: 980px) {
  body.mock-v3 .freecell-table .tableau-piles {
    gap: 0.14rem;
  }
}

@media (max-width: 480px) {
  body.mock-v3 .freecell-table {
    --freecell-tableau-gap: clamp(30px, calc(var(--card-w) * 0.72), 36px);
  }
}

@media (max-width: 820px) {
  body.mock-v3 .mock-v3-first-screen {
    overflow-x: hidden;
    overflow-y: visible;
  }

  body.mock-v3 .mock-v3-shell {
    padding: 8px 6px 16px;
  }

  body.mock-v3 .mock-v3-table-wrap {
    padding: 6px 4px 10px;
  }

  body.mock-v3 .mock-v3-top-panel {
    gap: 8px;
    width: 100%;
    max-width: none;
  }

  body.mock-v3 .toolbar-actions,
  body.mock-v3.mock-v3-compact-top .toolbar-actions {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 7px;
    width: 100%;
  }

  body.mock-v3 .toolbar-actions .btn,
  body.mock-v3.mock-v3-compact-top .toolbar-actions .btn {
    width: 100%;
    min-width: 0;
    min-height: 36px;
    padding: 0.38rem 0.32rem;
    border-radius: 9px;
    font-size: clamp(0.66rem, 1.6vw, 0.78rem);
    line-height: 1.06;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  body.mock-v3 .game-stats--four,
  body.mock-v3.mock-v3-compact-top .game-stats--four {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 6px;
    width: 100%;
  }

  body.mock-v3 .game-stat,
  body.mock-v3.mock-v3-compact-top .game-stat {
    min-width: 0;
    min-height: 38px;
    padding: 0.34rem 0.4rem;
    border-radius: 8px;
  }

  body.mock-v3 .game-stat span,
  body.mock-v3.mock-v3-compact-top .game-stat span,
  body.mock-v3 .game-stat strong,
  body.mock-v3.mock-v3-compact-top .game-stat strong {
    overflow: hidden;
    text-overflow: ellipsis;
  }

  body.mock-v3 .freecell-table {
    --card-w: clamp(42px, calc((100vw - 46px) / 8), 78px);
    --card-h: calc(var(--card-w) * 1.42);
    --freecell-tableau-gap: clamp(28px, calc(var(--card-w) * 0.62), 40px);
    width: 100%;
    min-width: 0;
    max-width: none;
    min-height: auto;
    gap: clamp(8px, 2vw, 14px);
    margin-top: 8px;
  }

  body.mock-v3 .freecell-table .top-piles {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: clamp(6px, 1.8vw, 10px);
    align-items: start;
  }

  body.mock-v3 .freecell-table .freecell-slots,
  body.mock-v3 .freecell-table .foundations {
    display: grid;
    grid-template-columns: repeat(4, var(--card-w));
    justify-content: space-between;
    justify-self: stretch;
    width: 100%;
    gap: 0;
  }

  body.mock-v3 .freecell-table .tableau-piles {
    grid-template-columns: repeat(8, var(--card-w));
    justify-content: space-between;
    width: 100%;
    gap: 0;
  }

  body.mock-v3 .freecell-table .pile,
  body.mock-v3 .freecell-table .pile--tableau,
  body.mock-v3 .freecell-table .playing-card {
    width: var(--card-w);
  }

  body.mock-v3 .freecell-table .playing-card {
    height: var(--card-h);
  }

  body.mock-v3 .freecell-table .pile {
    min-height: var(--card-h);
    border-radius: 9px;
  }

  body.mock-v3 .freecell-table .pile--tableau {
    min-height: max(calc(var(--card-h) + var(--freecell-tableau-gap) * 7), 320px);
  }
}

@media (max-width: 660px) {
  body.mock-v3 .mock-v3-shell {
    padding-inline: 4px;
  }

  body.mock-v3 .mock-v3-table-wrap {
    padding-inline: 4px;
  }

  body.mock-v3 .toolbar-actions,
  body.mock-v3.mock-v3-compact-top .toolbar-actions {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 6px;
    width: 100%;
  }

  body.mock-v3 .toolbar-actions .btn,
  body.mock-v3.mock-v3-compact-top .toolbar-actions .btn {
    min-height: 34px;
    padding: 0.34rem 0.28rem;
    border-radius: 9px;
    font-size: clamp(0.64rem, 2.95vw, 0.74rem);
    line-height: 1.05;
  }

  body.mock-v3 .toolbar-actions #newGameButton,
  body.mock-v3 .toolbar-actions #undoButton {
    grid-column: span 3;
  }

  body.mock-v3 .toolbar-actions #hintButton,
  body.mock-v3 .toolbar-actions #autoButton,
  body.mock-v3 .toolbar-actions #settingsButton {
    grid-column: span 2;
  }

  body.mock-v3 .mock-v3-hud {
    gap: 6px;
  }

  body.mock-v3 .game-stats--four,
  body.mock-v3.mock-v3-compact-top .game-stats--four {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 4px;
  }

  body.mock-v3 .game-stat,
  body.mock-v3.mock-v3-compact-top .game-stat {
    display: grid;
    justify-items: center;
    align-content: center;
    min-height: 34px;
    padding: 4px 3px;
    gap: 1px;
    text-align: center;
    white-space: normal;
  }

  body.mock-v3.mock-v3-compact-top .game-stat::before,
  body.mock-v3.mock-v3-compact-top .game-stat span::after {
    display: none;
    content: none;
  }

  body.mock-v3 .game-stat span,
  body.mock-v3.mock-v3-compact-top .game-stat span {
    font-size: clamp(0.54rem, 2.2vw, 0.62rem);
    line-height: 1;
  }

  body.mock-v3 .game-stat strong,
  body.mock-v3.mock-v3-compact-top .game-stat strong {
    font-size: clamp(0.76rem, 3vw, 0.9rem);
    line-height: 1;
  }

  body.mock-v3 .freecell-table {
    --card-w: clamp(38px, calc((100vw - 42px) / 8), 55px);
    --freecell-tableau-gap: clamp(28px, calc(var(--card-w) * 0.72), 38px);
    gap: 8px;
  }
}

@media (max-width: 420px) {
  body.mock-v3 .mock-v3-shell,
  body.mock-v3 .mock-v3-table-wrap {
    padding-inline: 3px;
  }

  body.mock-v3 .freecell-table {
    --card-w: clamp(36px, calc((100vw - 34px) / 8), 48px);
    --freecell-tableau-gap: clamp(27px, calc(var(--card-w) * 0.76), 36px);
  }

  body.mock-v3 .toolbar-actions,
  body.mock-v3.mock-v3-compact-top .toolbar-actions {
    gap: 5px;
  }

  body.mock-v3 .toolbar-actions .btn,
  body.mock-v3.mock-v3-compact-top .toolbar-actions .btn {
    min-height: 32px;
    font-size: clamp(0.6rem, 2.82vw, 0.68rem);
  }

  body.mock-v3 .game-stat,
  body.mock-v3.mock-v3-compact-top .game-stat {
    min-height: 32px;
  }
}
