:root{
  /* Fixed 9×9 board that scales to fit the screen without scrolling. */
  --board-dim: 9;
  --button-gap: 8px;
  --cell-size: min(
    56px,
    calc((100vw - 32px - (var(--button-gap) * (var(--board-dim) - 1))) / var(--board-dim)),
    calc((100vh - 32px - (var(--button-gap) * (var(--board-dim) - 1))) / var(--board-dim))
  );

  --main-button-bg: #238ffa;
  --cell-button-bg: #00b894;
  --button-color: #fff;
  --stage-bg: #f7f9fc;
}

*{box-sizing:border-box}
html,body{height:100%;margin:0;overflow:hidden;font-family:system-ui,-apple-system,Segoe UI,Roboto,'Helvetica Neue',Arial}
.stage{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--stage-bg)}

.play-area{display:flex;align-items:center;justify-content:center;width:100%;height:100%}
.button-area{display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;width:100%;height:100%;padding:12px}

.grid{
  display:grid;
  grid-template-columns:repeat(var(--board-dim), minmax(0, var(--cell-size)));
  grid-auto-rows: var(--cell-size);
  gap:var(--button-gap);
  padding:8px;
  background:rgba(255,255,255,0.92);
  border-radius:18px;
  box-shadow:0 12px 34px rgba(15,23,42,0.14);
  width:max-content;
  height:max-content;
}
.cell-slot{
  width:var(--cell-size);
  height:var(--cell-size);
  display:flex;
  align-items:center;
  justify-content:center;
  background:rgba(255,255,255,0.7);
  border:1px solid rgba(16,24,40,0.08);
  border-radius:14px;
}
.grid-btn{
  width:100%;
  height:100%;
  border:0;
  border-radius:12px;
  background:var(--cell-button-bg);
  color:var(--button-color);
  font-size:0.95rem;
  cursor:pointer;
  box-shadow:0 6px 18px rgba(16,24,40,0.12);
  transition:transform .2s ease, opacity .2s ease;
  transform-style: preserve-3d;
  backface-visibility: hidden;
  display:flex;
  align-items:center;
  justify-content:center;
}
.grid-btn:hover:not(:disabled){
  transform:translateY(-1px);
}
.grid-btn:disabled{
  cursor:not-allowed;
  opacity:.55;
}

/* Small responsive tweaks */
@media (max-width:720px){
  :root{--cell-size:44px}
}

@media (max-width:420px){
  :root{--cell-size:38px}
}
