/* R319: every whole-screen wait has one viewport anchor. Inline button and
   pagination feedback stays in its own reserved space. */
#hgGlobalLoadingR319 {
  position: fixed !important;
  top: 50% !important;
  left: 50% !important;
  transform: translate(-50%, -50%) !important;
  width: 64px;
  height: 64px;
  margin: 0 !important;
  padding: 0 !important;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none !important;
  z-index: 2147483647;
  border: 0;
  background: transparent;
  box-shadow: none;
}
#hgGlobalLoadingR319[hidden] { display: none !important; }
.hg-loading-label-r319 {
  position: absolute !important;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
.hg-loading-dots-r319 {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 46px;
  height: 10px;
  line-height: 0;
}
.hg-loading-dots-r319 > span {
  flex: 0 0 10px;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #ffe46e;
  box-shadow: 0 0 8px #ffd70080;
  animation: hgLoadingPulseR319 1.35s ease-in-out infinite;
}
.hg-loading-dots-r319 > span:nth-child(1) { animation-delay: -.3s; }
.hg-loading-dots-r319 > span:nth-child(2) { animation-delay: -.15s; }
@keyframes hgLoadingPulseR319 {
  0%,70%,100% { opacity:.35; transform:scale(.8); }
  35% { opacity:1; transform:scale(1); }
}
/* Legacy shell callers use the identical position, even before their shared
   route token begins. The first cold-open cross and its own dots are retained. */
#loadingSpinner {
  position: fixed !important;
  top: 50% !important;
  left: 50% !important;
  transform: translate(-50%, -50%) !important;
  width: 64px !important;
  height: 64px !important;
  margin: 0 !important;
  padding: 0 !important;
}
#loadingSpinner > .hg-loading-dots-r139 {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  --hg-loading-dot-size: 10px;
}
html.hg-first-load-finished-r310 #hgFrontDoorScreenR29[data-mode="loading"] .hg-front-door-card-r29,
#hgSurfaceScreenR178[data-mode="loading"] .hg-front-door-card-r29 {
  position: static !important;
  transform: none !important;
  overflow: visible !important;
}
html.hg-first-load-finished-r310 #hgFrontDoorScreenR29[data-mode="loading"] .hg-loading-dots-r139,
#hgSurfaceScreenR178[data-mode="loading"] .hg-loading-dots-r139 {
  position: fixed !important;
  top: 50% !important; left: 50% !important;
  transform: translate(-50%, -50%) !important;
  --hg-loading-dot-size: 10px;
}
html.hg-loading-active-r319 #loadingSpinner,
html.hg-loading-active-r319 .hg-video-loading > .hg-loading-dots-r139,
html.hg-loading-active-r319.hg-first-load-finished-r310 #hgFrontDoorScreenR29[data-mode="loading"] .hg-loading-dots-r139,
html.hg-loading-active-r319 #hgSurfaceScreenR178[data-mode="loading"] .hg-loading-dots-r139 { visibility: hidden !important; }
html.hg-front-door-pending:not(.hg-first-load-finished-r310) #hgGlobalLoadingR319,
html.hg-front-door-lock:not(.hg-first-load-finished-r310) #hgGlobalLoadingR319 { display: none !important; }
@media (prefers-reduced-motion: reduce) {
  .hg-loading-dots-r319 > span { animation: none; opacity: 1; transform: none; }
}
