/* auth-extras — 登录/注册/找回三页共用的按钮 loading 态与密码可见性切换 */

/* Busy button: spinner appended after the label; pointer-events off = debounce by CSS too */
.btn-loading { pointer-events: none; opacity: .8; }
.btn-loading::after {
  content: "";
  display: inline-block;
  width: 13px; height: 13px;
  margin-left: 8px;
  vertical-align: -2px;
  border: 2px solid rgba(0, 0, 0, .18);
  border-top-color: currentColor;
  border-radius: 50%;
  animation: zt-auth-spin .7s linear infinite;
}
@keyframes zt-auth-spin { to { transform: rotate(360deg); } }

/* Password field with hold-to-reveal eye */
.pwd-wrap { position: relative; }
.pwd-wrap .zt-input { padding-right: 42px; }
.pwd-eye {
  position: absolute;
  right: 8px; top: 50%;
  transform: translateY(-50%);
  border: 0; background: none;
  padding: 5px;
  display: inline-flex;
  cursor: pointer;
  color: var(--zt-ink-muted);
  touch-action: none; /* 按住期间不触发滚动，触屏长按体验稳定 */
}
.pwd-eye:hover { color: var(--zt-ink-soft); }
.pwd-eye:active { color: var(--zt-emerald); }
.pwd-eye svg { width: 18px; height: 18px; }
