/* UPG 全屏页面加载遮罩 */
.upg-page-loader{
  position:fixed;inset:0;z-index:99999;
  background:#fff;
  display:flex;align-items:center;justify-content:center;
  transition:opacity .42s ease,visibility .42s ease;
}
.upg-page-loader.is-hidden{
  opacity:0;visibility:hidden;pointer-events:none;
}
.upg-pl-inner{
  display:flex;flex-direction:column;align-items:center;gap:18px;
}
.upg-pl-logo{
  width:52px;height:52px;border-radius:12px;object-fit:contain;
  box-shadow:0 8px 28px rgba(63,129,255,.22);
  animation:upg-pl-pulse 1.25s ease-in-out infinite;
}
@keyframes upg-pl-pulse{
  0%,100%{transform:scale(1);opacity:1}
  50%{transform:scale(1.07);opacity:.88}
}
.upg-pl-dots{display:flex;gap:7px;align-items:center;justify-content:center;height:12px}
.upg-pl-dots span{
  width:7px;height:7px;border-radius:50%;background:#3f81ff;
  animation:upg-pl-dot 1.25s ease-in-out infinite;
}
.upg-pl-dots span:nth-child(2){animation-delay:.15s}
.upg-pl-dots span:nth-child(3){animation-delay:.3s}
@keyframes upg-pl-dot{
  0%,70%,100%{transform:translateY(0) scale(.65);opacity:.35}
  35%{transform:translateY(-6px) scale(1);opacity:1}
}
