/* 复用瑶光营销系统 console/index.html 的 loader2：52px 画布、5px 圆点、24px 扇叶、1.35s 周期。
   按 em 等比缩放，让首屏、组件及 Element Plus 的所有加载图标共用同一动画。 */
:root { --tianshu-loading-color: #7763f1; }

.tianshu-loading,
.el-icon.el-icon.is-loading,
.el-loading-spinner.el-loading-spinner {
  position: relative;
  display: inline-block;
  flex: none;
  width: 1em;
  height: 1em;
  vertical-align: middle;
  background-image: radial-gradient(circle at 50% 0.5em, var(--tianshu-loading-color) 0 0.048077em, transparent 0.048077em);
  background-size: 100% 1em;
  background-repeat: no-repeat;
  animation: none;
}

.tianshu-loading::before,
.tianshu-loading::after,
.el-icon.el-icon.is-loading::before,
.el-icon.el-icon.is-loading::after,
.el-loading-spinner.el-loading-spinner::before,
.el-loading-spinner.el-loading-spinner::after {
  position: absolute;
  box-sizing: border-box;
  width: 0.461538em;
  height: 0.461538em;
  content: '';
  background: color-mix(in srgb, var(--tianshu-loading-color) 8%, transparent);
  animation: tianshu-loader2 1.35s linear infinite;
}

.tianshu-loading::before,
.el-icon.el-icon.is-loading::before,
.el-loading-spinner.el-loading-spinner::before {
  top: 0.028846em;
  left: calc(50% - 0.009615em);
  border-top: 0.038462em solid var(--tianshu-loading-color);
  border-right: 0.038462em solid var(--tianshu-loading-color);
  border-radius: 0 0.538462em 0 0;
  transform-origin: 0 100%;
}

.tianshu-loading::after,
.el-icon.el-icon.is-loading::after,
.el-loading-spinner.el-loading-spinner::after {
  top: 0.490385em;
  right: calc(50% - 0.009615em);
  border-bottom: 0.038462em solid var(--tianshu-loading-color);
  border-left: 0.038462em solid var(--tianshu-loading-color);
  border-radius: 0 0 0 0.538462em;
  transform-origin: 100% 0;
}

/* 仅替换图形，保留 Element Plus 的禁用、遮罩、文本和请求生命周期。 */
.el-icon.el-icon.is-loading > svg,
.el-loading-spinner.el-loading-spinner > svg { display: none; }

.el-loading-spinner.el-loading-spinner {
  position: absolute;
  top: 50%;
  left: 0;
  display: block;
  width: 100%;
  height: auto;
  min-height: 1em;
  margin: 0;
  padding-top: 1em;
  font-size: 52px;
  transform: translateY(-50%);
}
.el-loading-mask.is-fullscreen .el-loading-spinner { margin: 0; }

/* 有色按钮沿用文字的对比色，造型和转速保持一致。 */
.el-button { --tianshu-loading-color: currentColor; }

.app-bootstrap {
  position: fixed;
  inset: 0;
  display: grid;
  place-items: center;
  background: var(--tianshu-bg-page, #fff);
}
.app-bootstrap .tianshu-loading { font-size: 52px; }

@keyframes tianshu-loader2 { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .tianshu-loading::before,
  .tianshu-loading::after,
  .el-icon.el-icon.is-loading::before,
  .el-icon.el-icon.is-loading::after,
  .el-loading-spinner.el-loading-spinner::before,
  .el-loading-spinner.el-loading-spinner::after { animation: none; }
}
