1{{# Site-wide Metadata #}} 2<meta charset="utf-8" /> 3<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" /> 4<meta name="view-transition" content="same-origin" /> 5<meta name="supported-color-schemes" content="dark light" /> 6{{# Feed Links #}} 7<link rel="alternate" type="application/feed+json" href="/blog.json" /> 8<link rel="alternate" type="application/rss+xml" href="/blog.rss" /> 9{{# Stylesheets #}} 10<link rel="stylesheet" href="/static/fonts.css" /> 11<link 12 rel="stylesheet" 13 href='/static/styles.css?v={{ new Date(Date.now()).toISOString() |> date("t") }}' 14/> 15<link 16 rel="stylesheet" 17 href='/static/icons/bsi.min.css?v={{ new Date(Date.now()).toISOString() |> date("t") }}' 18/> 19<link 20 rel="stylesheet" 21 href='/static/icons/si.min.css?v={{ new Date(Date.now()).toISOString() |> date("t") }}' 22/> 23{{# Page Metadata #}} 24<link rel="canonical" href="{{ url |> url(true) }}" /> 25<title>{{ title }}</title> 26{{ if !production }} 27 <script defer src="/static/scripts/open-in-editor.js"></script> 28 <script src="/static/scripts/highlight-accessibility.js"></script> 29 {{# Load Sa11y #}} 30 <link rel="preconnect" href="https://cdn.jsdelivr.net"> 31 <link 32 rel="stylesheet" 33 href="https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@latest/dist/css/sa11y.min.css" 34 /> 35 <script 36 src="https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@latest/dist/js/lang/en.umd.js,gh/ryersondmp/sa11y@latest/dist/js/sa11y.umd.min.js" 37 ></script> 38 <script defer> 39 Sa11y.Lang.addI18n(Sa11yLangEn.strings); 40 const sa11y = new Sa11y.Sa11y({ 41 checkRoot: "body", 42 readabilityRoot: "main", 43 developerChecksOnByDefault: true, 44 showGoodLinkButton: false, 45 showGoodImageButton: false, 46 }); 47 </script> 48{{ /if }} 49 50{{# Disable Dark Reader #}} 51<meta name="darkreader-lock">