paste-lines.js rebuilt the codebody with innerHTML but relied on the server-side '\n' delimiters disappearing between the per-line blocks. Under white-space: pre any whitespace-only text node that survives (cached HTML, template drift) renders as a phantom row and drifts the gutter numbers off their lines. splitLines() now strips whitespace-only text nodes after rebuilding, keeping renumber() geometry intact.