.review-lane spans the full timeline box height (top:0; bottom:0) to group each word with its note visually, but as a positioned element it painted after the unpositioned .review-roll SVG, so the lane's background covered the note bars for every other word. Give .review-roll position: relative so DOM order (lanes, then notes) governs paint order instead.