${escaped}`;\n });\n\n // Inline code\n html = html.replace(/`([^`]+)`/g, '$1');\n\n // Headers\n html = html.replace(/^###### (.+)$/gm, '$1');\n\n // Unordered lists (simple)\n html = html.replace(/^[*-] (.+)$/gm, '
${trimmed}
`);\n }\n }\n if (inBlock) result.push('');\n\n return result.join('\\n');\n}\n\n// === Better approach: try to use npm marked, with fallback ===\nlet htmlContent;\ntry {\n // Try using marked for proper parsing\n const marked = require('marked');\n htmlContent = marked.parse(markdown, { gfm: true });\n} catch (e) {\n // Fallback to our simple converter\n console.warn('marked not available, using simple converter. Install with: npm install marked');\n htmlContent = mdToHtml(markdown);\n}\n\n// === Build full HTML with WeChat-article style ===\nconst fontStack = `-apple-system, \"PingFang SC\", \"Noto Sans SC\", \"Microsoft YaHei\", \"Helvetica Neue\", Arial, sans-serif`;\n\nconst fullHtml = `\n\n\n\n\n\n\n\n