/* 暖光只装饰背景；文字亮片由封面自己的装饰层处理。 */
.home-body,
.login-body {
  position: relative;
  isolation: isolate;
}

.ambient-glow-field {
  position: fixed;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
  user-select: none;
  contain: strict;
}

.ambient-glow-orb {
  position: absolute;
  left: var(--glow-x);
  top: var(--glow-y);
  width: clamp(280px, var(--glow-size), 560px);
  aspect-ratio: 1;
  transform: translate(-50%, -50%);
  animation: ambient-glow-drift var(--glow-drift) ease-in-out var(--glow-offset) infinite alternate;
}

.ambient-glow-orb::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: radial-gradient(ellipse at center,
    rgb(var(--glow-rgb) / .60) 0%,
    rgb(var(--glow-rgb) / .42) 23%,
    rgb(var(--glow-rgb) / .19) 44%,
    rgb(var(--glow-rgb) / .055) 61%,
    rgb(var(--glow-rgb) / 0) 73%);
  opacity: .56;
  animation: ambient-glow-breathe var(--glow-breathe) ease-in-out var(--glow-offset) infinite alternate;
}

/* 桌面端单程约 275–355px；小视口通过 clamp 缩小路径，八团错向运动。 */
@keyframes ambient-glow-drift {
  from {
    transform: translate(calc(-50% - var(--glow-dx)), calc(-50% - var(--glow-dy))) scale(.78);
  }
  to {
    transform: translate(calc(-50% + var(--glow-dx)), calc(-50% + var(--glow-dy))) scale(1.20);
  }
}

@keyframes ambient-glow-breathe {
  from { opacity: .30; }
  to { opacity: .95; }
}

.ambient-glow-field[data-paused="true"] .ambient-glow-orb,
.ambient-glow-field[data-paused="true"] .ambient-glow-orb::before {
  animation-play-state: paused;
}

@media (prefers-reduced-motion: reduce) {
  .ambient-glow-orb,
  .ambient-glow-orb::before {
    animation: none;
  }
  .ambient-glow-orb { transform: translate(-50%, -50%); }
  .ambient-glow-orb::before { opacity: .62; }
}
