/* The game has a fixed viewport, without an oversized scrollable canvas layer. */
body.game-page{overflow:hidden;overscroll-behavior:none;background:#fff}
.game-page>.site-header,.game-page>.site-footer,.game-page>.mobile-nav{display:none}
.game-workspace{position:fixed;inset:0;width:100%;height:var(--game-height,100vh);height:var(--game-height,100dvh);display:flex;flex-direction:column;overflow:hidden;background:#fff;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}
.game-header{display:flex;align-items:center;gap:12px;flex-shrink:0;min-height:58px;padding:6px 20px;border-bottom:1px solid var(--line)}
.game-header h1{font-size:17px;letter-spacing:0;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.game-back{display:flex;align-items:center;min-height:44px;min-width:52px;color:var(--rose);font-size:13px;white-space:nowrap}
.game-workspace .tool-button{min-width:44px;min-height:44px;padding:8px 12px;font-size:12px;border-radius:8px;touch-action:manipulation;white-space:nowrap}
.game-board{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.game-board .play-toolbar{padding:6px 20px;gap:12px;flex-shrink:0}
.game-board .game-progress{height:3px;min-height:3px;border-radius:0;margin:0;flex-shrink:0}
.game-board .canvas-viewport{flex:1;min-height:0;height:auto;max-height:none;width:100%;border:0;border-radius:0;overflow:hidden;overscroll-behavior:none;touch-action:none;background:#faf8f5}
.game-board #bead-canvas{position:absolute;inset:0;width:100%;height:100%;max-width:none;display:block;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.game-board .game-tools{position:absolute;top:12px;left:16px;z-index:2;display:flex;flex-wrap:nowrap;gap:4px;margin:0;padding:4px;background:#fffffff2;border:1px solid #e8dfd6;border-radius:12px;box-shadow:0 3px 16px #4b3d2912;touch-action:manipulation}
.game-board .game-tools .tool-button{background:transparent}
.game-board .game-tools .tool-button.active{background:var(--rose-pale);color:var(--rose)}
.game-board .zoom-control{position:absolute;right:16px;bottom:14px;z-index:2;display:flex;gap:2px;width:auto;margin:0;padding:4px;border:1px solid #e8dfd6;border-radius:12px;background:#fffffff2;box-shadow:0 3px 16px #4b3d2912;touch-action:manipulation}
.game-board .zoom-control output{width:46px;font-size:12px;text-align:center;font-variant-numeric:tabular-nums;color:var(--ink)}
.game-board .zoom-control .tool-button{background:transparent;font-size:18px;padding:6px 10px}
.game-board .zoom-control #fit-tool{font-size:12px;border-left:1px solid var(--line);border-radius:0 7px 7px 0}
.game-color-dock{flex-shrink:0;background:#fff;border-top:1px solid var(--line);padding:7px 20px 8px}
.game-color-dock .game-instruction{margin:0 0 5px;font-size:11px;line-height:1.5}
.game-color-dock .game-palette{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;gap:8px;padding:2px 0 3px;scrollbar-width:thin;touch-action:pan-x}
.game-color-dock .palette-button{flex:0 0 auto;min-height:48px;min-width:90px;touch-action:manipulation}
.game-color-dock .palette-button.active{box-shadow:inset 0 0 0 1px var(--rose)}
.game-board .game-bottom{flex-shrink:0;flex-wrap:nowrap;gap:8px;margin:0;padding:5px 20px 7px;border-top:1px solid #f3eeea}
.game-board .game-bottom>span{width:auto;flex:1;min-width:0;font-size:10px;line-height:1.4;margin:0}
.game-board .game-bottom .button{min-height:44px;font-size:12px;padding:8px 16px;transform:none;touch-action:manipulation}
.game-board .game-result{position:absolute;z-index:3;left:50%;top:80px;transform:translateX(-50%);width:max-content;max-width:calc(100% - 32px);max-height:40%;overflow:auto;padding:14px 18px;margin:0;box-shadow:0 4px 20px #2b362020;animation:none;pointer-events:none}
.game-board .canvas-loading{z-index:3;top:45%;padding:16px;background:#faf8f5}
.game-dialog{position:fixed;inset:0;z-index:10;border:1px solid var(--line);border-radius:16px;padding:20px;max-width:min(440px,calc(100vw - 28px));width:100%;max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px);overflow:auto;color:var(--ink);background:#fff;box-shadow:0 12px 80px #37212935}
.game-dialog:not([open]){display:none}
.game-dialog::backdrop{background:#302b2b66}
.game-dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.game-dialog h2{font-size:20px}
.game-dialog>img{width:auto;max-width:100%;max-height:55dvh;object-fit:contain;margin:0 auto}
.game-dialog>p{font-size:13px;margin:12px 0;color:var(--muted)}
.game-dialog>.button,.game-dialog>.text-button{display:flex;min-height:44px;margin-top:12px;align-items:center;justify-content:center}
.game-page>.toast{z-index:20;bottom:160px}
@media(max-width:600px){
  .game-header{gap:6px;padding:4px 10px;min-height:52px}
  .game-header h1{font-size:14px}
  .game-header .tool-button{padding:8px;font-size:11px}
  .game-board .play-toolbar{padding:5px 12px;font-size:10px;gap:8px}
  .game-board .game-tools{top:10px;left:10px}
  .game-board .zoom-control{right:10px;bottom:10px}
  .game-color-dock{padding:6px 12px}
  .game-board .game-bottom{padding:4px 12px 6px}
  .game-board .game-bottom .button{padding:8px 12px;font-size:11px}
}
@media(max-height:500px) and (orientation:landscape){
  .game-header{min-height:44px;padding-top:0;padding-bottom:0}
  .game-board{display:grid;grid-template-columns:minmax(0,1fr) 145px;grid-template-rows:auto 3px minmax(0,1fr) 44px}
  .game-board .play-toolbar{grid-column:1/-1;padding-top:2px;padding-bottom:2px}
  .game-board .game-progress{grid-column:1/-1}
  .game-board .canvas-viewport{grid-column:1;grid-row:3}
  .game-color-dock{grid-column:2;grid-row:3/5;min-height:0;padding:8px;border-top:0;border-left:1px solid var(--line);display:flex;overflow:hidden}
  .game-color-dock .game-palette{flex:1;flex-direction:column;overflow-y:auto;overflow-x:hidden;touch-action:pan-y}
  .game-color-dock .game-instruction{display:none}
  .game-color-dock .palette-button{min-height:44px;padding:4px 7px}
  .game-board .game-tools{top:4px}
  .game-board .game-bottom{grid-column:1;grid-row:4;padding-top:0;padding-bottom:0}
  .game-board .zoom-control{bottom:6px}
}
