 /* 遮罩 */
 .captcha-overlay {
     position: fixed;
     inset: 0;
     background: rgba(0, 0, 0, 0.4);
     z-index: 999;
 }

 /* 弹窗居中 */
 .captcha-modal {
     position: fixed;
     top: 50%;
     left: 50%;
     transform: translate(-50%, -50%);
     z-index: 1000;
 }

 .captcha-wrapper {
     width: 620px;
     background: #fff;
     padding: 16px;
     border-radius: 8px;
     box-shadow: 0 2px 12px rgba(0, 0, 0, .12);
     font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
 }

 /* ================= 标题 ================= */
 .captcha-title {
     text-align: center;
     margin-bottom: 12px;
     font-size: 14px;
     color: #333;
 }

 /* ================= 主体 ================= */
 .captcha-body {
     position: relative;
     width: 600px;
     height: 360px;
     margin: 0 auto;
     background: #f0f0f0;
     overflow: hidden;
     border-radius: 4px;
 }

 .bg-img {
     width: 100%;
     height: 100%;
     background-size: cover;
     background-position: center;
 }

 /* ================= 拼图块 ================= */
 .slider-puzzle {
     position: absolute;
     top: 0;
     left: 0;
     width: 110px;
     height: 360px;
     background-size: cover;
     /* box-shadow: 0 2px 6px rgba(0, 0, 0, .3); */
     /* border: 1px solid rgba(255, 255, 255, .6); */
     cursor: grab;
     z-index: 10;
 }

 .slider-puzzle:active {
     cursor: grabbing;
 }

 .slider-handle {
     position: absolute;
     bottom: -50px;
     left: 50%;
     transform: translateX(-50%);
     width: 48px;
     height: 48px;
     background: #4CAF50;
     border-radius: 6px;
     display: flex;
     align-items: center;
     justify-content: center;
     color: #fff;
     font-size: 20px;
 }

 /* ================= 遮罩 ================= */
 .mask {
     position: absolute;
     inset: 0;
     display: none;
     align-items: center;
     justify-content: center;
     font-size: 18px;
     font-weight: bold;
     background: rgba(255, 255, 255, .8);
     z-index: 20;
 }

 /* ================= 滑轨 ================= */
 .slider-track {
     margin-top: 60px;
 }

 .track {
     position: relative;
     width: 600px;
     height: 40px;
     margin: 0 auto;
     background: #eee;
     border-radius: 20px;
 }

 .track-fill {
     position: absolute;
     height: 4px;
     top: 50%;
     left: 0;
     transform: translateY(-50%);
     background: #4CAF50;
     border-radius: 2px;
     width: 0%;
 }

 .slider-btn {
     position: absolute;
     top: 50%;
     left: 0;
     transform: translate(-50%, -50%);
     width: 48px;
     height: 48px;
     background: #fff;
     border: 2px solid #4CAF50;
     border-radius: 50%;
     cursor: pointer;
     box-shadow: 0 2px 8px rgba(0, 0, 0, .2);
     display: flex;
     align-items: center;
     justify-content: center;
 }

 .status {
     margin-top: 12px;
     text-align: center;
     font-size: 13px;
     color: #666;
 }