pub fn mask_code_blocks(text: &str) -> String
Mask fenced code blocks by replacing content with spaces (preserves line count and offsets). Handles unclosed code blocks safely — they mask to end of text.