pub fn line_col(source: &str, offset: usize) -> (usize, usize)
Converts a byte offset to a 1-based (line, column) pair for human-readable output. The column counts characters, not bytes, so it matches what most editors show.
(line, column)