diff --git a/README.md b/README.md
index febc3ac..43650fe 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@ Dependencies
To build:
-- Hugo 0.90 or later
+- Hugo 0.93 or later
- Make
- Git (Hugo uses Git info for features like date last updated)
- [Efficient Compression Tool](https://github.com/fhanau/Efficient-Compression-Tool) It's like zopfli but more efficient and faster.
diff --git a/content/posts/website-best-practices.md b/content/posts/website-best-practices.md
index d690ace..b8737b6 100644
--- a/content/posts/website-best-practices.md
+++ b/content/posts/website-best-practices.md
@@ -68,22 +68,22 @@ Consider taking hardening measures to maximize the security benefits made possib
JavaScript and WebAssembly are responsible for the bulk of modern web exploits. If that isn't reason enough, most [non-mainstream search indexes](./../../../2021/03/10/search-engines-with-own-indexes.html) have little to no support for JavaScript. Ideally, a text-oriented site can enforce a scripting ban at the [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) (CSP) level.
@@ -102,14 +102,10 @@ If you're able to control your HTTP headers, then use headers instead of a ` that's enforced late.
-
- —
-
- HTML Living Standard, section 4.2.5.3: Pragma directives,
- Content Security Policy state
-
-
-
+{{< figcaption type="citation" partOfType="TechArticle" >}}
+HTML Living Standard, section 4.2.5.3: Pragma directives,
+Content Security Policy state
+{{< /figcaption >}}
### If you must enable scripts
@@ -146,13 +142,13 @@ Optimal loading is a complex topic. Broadly, it covers three overlapping categor
HTML is a blocking resource: images and stylesheets will not load until the user agent loads and parses the HTML that calls them. To start loading above-the-fold images before the HTML parsing finishes, send a `link` HTTP header.
@@ -167,10 +163,14 @@ Requesting a high number of cached resources can decrease performance of the cac
One way to help browsers decide which disk-cached resources to prioritize is to use immutable assets. Include the `immutable` directive in your `cache-control` headers, and cache-bust modified assets by changing their URLs.
You can also keep your asset counts low by combining textual assets (e.g. CSS) and inlining small resources.
@@ -199,14 +199,10 @@ There is only one honest measure of web performance: **the time from when you cl
Everything else is bullshit.
-
- —
-
- {{}},
- {{}}
-
-
-
+{{< figcaption type="citation" partOfType="TechArticle" >}}
+{{}},
+{{}}
+{{< /figcaption >}}
Plenty of other factors exist, but listing them all is beyond the scope of this article.
@@ -286,15 +282,11 @@ Lazy loading may or may not work. Some browsers, including Firefox and the Tor B
Loading is only deferred when JavaScript is enabled. This is an anti-tracking measure, because if a user agent supported lazy loading when scripting is disabled, it would still be possible for a site to track a user's approximate scroll position throughout a session, by strategically placing images in a page's markup such that a server can track how many images are requested and when.
-
- —
-
- {{}}
- on MDN,
- the loading attribute
-
-
-
+ {{< figcaption type="citation" partof="TechArticle">}}
+{{}}
+on MDN,
+ the loading attribute
+ {{< /figcaption >}}
If you can't rely on lazy loading, your pages should work well without it. If pages work well without lazy loading, is it worth enabling?
@@ -363,15 +355,10 @@ Long pages with many DOM nodes may benefit from CSS containment, a more recently
`content-visibility: auto` is a more complex value than `hidden`; rather than being similar to `display: none`, it adaptively hides/displays an element's contents as they become relevant to the user. It also doesn’t hide its skipped contents from the user agent, so screen readers, in-page search, and other tools can still interact with it.
-
- —
-
-
- CSS Containment Module Level 2, section 4.2:
- Using content-visibility: auto
-
-
-
+{{< figcaption type="citation" partOfType="TechArticle" >}}
+CSS Containment Module Level 2, section 4.2:
+Using content-visibility: auto
+{{< /figcaption >}}
Leveraging containment is a progressive enhancement, so there aren't any serious implications for older browsers. I use it for my site footers and endnotes.
@@ -450,12 +437,14 @@ Browsers allow users to zoom by adjusting size metrics. Additionally, most brows
In your stylesheets, avoid using `px` where possible. Define sizes and dimensions using relative units (preferably `em`). Exceptions exist for some decorations[^9] (e.g. borders), but they are uncommon.
Beyond alt-text
@@ -488,14 +477,10 @@ Blind users might struggle to view images in context; they can't easily scan the
Try reading your screen through a drinking straw for an hour to get an idea of the limited context that a blind user has. You simply cannot scan the entire page at a glance with a screenreader - you have to listen to the structure of it carefully and remember all that, or read through the entire thing to find stuff, unless there are explicit associations such as longdesc.
-
- —
-
- {{}},
- {{}}
-
-
-
+{{< figcaption type="citation" partOfType="EmailMessage" >}}
+{{}},
+{{}}
+{{< /figcaption >}}
Being sighted and loading images can introduce issues of its own. Sometimes, sighted readers might focus on the _wrong_ part of an image. How can you give readers the missing context and tell them what to focus on?
@@ -541,14 +526,10 @@ I personally try to maintain the flow of an article even if its figures and capt
using such relative references, so that the page can easily be restyled without affecting the
page's meaning.
-
- —
-
- HTML Living Standard, section 4.4.12:
- The figure element
-
-
-
+{{< figcaption type="citation" partOfType="TechArticle" >}}
+HTML Living Standard, section 4.4.12:
+The figure element
+{{< /figcaption >}}
### Image transcripts {#image-transcripts}
@@ -659,13 +640,10 @@ Underlines also make it easy for color-blind readers to distinguish both the beg
Color is not used as the only visual means of conveying information, indicating an action, prompting a response, or distinguishing a visual element. (Level A)
-
- —
-
- WCAG 2.2, section 1.4.1
-
-
-
+{{< figcaption type="citation" partOfType="TechArticle" >}}
+{{< cited-work name="WCAG 2.2" extraName="headline" url="https://www.w3.org/TR/WCAG22/" >}},
+section 1.4.1
+{{< /figcaption >}}
Readers already expect underlined text to signify a hyperlink. Don't break fundamental affordances for aesthetics.
@@ -706,17 +684,18 @@ Most of my images will probably be screenshots that start as PNGs. My typical fl
7. If the image is too light, repeat for a dark version of the image to display according to a `prefers-color-scheme: dark` media query.
@@ -748,22 +727,20 @@ Bright images on an otherwise dark page distract readers, especially readers lik
A `