{{/* Mermaid */}}
{{ if .Page.HasShortcode "mermaid" }}
  {{ $mermaidJS := resources.Get "lib/mermaid/mermaid.min.js" }}
  {{ $mermaidJS := $mermaidJS | resources.Fingerprint "sha512" }}
  <script defer src="{{ $mermaidJS.RelPermalink }}" integrity="{{ $mermaidJS.Data.Integrity }}"></script>
  <script>
    document.addEventListener('DOMContentLoaded', (event) => {
      function css(name) {
        return getComputedStyle(document.documentElement).getPropertyValue(name);
      }
      mermaid.initialize({ theme: "base", themeVariables: { background: css("--color-neutral"), primaryColor: css("--color-primary-200"), secondaryColor: css("--color-secondary-200"), tertiaryColor: css("--color-neutral-100"), primaryBorderColor: css("--color-primary-400"), secondaryBorderColor: css("--color-secondary-400"), tertiaryBorderColor: css("--color-neutral-400"), lineColor: css("--color-neutral-600"), fontFamily: "ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif", fontSize: "16px" }});
    });
  </script>
{{ end }}
{{/* Chart */}}
{{ if .Page.HasShortcode "chart" }}
  {{ $chartJS := resources.Get "lib/chart/chart.min.js" }}
  {{ $chartJS := $chartJS | resources.Fingerprint "sha512" }}
  <script defer src="{{ $chartJS.RelPermalink }}" integrity="{{ $chartJS.Data.Integrity }}"></script>
  <script>
    document.addEventListener('DOMContentLoaded', (event) => {
      function css(name) {
        return getComputedStyle(document.documentElement).getPropertyValue(name);
      }
      Chart.defaults.font.size = 14;
      Chart.defaults.backgroundColor = css("--color-primary-300");
      Chart.defaults.elements.point.borderColor = css("--color-primary-400");
      Chart.defaults.elements.bar.borderColor = css("--color-primary-500");
      Chart.defaults.elements.bar.borderWidth = 1;
      Chart.defaults.elements.line.borderColor = css("--color-primary-400");
      Chart.defaults.elements.arc.backgroundColor = css("--color-primary-200");
      Chart.defaults.elements.arc.borderColor = css("--color-primary-500");
      Chart.defaults.elements.arc.borderWidth = 1;
    });
  </script>
{{ end }}
{{/* Katex */}}
{{ if .Page.HasShortcode "katex" }}
  {{ $katexCSS := resources.Get "lib/katex/katex.min.css" }}
  {{ $katexCSS := $katexCSS | resources.Fingerprint "sha512" }}
  <link
    type="text/css" rel="stylesheet"
    href="{{ $katexCSS.RelPermalink }}"
    integrity="{{ $katexCSS.Data.Integrity }}"
  />
  {{ $katexJS := resources.Get "lib/katex/katex.min.js" }}
  {{ $katexJS := $katexJS | resources.Fingerprint "sha512" }}
  <script defer src="{{ $katexJS.RelPermalink }}" integrity="{{ $katexJS.Data.Integrity }}"></script>
  {{ $katexRenderJS := resources.Get "lib/katex/auto-render.min.js" }}
  {{ $katexRenderJS := $katexRenderJS | resources.Fingerprint "sha512" }}
  <script defer src="{{ $katexRenderJS.RelPermalink }}" integrity="{{ $katexRenderJS.Data.Integrity }}" onload="renderMathInElement(document.body);"></script>
  {{ $katexFonts := resources.Match "lib/katex/fonts/*" }}
  {{ range $katexFonts }}
    <!-- {{ .RelPermalink }} -->
  {{ end }}
{{ end }}