The river's width is fish per kilometre; when more than one species is shown, each is a ring as thick as its share, nested from blue at the core outward in colour order. Particles are off by default; the slider adds drifting particles that move at the estimated travel speed (true speed unless you pick a faster setting). Speeds come from daily counts, so on short reaches a one-day lag reads as the whole reach in a day, which overstates the fastest ones. Loss is the daily rate at which fish vanish between dams: harvest, tributary turn-off, fallback and mortality lumped together until better data separates them. Everything is a model estimate built from daily dam counts, not observed fish positions.
The year is still being counted. Fish below Bonneville are placed from the days ahead, so the last week always looks emptier than it is.
A forecast year: nothing is counted yet. Every day is the preseason outlook spread over the typical run of the past ten years at each counting point, through the same river model, rebuilt each morning as the outlook moves. Pin a counting dam for the numbers behind it.