.slider-captcha { width: 300px; background: #fff; border-radius: 8px; box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1); padding: 16px; user-select: none; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; } .slider-captcha-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; } .slider-captcha-title { font-size: 14px; font-weight: 500; color: #333; } .slider-captcha-refresh { background: none; border: none; cursor: pointer; padding: 4px; color: #666; transition: color 0.2s; display: flex; align-items: center; justify-content: center; border-radius: 4px; } .slider-captcha-refresh:hover { color: #1890ff; background: #f0f5ff; } .slider-captcha-refresh:active { transform: rotate(180deg); } .slider-captcha-body { margin-bottom: 12px; } .slider-captcha-image-container { position: relative; width: 100%; height: 150px; border-radius: 4px; overflow: hidden; background: #f5f5f5; } .slider-captcha-canvas { width: 100%; height: 100%; display: block; } .slider-captcha-slider-piece { position: absolute; width: 60px; height: 60px; top: 0; left: 0; background-size: cover; background-repeat: no-repeat; box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); transition: none; pointer-events: none; } .slider-captcha-loading { position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; background: rgba(255, 255, 255, 0.9); color: #666; font-size: 12px; gap: 8px; } .slider-captcha-loading.hidden { display: none; } .slider-captcha-spinner { width: 24px; height: 24px; border: 3px solid #f3f3f3; border-top: 3px solid #1890ff; border-radius: 50%; animation: slider-captcha-spin 1s linear infinite; } @keyframes slider-captcha-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .slider-captcha-track-container { position: relative; width: 100%; height: 40px; margin-bottom: 8px; } .slider-captcha-track { position: absolute; top: 50%; left: 0; width: 100%; height: 36px; transform: translateY(-50%); background: #e8e8e8; border-radius: 18px; overflow: hidden; } .slider-captcha-track-text { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 13px; color: #999; white-space: nowrap; z-index: 2; pointer-events: none; } .slider-captcha-track-fill { position: absolute; top: 0; left: 0; height: 100%; width: 0; background: linear-gradient(90deg, #52c41a, #73d13d); border-radius: 18px; transition: none; } .slider-captcha-slider-btn { position: absolute; top: 50%; left: 0; transform: translateY(-50%); width: 40px; height: 40px; background: #fff; border-radius: 50%; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); cursor: pointer; display: flex; align-items: center; justify-content: center; color: #666; transition: none; z-index: 3; } .slider-captcha-slider-btn:hover { color: #1890ff; box-shadow: 0 2px 12px rgba(24, 144, 255, 0.3); } .slider-captcha-slider-btn:active { cursor: grabbing; box-shadow: 0 4px 16px rgba(24, 144, 255, 0.4); } .slider-captcha-slider-btn.dragging { cursor: grabbing; color: #1890ff; box-shadow: 0 4px 16px rgba(24, 144, 255, 0.4); } .slider-captcha-slider-btn.success { color: #52c41a; background: #f6ffed; border-color: #b7eb8f; } .slider-captcha-slider-btn.fail { color: #ff4d4f; background: #fff2f0; border-color: #ffccc7; } .slider-captcha-footer { min-height: 20px; } .slider-captcha-status { font-size: 12px; text-align: center; transition: all 0.3s; } .slider-captcha-status.success { color: #52c41a; } .slider-captcha-status.fail { color: #ff4d4f; } .slider-captcha-status.hidden { display: none; } .slider-captcha.dragging { cursor: grabbing; } .slider-captcha.verified .slider-captcha-track-container { pointer-events: none; opacity: 0.6; } .slider-captcha.verified .slider-captcha-slider-btn { cursor: default; }