.puzzle-wrap{margin:0 0 15px;user-select:none;-webkit-user-select:none}
.puzzle-panel{position:relative;width:100%;max-width:300px;margin:0 auto 10px;border-radius:4px;overflow:hidden;background:#f2f2f2;border:1px solid #e6e6e6}
.puzzle-panel img.puzzle-bg{display:block;width:100%;height:auto;vertical-align:top}
.puzzle-piece{position:absolute;left:0;top:0;width:42px;height:42px;cursor:grab;box-shadow:0 0 4px rgba(0,0,0,.35);border:1px solid #fff;box-sizing:border-box;z-index:2}
.puzzle-piece:active{cursor:grabbing}
.puzzle-bar{position:relative;height:40px;border:1px solid #e6e6e6;border-radius:4px;background:#f7f7f7;overflow:hidden}
.puzzle-bar-text{position:absolute;left:0;right:0;top:0;bottom:0;line-height:40px;text-align:center;color:#888;font-size:13px;pointer-events:none}
.puzzle-bar-fill{position:absolute;left:0;top:0;bottom:0;width:0;background:#d8f3e0}
.puzzle-slider{position:absolute;left:0;top:0;width:40px;height:40px;background:#fff;border-right:1px solid #e6e6e6;cursor:grab;text-align:center;line-height:40px;color:#1E9FFF;font-size:18px;z-index:3;box-sizing:border-box}
.puzzle-slider:active{cursor:grabbing}
.puzzle-ok .puzzle-bar{border-color:#5FB878}
.puzzle-ok .puzzle-bar-fill{background:#5FB878;width:100%!important}
.puzzle-ok .puzzle-slider{background:#5FB878;color:#fff;border-color:#5FB878}
.puzzle-ok .puzzle-bar-text{color:#fff}
.puzzle-refresh{float:right;margin-top:6px;font-size:12px;color:#1E9FFF;cursor:pointer}
.puzzle-tip{font-size:12px;color:#999;margin-top:6px}
.msg-puzzle-mask{display:none;position:fixed;inset:0;z-index:99999;background:rgba(0,0,0,.45);align-items:center;justify-content:center}
.msg-puzzle-mask.is-open{display:flex}
.msg-puzzle-dialog{width:92%;max-width:360px;background:#fff;border-radius:8px;padding:16px 16px 12px;box-shadow:0 8px 28px rgba(0,0,0,.2);box-sizing:border-box}
.msg-puzzle-dialog h3{margin:0 0 12px;font-size:16px;color:#333;font-weight:600}
.msg-puzzle-close{float:right;border:0;background:transparent;font-size:20px;line-height:1;cursor:pointer;color:#999;padding:0 4px}
.msg-puzzle-close:hover{color:#333}
