/* 模态提交对话框交互（docs/modal-submit-interaction-standard.md）
   接入方式：页面加一行 <link rel="stylesheet" href="/assets/modal-busy.css">，
   宿主容器（遮罩挂载点，通常 .modal-body）由 JS 运行时加 .form-busy-host。

   遮罩刻意保持 absolute inset:0 而不是 sticky/fixed：它的包含块是宿主的 padding box，
   宿主不是滚动容器时那就是整份内容高度（盖满），宿主自己就是滚动容器时，JS 会补一条
   scrollHeight 的高度（见 modal-busy.js 挂载遮罩处）——两种结构下都盖满整份可滚动内容，
   且不会去改「谁在滚」，滚动容器由 JS 挑真实可滚的那个并锁住。 */

.form-busy-host { position: relative; }

.form-busy-overlay {
  position: absolute;
  inset: 0;
  z-index: 5;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding-top: 88px;
  background: rgba(255, 255, 255, 0.62);
  border-radius: inherit;
}

.form-busy-spinner {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  border: 3px solid var(--primary-soft, rgba(37, 99, 235, 0.25));
  border-top-color: var(--primary, #2563eb);
  animation: form-busy-spin 0.8s linear infinite;
}

@keyframes form-busy-spin { to { transform: rotate(360deg); } }
