One text stream, three columns. Each column consumes text via layoutNextLine(), then passes its end cursor to the next column. The columns have different widths — and when you drag a divider, all three reflow instantly because it's pure arithmetic, no DOM measurement. CSS column-count can't give you draggable boundaries with instant text reflow.