diff --git a/frontend/popout.html b/frontend/popout.html
index 2bbdbcf..d67e33f 100644
--- a/frontend/popout.html
+++ b/frontend/popout.html
@@ -861,27 +861,27 @@ const RightSidebarManager = {
OutlineManager.init(); RightSidebarManager.init();
- // Highlight code blocks (wait for hljs to be available)
- if (typeof hljs !== 'undefined') {
- document.querySelectorAll('pre code').forEach((el) => {
- hljs.highlightElement(el);
- });
- } else {
- waitForHljs().then(() => {
- document.querySelectorAll('pre code').forEach((el) => {
- hljs.highlightElement(el);
+ // Mermaid + code highlighting handled below FIRST (before highlight.js)
+ if (typeof mermaid !== 'undefined') {
+ mermaid.initialize({ startOnLoad: false, theme: document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'default' });
+ mermaid.run({ querySelector: '.language-mermaid' }).then(() => {
+ // After Mermaid renders, highlight remaining code blocks (skip mermaid SVGs)
+ document.querySelectorAll('pre code:not(.language-mermaid)').forEach((el) => {
+ if (typeof hljs !== 'undefined') hljs.highlightElement(el);
+ });
+ }).catch(() => {
+ // Mermaid failed — highlight everything else anyway
+ document.querySelectorAll('pre code:not(.language-mermaid)').forEach((el) => {
+ if (typeof hljs !== 'undefined') hljs.highlightElement(el);
});
});
+ } else {
+ // No mermaid — just highlight code
+ document.querySelectorAll('pre code').forEach((el) => {
+ if (typeof hljs !== 'undefined') hljs.highlightElement(el);
+ });
}
- // Render Mermaid diagrams
- setTimeout(() => {
- if (typeof mermaid !== 'undefined') {
- mermaid.initialize({ startOnLoad: false, theme: document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'default' });
- mermaid.run({ querySelector: '.mermaid' }).catch(() => {});
- }
- }, 100);
-
// Hide loading
document.getElementById('loading').style.opacity = '0';
setTimeout(() => {