/* Shared by every animated picture (landing hero, source-tour diagram): Pause/Stop controls and
   the paused state. Each picture's own keyframes live with it; motion.js drives the classes. */
.motion.paused *, .motion.paused *::before, .motion.paused *::after, .motion.paused::before, .motion.paused::after,
.motion.auto-paused *, .motion.auto-paused *::before, .motion.auto-paused *::after, .motion.auto-paused::before,
.motion.auto-paused::after { animation-play-state: paused !important; }

/* Controls: small, out of the layout flow (no shift); each picture positions .anim-controls. */
.anim-controls { position: absolute; display: flex; gap: 6px; z-index: 3; }
.anim-controls[hidden] { display: none; }
.anim-btn { width: 30px; height: 30px; padding: 0; display: grid; place-items: center; border-radius: 8px; cursor: pointer;
  background: var(--panel); border: 1px solid var(--line-strong); color: var(--muted);
  transition: color var(--fast), border-color var(--fast); }
.anim-btn:hover { background: var(--panel); color: var(--text); border-color: var(--accent); }
.anim-btn:focus-visible { outline: 2px solid var(--link); outline-offset: 2px; }
.anim-btn:disabled { opacity: .45; cursor: default; }
.anim-btn svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.anim-btn .i-resume, .anim-btn .i-play { display: none; }
.motion.paused .anim-btn .i-pause, .motion.stopped .anim-btn .i-stop { display: none; }
.motion.paused .anim-btn .i-resume, .motion.stopped .anim-btn .i-play { display: block; }
.anim-btn .i-resume, .anim-btn .i-stop rect { fill: currentColor; }

/* The spark's colour, shared by both pictures. */
:root { --spark: #ffd36e; --spark-soft: rgba(255, 211, 110, .3); }
