@media (max-width: 600px) {
  html, body, .scene { height: 100%; min-height: 0; overflow: hidden; }
  .topbar { height: 44px; padding: 3px 9px; }
  .layout { height: calc(100dvh - 44px); min-height: 0; display: flex; flex-direction: column; justify-content: flex-start; gap: 4px; padding: 3px 8px calc(4px + env(safe-area-inset-bottom)); overflow: hidden; }
  .table-wrap { width: min(calc(100vw - 20px), calc(100dvh - 225px)); flex: none; }
  .table-top, .table-bottom { padding: 1px 5px; font-size: 11px; min-height: 20px; }
  .board { border-width: 5px; box-shadow: 0 4px 9px #150c0baa, 0 0 0 2px #c79257; }
  .side { width: min(100%, 550px); max-width: none; min-height: 0; display: flex; flex-direction: column; gap: 4px; }
  .sign, .record, .rule-note, .settings-row { display: none; }
  .status-card { margin: 0; min-height: 0; gap: 1px; padding: 5px 8px; border-width: 2px; box-shadow: none; font-size: 12px; }
  .status-card > span:first-child { font-size: 10px; }
  .actions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 5px; margin: 0; }
  .actions button { min-height: 44px; padding: 5px; font-size: 12px; }
  .overlay { overflow-y: auto; align-items: start; }
  .menu-card, .result-card { margin: auto; max-height: calc(100dvh - 16px); overflow-y: auto; }
}
