/* Framework Section 03 — orbit signals only; does not change geometry. */
.framework-orbit-flow {
  /* reserved */
}
.framework-orbit-svg .zf-framework-orbit-flow {
  opacity: 0;
  pointer-events: none;
}
.framework-orbit-stage.zf-orbit-playing .zf-framework-orbit-flow {
  opacity: 1;
}
.framework-orbit-svg .zf-orbit-dot--gold {
  fill: #f2c66e;
  filter: drop-shadow(0 0 3.5px rgba(246, 190, 92, .95));
}
.framework-orbit-svg .zf-orbit-dot--blue {
  fill: #70c7ff;
  filter: drop-shadow(0 0 3px rgba(36, 160, 255, .9));
}
.framework-orbit-svg .zf-orbit-trail--gold { fill: #f2c66e; opacity: .42; }
.framework-orbit-svg .zf-orbit-trail--blue { fill: #70c7ff; opacity: .36; }

.framework-orbit-stage.zf-orbit-playing .framework-orbit-core::before {
  content: "";
  position: absolute;
  inset: -23px -38px;
  border-radius: 50%;
  background: radial-gradient(ellipse, rgba(226, 173, 78, .13) 0%, rgba(42, 144, 216, .055) 39%, transparent 74%);
  opacity: .4;
  pointer-events: none;
  z-index: -1;
  animation: zf-orbit-core-breathe 6.8s ease-in-out infinite alternate;
}
@keyframes zf-orbit-core-breathe {
  from { opacity: .25; }
  to { opacity: .78; }
}
@media (prefers-reduced-motion: reduce) {
  .framework-orbit-stage .zf-framework-orbit-flow,
  .framework-orbit-stage.zf-orbit-playing .framework-orbit-core::before {
    display: none !important;
    animation: none !important;
  }
}
