/*
 * Network Graphics System - Pulse Line component styles.
 *
 * Deliberately minimal, like Stream/DNA Helix: dot count and position
 * depend on the measured container, so there is no fixed geometry to
 * declare here - pulse-line.js writes cx/cy/r once per dot at build/resize
 * time (SVG attributes) and never touches them again. Everything that
 * moves - each dot's own flare opacity/scale/glow - runs entirely through
 * the Web Animations API in pulse-line.js. No `<line>` connects the dots -
 * the "line" is just the dots' own shared alignment - so this file owns
 * colour and the one static resting opacity (dot) only.
 */

.network-pulse-line {
  display: block;
  width: 100%;
  height: 100%;
}

/* 0.45 - resting brightness, deliberately understated so the line stays
   quiet until the pulse actually reaches a dot; must match BASE_OPACITY in
   pulse-line.js, the floor its flare animation returns to between passes.
   Also the whole picture in `static` mode, where no animation ever runs.
   No transform-box declared here on purpose - pulse-line.js writes each
   dot's own `transform-origin` inline as an explicit `cx cy` pixel pair,
   read against the default `transform-box: view-box` (see file docstring
   in pulse-line.js for why fill-box was dropped). */
.pulse-line-dot {
  fill: rgba(var(--network-point-rgb), 1);
  opacity: 0.45;
}

/* Fixed accent: resting opacity never changes, unlike interior dots - but
   still gets its own subtler scale/glow flare synced to the sweep reaching
   this end, via WAAPI in pulse-line.js. */
.pulse-line-dot--endpoint {
  opacity: 1;
}
