    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="theme-color" content="#1dc868">
    {{ if .Description }}
    <meta name="description" content="{{ .Description }}">
    {{ end }}
    {{ with index (.GetTerms "series") 0 }}
    <meta name="blog-series" content="{{ .Data.Term }}">
    {{ end }}

    {{ range .Params.discussionRooms }}
    <meta name="matrix-highlight-comments" content="{{ . }}">
    {{ end }}

    <!-- Fonts -->
    {{ if not (.Site.Params.noCss) }}
    {{ $fonts := resources.Get "scss/fonts.scss" | css.Sass | resources.Minify }}
    <link rel="stylesheet" href="{{ $fonts.Permalink }}" media="screen">
    {{ end }}

    <!-- External CSS (normalize and KaTeX -->
    {{ if not (.Site.Params.noCss) }}
    {{ partial "defercss.html" (dict "url" .Site.Params.normalizeCssUrl "extra" "") }}
    {{ partial "defercss.html" (dict "url" .Site.Params.katexCssUrl "extra" "") }}
    {{ end }}

    <!-- Links to other formats (RSS, TOML) -->
    {{ range .Site.Home.AlternativeOutputFormats -}}
    <link rel="{{ .Rel }}" type="{{ .MediaType.Type | html }}" href="{{ .Permalink | safeURL }}">
    {{ end -}}

    <!-- In-house CSS -->
    {{ $style := resources.Get "scss/style.scss" | css.Sass | resources.Minify }}
    {{ $sidenotes := resources.Get "scss/sidenotes.scss" | css.Sass | resources.Minify }}
    {{ $code := resources.Get "scss/code.scss" | css.Sass | resources.Minify }}
    {{ $icon := resources.Get "img/favicon.png" }}
    <style>.feather { display: inline !important; width: 10px; height: 10px; }</style>
    <style>img { max-width: 70%; }</style>
    {{ if not (.Site.Params.noCss) }}
    <link rel="stylesheet" href="{{ $style.Permalink }}">
    {{ partial "defercss.html" (dict "url" $sidenotes.Permalink "extra" "") }}
    {{ partial "defercss.html" (dict "url" $code.Permalink "extra" "") }}
    {{ end }}
    <link rel="icon" type="image/png" href="{{ $icon.Permalink }}">

    {{ if .Params.custom_js }}
    {{ range $customJs := .Params.custom_js }}
    <script src="{{ page.Resources.Get $customJs }}"></script>
    {{ end }}
    {{ end }}

    {{ partial "opengraph.html" . }}
    {{ partial "twitter_cards.html" . }}

    <link rel="canonical" href="{{ .Permalink }}">

    {{ if hugo.IsServer }}
    <!-- KaTeX auto-rendering for when we don't have a post-processing step. -->
    <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.0/dist/katex.min.js" integrity="sha384-X/XCfMm41VSsqRNQgDerQczD69XqmjOOOwYQvr/uuC+j4OPoNhVgjdGFwhvN02Ja" crossorigin="anonymous"></script>
    <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.0/dist/contrib/auto-render.min.js" integrity="sha384-+XBljXPPiv+OzfbB3cVmLHf4hdUFHlWNZN5spNQ7rmHTXpd7WvJum6fIACpNNfIR" crossorigin="anonymous"
        onload="renderMathInElement(document.body);"></script>
    {{ end }}

    {{ if .Params.bergamot }}
    <!-- Ensure later scripts keep the KaTeX CSS even if the page has no LaTeX !-->
    <meta name="needs-latex">
    <!-- Code to support the Bergamot JS widget -->
    <script defer src="{{ .Site.Params.katexJsUrl }}" crossorigin="anonymous"></script>
    {{ $katexComponentJs := resources.Get "js/katex-component.js" | resources.Minify }}
    <script defer src="{{ $katexComponentJs.Permalink }}"></script>
    <script defer src="{{ .Site.Params.bergamotJsUrl }}"></script>
    <script defer src="{{ .Site.Params.bergamotObjectLanguageJsUrl }}"></script>
    {{ $bergamotHelpers := resources.Get "js/bergamot-helpers.js" | resources.Minify }}
    <script defer src="{{ $bergamotHelpers.Permalink }}"></script>
    {{ $bergamotStyle := resources.Get "scss/bergamot.scss" | css.Sass | resources.Minify }}
    {{ partial "defercss.html" (dict "url" $bergamotStyle.Permalink "extra" "") }}
    {{ if .Params.bergamot.render_presets }}
        {{ range $name, $rulefile := .Params.bergamot.render_presets }}
            {{ $file := default (resources.Get $rulefile) (page.Resources.Get $rulefile) }}
            {{ partial "bergamotrenderpreset.html" (dict "name" $name "file" $file.Content) }}
        {{ end }}
    {{ else }}
        {{ partial "bergamotrenderpreset.html" (dict "name" "default" "file" (resources.Get "bergamot/rendering/minimal.bergamot").Content) }}
    {{ end }}
    {{ if .Params.bergamot.presets }}
        {{ range $name, $preset := .Params.bergamot.presets }}
            {{ $file := default (resources.Get $preset.file) (page.Resources.Get $preset.file) }}
            {{ $info := dict "name" $name "prompt" $preset.prompt "query" $preset.query "file" $file.Content "renderPreset" $preset.render_preset "inputModes" $preset.input_modes }}
            {{ partial "bergamotpreset.html" $info }}
        {{ end }}
    {{ end }}
    {{ if .Params.bergamot.input_modes }}
        {{ range $mode := .Params.bergamot.input_modes }}
            {{ partial "bergamotinputmode.html" (dict "name" $mode.name "fn" $mode.fn) }}
        {{ end }}
    {{ end }}
    {{ end }}

    {{ with .Site.Params.plausibleAnalyticsDomain }}
    <!-- Plausible analytics, because log parsing is not working all that well. -->
    <script defer data-domain="{{ . }}" src="https://plausible.io/js/script.js"></script>
    {{ end }}

    <title>{{ .Title }}</title>
