feat(web): markdown RP semantic coloring + paragraph reflow (v0.20.6)
Markdown rework, pass 1 (operator-directed): - "quoted" dialogue → speech (bright --md-speech), *asterisk* → action/narration (muted-italic --md-action). Two tunable CSS vars that cascade through --fg-* so they auto-adapt to the light theme; plain text stays default narration. - speech-wrap runs BEFORE the em/link passes so a generated class="…"/href="…" quote can't be mis-read as dialogue; straight + smart quotes; apostrophes are safe; unbalanced/half-streamed quotes stay uncolored until they close. - fix the ugliest existing bug: single newlines were hard <br>s → now CommonMark soft-breaks (space); a hard break needs 2+ trailing spaces or a trailing \. - INV-004 escape-first preserved. Verified: pytest tests/test_web_* (84) + a 10-case Playwright unit-check of markdownSafe (speech / action / attribute-quote trap / apostrophes / mixed / reflow / hard-break / html-escaping / unbalanced / paragraphs) + a visual render.
This commit is contained in: