/* 验证码组件（字符 + 拼图），供后台登录与插件前台共用 */
.captcha-widget { max-width: 320px; }

.captcha-puzzle-box { position: relative; width: 300px; max-width: 100%; height: 150px; margin: 0 auto; }
.captcha-puzzle-box > img { display: block; width: 100%; height: 100%; border-radius: 6px; cursor: pointer; user-select: none; }

.puzzle-piece { position: absolute; top: 51px; left: 230px; width: 40px; height: 48px; pointer-events: none; transition: none; }
.puzzle-piece .puzzle-knob {
    position: absolute; top: 0; left: 12px; width: 16px; height: 16px;
    background: rgba(230, 235, 245, 0.88);
    border: 2px solid rgba(255, 255, 255, 0.95);
    border-bottom: none;
    border-radius: 50% 50% 0 0;
    box-sizing: border-box;
}
.puzzle-piece .puzzle-body {
    position: absolute; top: 8px; left: 0; width: 40px; height: 40px;
    background: rgba(230, 235, 245, 0.88);
    border: 2px solid rgba(255, 255, 255, 0.95);
    border-radius: 4px;
    box-sizing: border-box;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.35);
}

.puzzle-hint { min-height: 18px; margin: 6px 0 0; font-size: 13px; font-weight: 500; }
.puzzle-hint.text-success { color: #198754; }
