pub fn parse_range(range: &str) -> Option<((usize, usize), (usize, usize))>
Parse a range like “A1:F10” into ((start_row, start_col), (end_row, end_col)) using 1-based indexing.