/* 登录滑动解锁组件 */
.login-slider {
  --ls-primary: #00499e;
  --ls-active: #2f7cf6;
  --ls-track-bg: #f4f7fb;
  --ls-track-border: #dfe6f0;
  width: 100%;
  margin: 0;
  user-select: none;
  -webkit-user-select: none;
}
.login-slider .ls-track {
  position: relative;
  height: 42px;
  border: 1px solid var(--ls-track-border);
  border-radius: 8px;
  background: var(--ls-track-bg);
  overflow: hidden;
  touch-action: none;
  cursor: default;
}
.login-slider .ls-fill {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 0;
  background: #eaf3ff;
}
.login-slider .ls-label {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 52px;
  font-size: 13px;
  color: #5a6a85;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  pointer-events: none;
}
.login-slider .ls-handle {
  position: absolute;
  left: 2px;
  top: 2px;
  width: 40px;
  height: 36px;
  border: 1px solid #cfe0f5;
  border-radius: 6px;
  background: #fff;
  box-shadow: 0 1px 3px rgba(0, 73, 158, .12);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ls-primary);
  cursor: grab;
  touch-action: none;
  transition: background .15s, border-color .15s, color .15s;
}
.login-slider .ls-handle:active { cursor: grabbing; }
.login-slider[data-state="passed"] .ls-fill { background: #e8f6ee; }
.login-slider[data-state="passed"] .ls-handle {
  background: #e8f6ee;
  border-color: #bfe6cf;
  color: #1d9e75;
  cursor: default;
}
.login-slider[data-state="passed"] .ls-label { color: #1d9e75; font-weight: 500; }
.login-slider[data-state="checking"] .ls-label { color: var(--ls-primary); }
.login-slider[data-state="error"] .ls-label { color: #d9534f; }
.login-slider .ls-track:focus { outline: none; }
.login-slider:focus-within .ls-track {
  border-color: #9cc3ef;
  box-shadow: 0 0 0 3px rgba(47, 124, 246, .12);
}
.login-slider.ls-shake .ls-track { animation: ls-shake .4s; }
@keyframes ls-shake {
  0%, 100% { transform: translateX(0); }
  20% { transform: translateX(-5px); }
  40% { transform: translateX(4px); }
  60% { transform: translateX(-3px); }
  80% { transform: translateX(2px); }
}
