Write a Python function `next_run(expr: str, after: str) -> str` for standard 5-field cron expressions ("minute hour day-of-month month day-of-week"). `after` and the result are "YYYY-MM-DD HH:MM" (no timezone). Return the first matching minute STRICTLY AFTER `after`. Support in every field: "*", single numbers, comma lists, ranges "a-b", and steps "*/n" and "a-b/n". Day-of-week: 0-6 with 0 = Sunday; also accept 7 as Sunday. Standard cron rule: if BOTH day-of-month and day-of-week are restricted (neither is "*"), a day matches when EITHER field matches; if only one is restricted, only that one applies. Return ONLY the function in one ```python code block. Standard library only.