/* 단추 손맛(2026-10-25 사용자 "버튼 polishing도 감칠맛나게"): 마우스를 올리면 1px 떠오르고, 누르면 2px 내려앉으며 3% 줄고 광택이 꺼진다.
   놓으면 0.18초 스프링으로 튀어 오른다. 둘레 배치는 바뀌지 않는다(translate·scale만). 색·모양은 qplay-buttons.css 그대로. */
body :where(button,[role="button"],.ch,.setrow,.clue,.stone,.oxzone,.cc.open):not(:disabled):not([aria-disabled="true"]):not(.lock) {
  transform-origin: center;
  transition: translate .18s cubic-bezier(.2,.9,.3,1.35), scale .18s cubic-bezier(.2,.9,.3,1.35), filter .1s ease, box-shadow .12s ease, transform .12s ease;
}
@media (hover: hover) and (pointer: fine) {
  body :where(button,[role="button"]):not(:disabled):not([aria-disabled="true"]):not(.lock):hover:not(:active, .qp-pressed) { translate: 0 -1px; }
}
body :is(button,[role="button"],.ch,.setrow,.clue,.stone,.oxzone,.cc.open):not(:disabled):not([aria-disabled="true"]):not(.lock):is(:active,.qp-pressed) {
  translate: 0 2px;
  scale: .97;
  filter: brightness(.92) saturate(1.08);
  transition-duration: .05s;
  /* 누르고 있는 동안은 2px 아래에 머물고, 놓을 때만 스프링. */
  transition-timing-function: cubic-bezier(.2,.8,.3,1);
}
/* These controls used a second transform in their earlier styles. */
body :is(.btn,.icb,.ch):not(:disabled):not(.lock):is(:active,.qp-pressed) { transform: none; }
/* O/X retains its positioning transform while the common scale presses it. */

body :is(.btn,.icb,.lgGoBtn,.lgPad button):not(:disabled):is(:active,.qp-pressed) {
  box-shadow: inset 0 2px 4px #062e5826, inset 0 1px 0 #ffffff8c, 0 1px 0 var(--candy-base, #174d79);
}
body :is(#fSk button,.stone,.cc.open):not(:disabled):is(:active,.qp-pressed) { translate: 0 1px; scale: .92; }
@media (prefers-reduced-motion: reduce) {
  body :where(button,[role="button"],.ch,.setrow,.clue,.stone,.oxzone,.cc.open) { transition: none !important; }
  body :where(button,[role="button"]):hover { translate: none !important; }
  body :is(button,[role="button"],.ch,.setrow,.clue,.stone,.oxzone,.cc.open):is(:active,.qp-pressed) { translate: none !important; scale: none !important; }
}
