.btn {
  --btn-bg-color: var(--bg-color);
  --btn-text-color: var(--text-primary-color);
  --btn-border-color: #dddddd;

  --btn-bg-hover-color: var(--bg-color);
  --btn-text-hover-color: var(--primary-color);
  --btn-border-hover-color: var(--primary-color);

  padding: 12px 20px;
  border: none;
  border-radius: 6px;
  font-size: 16px;
  cursor: pointer;
  white-space: nowrap;
  user-select: none;
  vertical-align: middle;
  outline: none;
  transition: all 0.1s;
  background-color: var(--btn-bg-color);
  color: var(--btn-text-color);
  border: 1px solid var(--btn-border-color);
  justify-content: center;
  align-items: center;
  display: inline-flex;
}
.btn:hover {
  background-color: var(--btn-bg-hover-color);
  color: var(--btn-text-hover-color);
  border-color: var(--btn-border-hover-color);
}

.btn--primary {
  --btn-bg-color: var(--primary-color);
  --btn-text-color: var(--text-white-color);
  --btn-border-color: var(--primary-color);

  --btn-bg-hover-color: var(--primary-color-light-3);
  --btn-text-hover-color: var(--text-white-color);
  --btn-border-hover-color: var(--primary-color-light-3);
}

.btn--block {
  width: 100%;
}

/* ----- 加载动画（旋转圆环） ----- */
@keyframes btn-spin {
  to {
    transform: rotate(360deg);
  }
}
.btn--disabled,
.btn--loading {
  /* 禁用点击，视觉上不可交互 */
  pointer-events: none;
  cursor: not-allowed;
  opacity: 0.5;
}

.btn--loading::before {
  content: "";
  display: inline-block;
  width: 12px;
  height: 12px;
  margin-right: 10px;
  border: 2.5px solid currentColor; /* 继承按钮文字颜色 */
  border-top-color: transparent; /* 只有上边透明，形成旋转缺口 */
  border-radius: 50%;
  animation: btn-spin 0.7s linear infinite;
  /* 确保伪元素垂直居中（与 inline-flex 配合） */
  vertical-align: middle;
  flex-shrink: 0; /* 防止被压缩 */
}
