/* Only playable checker faces capture touch gestures. The page and blank
   board areas retain normal scrolling; no document wide touch lock is used. */
#gameView #gameBoard .legal-source :is(.checker,.bar-checker) {
  pointer-events:auto; touch-action:none; cursor:grab;
  user-select:none; -webkit-user-select:none; -webkit-touch-callout:none;
}
#gameView #gameBoard.checker-dragging,
#gameView #gameBoard.checker-dragging * { cursor:grabbing; }
#gameView #gameBoard .checker-drag-origin { opacity:.18; }
#gameView #gameBoard .checker-drop-target {
  outline:2px solid #c8ff38; outline-offset:-2px;
  background-color:#baff221b; box-shadow:inset 0 0 24px #bcff2325;
}
.checker-drag-piece {
  position:fixed; top:0; left:0; z-index:12000; pointer-events:none;
  margin:0; padding:0; box-sizing:border-box; border:0; border-radius:50%;
  aspect-ratio:1; overflow:visible; background:none; will-change:transform;
  user-select:none; -webkit-user-select:none;
}
.checker-drag-piece > .checker-face {
  position:absolute; display:block; left:-8%; top:-8%; width:116%; height:116%;
  max-width:none; margin:0; padding:0; overflow:visible; pointer-events:none;
  filter:drop-shadow(0 8px 6px #0008);
}
.checker-drag-piece::after {
  content:""; position:absolute; inset:-3px; border:2px solid #d5ff95;
  border-radius:50%; pointer-events:none; background:transparent;
  box-shadow:0 0 10px #c8ff3880;
}
.checker-drag-piece[data-drop="legal"]::after {
  border-color:#e7ffae; box-shadow:0 0 0 3px #c8ff3825,0 0 14px #c8ff38aa;
}
.checker-input-status {
  position:absolute; width:1px; height:1px; margin:-1px; padding:0;
  overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0;
}
@media (prefers-reduced-motion:reduce) {
  .checker-drag-piece { will-change:auto; }
}
