/* Puzzle CAPTCHA — reusable modal styles */
.captcha-overlay {
  position: fixed; inset: 0; z-index: 10000;
  background: rgba(0,0,0,0.45);
  display: flex; align-items: center; justify-content: center;
  opacity: 0; pointer-events: none; transition: opacity 0.25s;
}
.captcha-overlay.open { opacity: 1; pointer-events: auto; }
.captcha-modal {
  background: #fff; border-radius: 20px; padding: 28px 28px 20px;
  width: 336px; max-width: 94vw; box-shadow: 0 24px 64px rgba(0,0,0,0.2);
}
.captcha-title { font-size: 1.05rem; font-weight: 700; text-align: center; margin-bottom: 2px; }
.captcha-sub { font-size: 0.78rem; color: #9AA0A6; text-align: center; margin-bottom: 14px; }
.captcha-puzzle-wrap {
  position: relative; width: 280px; height: 160px; margin: 0 auto;
  border-radius: 10px; overflow: hidden; background: #F0F3F7;
}
.captcha-puzzle-wrap canvas { display: block; }
.captcha-hole, .captcha-piece {
  position: absolute; top: 55px; width: 50px; height: 50px;
  border-radius: 8px; pointer-events: none;
}
.captcha-hole { border: 2px dashed rgba(255,255,255,0.7); box-sizing: border-box; }
.captcha-piece {
  left: 0; overflow: hidden;
  box-shadow: 0 0 0 2px rgba(255,255,255,0.8), 0 4px 16px rgba(0,0,0,0.25);
}
.captcha-piece canvas { display: block; }
.captcha-track-wrap {
  position: relative; margin-top: 14px; width: 100%; height: 42px;
  background: #F0F3F7; border-radius: 21px; border: 1px solid #E8ECF1;
}
.captcha-track-label {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  font-size: 0.76rem; color: #9AA0A6; pointer-events: none; user-select: none;
}
.captcha-thumb {
  position: absolute; left: 0; top: -2px; z-index: 2;
  width: 52px; height: 46px; border-radius: 23px;
  background: linear-gradient(135deg, #1F4FAF, #3B82F6);
  cursor: grab; display: flex; align-items: center; justify-content: center;
  color: #fff; font-size: 1rem; font-weight: 700;
  box-shadow: 0 2px 10px rgba(31,79,175,0.35);
  transition: left 0.3s ease;
}
.captcha-thumb:active { cursor: grabbing; }
.captcha-thumb.dragging { transition: none; }
.captcha-thumb.done { background: #22C55E; cursor: default; box-shadow: 0 2px 10px rgba(34,197,94,0.35); }
