/* 耗时遮罩：原生 modal dialog，盖住包括已打开对话框在内的整页。 */
dialog.busy-overlay{position:fixed;inset:0;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:hidden;color:var(--text,#e0e7e8);cursor:progress}
dialog.busy-overlay:not([open]){display:none}
dialog.busy-overlay[open]{display:flex;align-items:center;justify-content:center}
dialog.busy-overlay::backdrop{background:#070d10c4;backdrop-filter:blur(3px)}
.busy-card{display:flex;flex-direction:column;align-items:center;gap:12px;min-width:260px;max-width:min(420px,86vw);padding:30px 38px 26px;background:#162024f2;border:1px solid #35505a;border-radius:16px;box-shadow:0 24px 80px #000000b3;text-align:center}
.busy-spinner{position:relative;width:48px;height:48px;margin-bottom:2px}
.busy-spinner i{position:absolute;inset:0;border:3px solid transparent;border-top-color:var(--accent,#76d6c1);border-radius:50%;animation:busy-spin 1s linear infinite}
.busy-spinner i:nth-child(2){inset:7px;border-top-color:#5fb8ff;animation-duration:1.45s;animation-direction:reverse;opacity:.85}
.busy-spinner i:nth-child(3){inset:14px;border-top-color:#b48cf5;animation-duration:1.9s;opacity:.7}
.busy-label{margin:0;font-size:calc(14px * var(--ui-density, 1));font-weight:600;color:#e6f1f0;letter-spacing:.02em}
.busy-detail{margin:0;font-size:calc(11px * var(--ui-density, 1));line-height:1.7;color:#8fa6a8}
body.busy-active{cursor:progress}
@keyframes busy-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){
 .busy-spinner i{animation-duration:3.2s;animation-timing-function:steps(8,end)}
}
