/* Gameplay Excellence 6.3: opt-in, scoped card drag feedback.
   No game state, no global selectors and no permanent visual overrides. */
html[data-drag-play="on"] #app .hand .c.ok,
html[data-drag-play="on"] #app .hand .c.actionable {
  touch-action:none;
}
html[data-drag-play="on"] #app .hand .c.drag-armed {
  outline:2px solid var(--brass);
  outline-offset:0;
}
html[data-drag-play="on"] #app .hand .c.drag-moving,
html[data-drag-play="on"] #app .hand .c.drag-moving:hover {
  position:relative;
  z-index:99;
  transform:translate3d(var(--drag-x,0px),
    calc(var(--drag-y,0px) + var(--arc,0px) - 12px),0)
    rotate(var(--rot,0deg));
  outline:2px solid var(--brass);
  outline-offset:0;
  box-shadow:none;
  filter:none;
  transition:none;
  will-change:transform;
}
/* Premium Black's face-premium selector outranks the general gesture rule.
   Override ONLY actively dragged cards to avoid a blurred shadow and prevent
   its hover transform from fighting the pointer-controlled transform. */
:root[data-ui-theme="highend"][data-drag-play="on"] #app.premium-game .hand .c.face-premium.drag-moving,
:root[data-ui-theme="highend"][data-drag-play="on"] #app.premium-game .hand .c.face-premium.drag-moving:hover {
  transform:translate3d(var(--drag-x,0px),
    calc(var(--drag-y,0px) + var(--arc,0px) - 12px),0)
    rotate(var(--rot,0deg)) !important;
  box-shadow:none !important;
  filter:none !important;
  transition:none !important;
}
html[data-drag-play="on"] #app .tbl.drag-over {
  border-radius:14px;
  outline:2px solid var(--brass);
  outline-offset:-2px;
  box-shadow:none;
  filter:none;
}
@media (prefers-reduced-motion:reduce) {
  html[data-drag-play="on"] #app .hand .c.drag-armed,
  html[data-drag-play="on"] #app .hand .c.drag-moving {
    transition:none;
  }
}
/* Without cards the existing flex-wrapped table has zero intrinsic height.
   Make the opt-in drop target occupy the available game-table area. */
html[data-drag-play="on"] #app .mid .tbl {
  align-self:stretch;
  min-height:96px;
}
