/* 页面载入过渡：遮罩以 backdrop-filter 模糊旧页面（不改变固定页眉/底栏定位），屏幕中央转圈；
   延迟 120ms 出现，快速载入不闪烁。 */
.page-loader { position: fixed; inset: 0; z-index: 90; display: grid; place-items: center;
  background: rgb(0 0 0 / .18); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .2s ease, visibility 0s linear .2s; }
body.page-transitioning .page-loader { opacity: 1; visibility: visible; pointer-events: auto;
  transition: opacity .2s ease .12s, visibility 0s linear .12s; }
.page-loader-spinner { width: 44px; height: 44px; border-radius: 50%; border: 3px solid rgb(255 255 255 / .14);
  border-top-color: var(--accent, #dfb980); animation: page-loader-spin .8s linear infinite; }
body.page-transition-immediate .page-loader { transition: none; }
@keyframes page-loader-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .page-loader, body.page-transitioning .page-loader { transition: none; }
  .page-loader-spinner { animation-duration: 2.4s; }
}
