A two-phase recursive Markdown parser: block-level tokenization followed by inline parsing. Nested constructs (lists inside lists, block quotes containing lists/headers, tables with inline formatting) are handled naturally through recursion instead of the previous flat, document-wide regular expression replacement pipeline.