/* Paired decorative circles share one slow motion and a shared visibility gate. */
.home-intro .hero-orb,
img.motion-orbit {
  animation: ambient-orb-bloom 18s ease-in-out 0s infinite both;
  animation-play-state: paused;
  will-change: auto;
}
.home-intro .hero-orb.motion-orbit-active,
img.motion-orbit.motion-orbit-active {
  animation-play-state: running;
  will-change: translate, scale;
}

.about-hero::before,
.guidance-hero::before,
.risks-page .risk-hero::before,
.recruit-page .rec-hero::before,
.news-hero__inner::before,
.contact-hero__inner::before {
  animation: ambient-cloud-bloom 28s ease-in-out 0s infinite both;
  will-change: translate, scale;
}

/* The deformation occupies the whole cycle instead of making a quick pulse. */
@keyframes ambient-orb-bloom {
  0%,100% { translate: 0 0; scale: 1 1; }
  16% { translate: -4px 5px; scale: .93 .965; }
  32% { translate: 4px 8px; scale: 1.04 .92; }
  48% { translate: 8px -3px; scale: .965 1.085; }
  66% { translate: 3px -9px; scale: 1.07 1.035; }
  84% { translate: -3px -2px; scale: 1.015 .985; }
}
@keyframes ambient-cloud-bloom {
  0%,100% { translate: 0 0; scale: 1 1; }
  21% { translate: -.6% .5%; scale: .95 .965; }
  39% { translate: .5% 1%; scale: 1.045 .955; }
  57% { translate: 1.1% -.4%; scale: .975 1.055; }
  74% { translate: .3% -.9%; scale: 1.07 1.035; }
  88% { translate: -.5% -.3%; scale: 1.012 .99; }
}

/* motion.js adds this state for hidden documents and the body's fixed menu lock. */
.section-motion-paused .home-intro .hero-orb,
.section-motion-paused img.motion-orbit,
.section-motion-paused .about-hero::before,
.section-motion-paused .guidance-hero::before,
.section-motion-paused .risks-page .risk-hero::before,
.section-motion-paused .recruit-page .rec-hero::before,
.section-motion-paused .news-hero__inner::before,
.section-motion-paused .contact-hero__inner::before {
  animation-play-state: paused;
}
@media (prefers-reduced-motion: reduce) {
  .home-intro .hero-orb,
  img.motion-orbit,
  .about-hero::before,
  .guidance-hero::before,
  .risks-page .risk-hero::before,
  .recruit-page .rec-hero::before,
  .news-hero__inner::before,
  .contact-hero__inner::before {
    animation: none !important;
    translate: none !important;
    scale: none !important;
    will-change: auto !important;
  }
}
