SITE_INTRO
- Markdown instead of raw HTML. The old HTML sanitizer for site intro could corrupt markup (for example duplicate or stray <a> tags after the intro block, which then affected the stream). Intro is now treated like statuses: built-in `renderStatus` when MD_SCRIPT is off, and escaped source + `marked` on the client when MD_SCRIPT is on (same pattern as entries).
- Save validation uses length and NUL stripping only (validateSiteIntro); the previous sanitizeSiteIntroHtml path was removed.