/* Refined diagram motion; a new URL preserves the prior immutable release. */
.ph-system-motion .ph-source-sheet {
  animation: ph-sheet-float 5.8s ease-in-out infinite;
}
.ph-system-motion .ph-source-paper {
  animation: ph-paper-float 7.2s ease-in-out infinite;
  animation-delay: -2.1s;
}
.ph-system-motion .ph-gear {
  animation: ph-gear-spin 14s linear infinite;
  transform-origin: 0 0;
}
@keyframes ph-sheet-float {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-4px); }
}
@keyframes ph-paper-float {
  0%,100% { transform: translateY(-1px); }
  50% { transform: translateY(3px); }
}
@media (prefers-reduced-motion: reduce) {
  .ph-system-motion :is(.ph-source-sheet, .ph-source-paper, .ph-gear) {
    animation: none !important;
  }
}
