aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.toml2
-rw-r--r--content/overview-abridge.md2
-rw-r--r--content/overview-embedded-vimeo.md2
-rw-r--r--content/overview-embedded-youtube.md2
-rw-r--r--content/overview-markdown-and-style.md98
-rw-r--r--dist/abridge-blue.css1
-rw-r--r--dist/abridge-bluelight.css1
-rw-r--r--dist/abridge-bluenight.css1
-rw-r--r--dist/abridge-dark.css1
-rw-r--r--dist/abridge-light.css1
-rw-r--r--dist/abridge.css1
-rw-r--r--sass/_imports.scss2
-rw-r--r--sass/_variables.scss72
-rw-r--r--sass/include/_document.scss41
-rw-r--r--sass/include/_nav.scss33
-rw-r--r--sass/include/_typography.scss34
-rw-r--r--screenshot.pngbin124037 -> 120300 bytes
-rw-r--r--static/lite-vimeo.min.js1
-rw-r--r--templates/base.html42
-rw-r--r--templates/categories/list.html4
-rw-r--r--templates/contact.html4
-rw-r--r--templates/macros/head.html120
-rw-r--r--templates/macros/social.html86
-rw-r--r--templates/shortcodes/audio.html2
-rw-r--r--templates/shortcodes/gif.html2
-rw-r--r--templates/shortcodes/image.html4
-rw-r--r--templates/shortcodes/img.html4
-rw-r--r--templates/shortcodes/imghover.html2
-rw-r--r--templates/shortcodes/video.html2
-rw-r--r--templates/shortcodes/vm.html4
-rw-r--r--templates/shortcodes/yt.html4
-rw-r--r--templates/tags/list.html4
32 files changed, 257 insertions, 322 deletions
diff --git a/config.toml b/config.toml
index 3103346..d29ca84 100644
--- a/config.toml
+++ b/config.toml
@@ -45,7 +45,7 @@ title_addition = "Fast & Lightweight Zola Theme" # a default value for title add
author = "Jake G" # Put Your Name here
author_show = true # displays the author name on line with date, tags, categories
-readtime = true # displays the read time on line with date, tags, categories
+readtime = false # displays the read time on line with date, tags, categories
readtime_string = "min" # read time indication eg "min": - 1 min "min read": - 1 min read
recent = true # TOC / index
recent_items = 9
diff --git a/content/overview-abridge.md b/content/overview-abridge.md
index 61a048d..a866097 100644
--- a/content/overview-abridge.md
+++ b/content/overview-abridge.md
@@ -7,7 +7,7 @@ categories = ["Features"]
tags = ["config"]
+++
-Abridge is a fast and lightweight Zola theme using semantic html (~6kb css before svg icons), and no JS required apart from the search. Perfect score on [Google's Lighthouse audit](https://web.dev/measure/).
+Abridge is a fast and lightweight Zola theme using semantic html, only ~6kb css before svg icons, no mandatory JS, and a perfect [Lighthouse](https://web.dev/measure/) score.
<!-- more -->
For quick setup copy the config.toml from the abridge theme into the root of your zola site, this will give you a base configuration with all config values used.
diff --git a/content/overview-embedded-vimeo.md b/content/overview-embedded-vimeo.md
index 319c129..99fb06f 100644
--- a/content/overview-embedded-vimeo.md
+++ b/content/overview-embedded-vimeo.md
@@ -15,7 +15,7 @@ Zola has many shortcodes, and new are easily added, this example shows vimeo.
with `vm(id="id_here")`
- `id`: the video id (mandatory)
-- `class`: a class to add to the <div> surrounding the iframe (optional)
+- `class`: a class to add to the &lt;div&gt; surrounding the iframe (optional)
- `autoplay`: when set to "true", the video autoplays on load (optional)
- `loop`: when set to "true", the video plays on a loop (optional)
- `noautopause`: when set to "true", the video will not autopause (optional)
diff --git a/content/overview-embedded-youtube.md b/content/overview-embedded-youtube.md
index 0bcb4f2..21f6ed2 100644
--- a/content/overview-embedded-youtube.md
+++ b/content/overview-embedded-youtube.md
@@ -16,7 +16,7 @@ with `yt(id="the_id_here")`
- `id`: the video id (mandatory)
- `playlist`: the playlist id (optional)
-- `class`: a class to add to the <div> surrounding the iframe (optional)
+- `class`: a class to add to the &lt;div&gt; surrounding the iframe (optional)
- `autoplay`: when set to "true", the video autoplays on load (optional)
- `title` - set alt title for the iframe (optional, defaults to "Youtube")
- `cookie` - set to "true" if you want tracking cookies, otherwise it defaults to false.
diff --git a/content/overview-markdown-and-style.md b/content/overview-markdown-and-style.md
index 0c372b6..df64054 100644
--- a/content/overview-markdown-and-style.md
+++ b/content/overview-markdown-and-style.md
@@ -178,8 +178,22 @@ during Gopherfest, November 18, 2015.
[^2]: The quote is the first sentence of Aristotle's [Metaphysics](https://en.wikipedia.org/wiki/Metaphysics_(Aristotle)).
+## Navs
+
+Site primary menu is created by nesting the nav under a header tag. Refer to the top of this site for an example.
+
+If the nav tag is under the main tag instead of the header tag then the links will have a border:
+
+<header>
+ <nav>
+ <ul>
+ <li><a href="#">&#60; Previous</a></li>
+ <li><a href="#">Next &#62;</a></li>
+ </ul>
+ </nav>
+</header>
-## Forms:
+## Forms
<form name="contact" method="POST" >
<p><label>Name</label>
@@ -242,7 +256,7 @@ during Gopherfest, November 18, 2015.
Publish on my profile
</label>
<label for="switch_disabled">
- <input type="checkbox" id="switch_disabled" name="switch_disabled" role="switch_disabled" disabled checked>
+ <input type="checkbox" id="switch_disabled" name="switch_disabled" disabled checked>
Publish on my profile my accomplishments
</label>
</fieldset>
@@ -269,82 +283,4 @@ during Gopherfest, November 18, 2015.
<label for="color">Color
<input type="color" id="color" name="color" value="#0eaaaa">
</label>
-</form>
-
-## Navs
-
-Site primary menu is created by nesting the nav under a header tag. Refer to the top of this site for an example.
-
-If the nav tag is under the main tag instead of the header tag then the links will have a border:
-
-<header>
- <nav>
- <ul>
- <li><a href="#">&#60; Previous</a></li>
- <li><a href="#">Next &#62;</a></li>
- </ul>
- </nav>
-</header>
-
-
-## Infinity Flex Grid
-
-### Simple Grid
-
-<section>
- <section> 1 </section>
- <section> 2 </section>
- <section> 3 </section>
-</section>
-<section>
- <section>1</section>
- <section>2</section>
- <section>3</section>
- <section>4</section>
-</section>
-<section>
- <section> 1 </section>
- <section> 2 </section>
- <section> 3 </section>
- <section> 4 </section>
- <section> 5 </section>
-</section>
-
-### Complex grid
-
-<section>
- <section> 1 </section>
- <section> 2 </section>
- <section> 3 </section>
-</section>
-<section>
- <section style = "--c:2">Merge the first 2 columns</section>
- <section>2</section>
- <section>3</section>
- <section>4</section>
-</section>
-<section>
- <section> 1 </section>
- <section style = "--c:3"> Merge 3 columns </section>
- <section> 3 </section>
-</section>
-<section>
- <section>1</section>
- <section style = "--c:2">Merge 2</section>
- <section style = "--c:3">Merge 3</section>
- <section>4</section>
- <section>5</section>
- <section>6</section>
- <section>7</section>
-</section>
-<section>
- <div style = "--c:1"> 1 </div>
- <div style = "--c:2"> Merge 2 columns</div>
- <div style = "--c:1"> 3 </div>
-</section>
-
-<style>
- [style*="--c:"],section>section{
- background-color:#777;
- }
-</style>
+</form> \ No newline at end of file
diff --git a/dist/abridge-blue.css b/dist/abridge-blue.css
new file mode 100644
index 0000000..d5c86b0
--- /dev/null
+++ b/dist/abridge-blue.css
@@ -0,0 +1 @@
+:root{--s1: .5rem;--s2: 1rem;--rc: .5rem;--br: 0.25rem;--bw: 0.0625rem;--ow: 0.1875rem;--fs: 1rem;--lh: 1.5;--lhh: 1.2;--fw: 400;--fh: 700}@media (min-width: 576px){:root{--fs: 1rem}}@media (min-width: 768px){:root{--fs: 1.04rem}}@media (min-width: 992px){:root{--fs: 1.08rem}}@media (min-width: 1200px){:root{--fs: 1.12rem}}*,*::before,*::after{box-sizing:border-box}html{text-rendering:optimizeLegibility;background-color:var(--c1);color:var(--f1);font-family:var(--ff);font-weight:var(--fw);font-size:var(--fs);line-height:var(--lh)}.c{text-align:center}h1,h2,h3,h4,h5,h6{padding-left:0;color:var(--f2);margin-bottom:var(--s1);margin-top:var(--s2);font-weight:var(--fh);font-size:var(--fs);line-height:var(--lhh)}h1{font-size:2rem}h2{font-size:1.75rem}h3{font-size:1.5rem}h4{font-size:1.25rem}h5{font-size:1.125rem}header h1{margin-top:0}a{color:var(--a1);text-decoration:none}a:hover{color:var(--a2);text-decoration:underline}h1 a,h2 a,main nav a{color:var(--f2);text-decoration:none}h1 a:hover,h2 a:hover,main nav a:hover{color:var(--a3);text-decoration:none}article{padding-bottom:.2rem}abbr[title]{border-bottom:var(--bw) dotted;text-decoration:none;cursor:help}mark{background-color:var(--c4);color:var(--c1);vertical-align:baseline;padding:.1rem .4rem}blockquote{margin-left:0;padding:.5rem 0 .5rem 1.5rem;border-left:0.25rem solid var(--c3)}blockquote>:last-child{margin-bottom:0}small{font-size:.875rem}.footnote-definition sup,.footnote-definition p{display:inline}sub,sup{font-size:.75em;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}address,blockquote,dl,figure,form,ol,p,pre,table,ul{margin:var(--s1) 0;color:var(--f1);font-style:normal;font-weight:var(--fw);font-size:var(--fs)}ul,ol{padding-right:0;padding-left:var(--s2)}ul li,ol li{margin-bottom:var(--s1)}ul li{list-style:square}ins{color:var(--cg);text-decoration:none}del{color:var(--cr)}main{display:flex}main article,main div{flex:1 1 0;min-width:0}body{width:100%;margin:0}body>header,body>main,body>footer{width:100%;margin-right:auto;margin-left:auto;padding:var(--s1)}@media (min-width: 1200px){body>header,body>main,body>footer{min-width:1200px;max-width:60%}}body header,body main{padding-top:0;margin-top:0;padding-bottom:0;margin-bottom:0}body header hr,body main hr{margin:0.1rem 0}body footer hr{margin:0.5rem 0}.cnav{color:var(--a3)}main nav{margin-top:var(--s2)}.off{color:var(--c4);font-weight:var(--fh);border:0.1rem solid var(--c3);border-radius:var(--br);padding:0.1rem var(--s1);margin:.1rem}main nav a,main nav a:visited{font-weight:var(--fh);border:0.1rem solid var(--c4);border-radius:var(--br);padding:0.1rem var(--s1);margin:.1rem}main nav a:hover{border-color:var(--a3)}header>nav>div:first-of-type{display:inline;min-width:fit-content;padding-right:var(--s1)}header>nav>div:nth-child(2){margin-left:auto;padding-right:var(--s1)}nav>div{margin:var(--s1) 0;display:block}nav>div ul,nav>div h2{line-height:2;margin:0;padding:0}nav{align-items:center;justify-content:center;display:flex}nav div h2{font-size:1rem}nav div h2:hover{color:var(--a3)}nav h1,nav h2,nav div ul{margin-bottom:0;margin-top:0.2rem}nav ul li{display:inline-block;margin:0 0.2rem;position:relative;text-align:left}@media (max-width: 768px){header nav{display:flex;flex-direction:column}header nav h1{margin:var(--s2) 0 var(--s1)}header nav div{margin:auto}}img,video,svg{max-width:100%;height:auto}embed,iframe,object{max-width:100%}iframe{border-style:none;width:100%;height:100%;border:0;overflow:hidden}table{border-collapse:collapse;width:100%;text-indent:0}table caption{margin-bottom:.5rem}tr{border-bottom:var(--bw) solid var(--c3)}td,th{padding:var(--s1)}th{text-align:left}table tbody tr:nth-child(even){background-color:var(--c2)}table thead tr{border-top:var(--bw) solid var(--c3);background-color:var(--c2)}pre,code,kbd,samp,tt,var{border-radius:var(--br);background:var(--c2);font-family:var(--fm);line-height:initial;font-size:.8rem;padding:.3rem .2rem}pre{display:block;overflow-x:auto;-ms-overflow-style:scrollbar;white-space:pre}pre>code{display:block;background:transparent}kbd{background-color:var(--f2);color:var(--c1);vertical-align:baseline;font-size:1rem;padding:.2rem}hr{box-sizing:content-box;height:0;overflow:visible;border:none;border-top:1px solid var(--f1)}header hr,footer hr{border-top:1px solid var(--c4)}figure{display:block;margin:0;padding:0;overflow-x:auto}figure figcaption{padding:var(--s1) 0;color:var(--c4)}button,input,select,textarea{margin:0;padding:0.2rem var(--s1);max-width:100%;background:var(--c2);border:0;border-radius:.25rem;font:inherit;line-height:var(--fs);color:var(--f1)}button,[type="button" i],[type="submit" i],[type="reset" i]{-webkit-appearance:button;display:inline-block;text-align:center;white-space:nowrap;background:var(--c2);color:var(--f1);border:0;cursor:pointer;transition:opacity .25s}button:hover,[type="button" i]:hover,[type="submit" i]:hover,[type="reset" i]:hover{opacity:.75}button[disabled],[type="button" i][disabled],[type="submit" i][disabled],[type="reset" i][disabled]{opacity:.5}fieldset{padding:.5rem .75rem;border:var(--bw) solid var(--c3);border-radius:.25rem}legend{padding:0 .25rem}label{cursor:pointer;display:block;margin-bottom:.25rem}select,input:not([size]):not([type="button" i]):not([type="submit" i]):not([type="reset" i]):not([type="checkbox" i]):not([type="radio" i]){width:100%}[type="color" i]{min-height:2.125rem}select:not([multiple]):not([size]){padding-right:1.5rem;background-repeat:no-repeat;background-position:right .5rem center;-moz-appearance:none;-webkit-appearance:none;appearance:none}textarea{width:100%;resize:vertical}textarea:not([rows]){height:8rem}div:empty{display:none}#suggestions{z-index:9;background:var(--c1);border:2px solid var(--c3);position:absolute;right:0;margin-top:var(--s1);width:500px;max-height:500px;overflow:auto}#suggestions a,#results a{display:block;text-decoration:none;padding:var(--s1);margin:0 var(--s1)}#suggestions a:hover,#suggestions a:focus,#results a:hover,#results a:focus{background:var(--c2)}#suggestions span,#results span{line-height:1.5;display:block}#suggestions span:first-child,#results span:first-child{font-weight:var(--fh)}#suggestions span:nth-child(2),#results span:nth-child(2){color:var(--f1)}nav>div>form>div:last-of-type{display:block;position:relative;width:100%}.searchd{display:flex;align-items:center;white-space:nowrap}.searchd>input{max-width:15.3rem;padding-right:2.4rem}.searchd>button{margin-left:-2.4rem}@media (max-width: 768px){.searchd>input{max-width:100%;flex-grow:1}#suggestions{position:static;left:0;width:100%}}main .toc{max-width:15rem;min-width:14rem;margin-left:var(--s1)}main .toc-item{padding:.4rem 0;color:var(--f1)}main .toc-item a,main .toc-item-child a{color:var(--f1)}main .toc-item a:hover,main .toc-item-child a:hover{cursor:pointer;color:var(--a2);text-decoration:underline}main .toc-item a.active,main .toc-item-child a.active{color:var(--a2)}main .toc-item-child{padding:0 var(--s1);color:var(--f1)}.toc-sticky{border-radius:var(--br);border-top:5px solid var(--a1);background-color:var(--c2);position:sticky;top:var(--s2);margin-top:var(--s2);padding:0 var(--s2) var(--s2);max-height:100vh;overflow:auto}@media (max-width: 768px){.toc{display:none}}.bitbucket{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%2328f' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M14.2 15.3H9.8L8.7 8.7h6.6ZM2.8 3.2A.7.7 0 0 0 2 4l3.4 16c.1.4.6.8 1 .8h11a.7.7 0 0 0 .6-.6l4-16.1a.7.7 0 0 0-.7-.9Z'/%3E%3C/svg%3E")}.buymeacoffee{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fd0' d='m7.9 11.7.8 8.3c.2 2 .8 2 3.6 2 2.3 0 2.8-.1 3-2l.8-9.3c-3.3-1-4 2-8.2 1z'/%3E%3Cpath fill='%23777' d='M18.8 4.3c-.6-.1-.6-1-.7-1.9-.2-1.6-1.2-2-4-2.2-3-.4-8.6-.2-8.5 1.6 0 1.7 4.8 2.2 9.7 1.6.8-.1.6-1.5-.2-1.4-3.6.5-7.4 0-7.4-.2 0-.3 3.3-.5 5-.4 4.5.3 3.7.3 4.2 2.2.2 1 0 .9-.7 1-3 .3-6 .2-9-.2C4.7 4 4.3 4.4 4 6c-.8 2.7 1 2.8 2.1 3 4.8.7 7.7.3 10.3.2.8-.1.6.5.6 1.2l-1.3 10.8c-.1 1.4-1.4 1.4-4 1.5-2.7.2-3.3-.5-3.5-1.6L7.1 10c-.1-1-1.5-.6-1.4.3l1.1 10.8C7.1 24 9.4 24 12.2 24c2.6 0 4.6-.3 5-3.2l1-11.3c.2-.9.3-.7 1-.9 1.8-.8 1-4.2-.4-4.3zm-.3 3a38 38 0 0 1-12.6.2c-1.4-.2-.9-2 0-1.9 4.5.7 8.7.7 12 0 1.4-.2 1.1 1.7.6 1.8z' /%3E%3C/svg%3E")}.docker{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%2329e' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M4 19.8S7 20 8 18m-4-7h3v3H4Zm3 0h3v3H7Zm3 0h3v3h-3ZM7 8h3v3H7Zm3 0h3v3h-3Zm0-3h3v3h-3Zm10 8c-1 0-1 0-1.4-1.9C18.5 10 17 10 17 12c0 1 0 2-3 2H1a9 9 0 0 0 3 6c3 2 5 2 9 1a10.8 10.8 90 0 0 5-4c1-2 1-1 3-2s1-2 0-2Z'/%3E%3C/svg%3E%0A")}.element{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%231c8' viewBox='0 0 24 24'%3E%3Cpath d='M12 0C5 0 0 6 0 12s6 12 12 12 12-6 12-12A12 12 0 0 0 12 0Zm-1 4c4 0 6 3 6 6 0 2-2 2-2 0s-2-4-4-4-2-2 0-2Zm-7 9c0-4 3-6 6-6 2 0 2 2 0 2s-4 2-4 4-2 2-2 0Zm9 7c-4 0-6-3-6-6 0-2 2-2 2 0s2.4 4 4 4c2 0 2 2 0 2Zm1-3c-2 0-2-2 0-2s4-2 4-4 2-2 2 0c0 4-3 6-6 6Z'/%3E%3C/svg%3E")}.facebook{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23359' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z'/%3E%3C/svg%3E")}.github{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23888' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M9 19c-5 1.5-5-2.5-7-3m14 6v-3.9a3.4 3.4 0 0 0-1-2.6c3.2-.3 6.5-1.5 6.5-7A5.4 5.4 0 0 0 20 4.8 5 5 0 0 0 20 1s-1.3-.3-4 1.5a13.4 13.4 0 0 0-7 0C6.3.6 5 1 5 1a5 5 0 0 0 0 3.8 5.4 5.4 0 0 0-1.5 3.7c0 5.5 3.3 6.7 6.4 7a3.4 3.4 0 0 0-.9 2.6V22'/%3E%3C/svg%3E")}.github-sponsor{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23c49' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M20 4c-5-3-8 2-8 4 0-2-3-7-8-4-4 2-6 10 8 18 14-8 12-16 8-18z'/%3E%3C/svg%3E")}.gitlab{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e62' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M22.6 14.4 12 22 1.3 14.4a.8.8 0 0 1-.3-1l1.3-3.7 2.4-7.5a.4.4 0 0 1 .1-.2.4.4 0 0 1 .6 0 .4.4 0 0 1 .1.2L8 9.7h8l2.5-7.5a.4.4 0 0 1 .1-.2.4.4 0 0 1 .6 0 .4.4 0 0 1 0 .2l2.5 7.5 1.3 3.8a.8.8 0 0 1-.3.9z'/%3E%3C/svg%3E")}.instagram{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e07' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Crect x='2' y='2' width='20' height='20' rx='5' ry='5'/%3E%3Cpath d='M16 11.4A4 4 0 1 1 12.6 8a4 4 0 0 1 3.4 3.4zm1.5-4.9h.01'/%3E%3C/svg%3E")}.linkedin{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%2326a' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6zM2 9h4v12H2z'/%3E%3Ccircle cx='4' cy='4' r='2'/%3E%3C/svg%3E")}.mail{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23888' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='m22 6-10 7L2 6m2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2Z'/%3E%3C/svg%3E")}.mastodon{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2328c' viewBox='0 0 24 24'%3E%3Cpath d='M2 8c0 5.7-.2 12.6 5 14 2 .6 3.7.7 5 .6 2.4-.1 3.8-.9 3.8-.9l-.1-1.8s-1.7.6-3.7.5c-1.9 0-4-.2-4.2-2.6a5 5 90 0 1 0-.7c4 1 7.5.5 8.4.4 2.7-.4 5-2 5.3-3.6.5-2.4.4-5.8.4-5.8C22 3.4 19 2 19 2 15.9.6 8 .6 5.1 2c0 0-3 1.4-3 6zm4.5-2.3c1.2-1.4 3.8-1.5 5 .3l.5.9.6-1c1.1-1.7 3.7-1.6 4.9-.2 1.1 1.3.9 2.5.9 8.4H16V8.6c0-2.4-3-2.5-3 .3v3h-2V9c0-2.8-3-2.7-3-.3V14H5.6c0-5.9-.2-7.1 1-8.4z'/%3E%3C/svg%3E")}.pinterest{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23b01' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='m8 20 4-9m-1.3 3c.4 1.3 1.4 2 2.5 2 2.1 0 3.8-1.6 3.8-4a5 5 0 1 0-9.7 1.7'/%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3C/svg%3E")}.python{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%2326a' d='M17 6c0 4-1 5-6 5-4 0-5 1-5 6-4 0-5-1-5-6 0-3 1-4.5 4-4.5h7c0-.5 0-.5-1-.5H6c0-3 0-5 6-5 5 0 5 2 5 5ZM9 3C7.5 3 7.5 5 9 5s1.5-2 0-2Z'/%3E%3Cpath fill='%23fc1' d='M23 12c0 3-1 4.6-4 4.5h-7v.5h6c0 4 0 6-6 6-5 0-5-2-5-6s1-5 6-5c4 0 5-1 5-6 4 0 5 1 5 6Zm-8 7c-1.5 0-1.5 2 0 2s1.5-2 0-2Z' /%3E%3C/svg%3E")}.researchgate{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='none' stroke-width='2' fill='%230db' viewBox='0 0 24 24'%3E%3Cpath d='M16 5c0 3.5.7 5 3 5s3.7-1.3 3.3-5h-3v1.3H21c0 1.9-.7 2.7-2 2.5-1.3 0-1.8-.7-1.8-3.2 0-2.4.4-3.3 1.5-3.4 1-.2 1.7.2 2.2 1.1L22 3c-.4-1.3-1.4-2-2.9-2C17.2 1 16 2 16 5ZM8 6.2l-6 .2v.9c1 .3 2 0 2 2.2v11C4 22 3 22 2 22.2v.8h6.6v-.8C7 22 6 22 6 20.5v-5.2h2a46 46 0 0 0 4 5.7 5 5 0 0 0 5 2v-1c-3 0-5-5-7-7 6-1 6-10-2-8.8ZM6 14V7.6C14 6 13 14 8 14Z'/%3E%3C/svg%3E")}.rss{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e94' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9M4 4a16 16 0 0 1 16 16'/%3E%3Ccircle cx='5' cy='19' r='1'/%3E%3C/svg%3E")}.search{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23888' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.stack{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e72' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M4 17v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1M8 16h8m-7.7-3.4 8 .8M8.8 9.2l7.8 1.6m-6.5-5 7.6 2.4'/%3E%3C/svg%3E")}.twitch{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23a7f' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7'/%3E%3C/svg%3E")}.twitter{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%232ad' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M23 3a10.9 10.9 0 0 1-3.1 1.5 4.5 4.5 0 0 0-7.9 3v1A10.7 10.7 0 0 1 3 4s-4 9 5 13a11.6 11.6 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0 0-.8A7.7 7.7 0 0 0 23 3z'/%3E%3C/svg%3E")}.x{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23f00' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M18 6 6 18M6 6l12 12'/%3E%3C/svg%3E")}.youtube{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23f00' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='m9.8 15 5.7-3.3-5.8-3.2V15Zm12.7-8.6a2.8 2.8 0 0 0-1.9-2C18.9 4 12 4 12 4s-6.9 0-8.6.5a2.8 2.8 0 0 0-2 2 29 29 0 0 0-.4 5.3 29 29 0 0 0 .5 5.3A2.8 2.8 0 0 0 3.4 19c1.7.5 8.6.5 8.6.5s6.9 0 8.6-.5a2.8 2.8 0 0 0 2-2 29 29 0 0 0 .4-5.3 29 29 0 0 0-.5-5.3z'/%3E%3C/svg%3E")}.svg{width:48px;height:48px;display:inline-block;overflow:hidden;vertical-align:middle}.svgs{width:var(--fs);height:var(--fs);display:inline-block;overflow:hidden;vertical-align:middle}@font-face{font-family:'Roboto';src:local("Roboto"),url("/font/Roboto.woff2");font-display:swap}@font-face{font-family:'Roboto';src:local("Roboto-Italic"),url("/font/Roboto-Italic.woff2");font-style:italic;font-display:swap}@font-face{font-family:'Roboto';src:local("Roboto-Bold"),url("/font/Roboto-Bold.woff2");font-weight:bold;font-display:swap}:root{--ff: "Roboto", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Noto Sans", Helvetica, Arial, sans-serif;--fm: ui-monospace, Menlo, Monaco, Consolas, "SF Mono", "Cascadia Mono", "Segoe UI Mono", "DejaVu Sans Mono", "Liberation Mono", "Roboto Mono", "Oxygen Mono", "Ubuntu Monospace", "Ubuntu Mono", "Source Code Pro", "Fira Mono", "Droid Sans Mono", "Courier New", Courier, monospace;--f1: #111;--f2: #222;--c1: #fafafa;--c2: #def;--c3: #137;--c4: #013;--a1: #06e;--a2: #09f;--a3: #07f;--cg: #483;--cr: #c22}@media (prefers-color-scheme: dark){:root{--f1: #ccc;--f2: #ddd;--c1: #111;--c2: #123;--c3: #345;--c4: #789;--a1: #09f;--a2: #0bf;--a3: #0af;--cr: #e33}}
diff --git a/dist/abridge-bluelight.css b/dist/abridge-bluelight.css
new file mode 100644
index 0000000..0c1c36f
--- /dev/null
+++ b/dist/abridge-bluelight.css
@@ -0,0 +1 @@
+:root{--s1: .5rem;--s2: 1rem;--rc: .5rem;--br: 0.25rem;--bw: 0.0625rem;--ow: 0.1875rem;--fs: 1rem;--lh: 1.5;--lhh: 1.2;--fw: 400;--fh: 700}@media (min-width: 576px){:root{--fs: 1rem}}@media (min-width: 768px){:root{--fs: 1.04rem}}@media (min-width: 992px){:root{--fs: 1.08rem}}@media (min-width: 1200px){:root{--fs: 1.12rem}}*,*::before,*::after{box-sizing:border-box}html{text-rendering:optimizeLegibility;background-color:var(--c1);color:var(--f1);font-family:var(--ff);font-weight:var(--fw);font-size:var(--fs);line-height:var(--lh)}.c{text-align:center}h1,h2,h3,h4,h5,h6{padding-left:0;color:var(--f2);margin-bottom:var(--s1);margin-top:var(--s2);font-weight:var(--fh);font-size:var(--fs);line-height:var(--lhh)}h1{font-size:2rem}h2{font-size:1.75rem}h3{font-size:1.5rem}h4{font-size:1.25rem}h5{font-size:1.125rem}header h1{margin-top:0}a{color:var(--a1);text-decoration:none}a:hover{color:var(--a2);text-decoration:underline}h1 a,h2 a,main nav a{color:var(--f2);text-decoration:none}h1 a:hover,h2 a:hover,main nav a:hover{color:var(--a3);text-decoration:none}article{padding-bottom:.2rem}abbr[title]{border-bottom:var(--bw) dotted;text-decoration:none;cursor:help}mark{background-color:var(--c4);color:var(--c1);vertical-align:baseline;padding:.1rem .4rem}blockquote{margin-left:0;padding:.5rem 0 .5rem 1.5rem;border-left:0.25rem solid var(--c3)}blockquote>:last-child{margin-bottom:0}small{font-size:.875rem}.footnote-definition sup,.footnote-definition p{display:inline}sub,sup{font-size:.75em;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}address,blockquote,dl,figure,form,ol,p,pre,table,ul{margin:var(--s1) 0;color:var(--f1);font-style:normal;font-weight:var(--fw);font-size:var(--fs)}ul,ol{padding-right:0;padding-left:var(--s2)}ul li,ol li{margin-bottom:var(--s1)}ul li{list-style:square}ins{color:var(--cg);text-decoration:none}del{color:var(--cr)}main{display:flex}main article,main div{flex:1 1 0;min-width:0}body{width:100%;margin:0}body>header,body>main,body>footer{width:100%;margin-right:auto;margin-left:auto;padding:var(--s1)}@media (min-width: 1200px){body>header,body>main,body>footer{min-width:1200px;max-width:60%}}body header,body main{padding-top:0;margin-top:0;padding-bottom:0;margin-bottom:0}body header hr,body main hr{margin:0.1rem 0}body footer hr{margin:0.5rem 0}.cnav{color:var(--a3)}main nav{margin-top:var(--s2)}.off{color:var(--c4);font-weight:var(--fh);border:0.1rem solid var(--c3);border-radius:var(--br);padding:0.1rem var(--s1);margin:.1rem}main nav a,main nav a:visited{font-weight:var(--fh);border:0.1rem solid var(--c4);border-radius:var(--br);padding:0.1rem var(--s1);margin:.1rem}main nav a:hover{border-color:var(--a3)}header>nav>div:first-of-type{display:inline;min-width:fit-content;padding-right:var(--s1)}header>nav>div:nth-child(2){margin-left:auto;padding-right:var(--s1)}nav>div{margin:var(--s1) 0;display:block}nav>div ul,nav>div h2{line-height:2;margin:0;padding:0}nav{align-items:center;justify-content:center;display:flex}nav div h2{font-size:1rem}nav div h2:hover{color:var(--a3)}nav h1,nav h2,nav div ul{margin-bottom:0;margin-top:0.2rem}nav ul li{display:inline-block;margin:0 0.2rem;position:relative;text-align:left}@media (max-width: 768px){header nav{display:flex;flex-direction:column}header nav h1{margin:var(--s2) 0 var(--s1)}header nav div{margin:auto}}img,video,svg{max-width:100%;height:auto}embed,iframe,object{max-width:100%}iframe{border-style:none;width:100%;height:100%;border:0;overflow:hidden}table{border-collapse:collapse;width:100%;text-indent:0}table caption{margin-bottom:.5rem}tr{border-bottom:var(--bw) solid var(--c3)}td,th{padding:var(--s1)}th{text-align:left}table tbody tr:nth-child(even){background-color:var(--c2)}table thead tr{border-top:var(--bw) solid var(--c3);background-color:var(--c2)}pre,code,kbd,samp,tt,var{border-radius:var(--br);background:var(--c2);font-family:var(--fm);line-height:initial;font-size:.8rem;padding:.3rem .2rem}pre{display:block;overflow-x:auto;-ms-overflow-style:scrollbar;white-space:pre}pre>code{display:block;background:transparent}kbd{background-color:var(--f2);color:var(--c1);vertical-align:baseline;font-size:1rem;padding:.2rem}hr{box-sizing:content-box;height:0;overflow:visible;border:none;border-top:1px solid var(--f1)}header hr,footer hr{border-top:1px solid var(--c4)}figure{display:block;margin:0;padding:0;overflow-x:auto}figure figcaption{padding:var(--s1) 0;color:var(--c4)}button,input,select,textarea{margin:0;padding:0.2rem var(--s1);max-width:100%;background:var(--c2);border:0;border-radius:.25rem;font:inherit;line-height:var(--fs);color:var(--f1)}button,[type="button" i],[type="submit" i],[type="reset" i]{-webkit-appearance:button;display:inline-block;text-align:center;white-space:nowrap;background:var(--c2);color:var(--f1);border:0;cursor:pointer;transition:opacity .25s}button:hover,[type="button" i]:hover,[type="submit" i]:hover,[type="reset" i]:hover{opacity:.75}button[disabled],[type="button" i][disabled],[type="submit" i][disabled],[type="reset" i][disabled]{opacity:.5}fieldset{padding:.5rem .75rem;border:var(--bw) solid var(--c3);border-radius:.25rem}legend{padding:0 .25rem}label{cursor:pointer;display:block;margin-bottom:.25rem}select,input:not([size]):not([type="button" i]):not([type="submit" i]):not([type="reset" i]):not([type="checkbox" i]):not([type="radio" i]){width:100%}[type="color" i]{min-height:2.125rem}select:not([multiple]):not([size]){padding-right:1.5rem;background-repeat:no-repeat;background-position:right .5rem center;-moz-appearance:none;-webkit-appearance:none;appearance:none}textarea{width:100%;resize:vertical}textarea:not([rows]){height:8rem}div:empty{display:none}#suggestions{z-index:9;background:var(--c1);border:2px solid var(--c3);position:absolute;right:0;margin-top:var(--s1);width:500px;max-height:500px;overflow:auto}#suggestions a,#results a{display:block;text-decoration:none;padding:var(--s1);margin:0 var(--s1)}#suggestions a:hover,#suggestions a:focus,#results a:hover,#results a:focus{background:var(--c2)}#suggestions span,#results span{line-height:1.5;display:block}#suggestions span:first-child,#results span:first-child{font-weight:var(--fh)}#suggestions span:nth-child(2),#results span:nth-child(2){color:var(--f1)}nav>div>form>div:last-of-type{display:block;position:relative;width:100%}.searchd{display:flex;align-items:center;white-space:nowrap}.searchd>input{max-width:15.3rem;padding-right:2.4rem}.searchd>button{margin-left:-2.4rem}@media (max-width: 768px){.searchd>input{max-width:100%;flex-grow:1}#suggestions{position:static;left:0;width:100%}}main .toc{max-width:15rem;min-width:14rem;margin-left:var(--s1)}main .toc-item{padding:.4rem 0;color:var(--f1)}main .toc-item a,main .toc-item-child a{color:var(--f1)}main .toc-item a:hover,main .toc-item-child a:hover{cursor:pointer;color:var(--a2);text-decoration:underline}main .toc-item a.active,main .toc-item-child a.active{color:var(--a2)}main .toc-item-child{padding:0 var(--s1);color:var(--f1)}.toc-sticky{border-radius:var(--br);border-top:5px solid var(--a1);background-color:var(--c2);position:sticky;top:var(--s2);margin-top:var(--s2);padding:0 var(--s2) var(--s2);max-height:100vh;overflow:auto}@media (max-width: 768px){.toc{display:none}}.bitbucket{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%2328f' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M14.2 15.3H9.8L8.7 8.7h6.6ZM2.8 3.2A.7.7 0 0 0 2 4l3.4 16c.1.4.6.8 1 .8h11a.7.7 0 0 0 .6-.6l4-16.1a.7.7 0 0 0-.7-.9Z'/%3E%3C/svg%3E")}.buymeacoffee{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fd0' d='m7.9 11.7.8 8.3c.2 2 .8 2 3.6 2 2.3 0 2.8-.1 3-2l.8-9.3c-3.3-1-4 2-8.2 1z'/%3E%3Cpath fill='%23777' d='M18.8 4.3c-.6-.1-.6-1-.7-1.9-.2-1.6-1.2-2-4-2.2-3-.4-8.6-.2-8.5 1.6 0 1.7 4.8 2.2 9.7 1.6.8-.1.6-1.5-.2-1.4-3.6.5-7.4 0-7.4-.2 0-.3 3.3-.5 5-.4 4.5.3 3.7.3 4.2 2.2.2 1 0 .9-.7 1-3 .3-6 .2-9-.2C4.7 4 4.3 4.4 4 6c-.8 2.7 1 2.8 2.1 3 4.8.7 7.7.3 10.3.2.8-.1.6.5.6 1.2l-1.3 10.8c-.1 1.4-1.4 1.4-4 1.5-2.7.2-3.3-.5-3.5-1.6L7.1 10c-.1-1-1.5-.6-1.4.3l1.1 10.8C7.1 24 9.4 24 12.2 24c2.6 0 4.6-.3 5-3.2l1-11.3c.2-.9.3-.7 1-.9 1.8-.8 1-4.2-.4-4.3zm-.3 3a38 38 0 0 1-12.6.2c-1.4-.2-.9-2 0-1.9 4.5.7 8.7.7 12 0 1.4-.2 1.1 1.7.6 1.8z' /%3E%3C/svg%3E")}.docker{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%2329e' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M4 19.8S7 20 8 18m-4-7h3v3H4Zm3 0h3v3H7Zm3 0h3v3h-3ZM7 8h3v3H7Zm3 0h3v3h-3Zm0-3h3v3h-3Zm10 8c-1 0-1 0-1.4-1.9C18.5 10 17 10 17 12c0 1 0 2-3 2H1a9 9 0 0 0 3 6c3 2 5 2 9 1a10.8 10.8 90 0 0 5-4c1-2 1-1 3-2s1-2 0-2Z'/%3E%3C/svg%3E%0A")}.element{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%231c8' viewBox='0 0 24 24'%3E%3Cpath d='M12 0C5 0 0 6 0 12s6 12 12 12 12-6 12-12A12 12 0 0 0 12 0Zm-1 4c4 0 6 3 6 6 0 2-2 2-2 0s-2-4-4-4-2-2 0-2Zm-7 9c0-4 3-6 6-6 2 0 2 2 0 2s-4 2-4 4-2 2-2 0Zm9 7c-4 0-6-3-6-6 0-2 2-2 2 0s2.4 4 4 4c2 0 2 2 0 2Zm1-3c-2 0-2-2 0-2s4-2 4-4 2-2 2 0c0 4-3 6-6 6Z'/%3E%3C/svg%3E")}.facebook{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23359' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z'/%3E%3C/svg%3E")}.github{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23888' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M9 19c-5 1.5-5-2.5-7-3m14 6v-3.9a3.4 3.4 0 0 0-1-2.6c3.2-.3 6.5-1.5 6.5-7A5.4 5.4 0 0 0 20 4.8 5 5 0 0 0 20 1s-1.3-.3-4 1.5a13.4 13.4 0 0 0-7 0C6.3.6 5 1 5 1a5 5 0 0 0 0 3.8 5.4 5.4 0 0 0-1.5 3.7c0 5.5 3.3 6.7 6.4 7a3.4 3.4 0 0 0-.9 2.6V22'/%3E%3C/svg%3E")}.github-sponsor{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23c49' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M20 4c-5-3-8 2-8 4 0-2-3-7-8-4-4 2-6 10 8 18 14-8 12-16 8-18z'/%3E%3C/svg%3E")}.gitlab{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e62' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M22.6 14.4 12 22 1.3 14.4a.8.8 0 0 1-.3-1l1.3-3.7 2.4-7.5a.4.4 0 0 1 .1-.2.4.4 0 0 1 .6 0 .4.4 0 0 1 .1.2L8 9.7h8l2.5-7.5a.4.4 0 0 1 .1-.2.4.4 0 0 1 .6 0 .4.4 0 0 1 0 .2l2.5 7.5 1.3 3.8a.8.8 0 0 1-.3.9z'/%3E%3C/svg%3E")}.instagram{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e07' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Crect x='2' y='2' width='20' height='20' rx='5' ry='5'/%3E%3Cpath d='M16 11.4A4 4 0 1 1 12.6 8a4 4 0 0 1 3.4 3.4zm1.5-4.9h.01'/%3E%3C/svg%3E")}.linkedin{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%2326a' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6zM2 9h4v12H2z'/%3E%3Ccircle cx='4' cy='4' r='2'/%3E%3C/svg%3E")}.mail{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23888' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='m22 6-10 7L2 6m2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2Z'/%3E%3C/svg%3E")}.mastodon{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2328c' viewBox='0 0 24 24'%3E%3Cpath d='M2 8c0 5.7-.2 12.6 5 14 2 .6 3.7.7 5 .6 2.4-.1 3.8-.9 3.8-.9l-.1-1.8s-1.7.6-3.7.5c-1.9 0-4-.2-4.2-2.6a5 5 90 0 1 0-.7c4 1 7.5.5 8.4.4 2.7-.4 5-2 5.3-3.6.5-2.4.4-5.8.4-5.8C22 3.4 19 2 19 2 15.9.6 8 .6 5.1 2c0 0-3 1.4-3 6zm4.5-2.3c1.2-1.4 3.8-1.5 5 .3l.5.9.6-1c1.1-1.7 3.7-1.6 4.9-.2 1.1 1.3.9 2.5.9 8.4H16V8.6c0-2.4-3-2.5-3 .3v3h-2V9c0-2.8-3-2.7-3-.3V14H5.6c0-5.9-.2-7.1 1-8.4z'/%3E%3C/svg%3E")}.pinterest{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23b01' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='m8 20 4-9m-1.3 3c.4 1.3 1.4 2 2.5 2 2.1 0 3.8-1.6 3.8-4a5 5 0 1 0-9.7 1.7'/%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3C/svg%3E")}.python{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%2326a' d='M17 6c0 4-1 5-6 5-4 0-5 1-5 6-4 0-5-1-5-6 0-3 1-4.5 4-4.5h7c0-.5 0-.5-1-.5H6c0-3 0-5 6-5 5 0 5 2 5 5ZM9 3C7.5 3 7.5 5 9 5s1.5-2 0-2Z'/%3E%3Cpath fill='%23fc1' d='M23 12c0 3-1 4.6-4 4.5h-7v.5h6c0 4 0 6-6 6-5 0-5-2-5-6s1-5 6-5c4 0 5-1 5-6 4 0 5 1 5 6Zm-8 7c-1.5 0-1.5 2 0 2s1.5-2 0-2Z' /%3E%3C/svg%3E")}.researchgate{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='none' stroke-width='2' fill='%230db' viewBox='0 0 24 24'%3E%3Cpath d='M16 5c0 3.5.7 5 3 5s3.7-1.3 3.3-5h-3v1.3H21c0 1.9-.7 2.7-2 2.5-1.3 0-1.8-.7-1.8-3.2 0-2.4.4-3.3 1.5-3.4 1-.2 1.7.2 2.2 1.1L22 3c-.4-1.3-1.4-2-2.9-2C17.2 1 16 2 16 5ZM8 6.2l-6 .2v.9c1 .3 2 0 2 2.2v11C4 22 3 22 2 22.2v.8h6.6v-.8C7 22 6 22 6 20.5v-5.2h2a46 46 0 0 0 4 5.7 5 5 0 0 0 5 2v-1c-3 0-5-5-7-7 6-1 6-10-2-8.8ZM6 14V7.6C14 6 13 14 8 14Z'/%3E%3C/svg%3E")}.rss{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e94' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9M4 4a16 16 0 0 1 16 16'/%3E%3Ccircle cx='5' cy='19' r='1'/%3E%3C/svg%3E")}.search{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23888' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.stack{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e72' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M4 17v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1M8 16h8m-7.7-3.4 8 .8M8.8 9.2l7.8 1.6m-6.5-5 7.6 2.4'/%3E%3C/svg%3E")}.twitch{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23a7f' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7'/%3E%3C/svg%3E")}.twitter{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%232ad' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M23 3a10.9 10.9 0 0 1-3.1 1.5 4.5 4.5 0 0 0-7.9 3v1A10.7 10.7 0 0 1 3 4s-4 9 5 13a11.6 11.6 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0 0-.8A7.7 7.7 0 0 0 23 3z'/%3E%3C/svg%3E")}.x{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23f00' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M18 6 6 18M6 6l12 12'/%3E%3C/svg%3E")}.youtube{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23f00' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='m9.8 15 5.7-3.3-5.8-3.2V15Zm12.7-8.6a2.8 2.8 0 0 0-1.9-2C18.9 4 12 4 12 4s-6.9 0-8.6.5a2.8 2.8 0 0 0-2 2 29 29 0 0 0-.4 5.3 29 29 0 0 0 .5 5.3A2.8 2.8 0 0 0 3.4 19c1.7.5 8.6.5 8.6.5s6.9 0 8.6-.5a2.8 2.8 0 0 0 2-2 29 29 0 0 0 .4-5.3 29 29 0 0 0-.5-5.3z'/%3E%3C/svg%3E")}.svg{width:48px;height:48px;display:inline-block;overflow:hidden;vertical-align:middle}.svgs{width:var(--fs);height:var(--fs);display:inline-block;overflow:hidden;vertical-align:middle}@font-face{font-family:'Roboto';src:local("Roboto"),url("/font/Roboto.woff2");font-display:swap}@font-face{font-family:'Roboto';src:local("Roboto-Italic"),url("/font/Roboto-Italic.woff2");font-style:italic;font-display:swap}@font-face{font-family:'Roboto';src:local("Roboto-Bold"),url("/font/Roboto-Bold.woff2");font-weight:bold;font-display:swap}:root{--ff: "Roboto", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Noto Sans", Helvetica, Arial, sans-serif;--fm: ui-monospace, Menlo, Monaco, Consolas, "SF Mono", "Cascadia Mono", "Segoe UI Mono", "DejaVu Sans Mono", "Liberation Mono", "Roboto Mono", "Oxygen Mono", "Ubuntu Monospace", "Ubuntu Mono", "Source Code Pro", "Fira Mono", "Droid Sans Mono", "Courier New", Courier, monospace;--f1: #111;--f2: #222;--c1: #fafafa;--c2: #def;--c3: #137;--c4: #013;--a1: #06e;--a2: #09f;--a3: #07f;--cg: #483;--cr: #c22}
diff --git a/dist/abridge-bluenight.css b/dist/abridge-bluenight.css
new file mode 100644
index 0000000..ab8d6f1
--- /dev/null
+++ b/dist/abridge-bluenight.css
@@ -0,0 +1 @@
+:root{--s1: .5rem;--s2: 1rem;--rc: .5rem;--br: 0.25rem;--bw: 0.0625rem;--ow: 0.1875rem;--fs: 1rem;--lh: 1.5;--lhh: 1.2;--fw: 400;--fh: 700}@media (min-width: 576px){:root{--fs: 1rem}}@media (min-width: 768px){:root{--fs: 1.04rem}}@media (min-width: 992px){:root{--fs: 1.08rem}}@media (min-width: 1200px){:root{--fs: 1.12rem}}*,*::before,*::after{box-sizing:border-box}html{text-rendering:optimizeLegibility;background-color:var(--c1);color:var(--f1);font-family:var(--ff);font-weight:var(--fw);font-size:var(--fs);line-height:var(--lh)}.c{text-align:center}h1,h2,h3,h4,h5,h6{padding-left:0;color:var(--f2);margin-bottom:var(--s1);margin-top:var(--s2);font-weight:var(--fh);font-size:var(--fs);line-height:var(--lhh)}h1{font-size:2rem}h2{font-size:1.75rem}h3{font-size:1.5rem}h4{font-size:1.25rem}h5{font-size:1.125rem}header h1{margin-top:0}a{color:var(--a1);text-decoration:none}a:hover{color:var(--a2);text-decoration:underline}h1 a,h2 a,main nav a{color:var(--f2);text-decoration:none}h1 a:hover,h2 a:hover,main nav a:hover{color:var(--a3);text-decoration:none}article{padding-bottom:.2rem}abbr[title]{border-bottom:var(--bw) dotted;text-decoration:none;cursor:help}mark{background-color:var(--c4);color:var(--c1);vertical-align:baseline;padding:.1rem .4rem}blockquote{margin-left:0;padding:.5rem 0 .5rem 1.5rem;border-left:0.25rem solid var(--c3)}blockquote>:last-child{margin-bottom:0}small{font-size:.875rem}.footnote-definition sup,.footnote-definition p{display:inline}sub,sup{font-size:.75em;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}address,blockquote,dl,figure,form,ol,p,pre,table,ul{margin:var(--s1) 0;color:var(--f1);font-style:normal;font-weight:var(--fw);font-size:var(--fs)}ul,ol{padding-right:0;padding-left:var(--s2)}ul li,ol li{margin-bottom:var(--s1)}ul li{list-style:square}ins{color:var(--cg);text-decoration:none}del{color:var(--cr)}main{display:flex}main article,main div{flex:1 1 0;min-width:0}body{width:100%;margin:0}body>header,body>main,body>footer{width:100%;margin-right:auto;margin-left:auto;padding:var(--s1)}@media (min-width: 1200px){body>header,body>main,body>footer{min-width:1200px;max-width:60%}}body header,body main{padding-top:0;margin-top:0;padding-bottom:0;margin-bottom:0}body header hr,body main hr{margin:0.1rem 0}body footer hr{margin:0.5rem 0}.cnav{color:var(--a3)}main nav{margin-top:var(--s2)}.off{color:var(--c4);font-weight:var(--fh);border:0.1rem solid var(--c3);border-radius:var(--br);padding:0.1rem var(--s1);margin:.1rem}main nav a,main nav a:visited{font-weight:var(--fh);border:0.1rem solid var(--c4);border-radius:var(--br);padding:0.1rem var(--s1);margin:.1rem}main nav a:hover{border-color:var(--a3)}header>nav>div:first-of-type{display:inline;min-width:fit-content;padding-right:var(--s1)}header>nav>div:nth-child(2){margin-left:auto;padding-right:var(--s1)}nav>div{margin:var(--s1) 0;display:block}nav>div ul,nav>div h2{line-height:2;margin:0;padding:0}nav{align-items:center;justify-content:center;display:flex}nav div h2{font-size:1rem}nav div h2:hover{color:var(--a3)}nav h1,nav h2,nav div ul{margin-bottom:0;margin-top:0.2rem}nav ul li{display:inline-block;margin:0 0.2rem;position:relative;text-align:left}@media (max-width: 768px){header nav{display:flex;flex-direction:column}header nav h1{margin:var(--s2) 0 var(--s1)}header nav div{margin:auto}}img,video,svg{max-width:100%;height:auto}embed,iframe,object{max-width:100%}iframe{border-style:none;width:100%;height:100%;border:0;overflow:hidden}table{border-collapse:collapse;width:100%;text-indent:0}table caption{margin-bottom:.5rem}tr{border-bottom:var(--bw) solid var(--c3)}td,th{padding:var(--s1)}th{text-align:left}table tbody tr:nth-child(even){background-color:var(--c2)}table thead tr{border-top:var(--bw) solid var(--c3);background-color:var(--c2)}pre,code,kbd,samp,tt,var{border-radius:var(--br);background:var(--c2);font-family:var(--fm);line-height:initial;font-size:.8rem;padding:.3rem .2rem}pre{display:block;overflow-x:auto;-ms-overflow-style:scrollbar;white-space:pre}pre>code{display:block;background:transparent}kbd{background-color:var(--f2);color:var(--c1);vertical-align:baseline;font-size:1rem;padding:.2rem}hr{box-sizing:content-box;height:0;overflow:visible;border:none;border-top:1px solid var(--f1)}header hr,footer hr{border-top:1px solid var(--c4)}figure{display:block;margin:0;padding:0;overflow-x:auto}figure figcaption{padding:var(--s1) 0;color:var(--c4)}button,input,select,textarea{margin:0;padding:0.2rem var(--s1);max-width:100%;background:var(--c2);border:0;border-radius:.25rem;font:inherit;line-height:var(--fs);color:var(--f1)}button,[type="button" i],[type="submit" i],[type="reset" i]{-webkit-appearance:button;display:inline-block;text-align:center;white-space:nowrap;background:var(--c2);color:var(--f1);border:0;cursor:pointer;transition:opacity .25s}button:hover,[type="button" i]:hover,[type="submit" i]:hover,[type="reset" i]:hover{opacity:.75}button[disabled],[type="button" i][disabled],[type="submit" i][disabled],[type="reset" i][disabled]{opacity:.5}fieldset{padding:.5rem .75rem;border:var(--bw) solid var(--c3);border-radius:.25rem}legend{padding:0 .25rem}label{cursor:pointer;display:block;margin-bottom:.25rem}select,input:not([size]):not([type="button" i]):not([type="submit" i]):not([type="reset" i]):not([type="checkbox" i]):not([type="radio" i]){width:100%}[type="color" i]{min-height:2.125rem}select:not([multiple]):not([size]){padding-right:1.5rem;background-repeat:no-repeat;background-position:right .5rem center;-moz-appearance:none;-webkit-appearance:none;appearance:none}textarea{width:100%;resize:vertical}textarea:not([rows]){height:8rem}div:empty{display:none}#suggestions{z-index:9;background:var(--c1);border:2px solid var(--c3);position:absolute;right:0;margin-top:var(--s1);width:500px;max-height:500px;overflow:auto}#suggestions a,#results a{display:block;text-decoration:none;padding:var(--s1);margin:0 var(--s1)}#suggestions a:hover,#suggestions a:focus,#results a:hover,#results a:focus{background:var(--c2)}#suggestions span,#results span{line-height:1.5;display:block}#suggestions span:first-child,#results span:first-child{font-weight:var(--fh)}#suggestions span:nth-child(2),#results span:nth-child(2){color:var(--f1)}nav>div>form>div:last-of-type{display:block;position:relative;width:100%}.searchd{display:flex;align-items:center;white-space:nowrap}.searchd>input{max-width:15.3rem;padding-right:2.4rem}.searchd>button{margin-left:-2.4rem}@media (max-width: 768px){.searchd>input{max-width:100%;flex-grow:1}#suggestions{position:static;left:0;width:100%}}main .toc{max-width:15rem;min-width:14rem;margin-left:var(--s1)}main .toc-item{padding:.4rem 0;color:var(--f1)}main .toc-item a,main .toc-item-child a{color:var(--f1)}main .toc-item a:hover,main .toc-item-child a:hover{cursor:pointer;color:var(--a2);text-decoration:underline}main .toc-item a.active,main .toc-item-child a.active{color:var(--a2)}main .toc-item-child{padding:0 var(--s1);color:var(--f1)}.toc-sticky{border-radius:var(--br);border-top:5px solid var(--a1);background-color:var(--c2);position:sticky;top:var(--s2);margin-top:var(--s2);padding:0 var(--s2) var(--s2);max-height:100vh;overflow:auto}@media (max-width: 768px){.toc{display:none}}.bitbucket{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%2328f' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M14.2 15.3H9.8L8.7 8.7h6.6ZM2.8 3.2A.7.7 0 0 0 2 4l3.4 16c.1.4.6.8 1 .8h11a.7.7 0 0 0 .6-.6l4-16.1a.7.7 0 0 0-.7-.9Z'/%3E%3C/svg%3E")}.buymeacoffee{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fd0' d='m7.9 11.7.8 8.3c.2 2 .8 2 3.6 2 2.3 0 2.8-.1 3-2l.8-9.3c-3.3-1-4 2-8.2 1z'/%3E%3Cpath fill='%23777' d='M18.8 4.3c-.6-.1-.6-1-.7-1.9-.2-1.6-1.2-2-4-2.2-3-.4-8.6-.2-8.5 1.6 0 1.7 4.8 2.2 9.7 1.6.8-.1.6-1.5-.2-1.4-3.6.5-7.4 0-7.4-.2 0-.3 3.3-.5 5-.4 4.5.3 3.7.3 4.2 2.2.2 1 0 .9-.7 1-3 .3-6 .2-9-.2C4.7 4 4.3 4.4 4 6c-.8 2.7 1 2.8 2.1 3 4.8.7 7.7.3 10.3.2.8-.1.6.5.6 1.2l-1.3 10.8c-.1 1.4-1.4 1.4-4 1.5-2.7.2-3.3-.5-3.5-1.6L7.1 10c-.1-1-1.5-.6-1.4.3l1.1 10.8C7.1 24 9.4 24 12.2 24c2.6 0 4.6-.3 5-3.2l1-11.3c.2-.9.3-.7 1-.9 1.8-.8 1-4.2-.4-4.3zm-.3 3a38 38 0 0 1-12.6.2c-1.4-.2-.9-2 0-1.9 4.5.7 8.7.7 12 0 1.4-.2 1.1 1.7.6 1.8z' /%3E%3C/svg%3E")}.docker{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%2329e' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M4 19.8S7 20 8 18m-4-7h3v3H4Zm3 0h3v3H7Zm3 0h3v3h-3ZM7 8h3v3H7Zm3 0h3v3h-3Zm0-3h3v3h-3Zm10 8c-1 0-1 0-1.4-1.9C18.5 10 17 10 17 12c0 1 0 2-3 2H1a9 9 0 0 0 3 6c3 2 5 2 9 1a10.8 10.8 90 0 0 5-4c1-2 1-1 3-2s1-2 0-2Z'/%3E%3C/svg%3E%0A")}.element{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%231c8' viewBox='0 0 24 24'%3E%3Cpath d='M12 0C5 0 0 6 0 12s6 12 12 12 12-6 12-12A12 12 0 0 0 12 0Zm-1 4c4 0 6 3 6 6 0 2-2 2-2 0s-2-4-4-4-2-2 0-2Zm-7 9c0-4 3-6 6-6 2 0 2 2 0 2s-4 2-4 4-2 2-2 0Zm9 7c-4 0-6-3-6-6 0-2 2-2 2 0s2.4 4 4 4c2 0 2 2 0 2Zm1-3c-2 0-2-2 0-2s4-2 4-4 2-2 2 0c0 4-3 6-6 6Z'/%3E%3C/svg%3E")}.facebook{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23359' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z'/%3E%3C/svg%3E")}.github{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23888' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M9 19c-5 1.5-5-2.5-7-3m14 6v-3.9a3.4 3.4 0 0 0-1-2.6c3.2-.3 6.5-1.5 6.5-7A5.4 5.4 0 0 0 20 4.8 5 5 0 0 0 20 1s-1.3-.3-4 1.5a13.4 13.4 0 0 0-7 0C6.3.6 5 1 5 1a5 5 0 0 0 0 3.8 5.4 5.4 0 0 0-1.5 3.7c0 5.5 3.3 6.7 6.4 7a3.4 3.4 0 0 0-.9 2.6V22'/%3E%3C/svg%3E")}.github-sponsor{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23c49' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M20 4c-5-3-8 2-8 4 0-2-3-7-8-4-4 2-6 10 8 18 14-8 12-16 8-18z'/%3E%3C/svg%3E")}.gitlab{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e62' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M22.6 14.4 12 22 1.3 14.4a.8.8 0 0 1-.3-1l1.3-3.7 2.4-7.5a.4.4 0 0 1 .1-.2.4.4 0 0 1 .6 0 .4.4 0 0 1 .1.2L8 9.7h8l2.5-7.5a.4.4 0 0 1 .1-.2.4.4 0 0 1 .6 0 .4.4 0 0 1 0 .2l2.5 7.5 1.3 3.8a.8.8 0 0 1-.3.9z'/%3E%3C/svg%3E")}.instagram{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e07' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Crect x='2' y='2' width='20' height='20' rx='5' ry='5'/%3E%3Cpath d='M16 11.4A4 4 0 1 1 12.6 8a4 4 0 0 1 3.4 3.4zm1.5-4.9h.01'/%3E%3C/svg%3E")}.linkedin{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%2326a' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6zM2 9h4v12H2z'/%3E%3Ccircle cx='4' cy='4' r='2'/%3E%3C/svg%3E")}.mail{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23888' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='m22 6-10 7L2 6m2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2Z'/%3E%3C/svg%3E")}.mastodon{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2328c' viewBox='0 0 24 24'%3E%3Cpath d='M2 8c0 5.7-.2 12.6 5 14 2 .6 3.7.7 5 .6 2.4-.1 3.8-.9 3.8-.9l-.1-1.8s-1.7.6-3.7.5c-1.9 0-4-.2-4.2-2.6a5 5 90 0 1 0-.7c4 1 7.5.5 8.4.4 2.7-.4 5-2 5.3-3.6.5-2.4.4-5.8.4-5.8C22 3.4 19 2 19 2 15.9.6 8 .6 5.1 2c0 0-3 1.4-3 6zm4.5-2.3c1.2-1.4 3.8-1.5 5 .3l.5.9.6-1c1.1-1.7 3.7-1.6 4.9-.2 1.1 1.3.9 2.5.9 8.4H16V8.6c0-2.4-3-2.5-3 .3v3h-2V9c0-2.8-3-2.7-3-.3V14H5.6c0-5.9-.2-7.1 1-8.4z'/%3E%3C/svg%3E")}.pinterest{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23b01' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='m8 20 4-9m-1.3 3c.4 1.3 1.4 2 2.5 2 2.1 0 3.8-1.6 3.8-4a5 5 0 1 0-9.7 1.7'/%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3C/svg%3E")}.python{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%2326a' d='M17 6c0 4-1 5-6 5-4 0-5 1-5 6-4 0-5-1-5-6 0-3 1-4.5 4-4.5h7c0-.5 0-.5-1-.5H6c0-3 0-5 6-5 5 0 5 2 5 5ZM9 3C7.5 3 7.5 5 9 5s1.5-2 0-2Z'/%3E%3Cpath fill='%23fc1' d='M23 12c0 3-1 4.6-4 4.5h-7v.5h6c0 4 0 6-6 6-5 0-5-2-5-6s1-5 6-5c4 0 5-1 5-6 4 0 5 1 5 6Zm-8 7c-1.5 0-1.5 2 0 2s1.5-2 0-2Z' /%3E%3C/svg%3E")}.researchgate{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='none' stroke-width='2' fill='%230db' viewBox='0 0 24 24'%3E%3Cpath d='M16 5c0 3.5.7 5 3 5s3.7-1.3 3.3-5h-3v1.3H21c0 1.9-.7 2.7-2 2.5-1.3 0-1.8-.7-1.8-3.2 0-2.4.4-3.3 1.5-3.4 1-.2 1.7.2 2.2 1.1L22 3c-.4-1.3-1.4-2-2.9-2C17.2 1 16 2 16 5ZM8 6.2l-6 .2v.9c1 .3 2 0 2 2.2v11C4 22 3 22 2 22.2v.8h6.6v-.8C7 22 6 22 6 20.5v-5.2h2a46 46 0 0 0 4 5.7 5 5 0 0 0 5 2v-1c-3 0-5-5-7-7 6-1 6-10-2-8.8ZM6 14V7.6C14 6 13 14 8 14Z'/%3E%3C/svg%3E")}.rss{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e94' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9M4 4a16 16 0 0 1 16 16'/%3E%3Ccircle cx='5' cy='19' r='1'/%3E%3C/svg%3E")}.search{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23888' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.stack{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e72' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M4 17v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1M8 16h8m-7.7-3.4 8 .8M8.8 9.2l7.8 1.6m-6.5-5 7.6 2.4'/%3E%3C/svg%3E")}.twitch{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23a7f' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7'/%3E%3C/svg%3E")}.twitter{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%232ad' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M23 3a10.9 10.9 0 0 1-3.1 1.5 4.5 4.5 0 0 0-7.9 3v1A10.7 10.7 0 0 1 3 4s-4 9 5 13a11.6 11.6 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0 0-.8A7.7 7.7 0 0 0 23 3z'/%3E%3C/svg%3E")}.x{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23f00' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M18 6 6 18M6 6l12 12'/%3E%3C/svg%3E")}.youtube{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23f00' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='m9.8 15 5.7-3.3-5.8-3.2V15Zm12.7-8.6a2.8 2.8 0 0 0-1.9-2C18.9 4 12 4 12 4s-6.9 0-8.6.5a2.8 2.8 0 0 0-2 2 29 29 0 0 0-.4 5.3 29 29 0 0 0 .5 5.3A2.8 2.8 0 0 0 3.4 19c1.7.5 8.6.5 8.6.5s6.9 0 8.6-.5a2.8 2.8 0 0 0 2-2 29 29 0 0 0 .4-5.3 29 29 0 0 0-.5-5.3z'/%3E%3C/svg%3E")}.svg{width:48px;height:48px;display:inline-block;overflow:hidden;vertical-align:middle}.svgs{width:var(--fs);height:var(--fs);display:inline-block;overflow:hidden;vertical-align:middle}@font-face{font-family:'Roboto';src:local("Roboto"),url("/font/Roboto.woff2");font-display:swap}@font-face{font-family:'Roboto';src:local("Roboto-Italic"),url("/font/Roboto-Italic.woff2");font-style:italic;font-display:swap}@font-face{font-family:'Roboto';src:local("Roboto-Bold"),url("/font/Roboto-Bold.woff2");font-weight:bold;font-display:swap}:root{--ff: "Roboto", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Noto Sans", Helvetica, Arial, sans-serif;--fm: ui-monospace, Menlo, Monaco, Consolas, "SF Mono", "Cascadia Mono", "Segoe UI Mono", "DejaVu Sans Mono", "Liberation Mono", "Roboto Mono", "Oxygen Mono", "Ubuntu Monospace", "Ubuntu Mono", "Source Code Pro", "Fira Mono", "Droid Sans Mono", "Courier New", Courier, monospace;--f1: #ccc;--f2: #ddd;--c1: #111;--c2: #123;--c3: #345;--c4: #789;--a1: #09f;--a2: #0bf;--a3: #0af;--cg: #483;--cr: #e33}
diff --git a/dist/abridge-dark.css b/dist/abridge-dark.css
new file mode 100644
index 0000000..009f9a7
--- /dev/null
+++ b/dist/abridge-dark.css
@@ -0,0 +1 @@
+:root{--s1: .5rem;--s2: 1rem;--rc: .5rem;--br: 0.25rem;--bw: 0.0625rem;--ow: 0.1875rem;--fs: 1rem;--lh: 1.5;--lhh: 1.2;--fw: 400;--fh: 700}@media (min-width: 576px){:root{--fs: 1rem}}@media (min-width: 768px){:root{--fs: 1.04rem}}@media (min-width: 992px){:root{--fs: 1.08rem}}@media (min-width: 1200px){:root{--fs: 1.12rem}}*,*::before,*::after{box-sizing:border-box}html{text-rendering:optimizeLegibility;background-color:var(--c1);color:var(--f1);font-family:var(--ff);font-weight:var(--fw);font-size:var(--fs);line-height:var(--lh)}.c{text-align:center}h1,h2,h3,h4,h5,h6{padding-left:0;color:var(--f2);margin-bottom:var(--s1);margin-top:var(--s2);font-weight:var(--fh);font-size:var(--fs);line-height:var(--lhh)}h1{font-size:2rem}h2{font-size:1.75rem}h3{font-size:1.5rem}h4{font-size:1.25rem}h5{font-size:1.125rem}header h1{margin-top:0}a{color:var(--a1);text-decoration:none}a:hover{color:var(--a2);text-decoration:underline}h1 a,h2 a,main nav a{color:var(--f2);text-decoration:none}h1 a:hover,h2 a:hover,main nav a:hover{color:var(--a3);text-decoration:none}article{padding-bottom:.2rem}abbr[title]{border-bottom:var(--bw) dotted;text-decoration:none;cursor:help}mark{background-color:var(--c4);color:var(--c1);vertical-align:baseline;padding:.1rem .4rem}blockquote{margin-left:0;padding:.5rem 0 .5rem 1.5rem;border-left:0.25rem solid var(--c3)}blockquote>:last-child{margin-bottom:0}small{font-size:.875rem}.footnote-definition sup,.footnote-definition p{display:inline}sub,sup{font-size:.75em;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}address,blockquote,dl,figure,form,ol,p,pre,table,ul{margin:var(--s1) 0;color:var(--f1);font-style:normal;font-weight:var(--fw);font-size:var(--fs)}ul,ol{padding-right:0;padding-left:var(--s2)}ul li,ol li{margin-bottom:var(--s1)}ul li{list-style:square}ins{color:var(--cg);text-decoration:none}del{color:var(--cr)}main{display:flex}main article,main div{flex:1 1 0;min-width:0}body{width:100%;margin:0}body>header,body>main,body>footer{width:100%;margin-right:auto;margin-left:auto;padding:var(--s1)}@media (min-width: 1200px){body>header,body>main,body>footer{min-width:1200px;max-width:60%}}body header,body main{padding-top:0;margin-top:0;padding-bottom:0;margin-bottom:0}body header hr,body main hr{margin:0.1rem 0}body footer hr{margin:0.5rem 0}.cnav{color:var(--a3)}main nav{margin-top:var(--s2)}.off{color:var(--c4);font-weight:var(--fh);border:0.1rem solid var(--c3);border-radius:var(--br);padding:0.1rem var(--s1);margin:.1rem}main nav a,main nav a:visited{font-weight:var(--fh);border:0.1rem solid var(--c4);border-radius:var(--br);padding:0.1rem var(--s1);margin:.1rem}main nav a:hover{border-color:var(--a3)}header>nav>div:first-of-type{display:inline;min-width:fit-content;padding-right:var(--s1)}header>nav>div:nth-child(2){margin-left:auto;padding-right:var(--s1)}nav>div{margin:var(--s1) 0;display:block}nav>div ul,nav>div h2{line-height:2;margin:0;padding:0}nav{align-items:center;justify-content:center;display:flex}nav div h2{font-size:1rem}nav div h2:hover{color:var(--a3)}nav h1,nav h2,nav div ul{margin-bottom:0;margin-top:0.2rem}nav ul li{display:inline-block;margin:0 0.2rem;position:relative;text-align:left}@media (max-width: 768px){header nav{display:flex;flex-direction:column}header nav h1{margin:var(--s2) 0 var(--s1)}header nav div{margin:auto}}img,video,svg{max-width:100%;height:auto}embed,iframe,object{max-width:100%}iframe{border-style:none;width:100%;height:100%;border:0;overflow:hidden}table{border-collapse:collapse;width:100%;text-indent:0}table caption{margin-bottom:.5rem}tr{border-bottom:var(--bw) solid var(--c3)}td,th{padding:var(--s1)}th{text-align:left}table tbody tr:nth-child(even){background-color:var(--c2)}table thead tr{border-top:var(--bw) solid var(--c3);background-color:var(--c2)}pre,code,kbd,samp,tt,var{border-radius:var(--br);background:var(--c2);font-family:var(--fm);line-height:initial;font-size:.8rem;padding:.3rem .2rem}pre{display:block;overflow-x:auto;-ms-overflow-style:scrollbar;white-space:pre}pre>code{display:block;background:transparent}kbd{background-color:var(--f2);color:var(--c1);vertical-align:baseline;font-size:1rem;padding:.2rem}hr{box-sizing:content-box;height:0;overflow:visible;border:none;border-top:1px solid var(--f1)}header hr,footer hr{border-top:1px solid var(--c4)}figure{display:block;margin:0;padding:0;overflow-x:auto}figure figcaption{padding:var(--s1) 0;color:var(--c4)}button,input,select,textarea{margin:0;padding:0.2rem var(--s1);max-width:100%;background:var(--c2);border:0;border-radius:.25rem;font:inherit;line-height:var(--fs);color:var(--f1)}button,[type="button" i],[type="submit" i],[type="reset" i]{-webkit-appearance:button;display:inline-block;text-align:center;white-space:nowrap;background:var(--c2);color:var(--f1);border:0;cursor:pointer;transition:opacity .25s}button:hover,[type="button" i]:hover,[type="submit" i]:hover,[type="reset" i]:hover{opacity:.75}button[disabled],[type="button" i][disabled],[type="submit" i][disabled],[type="reset" i][disabled]{opacity:.5}fieldset{padding:.5rem .75rem;border:var(--bw) solid var(--c3);border-radius:.25rem}legend{padding:0 .25rem}label{cursor:pointer;display:block;margin-bottom:.25rem}select,input:not([size]):not([type="button" i]):not([type="submit" i]):not([type="reset" i]):not([type="checkbox" i]):not([type="radio" i]){width:100%}[type="color" i]{min-height:2.125rem}select:not([multiple]):not([size]){padding-right:1.5rem;background-repeat:no-repeat;background-position:right .5rem center;-moz-appearance:none;-webkit-appearance:none;appearance:none}textarea{width:100%;resize:vertical}textarea:not([rows]){height:8rem}div:empty{display:none}#suggestions{z-index:9;background:var(--c1);border:2px solid var(--c3);position:absolute;right:0;margin-top:var(--s1);width:500px;max-height:500px;overflow:auto}#suggestions a,#results a{display:block;text-decoration:none;padding:var(--s1);margin:0 var(--s1)}#suggestions a:hover,#suggestions a:focus,#results a:hover,#results a:focus{background:var(--c2)}#suggestions span,#results span{line-height:1.5;display:block}#suggestions span:first-child,#results span:first-child{font-weight:var(--fh)}#suggestions span:nth-child(2),#results span:nth-child(2){color:var(--f1)}nav>div>form>div:last-of-type{display:block;position:relative;width:100%}.searchd{display:flex;align-items:center;white-space:nowrap}.searchd>input{max-width:15.3rem;padding-right:2.4rem}.searchd>button{margin-left:-2.4rem}@media (max-width: 768px){.searchd>input{max-width:100%;flex-grow:1}#suggestions{position:static;left:0;width:100%}}main .toc{max-width:15rem;min-width:14rem;margin-left:var(--s1)}main .toc-item{padding:.4rem 0;color:var(--f1)}main .toc-item a,main .toc-item-child a{color:var(--f1)}main .toc-item a:hover,main .toc-item-child a:hover{cursor:pointer;color:var(--a2);text-decoration:underline}main .toc-item a.active,main .toc-item-child a.active{color:var(--a2)}main .toc-item-child{padding:0 var(--s1);color:var(--f1)}.toc-sticky{border-radius:var(--br);border-top:5px solid var(--a1);background-color:var(--c2);position:sticky;top:var(--s2);margin-top:var(--s2);padding:0 var(--s2) var(--s2);max-height:100vh;overflow:auto}@media (max-width: 768px){.toc{display:none}}.bitbucket{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%2328f' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M14.2 15.3H9.8L8.7 8.7h6.6ZM2.8 3.2A.7.7 0 0 0 2 4l3.4 16c.1.4.6.8 1 .8h11a.7.7 0 0 0 .6-.6l4-16.1a.7.7 0 0 0-.7-.9Z'/%3E%3C/svg%3E")}.buymeacoffee{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fd0' d='m7.9 11.7.8 8.3c.2 2 .8 2 3.6 2 2.3 0 2.8-.1 3-2l.8-9.3c-3.3-1-4 2-8.2 1z'/%3E%3Cpath fill='%23777' d='M18.8 4.3c-.6-.1-.6-1-.7-1.9-.2-1.6-1.2-2-4-2.2-3-.4-8.6-.2-8.5 1.6 0 1.7 4.8 2.2 9.7 1.6.8-.1.6-1.5-.2-1.4-3.6.5-7.4 0-7.4-.2 0-.3 3.3-.5 5-.4 4.5.3 3.7.3 4.2 2.2.2 1 0 .9-.7 1-3 .3-6 .2-9-.2C4.7 4 4.3 4.4 4 6c-.8 2.7 1 2.8 2.1 3 4.8.7 7.7.3 10.3.2.8-.1.6.5.6 1.2l-1.3 10.8c-.1 1.4-1.4 1.4-4 1.5-2.7.2-3.3-.5-3.5-1.6L7.1 10c-.1-1-1.5-.6-1.4.3l1.1 10.8C7.1 24 9.4 24 12.2 24c2.6 0 4.6-.3 5-3.2l1-11.3c.2-.9.3-.7 1-.9 1.8-.8 1-4.2-.4-4.3zm-.3 3a38 38 0 0 1-12.6.2c-1.4-.2-.9-2 0-1.9 4.5.7 8.7.7 12 0 1.4-.2 1.1 1.7.6 1.8z' /%3E%3C/svg%3E")}.docker{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%2329e' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M4 19.8S7 20 8 18m-4-7h3v3H4Zm3 0h3v3H7Zm3 0h3v3h-3ZM7 8h3v3H7Zm3 0h3v3h-3Zm0-3h3v3h-3Zm10 8c-1 0-1 0-1.4-1.9C18.5 10 17 10 17 12c0 1 0 2-3 2H1a9 9 0 0 0 3 6c3 2 5 2 9 1a10.8 10.8 90 0 0 5-4c1-2 1-1 3-2s1-2 0-2Z'/%3E%3C/svg%3E%0A")}.element{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%231c8' viewBox='0 0 24 24'%3E%3Cpath d='M12 0C5 0 0 6 0 12s6 12 12 12 12-6 12-12A12 12 0 0 0 12 0Zm-1 4c4 0 6 3 6 6 0 2-2 2-2 0s-2-4-4-4-2-2 0-2Zm-7 9c0-4 3-6 6-6 2 0 2 2 0 2s-4 2-4 4-2 2-2 0Zm9 7c-4 0-6-3-6-6 0-2 2-2 2 0s2.4 4 4 4c2 0 2 2 0 2Zm1-3c-2 0-2-2 0-2s4-2 4-4 2-2 2 0c0 4-3 6-6 6Z'/%3E%3C/svg%3E")}.facebook{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23359' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z'/%3E%3C/svg%3E")}.github{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23888' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M9 19c-5 1.5-5-2.5-7-3m14 6v-3.9a3.4 3.4 0 0 0-1-2.6c3.2-.3 6.5-1.5 6.5-7A5.4 5.4 0 0 0 20 4.8 5 5 0 0 0 20 1s-1.3-.3-4 1.5a13.4 13.4 0 0 0-7 0C6.3.6 5 1 5 1a5 5 0 0 0 0 3.8 5.4 5.4 0 0 0-1.5 3.7c0 5.5 3.3 6.7 6.4 7a3.4 3.4 0 0 0-.9 2.6V22'/%3E%3C/svg%3E")}.github-sponsor{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23c49' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M20 4c-5-3-8 2-8 4 0-2-3-7-8-4-4 2-6 10 8 18 14-8 12-16 8-18z'/%3E%3C/svg%3E")}.gitlab{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e62' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M22.6 14.4 12 22 1.3 14.4a.8.8 0 0 1-.3-1l1.3-3.7 2.4-7.5a.4.4 0 0 1 .1-.2.4.4 0 0 1 .6 0 .4.4 0 0 1 .1.2L8 9.7h8l2.5-7.5a.4.4 0 0 1 .1-.2.4.4 0 0 1 .6 0 .4.4 0 0 1 0 .2l2.5 7.5 1.3 3.8a.8.8 0 0 1-.3.9z'/%3E%3C/svg%3E")}.instagram{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e07' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Crect x='2' y='2' width='20' height='20' rx='5' ry='5'/%3E%3Cpath d='M16 11.4A4 4 0 1 1 12.6 8a4 4 0 0 1 3.4 3.4zm1.5-4.9h.01'/%3E%3C/svg%3E")}.linkedin{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%2326a' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6zM2 9h4v12H2z'/%3E%3Ccircle cx='4' cy='4' r='2'/%3E%3C/svg%3E")}.mail{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23888' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='m22 6-10 7L2 6m2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2Z'/%3E%3C/svg%3E")}.mastodon{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2328c' viewBox='0 0 24 24'%3E%3Cpath d='M2 8c0 5.7-.2 12.6 5 14 2 .6 3.7.7 5 .6 2.4-.1 3.8-.9 3.8-.9l-.1-1.8s-1.7.6-3.7.5c-1.9 0-4-.2-4.2-2.6a5 5 90 0 1 0-.7c4 1 7.5.5 8.4.4 2.7-.4 5-2 5.3-3.6.5-2.4.4-5.8.4-5.8C22 3.4 19 2 19 2 15.9.6 8 .6 5.1 2c0 0-3 1.4-3 6zm4.5-2.3c1.2-1.4 3.8-1.5 5 .3l.5.9.6-1c1.1-1.7 3.7-1.6 4.9-.2 1.1 1.3.9 2.5.9 8.4H16V8.6c0-2.4-3-2.5-3 .3v3h-2V9c0-2.8-3-2.7-3-.3V14H5.6c0-5.9-.2-7.1 1-8.4z'/%3E%3C/svg%3E")}.pinterest{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23b01' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='m8 20 4-9m-1.3 3c.4 1.3 1.4 2 2.5 2 2.1 0 3.8-1.6 3.8-4a5 5 0 1 0-9.7 1.7'/%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3C/svg%3E")}.python{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%2326a' d='M17 6c0 4-1 5-6 5-4 0-5 1-5 6-4 0-5-1-5-6 0-3 1-4.5 4-4.5h7c0-.5 0-.5-1-.5H6c0-3 0-5 6-5 5 0 5 2 5 5ZM9 3C7.5 3 7.5 5 9 5s1.5-2 0-2Z'/%3E%3Cpath fill='%23fc1' d='M23 12c0 3-1 4.6-4 4.5h-7v.5h6c0 4 0 6-6 6-5 0-5-2-5-6s1-5 6-5c4 0 5-1 5-6 4 0 5 1 5 6Zm-8 7c-1.5 0-1.5 2 0 2s1.5-2 0-2Z' /%3E%3C/svg%3E")}.researchgate{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='none' stroke-width='2' fill='%230db' viewBox='0 0 24 24'%3E%3Cpath d='M16 5c0 3.5.7 5 3 5s3.7-1.3 3.3-5h-3v1.3H21c0 1.9-.7 2.7-2 2.5-1.3 0-1.8-.7-1.8-3.2 0-2.4.4-3.3 1.5-3.4 1-.2 1.7.2 2.2 1.1L22 3c-.4-1.3-1.4-2-2.9-2C17.2 1 16 2 16 5ZM8 6.2l-6 .2v.9c1 .3 2 0 2 2.2v11C4 22 3 22 2 22.2v.8h6.6v-.8C7 22 6 22 6 20.5v-5.2h2a46 46 0 0 0 4 5.7 5 5 0 0 0 5 2v-1c-3 0-5-5-7-7 6-1 6-10-2-8.8ZM6 14V7.6C14 6 13 14 8 14Z'/%3E%3C/svg%3E")}.rss{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e94' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9M4 4a16 16 0 0 1 16 16'/%3E%3Ccircle cx='5' cy='19' r='1'/%3E%3C/svg%3E")}.search{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23888' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.stack{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e72' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M4 17v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1M8 16h8m-7.7-3.4 8 .8M8.8 9.2l7.8 1.6m-6.5-5 7.6 2.4'/%3E%3C/svg%3E")}.twitch{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23a7f' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7'/%3E%3C/svg%3E")}.twitter{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%232ad' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M23 3a10.9 10.9 0 0 1-3.1 1.5 4.5 4.5 0 0 0-7.9 3v1A10.7 10.7 0 0 1 3 4s-4 9 5 13a11.6 11.6 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0 0-.8A7.7 7.7 0 0 0 23 3z'/%3E%3C/svg%3E")}.x{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23f00' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M18 6 6 18M6 6l12 12'/%3E%3C/svg%3E")}.youtube{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23f00' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='m9.8 15 5.7-3.3-5.8-3.2V15Zm12.7-8.6a2.8 2.8 0 0 0-1.9-2C18.9 4 12 4 12 4s-6.9 0-8.6.5a2.8 2.8 0 0 0-2 2 29 29 0 0 0-.4 5.3 29 29 0 0 0 .5 5.3A2.8 2.8 0 0 0 3.4 19c1.7.5 8.6.5 8.6.5s6.9 0 8.6-.5a2.8 2.8 0 0 0 2-2 29 29 0 0 0 .4-5.3 29 29 0 0 0-.5-5.3z'/%3E%3C/svg%3E")}.svg{width:48px;height:48px;display:inline-block;overflow:hidden;vertical-align:middle}.svgs{width:var(--fs);height:var(--fs);display:inline-block;overflow:hidden;vertical-align:middle}@font-face{font-family:'Roboto';src:local("Roboto"),url("/font/Roboto.woff2");font-display:swap}@font-face{font-family:'Roboto';src:local("Roboto-Italic"),url("/font/Roboto-Italic.woff2");font-style:italic;font-display:swap}@font-face{font-family:'Roboto';src:local("Roboto-Bold"),url("/font/Roboto-Bold.woff2");font-weight:bold;font-display:swap}:root{--ff: "Roboto", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Noto Sans", Helvetica, Arial, sans-serif;--fm: ui-monospace, Menlo, Monaco, Consolas, "SF Mono", "Cascadia Mono", "Segoe UI Mono", "DejaVu Sans Mono", "Liberation Mono", "Roboto Mono", "Oxygen Mono", "Ubuntu Monospace", "Ubuntu Mono", "Source Code Pro", "Fira Mono", "Droid Sans Mono", "Courier New", Courier, monospace;--f1: #ccc;--f2: #ddd;--c1: #111;--c2: #222;--c3: #333;--c4: #888;--a1: #f90;--a2: #fb0;--a3: #f90;--cg: #483;--cr: #d33}
diff --git a/dist/abridge-light.css b/dist/abridge-light.css
new file mode 100644
index 0000000..35d0af6
--- /dev/null
+++ b/dist/abridge-light.css
@@ -0,0 +1 @@
+:root{--s1: .5rem;--s2: 1rem;--rc: .5rem;--br: 0.25rem;--bw: 0.0625rem;--ow: 0.1875rem;--fs: 1rem;--lh: 1.5;--lhh: 1.2;--fw: 400;--fh: 700}@media (min-width: 576px){:root{--fs: 1rem}}@media (min-width: 768px){:root{--fs: 1.04rem}}@media (min-width: 992px){:root{--fs: 1.08rem}}@media (min-width: 1200px){:root{--fs: 1.12rem}}*,*::before,*::after{box-sizing:border-box}html{text-rendering:optimizeLegibility;background-color:var(--c1);color:var(--f1);font-family:var(--ff);font-weight:var(--fw);font-size:var(--fs);line-height:var(--lh)}.c{text-align:center}h1,h2,h3,h4,h5,h6{padding-left:0;color:var(--f2);margin-bottom:var(--s1);margin-top:var(--s2);font-weight:var(--fh);font-size:var(--fs);line-height:var(--lhh)}h1{font-size:2rem}h2{font-size:1.75rem}h3{font-size:1.5rem}h4{font-size:1.25rem}h5{font-size:1.125rem}header h1{margin-top:0}a{color:var(--a1);text-decoration:none}a:hover{color:var(--a2);text-decoration:underline}h1 a,h2 a,main nav a{color:var(--f2);text-decoration:none}h1 a:hover,h2 a:hover,main nav a:hover{color:var(--a3);text-decoration:none}article{padding-bottom:.2rem}abbr[title]{border-bottom:var(--bw) dotted;text-decoration:none;cursor:help}mark{background-color:var(--c4);color:var(--c1);vertical-align:baseline;padding:.1rem .4rem}blockquote{margin-left:0;padding:.5rem 0 .5rem 1.5rem;border-left:0.25rem solid var(--c3)}blockquote>:last-child{margin-bottom:0}small{font-size:.875rem}.footnote-definition sup,.footnote-definition p{display:inline}sub,sup{font-size:.75em;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}address,blockquote,dl,figure,form,ol,p,pre,table,ul{margin:var(--s1) 0;color:var(--f1);font-style:normal;font-weight:var(--fw);font-size:var(--fs)}ul,ol{padding-right:0;padding-left:var(--s2)}ul li,ol li{margin-bottom:var(--s1)}ul li{list-style:square}ins{color:var(--cg);text-decoration:none}del{color:var(--cr)}main{display:flex}main article,main div{flex:1 1 0;min-width:0}body{width:100%;margin:0}body>header,body>main,body>footer{width:100%;margin-right:auto;margin-left:auto;padding:var(--s1)}@media (min-width: 1200px){body>header,body>main,body>footer{min-width:1200px;max-width:60%}}body header,body main{padding-top:0;margin-top:0;padding-bottom:0;margin-bottom:0}body header hr,body main hr{margin:0.1rem 0}body footer hr{margin:0.5rem 0}.cnav{color:var(--a3)}main nav{margin-top:var(--s2)}.off{color:var(--c4);font-weight:var(--fh);border:0.1rem solid var(--c3);border-radius:var(--br);padding:0.1rem var(--s1);margin:.1rem}main nav a,main nav a:visited{font-weight:var(--fh);border:0.1rem solid var(--c4);border-radius:var(--br);padding:0.1rem var(--s1);margin:.1rem}main nav a:hover{border-color:var(--a3)}header>nav>div:first-of-type{display:inline;min-width:fit-content;padding-right:var(--s1)}header>nav>div:nth-child(2){margin-left:auto;padding-right:var(--s1)}nav>div{margin:var(--s1) 0;display:block}nav>div ul,nav>div h2{line-height:2;margin:0;padding:0}nav{align-items:center;justify-content:center;display:flex}nav div h2{font-size:1rem}nav div h2:hover{color:var(--a3)}nav h1,nav h2,nav div ul{margin-bottom:0;margin-top:0.2rem}nav ul li{display:inline-block;margin:0 0.2rem;position:relative;text-align:left}@media (max-width: 768px){header nav{display:flex;flex-direction:column}header nav h1{margin:var(--s2) 0 var(--s1)}header nav div{margin:auto}}img,video,svg{max-width:100%;height:auto}embed,iframe,object{max-width:100%}iframe{border-style:none;width:100%;height:100%;border:0;overflow:hidden}table{border-collapse:collapse;width:100%;text-indent:0}table caption{margin-bottom:.5rem}tr{border-bottom:var(--bw) solid var(--c3)}td,th{padding:var(--s1)}th{text-align:left}table tbody tr:nth-child(even){background-color:var(--c2)}table thead tr{border-top:var(--bw) solid var(--c3);background-color:var(--c2)}pre,code,kbd,samp,tt,var{border-radius:var(--br);background:var(--c2);font-family:var(--fm);line-height:initial;font-size:.8rem;padding:.3rem .2rem}pre{display:block;overflow-x:auto;-ms-overflow-style:scrollbar;white-space:pre}pre>code{display:block;background:transparent}kbd{background-color:var(--f2);color:var(--c1);vertical-align:baseline;font-size:1rem;padding:.2rem}hr{box-sizing:content-box;height:0;overflow:visible;border:none;border-top:1px solid var(--f1)}header hr,footer hr{border-top:1px solid var(--c4)}figure{display:block;margin:0;padding:0;overflow-x:auto}figure figcaption{padding:var(--s1) 0;color:var(--c4)}button,input,select,textarea{margin:0;padding:0.2rem var(--s1);max-width:100%;background:var(--c2);border:0;border-radius:.25rem;font:inherit;line-height:var(--fs);color:var(--f1)}button,[type="button" i],[type="submit" i],[type="reset" i]{-webkit-appearance:button;display:inline-block;text-align:center;white-space:nowrap;background:var(--c2);color:var(--f1);border:0;cursor:pointer;transition:opacity .25s}button:hover,[type="button" i]:hover,[type="submit" i]:hover,[type="reset" i]:hover{opacity:.75}button[disabled],[type="button" i][disabled],[type="submit" i][disabled],[type="reset" i][disabled]{opacity:.5}fieldset{padding:.5rem .75rem;border:var(--bw) solid var(--c3);border-radius:.25rem}legend{padding:0 .25rem}label{cursor:pointer;display:block;margin-bottom:.25rem}select,input:not([size]):not([type="button" i]):not([type="submit" i]):not([type="reset" i]):not([type="checkbox" i]):not([type="radio" i]){width:100%}[type="color" i]{min-height:2.125rem}select:not([multiple]):not([size]){padding-right:1.5rem;background-repeat:no-repeat;background-position:right .5rem center;-moz-appearance:none;-webkit-appearance:none;appearance:none}textarea{width:100%;resize:vertical}textarea:not([rows]){height:8rem}div:empty{display:none}#suggestions{z-index:9;background:var(--c1);border:2px solid var(--c3);position:absolute;right:0;margin-top:var(--s1);width:500px;max-height:500px;overflow:auto}#suggestions a,#results a{display:block;text-decoration:none;padding:var(--s1);margin:0 var(--s1)}#suggestions a:hover,#suggestions a:focus,#results a:hover,#results a:focus{background:var(--c2)}#suggestions span,#results span{line-height:1.5;display:block}#suggestions span:first-child,#results span:first-child{font-weight:var(--fh)}#suggestions span:nth-child(2),#results span:nth-child(2){color:var(--f1)}nav>div>form>div:last-of-type{display:block;position:relative;width:100%}.searchd{display:flex;align-items:center;white-space:nowrap}.searchd>input{max-width:15.3rem;padding-right:2.4rem}.searchd>button{margin-left:-2.4rem}@media (max-width: 768px){.searchd>input{max-width:100%;flex-grow:1}#suggestions{position:static;left:0;width:100%}}main .toc{max-width:15rem;min-width:14rem;margin-left:var(--s1)}main .toc-item{padding:.4rem 0;color:var(--f1)}main .toc-item a,main .toc-item-child a{color:var(--f1)}main .toc-item a:hover,main .toc-item-child a:hover{cursor:pointer;color:var(--a2);text-decoration:underline}main .toc-item a.active,main .toc-item-child a.active{color:var(--a2)}main .toc-item-child{padding:0 var(--s1);color:var(--f1)}.toc-sticky{border-radius:var(--br);border-top:5px solid var(--a1);background-color:var(--c2);position:sticky;top:var(--s2);margin-top:var(--s2);padding:0 var(--s2) var(--s2);max-height:100vh;overflow:auto}@media (max-width: 768px){.toc{display:none}}.bitbucket{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%2328f' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M14.2 15.3H9.8L8.7 8.7h6.6ZM2.8 3.2A.7.7 0 0 0 2 4l3.4 16c.1.4.6.8 1 .8h11a.7.7 0 0 0 .6-.6l4-16.1a.7.7 0 0 0-.7-.9Z'/%3E%3C/svg%3E")}.buymeacoffee{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fd0' d='m7.9 11.7.8 8.3c.2 2 .8 2 3.6 2 2.3 0 2.8-.1 3-2l.8-9.3c-3.3-1-4 2-8.2 1z'/%3E%3Cpath fill='%23777' d='M18.8 4.3c-.6-.1-.6-1-.7-1.9-.2-1.6-1.2-2-4-2.2-3-.4-8.6-.2-8.5 1.6 0 1.7 4.8 2.2 9.7 1.6.8-.1.6-1.5-.2-1.4-3.6.5-7.4 0-7.4-.2 0-.3 3.3-.5 5-.4 4.5.3 3.7.3 4.2 2.2.2 1 0 .9-.7 1-3 .3-6 .2-9-.2C4.7 4 4.3 4.4 4 6c-.8 2.7 1 2.8 2.1 3 4.8.7 7.7.3 10.3.2.8-.1.6.5.6 1.2l-1.3 10.8c-.1 1.4-1.4 1.4-4 1.5-2.7.2-3.3-.5-3.5-1.6L7.1 10c-.1-1-1.5-.6-1.4.3l1.1 10.8C7.1 24 9.4 24 12.2 24c2.6 0 4.6-.3 5-3.2l1-11.3c.2-.9.3-.7 1-.9 1.8-.8 1-4.2-.4-4.3zm-.3 3a38 38 0 0 1-12.6.2c-1.4-.2-.9-2 0-1.9 4.5.7 8.7.7 12 0 1.4-.2 1.1 1.7.6 1.8z' /%3E%3C/svg%3E")}.docker{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%2329e' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M4 19.8S7 20 8 18m-4-7h3v3H4Zm3 0h3v3H7Zm3 0h3v3h-3ZM7 8h3v3H7Zm3 0h3v3h-3Zm0-3h3v3h-3Zm10 8c-1 0-1 0-1.4-1.9C18.5 10 17 10 17 12c0 1 0 2-3 2H1a9 9 0 0 0 3 6c3 2 5 2 9 1a10.8 10.8 90 0 0 5-4c1-2 1-1 3-2s1-2 0-2Z'/%3E%3C/svg%3E%0A")}.element{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%231c8' viewBox='0 0 24 24'%3E%3Cpath d='M12 0C5 0 0 6 0 12s6 12 12 12 12-6 12-12A12 12 0 0 0 12 0Zm-1 4c4 0 6 3 6 6 0 2-2 2-2 0s-2-4-4-4-2-2 0-2Zm-7 9c0-4 3-6 6-6 2 0 2 2 0 2s-4 2-4 4-2 2-2 0Zm9 7c-4 0-6-3-6-6 0-2 2-2 2 0s2.4 4 4 4c2 0 2 2 0 2Zm1-3c-2 0-2-2 0-2s4-2 4-4 2-2 2 0c0 4-3 6-6 6Z'/%3E%3C/svg%3E")}.facebook{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23359' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z'/%3E%3C/svg%3E")}.github{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23888' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M9 19c-5 1.5-5-2.5-7-3m14 6v-3.9a3.4 3.4 0 0 0-1-2.6c3.2-.3 6.5-1.5 6.5-7A5.4 5.4 0 0 0 20 4.8 5 5 0 0 0 20 1s-1.3-.3-4 1.5a13.4 13.4 0 0 0-7 0C6.3.6 5 1 5 1a5 5 0 0 0 0 3.8 5.4 5.4 0 0 0-1.5 3.7c0 5.5 3.3 6.7 6.4 7a3.4 3.4 0 0 0-.9 2.6V22'/%3E%3C/svg%3E")}.github-sponsor{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23c49' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M20 4c-5-3-8 2-8 4 0-2-3-7-8-4-4 2-6 10 8 18 14-8 12-16 8-18z'/%3E%3C/svg%3E")}.gitlab{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e62' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M22.6 14.4 12 22 1.3 14.4a.8.8 0 0 1-.3-1l1.3-3.7 2.4-7.5a.4.4 0 0 1 .1-.2.4.4 0 0 1 .6 0 .4.4 0 0 1 .1.2L8 9.7h8l2.5-7.5a.4.4 0 0 1 .1-.2.4.4 0 0 1 .6 0 .4.4 0 0 1 0 .2l2.5 7.5 1.3 3.8a.8.8 0 0 1-.3.9z'/%3E%3C/svg%3E")}.instagram{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e07' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Crect x='2' y='2' width='20' height='20' rx='5' ry='5'/%3E%3Cpath d='M16 11.4A4 4 0 1 1 12.6 8a4 4 0 0 1 3.4 3.4zm1.5-4.9h.01'/%3E%3C/svg%3E")}.linkedin{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%2326a' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6zM2 9h4v12H2z'/%3E%3Ccircle cx='4' cy='4' r='2'/%3E%3C/svg%3E")}.mail{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23888' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='m22 6-10 7L2 6m2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2Z'/%3E%3C/svg%3E")}.mastodon{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2328c' viewBox='0 0 24 24'%3E%3Cpath d='M2 8c0 5.7-.2 12.6 5 14 2 .6 3.7.7 5 .6 2.4-.1 3.8-.9 3.8-.9l-.1-1.8s-1.7.6-3.7.5c-1.9 0-4-.2-4.2-2.6a5 5 90 0 1 0-.7c4 1 7.5.5 8.4.4 2.7-.4 5-2 5.3-3.6.5-2.4.4-5.8.4-5.8C22 3.4 19 2 19 2 15.9.6 8 .6 5.1 2c0 0-3 1.4-3 6zm4.5-2.3c1.2-1.4 3.8-1.5 5 .3l.5.9.6-1c1.1-1.7 3.7-1.6 4.9-.2 1.1 1.3.9 2.5.9 8.4H16V8.6c0-2.4-3-2.5-3 .3v3h-2V9c0-2.8-3-2.7-3-.3V14H5.6c0-5.9-.2-7.1 1-8.4z'/%3E%3C/svg%3E")}.pinterest{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23b01' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='m8 20 4-9m-1.3 3c.4 1.3 1.4 2 2.5 2 2.1 0 3.8-1.6 3.8-4a5 5 0 1 0-9.7 1.7'/%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3C/svg%3E")}.python{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%2326a' d='M17 6c0 4-1 5-6 5-4 0-5 1-5 6-4 0-5-1-5-6 0-3 1-4.5 4-4.5h7c0-.5 0-.5-1-.5H6c0-3 0-5 6-5 5 0 5 2 5 5ZM9 3C7.5 3 7.5 5 9 5s1.5-2 0-2Z'/%3E%3Cpath fill='%23fc1' d='M23 12c0 3-1 4.6-4 4.5h-7v.5h6c0 4 0 6-6 6-5 0-5-2-5-6s1-5 6-5c4 0 5-1 5-6 4 0 5 1 5 6Zm-8 7c-1.5 0-1.5 2 0 2s1.5-2 0-2Z' /%3E%3C/svg%3E")}.researchgate{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='none' stroke-width='2' fill='%230db' viewBox='0 0 24 24'%3E%3Cpath d='M16 5c0 3.5.7 5 3 5s3.7-1.3 3.3-5h-3v1.3H21c0 1.9-.7 2.7-2 2.5-1.3 0-1.8-.7-1.8-3.2 0-2.4.4-3.3 1.5-3.4 1-.2 1.7.2 2.2 1.1L22 3c-.4-1.3-1.4-2-2.9-2C17.2 1 16 2 16 5ZM8 6.2l-6 .2v.9c1 .3 2 0 2 2.2v11C4 22 3 22 2 22.2v.8h6.6v-.8C7 22 6 22 6 20.5v-5.2h2a46 46 0 0 0 4 5.7 5 5 0 0 0 5 2v-1c-3 0-5-5-7-7 6-1 6-10-2-8.8ZM6 14V7.6C14 6 13 14 8 14Z'/%3E%3C/svg%3E")}.rss{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e94' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9M4 4a16 16 0 0 1 16 16'/%3E%3Ccircle cx='5' cy='19' r='1'/%3E%3C/svg%3E")}.search{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23888' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.stack{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e72' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M4 17v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1M8 16h8m-7.7-3.4 8 .8M8.8 9.2l7.8 1.6m-6.5-5 7.6 2.4'/%3E%3C/svg%3E")}.twitch{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23a7f' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7'/%3E%3C/svg%3E")}.twitter{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%232ad' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M23 3a10.9 10.9 0 0 1-3.1 1.5 4.5 4.5 0 0 0-7.9 3v1A10.7 10.7 0 0 1 3 4s-4 9 5 13a11.6 11.6 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0 0-.8A7.7 7.7 0 0 0 23 3z'/%3E%3C/svg%3E")}.x{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23f00' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M18 6 6 18M6 6l12 12'/%3E%3C/svg%3E")}.youtube{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23f00' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='m9.8 15 5.7-3.3-5.8-3.2V15Zm12.7-8.6a2.8 2.8 0 0 0-1.9-2C18.9 4 12 4 12 4s-6.9 0-8.6.5a2.8 2.8 0 0 0-2 2 29 29 0 0 0-.4 5.3 29 29 0 0 0 .5 5.3A2.8 2.8 0 0 0 3.4 19c1.7.5 8.6.5 8.6.5s6.9 0 8.6-.5a2.8 2.8 0 0 0 2-2 29 29 0 0 0 .4-5.3 29 29 0 0 0-.5-5.3z'/%3E%3C/svg%3E")}.svg{width:48px;height:48px;display:inline-block;overflow:hidden;vertical-align:middle}.svgs{width:var(--fs);height:var(--fs);display:inline-block;overflow:hidden;vertical-align:middle}@font-face{font-family:'Roboto';src:local("Roboto"),url("/font/Roboto.woff2");font-display:swap}@font-face{font-family:'Roboto';src:local("Roboto-Italic"),url("/font/Roboto-Italic.woff2");font-style:italic;font-display:swap}@font-face{font-family:'Roboto';src:local("Roboto-Bold"),url("/font/Roboto-Bold.woff2");font-weight:bold;font-display:swap}:root{--ff: "Roboto", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Noto Sans", Helvetica, Arial, sans-serif;--fm: ui-monospace, Menlo, Monaco, Consolas, "SF Mono", "Cascadia Mono", "Segoe UI Mono", "DejaVu Sans Mono", "Liberation Mono", "Roboto Mono", "Oxygen Mono", "Ubuntu Monospace", "Ubuntu Mono", "Source Code Pro", "Fira Mono", "Droid Sans Mono", "Courier New", Courier, monospace;--f1: #444;--f2: #333;--c1: #fff;--c2: #eee;--c3: #ddd;--c4: #767676;--a1: #c40;--a2: #e60;--a3: #e60;--cg: #483;--cr: #d33}
diff --git a/dist/abridge.css b/dist/abridge.css
new file mode 100644
index 0000000..4924916
--- /dev/null
+++ b/dist/abridge.css
@@ -0,0 +1 @@
+:root{--s1: .5rem;--s2: 1rem;--rc: .5rem;--br: 0.25rem;--bw: 0.0625rem;--ow: 0.1875rem;--fs: 1rem;--lh: 1.5;--lhh: 1.2;--fw: 400;--fh: 700}@media (min-width: 576px){:root{--fs: 1rem}}@media (min-width: 768px){:root{--fs: 1.04rem}}@media (min-width: 992px){:root{--fs: 1.08rem}}@media (min-width: 1200px){:root{--fs: 1.12rem}}*,*::before,*::after{box-sizing:border-box}html{text-rendering:optimizeLegibility;background-color:var(--c1);color:var(--f1);font-family:var(--ff);font-weight:var(--fw);font-size:var(--fs);line-height:var(--lh)}.c{text-align:center}h1,h2,h3,h4,h5,h6{padding-left:0;color:var(--f2);margin-bottom:var(--s1);margin-top:var(--s2);font-weight:var(--fh);font-size:var(--fs);line-height:var(--lhh)}h1{font-size:2rem}h2{font-size:1.75rem}h3{font-size:1.5rem}h4{font-size:1.25rem}h5{font-size:1.125rem}header h1{margin-top:0}a{color:var(--a1);text-decoration:none}a:hover{color:var(--a2);text-decoration:underline}h1 a,h2 a,main nav a{color:var(--f2);text-decoration:none}h1 a:hover,h2 a:hover,main nav a:hover{color:var(--a3);text-decoration:none}article{padding-bottom:.2rem}abbr[title]{border-bottom:var(--bw) dotted;text-decoration:none;cursor:help}mark{background-color:var(--c4);color:var(--c1);vertical-align:baseline;padding:.1rem .4rem}blockquote{margin-left:0;padding:.5rem 0 .5rem 1.5rem;border-left:0.25rem solid var(--c3)}blockquote>:last-child{margin-bottom:0}small{font-size:.875rem}.footnote-definition sup,.footnote-definition p{display:inline}sub,sup{font-size:.75em;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}address,blockquote,dl,figure,form,ol,p,pre,table,ul{margin:var(--s1) 0;color:var(--f1);font-style:normal;font-weight:var(--fw);font-size:var(--fs)}ul,ol{padding-right:0;padding-left:var(--s2)}ul li,ol li{margin-bottom:var(--s1)}ul li{list-style:square}ins{color:var(--cg);text-decoration:none}del{color:var(--cr)}main{display:flex}main article,main div{flex:1 1 0;min-width:0}body{width:100%;margin:0}body>header,body>main,body>footer{width:100%;margin-right:auto;margin-left:auto;padding:var(--s1)}@media (min-width: 1200px){body>header,body>main,body>footer{min-width:1200px;max-width:60%}}body header,body main{padding-top:0;margin-top:0;padding-bottom:0;margin-bottom:0}body header hr,body main hr{margin:0.1rem 0}body footer hr{margin:0.5rem 0}.cnav{color:var(--a3)}main nav{margin-top:var(--s2)}.off{color:var(--c4);font-weight:var(--fh);border:0.1rem solid var(--c3);border-radius:var(--br);padding:0.1rem var(--s1);margin:.1rem}main nav a,main nav a:visited{font-weight:var(--fh);border:0.1rem solid var(--c4);border-radius:var(--br);padding:0.1rem var(--s1);margin:.1rem}main nav a:hover{border-color:var(--a3)}header>nav>div:first-of-type{display:inline;min-width:fit-content;padding-right:var(--s1)}header>nav>div:nth-child(2){margin-left:auto;padding-right:var(--s1)}nav>div{margin:var(--s1) 0;display:block}nav>div ul,nav>div h2{line-height:2;margin:0;padding:0}nav{align-items:center;justify-content:center;display:flex}nav div h2{font-size:1rem}nav div h2:hover{color:var(--a3)}nav h1,nav h2,nav div ul{margin-bottom:0;margin-top:0.2rem}nav ul li{display:inline-block;margin:0 0.2rem;position:relative;text-align:left}@media (max-width: 768px){header nav{display:flex;flex-direction:column}header nav h1{margin:var(--s2) 0 var(--s1)}header nav div{margin:auto}}img,video,svg{max-width:100%;height:auto}embed,iframe,object{max-width:100%}iframe{border-style:none;width:100%;height:100%;border:0;overflow:hidden}table{border-collapse:collapse;width:100%;text-indent:0}table caption{margin-bottom:.5rem}tr{border-bottom:var(--bw) solid var(--c3)}td,th{padding:var(--s1)}th{text-align:left}table tbody tr:nth-child(even){background-color:var(--c2)}table thead tr{border-top:var(--bw) solid var(--c3);background-color:var(--c2)}pre,code,kbd,samp,tt,var{border-radius:var(--br);background:var(--c2);font-family:var(--fm);line-height:initial;font-size:.8rem;padding:.3rem .2rem}pre{display:block;overflow-x:auto;-ms-overflow-style:scrollbar;white-space:pre}pre>code{display:block;background:transparent}kbd{background-color:var(--f2);color:var(--c1);vertical-align:baseline;font-size:1rem;padding:.2rem}hr{box-sizing:content-box;height:0;overflow:visible;border:none;border-top:1px solid var(--f1)}header hr,footer hr{border-top:1px solid var(--c4)}figure{display:block;margin:0;padding:0;overflow-x:auto}figure figcaption{padding:var(--s1) 0;color:var(--c4)}button,input,select,textarea{margin:0;padding:0.2rem var(--s1);max-width:100%;background:var(--c2);border:0;border-radius:.25rem;font:inherit;line-height:var(--fs);color:var(--f1)}button,[type="button" i],[type="submit" i],[type="reset" i]{-webkit-appearance:button;display:inline-block;text-align:center;white-space:nowrap;background:var(--c2);color:var(--f1);border:0;cursor:pointer;transition:opacity .25s}button:hover,[type="button" i]:hover,[type="submit" i]:hover,[type="reset" i]:hover{opacity:.75}button[disabled],[type="button" i][disabled],[type="submit" i][disabled],[type="reset" i][disabled]{opacity:.5}fieldset{padding:.5rem .75rem;border:var(--bw) solid var(--c3);border-radius:.25rem}legend{padding:0 .25rem}label{cursor:pointer;display:block;margin-bottom:.25rem}select,input:not([size]):not([type="button" i]):not([type="submit" i]):not([type="reset" i]):not([type="checkbox" i]):not([type="radio" i]){width:100%}[type="color" i]{min-height:2.125rem}select:not([multiple]):not([size]){padding-right:1.5rem;background-repeat:no-repeat;background-position:right .5rem center;-moz-appearance:none;-webkit-appearance:none;appearance:none}textarea{width:100%;resize:vertical}textarea:not([rows]){height:8rem}div:empty{display:none}#suggestions{z-index:9;background:var(--c1);border:2px solid var(--c3);position:absolute;right:0;margin-top:var(--s1);width:500px;max-height:500px;overflow:auto}#suggestions a,#results a{display:block;text-decoration:none;padding:var(--s1);margin:0 var(--s1)}#suggestions a:hover,#suggestions a:focus,#results a:hover,#results a:focus{background:var(--c2)}#suggestions span,#results span{line-height:1.5;display:block}#suggestions span:first-child,#results span:first-child{font-weight:var(--fh)}#suggestions span:nth-child(2),#results span:nth-child(2){color:var(--f1)}nav>div>form>div:last-of-type{display:block;position:relative;width:100%}.searchd{display:flex;align-items:center;white-space:nowrap}.searchd>input{max-width:15.3rem;padding-right:2.4rem}.searchd>button{margin-left:-2.4rem}@media (max-width: 768px){.searchd>input{max-width:100%;flex-grow:1}#suggestions{position:static;left:0;width:100%}}main .toc{max-width:15rem;min-width:14rem;margin-left:var(--s1)}main .toc-item{padding:.4rem 0;color:var(--f1)}main .toc-item a,main .toc-item-child a{color:var(--f1)}main .toc-item a:hover,main .toc-item-child a:hover{cursor:pointer;color:var(--a2);text-decoration:underline}main .toc-item a.active,main .toc-item-child a.active{color:var(--a2)}main .toc-item-child{padding:0 var(--s1);color:var(--f1)}.toc-sticky{border-radius:var(--br);border-top:5px solid var(--a1);background-color:var(--c2);position:sticky;top:var(--s2);margin-top:var(--s2);padding:0 var(--s2) var(--s2);max-height:100vh;overflow:auto}@media (max-width: 768px){.toc{display:none}}.bitbucket{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%2328f' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M14.2 15.3H9.8L8.7 8.7h6.6ZM2.8 3.2A.7.7 0 0 0 2 4l3.4 16c.1.4.6.8 1 .8h11a.7.7 0 0 0 .6-.6l4-16.1a.7.7 0 0 0-.7-.9Z'/%3E%3C/svg%3E")}.buymeacoffee{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fd0' d='m7.9 11.7.8 8.3c.2 2 .8 2 3.6 2 2.3 0 2.8-.1 3-2l.8-9.3c-3.3-1-4 2-8.2 1z'/%3E%3Cpath fill='%23777' d='M18.8 4.3c-.6-.1-.6-1-.7-1.9-.2-1.6-1.2-2-4-2.2-3-.4-8.6-.2-8.5 1.6 0 1.7 4.8 2.2 9.7 1.6.8-.1.6-1.5-.2-1.4-3.6.5-7.4 0-7.4-.2 0-.3 3.3-.5 5-.4 4.5.3 3.7.3 4.2 2.2.2 1 0 .9-.7 1-3 .3-6 .2-9-.2C4.7 4 4.3 4.4 4 6c-.8 2.7 1 2.8 2.1 3 4.8.7 7.7.3 10.3.2.8-.1.6.5.6 1.2l-1.3 10.8c-.1 1.4-1.4 1.4-4 1.5-2.7.2-3.3-.5-3.5-1.6L7.1 10c-.1-1-1.5-.6-1.4.3l1.1 10.8C7.1 24 9.4 24 12.2 24c2.6 0 4.6-.3 5-3.2l1-11.3c.2-.9.3-.7 1-.9 1.8-.8 1-4.2-.4-4.3zm-.3 3a38 38 0 0 1-12.6.2c-1.4-.2-.9-2 0-1.9 4.5.7 8.7.7 12 0 1.4-.2 1.1 1.7.6 1.8z' /%3E%3C/svg%3E")}.docker{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%2329e' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M4 19.8S7 20 8 18m-4-7h3v3H4Zm3 0h3v3H7Zm3 0h3v3h-3ZM7 8h3v3H7Zm3 0h3v3h-3Zm0-3h3v3h-3Zm10 8c-1 0-1 0-1.4-1.9C18.5 10 17 10 17 12c0 1 0 2-3 2H1a9 9 0 0 0 3 6c3 2 5 2 9 1a10.8 10.8 90 0 0 5-4c1-2 1-1 3-2s1-2 0-2Z'/%3E%3C/svg%3E%0A")}.element{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%231c8' viewBox='0 0 24 24'%3E%3Cpath d='M12 0C5 0 0 6 0 12s6 12 12 12 12-6 12-12A12 12 0 0 0 12 0Zm-1 4c4 0 6 3 6 6 0 2-2 2-2 0s-2-4-4-4-2-2 0-2Zm-7 9c0-4 3-6 6-6 2 0 2 2 0 2s-4 2-4 4-2 2-2 0Zm9 7c-4 0-6-3-6-6 0-2 2-2 2 0s2.4 4 4 4c2 0 2 2 0 2Zm1-3c-2 0-2-2 0-2s4-2 4-4 2-2 2 0c0 4-3 6-6 6Z'/%3E%3C/svg%3E")}.facebook{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23359' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z'/%3E%3C/svg%3E")}.github{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23888' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M9 19c-5 1.5-5-2.5-7-3m14 6v-3.9a3.4 3.4 0 0 0-1-2.6c3.2-.3 6.5-1.5 6.5-7A5.4 5.4 0 0 0 20 4.8 5 5 0 0 0 20 1s-1.3-.3-4 1.5a13.4 13.4 0 0 0-7 0C6.3.6 5 1 5 1a5 5 0 0 0 0 3.8 5.4 5.4 0 0 0-1.5 3.7c0 5.5 3.3 6.7 6.4 7a3.4 3.4 0 0 0-.9 2.6V22'/%3E%3C/svg%3E")}.github-sponsor{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23c49' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M20 4c-5-3-8 2-8 4 0-2-3-7-8-4-4 2-6 10 8 18 14-8 12-16 8-18z'/%3E%3C/svg%3E")}.gitlab{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e62' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M22.6 14.4 12 22 1.3 14.4a.8.8 0 0 1-.3-1l1.3-3.7 2.4-7.5a.4.4 0 0 1 .1-.2.4.4 0 0 1 .6 0 .4.4 0 0 1 .1.2L8 9.7h8l2.5-7.5a.4.4 0 0 1 .1-.2.4.4 0 0 1 .6 0 .4.4 0 0 1 0 .2l2.5 7.5 1.3 3.8a.8.8 0 0 1-.3.9z'/%3E%3C/svg%3E")}.instagram{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e07' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Crect x='2' y='2' width='20' height='20' rx='5' ry='5'/%3E%3Cpath d='M16 11.4A4 4 0 1 1 12.6 8a4 4 0 0 1 3.4 3.4zm1.5-4.9h.01'/%3E%3C/svg%3E")}.linkedin{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%2326a' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6zM2 9h4v12H2z'/%3E%3Ccircle cx='4' cy='4' r='2'/%3E%3C/svg%3E")}.mail{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23888' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='m22 6-10 7L2 6m2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2Z'/%3E%3C/svg%3E")}.mastodon{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2328c' viewBox='0 0 24 24'%3E%3Cpath d='M2 8c0 5.7-.2 12.6 5 14 2 .6 3.7.7 5 .6 2.4-.1 3.8-.9 3.8-.9l-.1-1.8s-1.7.6-3.7.5c-1.9 0-4-.2-4.2-2.6a5 5 90 0 1 0-.7c4 1 7.5.5 8.4.4 2.7-.4 5-2 5.3-3.6.5-2.4.4-5.8.4-5.8C22 3.4 19 2 19 2 15.9.6 8 .6 5.1 2c0 0-3 1.4-3 6zm4.5-2.3c1.2-1.4 3.8-1.5 5 .3l.5.9.6-1c1.1-1.7 3.7-1.6 4.9-.2 1.1 1.3.9 2.5.9 8.4H16V8.6c0-2.4-3-2.5-3 .3v3h-2V9c0-2.8-3-2.7-3-.3V14H5.6c0-5.9-.2-7.1 1-8.4z'/%3E%3C/svg%3E")}.pinterest{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23b01' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='m8 20 4-9m-1.3 3c.4 1.3 1.4 2 2.5 2 2.1 0 3.8-1.6 3.8-4a5 5 0 1 0-9.7 1.7'/%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3C/svg%3E")}.python{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%2326a' d='M17 6c0 4-1 5-6 5-4 0-5 1-5 6-4 0-5-1-5-6 0-3 1-4.5 4-4.5h7c0-.5 0-.5-1-.5H6c0-3 0-5 6-5 5 0 5 2 5 5ZM9 3C7.5 3 7.5 5 9 5s1.5-2 0-2Z'/%3E%3Cpath fill='%23fc1' d='M23 12c0 3-1 4.6-4 4.5h-7v.5h6c0 4 0 6-6 6-5 0-5-2-5-6s1-5 6-5c4 0 5-1 5-6 4 0 5 1 5 6Zm-8 7c-1.5 0-1.5 2 0 2s1.5-2 0-2Z' /%3E%3C/svg%3E")}.researchgate{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='none' stroke-width='2' fill='%230db' viewBox='0 0 24 24'%3E%3Cpath d='M16 5c0 3.5.7 5 3 5s3.7-1.3 3.3-5h-3v1.3H21c0 1.9-.7 2.7-2 2.5-1.3 0-1.8-.7-1.8-3.2 0-2.4.4-3.3 1.5-3.4 1-.2 1.7.2 2.2 1.1L22 3c-.4-1.3-1.4-2-2.9-2C17.2 1 16 2 16 5ZM8 6.2l-6 .2v.9c1 .3 2 0 2 2.2v11C4 22 3 22 2 22.2v.8h6.6v-.8C7 22 6 22 6 20.5v-5.2h2a46 46 0 0 0 4 5.7 5 5 0 0 0 5 2v-1c-3 0-5-5-7-7 6-1 6-10-2-8.8ZM6 14V7.6C14 6 13 14 8 14Z'/%3E%3C/svg%3E")}.rss{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e94' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9M4 4a16 16 0 0 1 16 16'/%3E%3Ccircle cx='5' cy='19' r='1'/%3E%3C/svg%3E")}.search{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23888' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.stack{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23e72' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M4 17v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1M8 16h8m-7.7-3.4 8 .8M8.8 9.2l7.8 1.6m-6.5-5 7.6 2.4'/%3E%3C/svg%3E")}.twitch{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23a7f' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7'/%3E%3C/svg%3E")}.twitter{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%232ad' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M23 3a10.9 10.9 0 0 1-3.1 1.5 4.5 4.5 0 0 0-7.9 3v1A10.7 10.7 0 0 1 3 4s-4 9 5 13a11.6 11.6 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0 0-.8A7.7 7.7 0 0 0 23 3z'/%3E%3C/svg%3E")}.x{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23f00' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='M18 6 6 18M6 6l12 12'/%3E%3C/svg%3E")}.youtube{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='%23f00' stroke-width='2' fill='none' viewBox='0 0 24 24'%3E%3Cpath d='m9.8 15 5.7-3.3-5.8-3.2V15Zm12.7-8.6a2.8 2.8 0 0 0-1.9-2C18.9 4 12 4 12 4s-6.9 0-8.6.5a2.8 2.8 0 0 0-2 2 29 29 0 0 0-.4 5.3 29 29 0 0 0 .5 5.3A2.8 2.8 0 0 0 3.4 19c1.7.5 8.6.5 8.6.5s6.9 0 8.6-.5a2.8 2.8 0 0 0 2-2 29 29 0 0 0 .4-5.3 29 29 0 0 0-.5-5.3z'/%3E%3C/svg%3E")}.svg{width:48px;height:48px;display:inline-block;overflow:hidden;vertical-align:middle}.svgs{width:var(--fs);height:var(--fs);display:inline-block;overflow:hidden;vertical-align:middle}@font-face{font-family:'Roboto';src:local("Roboto"),url("/font/Roboto.woff2");font-display:swap}@font-face{font-family:'Roboto';src:local("Roboto-Italic"),url("/font/Roboto-Italic.woff2");font-style:italic;font-display:swap}@font-face{font-family:'Roboto';src:local("Roboto-Bold"),url("/font/Roboto-Bold.woff2");font-weight:bold;font-display:swap}:root{--ff: "Roboto", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Noto Sans", Helvetica, Arial, sans-serif;--fm: ui-monospace, Menlo, Monaco, Consolas, "SF Mono", "Cascadia Mono", "Segoe UI Mono", "DejaVu Sans Mono", "Liberation Mono", "Roboto Mono", "Oxygen Mono", "Ubuntu Monospace", "Ubuntu Mono", "Source Code Pro", "Fira Mono", "Droid Sans Mono", "Courier New", Courier, monospace;--f1: #444;--f2: #333;--c1: #fff;--c2: #eee;--c3: #ddd;--c4: #767676;--a1: #c40;--a2: #e60;--a3: #e60;--cg: #483;--cr: #d33}@media (prefers-color-scheme: dark){:root{--f1: #ccc;--f2: #ddd;--c1: #111;--c2: #222;--c3: #333;--c4: #888;--a1: #f90;--a2: #fb0;--a3: #f90}}
diff --git a/sass/_imports.scss b/sass/_imports.scss
index eee4a91..01c5e52 100644
--- a/sass/_imports.scss
+++ b/sass/_imports.scss
@@ -29,11 +29,11 @@
@import "include/scroller"; // figure
@import "include/button"; // button, a[role=button], type=button, type=submit ...
@import "include/form"; // input, select, textarea, label, fieldset, legend (If you import this, you should also import button)
-@import "include/grid"; // section infinite grid -- test/rework this similar to hnav and milligram in that it should collapse to a single column as the page becomes narrow
@import "include/search"; // Zola Search - elasticlunr site-wide search
@import "include/toc"; // Zola TOC - Table of Content Menu (recent posts & index), sticky (floats top right)
@import "include/icons"; // svg icons
+//@import "include/grid"; // section infinite grid -- test/rework this similar to hnav and milligram in that it should collapse to a single column as the page becomes narrow
//@import "include/misc"; // template, [hidden], dialog, canvas
diff --git a/sass/_variables.scss b/sass/_variables.scss
index 0f65c61..e4de650 100644
--- a/sass/_variables.scss
+++ b/sass/_variables.scss
@@ -103,3 +103,75 @@ $icon-moon: false !default;// dark moon
$icon-sun: false !default;// light sun
$icon-x: true !default;// x symbol
// add an icon link to an html template like this: <a href="#"><span class="svg home"></span></a>
+
+:root {
+ // Spacings
+ --s1: .5rem;
+ --s2: 1rem;
+ --rc: .5rem; //radius corners
+
+ // Borders
+ --br: 0.25rem; //border radius
+ --bw: 0.0625rem; //border width
+ --ow: 0.1875rem; //outline width
+
+ --fs: 1rem; //font-size
+ --lh: 1.5; //line-height
+ --lhh: 1.2; //line-height headers
+ --fw: 400; //font-weight
+ --fh: 700; //font-weight h1-h6
+
+ // Responsive typography
+ @if $enable-responsive-typography {
+ @if map-get($breakpoints, "sm") {
+ @media (min-width: map-get($breakpoints, "sm")) {
+ --fs: 1rem;
+ }
+ }
+ @if map-get($breakpoints, "md") {
+ @media (min-width: map-get($breakpoints, "md")) {
+ --fs: 1.04rem;
+ }
+ }
+ @if map-get($breakpoints, "lg") {
+ @media (min-width: map-get($breakpoints, "lg")) {
+ --fs: 1.08rem;
+ }
+ }
+ @if map-get($breakpoints, "xl") {
+ @media (min-width: map-get($breakpoints, "xl")) {
+ --fs: 1.12rem;
+ }
+ }
+ }
+
+ // Responsives spacings
+ @if $enable-responsive-spacings {
+ // Sectionning
+ body > header,
+ body > main,
+ body > footer,
+ section {
+ @if map-get($breakpoints, "sm") {
+ @media (min-width: map-get($breakpoints, "sm")) {
+ --s1: .5rem;
+ }
+ }
+ @if map-get($breakpoints, "md") {
+ @media (min-width: map-get($breakpoints, "md")) {
+ --s1: .6rem;
+ }
+ }
+ @if map-get($breakpoints, "lg") {
+ @media (min-width: map-get($breakpoints, "lg")) {
+ --s1: .7rem;
+ }
+ }
+ @if map-get($breakpoints, "xl") {
+ @media (min-width: map-get($breakpoints, "xl")) {
+ --s1: .8rem;
+ }
+ }
+ }
+ }
+}
diff --git a/sass/include/_document.scss b/sass/include/_document.scss
index 31f43ac..a5f91db 100644
--- a/sass/include/_document.scss
+++ b/sass/include/_document.scss
@@ -1,44 +1,3 @@
-:root {
- // Spacings
- --s1: .5rem;
- --s2: 1rem;
- --rc: .5rem; //radius corners
-
- // Borders
- --br: 0.25rem; //border radius
- --bw: 0.0625rem; //border width
- --ow: 0.1875rem; //outline width
-
- // Responsives spacings
- @if $enable-responsive-spacings {
- // Sectionning
- body > header,
- body > main,
- body > footer,
- section {
- @if map-get($breakpoints, "sm") {
- @media (min-width: map-get($breakpoints, "sm")) {
- --s1: .5rem;
- }
- }
- @if map-get($breakpoints, "md") {
- @media (min-width: map-get($breakpoints, "md")) {
- --s1: .6rem;
- }
- }
- @if map-get($breakpoints, "lg") {
- @media (min-width: map-get($breakpoints, "lg")) {
- --s1: .7rem;
- }
- }
- @if map-get($breakpoints, "xl") {
- @media (min-width: map-get($breakpoints, "xl")) {
- --s1: .8rem;
- }
- }
- }
- }
-}
// Document: Content-box & Responsive typography
// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`
diff --git a/sass/include/_nav.scss b/sass/include/_nav.scss
index 7cbc0f7..f28d92f 100644
--- a/sass/include/_nav.scss
+++ b/sass/include/_nav.scss
@@ -27,17 +27,23 @@ main nav a:visited {//pagination link styling
main nav a:hover {//makes border of pagination links hover color
border-color: var(--a3);
}
-header > nav > div:first-of-type {//puts logo on left and menu/search on right
- margin-left: auto
+header > nav > div:first-of-type {//Keep the logo from wrapping
+ display: inline;
+ min-width: fit-content;
+ padding-right: var(--s1);//add some spacing between nav divs
+}
+header > nav > div:nth-child(2) {//puts logo on left and menu/search on right
+ margin-left: auto;
+ padding-right: var(--s1);//add some spacing between nav divs
}
nav > div {
- ul {
+ ul, h2 {
line-height: 2;
- margin-top: 0;
- padding-bottom: var(--s1);
+ margin: 0;
+ padding: 0;
}
+ margin: var(--s1) 0;
display: block;
- margin-left: var(--s1);//add some spacing between nav divs
}
nav {
align-items: center;
@@ -49,11 +55,9 @@ nav {
color: var(--a3);
}
}
- header {
- display: inline;
- }
- header h1, div ul {
- margin-bottom: 0
+ h1, h2, div ul {
+ margin-bottom: 0;
+ margin-top: 0.2rem;
}
ul li {
display: inline-block;
@@ -68,11 +72,8 @@ nav {
header nav {
display: flex;
flex-direction: column;
- header h1 {
- margin-top: var(--s2);
- }
- header {
- text-align: center
+ h1 {
+ margin: var(--s2) 0 var(--s1);
}
div {
margin: auto // keeps top menu/search centered in mobile view
diff --git a/sass/include/_typography.scss b/sass/include/_typography.scss
index b964426..97f1e3e 100644
--- a/sass/include/_typography.scss
+++ b/sass/include/_typography.scss
@@ -1,35 +1,7 @@
-:root {
- --fs: 1rem; //font-size
- --lh: 1.5; //line-height
- --lhh: 1.2; //line-height headers
- --fw: 400; //font-weight
- --fh: 700; //font-weight h1-h6
- // Responsive typography
- @if $enable-responsive-typography {
- @if map-get($breakpoints, "sm") {
- @media (min-width: map-get($breakpoints, "sm")) {
- --fs: 1rem;
- }
- }
- @if map-get($breakpoints, "md") {
- @media (min-width: map-get($breakpoints, "md")) {
- --fs: 1.04rem;
- }
- }
- @if map-get($breakpoints, "lg") {
- @media (min-width: map-get($breakpoints, "lg")) {
- --fs: 1.08rem;
- }
- }
- @if map-get($breakpoints, "xl") {
- @media (min-width: map-get($breakpoints, "xl")) {
- --fs: 1.12rem;
- }
- }
- }
-}
-
// Typography
+.c {
+ text-align: center;// The <center> does not pass validation, use: <div class="c"></div>
+}
h1,
h2,
h3,
diff --git a/screenshot.png b/screenshot.png
index 3c49a32..b773b17 100644
--- a/screenshot.png
+++ b/screenshot.png
Binary files differ
diff --git a/static/lite-vimeo.min.js b/static/lite-vimeo.min.js
deleted file mode 100644
index 692eea0..0000000
--- a/static/lite-vimeo.min.js
+++ /dev/null
@@ -1 +0,0 @@
-let LiteVimeoEmbed=(()=>{class i extends HTMLElement{constructor(){super(),this.iframeLoaded=!1,this.setupDom()}static get observedAttributes(){return["videoid"]}connectedCallback(){this.addEventListener("pointerover",i.warmConnections,{once:!0}),this.addEventListener("click",()=>this.addIframe())}get videoId(){return encodeURIComponent(this.getAttribute("videoid")||"")}set videoId(e){this.setAttribute("videoid",e)}get videoTitle(){return this.getAttribute("videotitle")||"Video"}set videoTitle(e){this.setAttribute("videotitle",e)}get videoPlay(){return this.getAttribute("videoPlay")||"Play"}set videoPlay(e){this.setAttribute("videoPlay",e)}get videoStartAt(){return this.getAttribute("videoPlay")||"0s"}set videoStartAt(e){this.setAttribute("videoPlay",e)}get autoLoad(){return this.hasAttribute("autoload")}set autoLoad(e){e?this.setAttribute("autoload",""):this.removeAttribute("autoload")}get autoPlay(){return this.hasAttribute("autoplay")}set autoPlay(e){e?this.setAttribute("autoplay","autoplay"):this.removeAttribute("autoplay")}setupDom(){const e=this.attachShadow({mode:"open"});e.innerHTML=`<style>:host{contain:content;display:block;position:relative;width:100%;padding-bottom:calc(100% / (16 / 9))}#fallbackPlaceholder,#frame,iframe{position:absolute;width:100%;height:100%}#frame{cursor:pointer}#fallbackPlaceholder{object-fit:cover}#frame::before{content:'';display:block;position:absolute;top:0;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==);background-position:top;background-repeat:repeat-x;height:60px;padding-bottom:50px;width:100%;transition:all .2s cubic-bezier(0,0,.2,1);z-index:1}.lvo-playbtn{width:70px;height:46px;background-color:#212121;z-index:1;opacity:.8;border-radius:10%;transition:all .2s cubic-bezier(0,0,.2,1);border:0}#frame:hover .lvo-playbtn{background-color:#62afed;opacity:1}.lvo-playbtn:before{content:'';border-style:solid;border-width:11px 0 11px 19px;border-color:transparent transparent transparent #fff}.lvo-playbtn,.lvo-playbtn:before{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.lvo-activated{cursor:unset}#frame.lvo-activated::before,.lvo-activated .lvo-playbtn{display:none}</style><div id="frame"><picture><source id="webpPlaceholder" type="image/webp"><source id="jpegPlaceholder" type="image/jpeg"><img id="fallbackPlaceholder" referrerpolicy="origin"></picture><button class="lvo-playbtn"></button></div> `,this.domRefFrame=this.shadowRoot.querySelector("#frame"),this.domRefImg={fallback:this.shadowRoot.querySelector("#fallbackPlaceholder"),webp:this.shadowRoot.querySelector("#webpPlaceholder"),jpeg:this.shadowRoot.querySelector("#jpegPlaceholder")},this.domRefPlayButton=this.shadowRoot.querySelector(".lvo-playbtn")}setupComponent(){this.initImagePlaceholder(),this.domRefPlayButton.setAttribute("aria-label",this.videoPlay+": "+this.videoTitle),this.setAttribute("title",this.videoPlay+": "+this.videoTitle),this.autoLoad&&this.initIntersectionObserver()}attributeChangedCallback(e,t,o){"videoid"===e&&t!==o&&(this.setupComponent(),this.domRefFrame.classList.contains("lvo-activated")&&(this.domRefFrame.classList.remove("lvo-activated"),this.shadowRoot.querySelector("iframe").remove()))}addIframe(){var e;this.iframeLoaded||(e=this.autoLoad&&this.autoPlay||!this.autoLoad?"autoplay=1":"",e=new URL(`/video/${this.videoId}?${e}&#t=`+this.videoStartAt,"https://player.vimeo.com/"),this.domRefFrame.insertAdjacentHTML("beforeend",`<iframe frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen src="${e}"></iframe>`),this.domRefFrame.classList.add("lvo-activated"),this.iframeLoaded=!0)}async initImagePlaceholder(){i.addPrefetch("preconnect","https://i.vimeocdn.com/");var e=`https://vimeo.com/api/v2/video/${this.videoId}.json`;let t=(await(await fetch(e)).json())[0].thumbnail_large;var e=t.substr(t.lastIndexOf("/")+1).split("_")[0],o=`https://i.vimeocdn.com/video/${e}.jpg?mw=1100&mh=619&q=70`;this.domRefImg.webp.srcset=`https://i.vimeocdn.com/video/${e}.webp?mw=1100&mh=619&q=70`,this.domRefImg.jpeg.srcset=o,this.domRefImg.fallback.src=o,this.domRefImg.fallback.setAttribute("aria-label",this.videoPlay+": "+this.videoTitle),this.domRefImg.fallback.setAttribute("alt",this.videoPlay+": "+this.videoTitle)}initIntersectionObserver(){if("IntersectionObserver"in window&&"IntersectionObserverEntry"in window){const e=new IntersectionObserver((e,t)=>{e.forEach(e=>{e.isIntersecting&&!this.iframeLoaded&&(i.warmConnections(),this.addIframe(),t.unobserve(this))})},{root:null,rootMargin:"0px",threshold:0});e.observe(this)}}static addPrefetch(e,t,o){const i=document.createElement("link");i.rel=e,i.href=t,o&&(i.as=o),i.crossOrigin="true",document.head.append(i)}static warmConnections(){i.preconnected||(i.addPrefetch("preconnect","https://f.vimeocdn.com"),i.addPrefetch("preconnect","https://player.vimeo.com"),i.addPrefetch("preconnect","https://i.vimeocdn.com"),i.preconnected=!0)}}return i.preconnected=!1,i})();customElements.define("lite-vimeo",LiteVimeoEmbed);export{LiteVimeoEmbed};
diff --git a/templates/base.html b/templates/base.html
index 0bbd48d..b1a3615 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -5,9 +5,9 @@
<!DOCTYPE html>
<html lang="{{ config.extra.language_code | default(value="en-US") }}">
<head>
- <meta charset="utf-8">
- <meta http-equiv="x-ua-compatible" content="ie=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+ <meta charset="utf-8" />
+ <meta http-equiv="x-ua-compatible" content="ie=edge" />
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
{{- macros_head::resource() }}
{{- macros_head::stylesheet() }}
{%- block seo %}
@@ -19,29 +19,30 @@
{%- endblock seo %}
{{- macros_head::favicons() }}
{{- macros_head::security() }}
- <meta name="HandheldFriendly" content="True">
- <meta name="mobile-web-app-capable" content="yes">
- <meta name="apple-mobile-web-app-capable" content="yes">
- <meta name="apple-mobile-web-app-status-bar-style" content="default">
+ <meta name="HandheldFriendly" content="True" />
+ <meta name="mobile-web-app-capable" content="yes" />
+ <meta name="apple-mobile-web-app-capable" content="yes" />
+ <meta name="apple-mobile-web-app-status-bar-style" content="default" />
{{- macros_head::math() }}
+ <noscript><style>.searchd{display:none;}</style></noscript>
</head>
<body>
{%- block header %}
<header>
<nav>
- <header>
+ <div>
{%- if config.extra.logo %}
- <h1><a href="{{ config.base_url | safe }}{%- if config.extra.uglyurls %}/index.html{%- endif %}">{%- if config.extra.logo.file %}<img src="{{ config.base_url | safe }}/{{ config.extra.logo.file | safe }}" {%- if config.extra.logo.alt %}alt="{{ config.extra.logo.alt | safe }}" {%- endif %}{%- if config.extra.logo.width %}width="{{ config.extra.logo.width | safe }}" {%- endif %}{%- if config.extra.logo.height %}height="{{ config.extra.logo.height | safe }}"{%- endif %}/>{%- endif %}{%- if config.extra.logo.text %}{{ config.extra.logo.text | safe }}{%- endif %}</a></h1>
+ <h1><a href="{{ config.base_url | safe }}{%- if config.extra.uglyurls %}/index.html{%- endif %}">{%- if config.extra.logo.file %}<img src="{{ config.base_url | safe }}/{{ config.extra.logo.file | safe }}"{%- if config.extra.logo.alt %} alt="{{ config.extra.logo.alt | safe }}"{%- endif %}{%- if config.extra.logo.width %} width="{{ config.extra.logo.width | safe }}"{%- endif %}{%- if config.extra.logo.height %} height="{{ config.extra.logo.height | safe }}"{%- endif %} />{%- endif %}{%- if config.extra.logo.text %}{{ config.extra.logo.text | safe }}{%- endif %}</a></h1>
{%- elif config.extra.textlogo %}
<h1><a href="{{ config.base_url | safe }}{%- if config.extra.uglyurls %}/index.html{%- endif %}">{{ config.extra.textlogo | safe }}</a></h1>
{%- elif config.title %}
<h1><a href="{{ config.base_url | safe }}{%- if config.extra.uglyurls %}/index.html{%- endif %}">{{ config.title | safe }}</a></h1>
{%- endif %}
- </header>
+ </div>
<div>
<ul>
{%- for i in config.extra.menu %}
- <li><h2><a href="{{ get_url(path=i.url, trailing_slash=i.slash) }}{%- if i.slash and config.extra.uglyurls %}index.html{%- endif %}">{{ i.name | safe }}</a></h2></li>
+ <li><h2><a href="{{ get_url(path=i.url, trailing_slash=i.slash) }}{%- if i.slash and config.extra.uglyurls %}index.html{%- endif %}">{{ i.name | safe }}</a></h2> </li>
{%- endfor %}
</ul>
</div>
@@ -49,14 +50,8 @@
<div>
<form onsubmit="return goSearch()">
<div class="searchd">
- <input id="userinput" type="search" placeholder="Search" autocomplete="off">
- <button type="submit" title="Search">
- {%- if config.extra.fontawesome %}
- <i class="svgs fa-solid fa-magnifying-glass"></i>
- {%- else %}
- <i class="svgs search"></i>
- {%- endif %}
- </button>
+ <input id="userinput" type="search" placeholder="Search" autocomplete="off" />
+ <button type="submit" title="Search">{%- if config.extra.fontawesome %}<i class="svgs fa-solid fa-magnifying-glass"></i>{%- else %}<i class="svgs search"></i>{%- endif %}</button>
</div>
<div><div id="suggestions"></div></div>
</form>
@@ -69,7 +64,7 @@
{%- endif %}
{%- endif %}
{%- if config.extra.headhr %}
- <hr>
+ <hr />
{%- endif %}
</header>
{%- endblock header %}
@@ -80,9 +75,9 @@
{%- block footer %}
<footer>
{%- if config.extra.foothr %}
- <hr>
+ <hr />
{%- endif %}
- <center>
+ <div class="c">
<p>
{{- social_macros::social_links(social_config=config.extra.social) }}
</p>
@@ -107,9 +102,8 @@
<p>Powered by <a href="https://www.getzola.org/">Zola</a> and <a href="https://github.com/jieiku/abridge/">Abridge</a></p>
{%- endif %}
{%- endif %}
- </center>
+ </div>
</footer>
{%- endblock footer %}
-<noscript><style>.searchd{display:none;}</style></noscript>
</body>
</html> \ No newline at end of file
diff --git a/templates/categories/list.html b/templates/categories/list.html
index 10a8c8b..2c70142 100644
--- a/templates/categories/list.html
+++ b/templates/categories/list.html
@@ -17,10 +17,10 @@
{%- block content %}
<div>
- <center>
+ <div class="c">
<h1>{{ terms | length }} Categories</h1>
<p>{% for term in terms %} [<a href="#{{ term.name }}">{{ term.name }}</a>] {% endfor %}</p>
- </center>
+ </div>
{%- for term in terms %}
<h2 id="{{ term.name }}"><a href="{{ term.permalink | safe }}">{{ term.name }}</a></h2>
{%- for page in term.pages %}
diff --git a/templates/contact.html b/templates/contact.html
index eabb00f..926d6df 100644
--- a/templates/contact.html
+++ b/templates/contact.html
@@ -30,11 +30,11 @@
<form name="contact" method="POST">
<p>
<label>Name</label>
- <input type="text" placeholder="Name" id="name" required data-validation-required-message="Please enter your name.">
+ <input type="text" placeholder="Name" id="name" required data-validation-required-message="Please enter your name." />
</p>
<p>
<label>Email Address</label>
- <input type="email" placeholder="name@example.com" id="email" required data-validation-required-message="Please enter your email address.">
+ <input type="email" placeholder="name@example.com" id="email" required data-validation-required-message="Please enter your email address." />
</p>
<p>
<label>Message</label>
diff --git a/templates/macros/head.html b/templates/macros/head.html
index 9e4d59f..f6090a6 100644
--- a/templates/macros/head.html
+++ b/templates/macros/head.html
@@ -1,32 +1,32 @@
{%- macro stylesheet() %}
- <link rel="stylesheet" href="{{ get_url(path=config.extra.stylesheet, trailing_slash=false, cachebust=true) | safe }}">
+ <link rel="stylesheet" href="{{ get_url(path=config.extra.stylesheet, trailing_slash=false, cachebust=true) | safe }}" />
{%- endmacro %}
{%- macro resource() %}
{%- if config.extra.fonts %}{%- for i in config.extra.fonts %}
{%- if i.url is matching("^http[s]?://") %}
- <link rel="preload" as="style" href="{{ i.url | safe }}" onload="this.onload=null;this.rel='stylesheet'" crossorigin="anonymous">
+ <link rel="preload" as="style" href="{{ i.url | safe }}" onload="this.onload=null;this.rel='stylesheet'" crossorigin="anonymous" />
{%- else %}
- <link rel="preload" as="font" href="{{ get_url(path=i.url, trailing_slash=false) | safe }}" type="font/woff2" crossorigin>
+ <link rel="preload" as="font" href="{{ get_url(path=i.url, trailing_slash=false) | safe }}" type="font/woff2" crossorigin />
{%- endif %}
{%- endfor %}{%- endif %}
{%- if config.extra.fontawesome %}
- <link rel="preload" href="{{ config.extra.fontawesome | safe }}" as="style" onload="this.onload=null;this.rel='stylesheet'" crossorigin="anonymous">
+ <link rel="preload" href="{{ config.extra.fontawesome | safe }}" as="style" onload="this.onload=null;this.rel='stylesheet'" crossorigin="anonymous" />
{%- endif %}
{%- if config.build_search_index %}
{%- if config.extra.js_search_index %}
- <script defer type="text/javascript" src="{{ get_url(path=config.extra.js_search_index, trailing_slash=false, cachebust=true) | safe }}"></script>
+ <script defer src="{{ get_url(path=config.extra.js_search_index, trailing_slash=false, cachebust=true) | safe }}"></script>
{%- endif %}
{%- if config.extra.js_search %}
- <script defer type="text/javascript" src="{{ get_url(path=config.extra.js_search, trailing_slash=false, cachebust=true) | safe }}"></script>
+ <script defer src="{{ get_url(path=config.extra.js_search, trailing_slash=false, cachebust=true) | safe }}"></script>
{%- endif %}
{%- endif %}
{%- if config.generate_feed %}
- <link rel="alternate" type="{% if config.feed_filename is containing('atom') %}application/atom+xml{% else %}application/rss+xml{% endif %}" title="Atom/RSS Feed" href="{{ get_url(path=config.feed_filename, trailing_slash=false) | safe }}">
+ <link rel="alternate" type="{% if config.feed_filename is containing('atom') %}application/atom+xml{% else %}application/rss+xml{% endif %}" title="Atom/RSS Feed" href="{{ get_url(path=config.feed_filename, trailing_slash=false) | safe }}" />
{%- endif %}
{%- endmacro %}
@@ -34,19 +34,19 @@
{%- macro favicons() %}
{%- if config.extra.favicon_theme_color %}
- <meta name="theme-color" content="{{ config.extra.favicon_theme_color }}">
+ <meta name="theme-color" content="{{ config.extra.favicon_theme_color }}" />
{%- endif %}
{%- if config.extra.favicon_ms_color %}
- <meta name="msapplication-TileColor" content="{{ config.extra.favicon_ms_color }}">
+ <meta name="msapplication-TileColor" content="{{ config.extra.favicon_ms_color }}" />
{%- endif %}
{%- if config.extra.favicon_webmanifest %}
- <link rel="manifest" href="{{ get_url(path=config.extra.favicon_webmanifest, trailing_slash=false) | safe }}">
+ <link rel="manifest" href="{{ get_url(path=config.extra.favicon_webmanifest, trailing_slash=false) | safe }}" />
{%- endif %}
{%- if config.extra.favicon_mask and config.extra.favicon_mask_color %}
- <link rel="mask-icon" href="{{ get_url(path=config.extra.favicon_mask, trailing_slash=false) | safe }}" color="{{ config.extra.favicon_mask_color }}">
+ <link rel="mask-icon" href="{{ get_url(path=config.extra.favicon_mask, trailing_slash=false) | safe }}" color="{{ config.extra.favicon_mask_color }}" />
{%- endif %}
{%- if config.extra.favicon180 %}
@@ -69,11 +69,11 @@
{#- is_404: using for the 404.html template -#}
{%- macro seo( title="",title_addition="",description="",type="website",is_home=false,is_404=false,is_page=false,page_images="",page_section="",created_time="2021-07-04T07:07:00-07:00", updated_time="2021-07-04T07:07:00-07:00" ) %}
{%- if is_404 -%}
- <meta name="robots" content="noindex, follow">
+ <meta name="robots" content="noindex, follow" />
{%- else -%}
- <meta name="robots" content="index, follow">
- <meta name="googlebot" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1">
- <meta name="bingbot" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1">
+ <meta name="robots" content="index, follow" />
+ <meta name="googlebot" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1" />
+ <meta name="bingbot" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1" />
{%- endif -%}
{%- if current_url %}
@@ -84,25 +84,25 @@
<title>{{ title ~ title_addition }}</title>
{%- if config.extra.author %}
- <meta name="author" content="{{ config.extra.author }}">
+ <meta name="author" content="{{ config.extra.author }}" />
{%- endif %}
{%- if config.extra.facebook_publisher %}
- <meta property="article:publisher" content="https://www.facebook.com/{{ config.extra.facebook_publisher }}">
+ <meta property="article:publisher" content="https://www.facebook.com/{{ config.extra.facebook_publisher }}" />
{%- endif %}
- <meta name="copyright" content="{{ title }}">
+ <meta name="copyright" content="{{ title }}" />
{%- if config.extra.facebook_author %}
- <meta property="article:author" content="https://www.facebook.com/{{ config.extra.facebook_author }}">
+ <meta property="article:author" content="https://www.facebook.com/{{ config.extra.facebook_author }}" />
{%- endif %}
{%- if page.description %}
<meta name="description" content="{{ page.description }}" />
{%- else %}
<meta name="description" content="{{ config.description }}" />
{%- endif %}
- <link rel="canonical" href="{{ page_url | safe }}">
+ <link rel="canonical" href="{{ page_url | safe }}" />
{%- if page.extra.keywords %}
- <meta name="keywords" content="{{ page.extra.keywords }}, {{ config.extra.keywords }}">
+ <meta name="keywords" content="{{ page.extra.keywords }}, {{ config.extra.keywords }}" />
{%- else %}
- <meta name="keywords" content="{{ config.extra.keywords }}">
+ <meta name="keywords" content="{{ config.extra.keywords }}" />
{%- endif %}
{#- Extra SEO START #}
@@ -110,87 +110,87 @@
{%- if not is_404 %}
{%- if config.extra.google %}
- <meta name="google-site-verification" content="{{ config.extra.google | safe }}">
+ <meta name="google-site-verification" content="{{ config.extra.google | safe }}" />
{%- endif %}
{%- if config.extra.bing %}
- <meta name="msvalidate.01" content="{{ config.extra.bing | safe}}">
+ <meta name="msvalidate.01" content="{{ config.extra.bing | safe}}" />
{%- endif %}
- <meta property="og:url" content="{{ page_url | safe }}">
- <meta name="twitter:url" content="{{ page_url | safe }}">
+ <meta property="og:url" content="{{ page_url | safe }}" />
+ <meta name="twitter:url" content="{{ page_url | safe }}" />
{%- if page.description %}
- <meta property="og:description" content="{{ page.description }}">
- <meta name="twitter:description" content="{{ page.description }}">
+ <meta property="og:description" content="{{ page.description }}" />
+ <meta name="twitter:description" content="{{ page.description }}" />
{%- else %}
- <meta property="og:description" content="{{ config.description }}">
- <meta name="twitter:description" content="{{ config.description}}">
+ <meta property="og:description" content="{{ config.description }}" />
+ <meta name="twitter:description" content="{{ config.description}}" />
{%- endif %}
{%- if page.title %}
- <meta property="og:title" content="{{ page.title }} | {{ title }}">
- <meta name="twitter:title" content="{{ page.title }} | {{ title }}">
+ <meta property="og:title" content="{{ page.title }} | {{ title }}" />
+ <meta name="twitter:title" content="{{ page.title }} | {{ title }}" />
{%- else %}
- <meta property="og:title" content="{{ title }}">
- <meta name="twitter:title" content="{{ title }}">
+ <meta property="og:title" content="{{ title }}" />
+ <meta name="twitter:title" content="{{ title }}" />
{%- endif %}
{#- SEO MEDIA START #}
{%- if page.extra.thumbnail %}
- <meta name="twitter:card" content="summary_large_image">
- <meta name="twitter:image" content="{{ get_url(path=page.path ~ page.extra.thumbnail, trailing_slash=false) }}">
- <meta property="og:image" content="{{ get_url(path=page.path ~ page.extra.thumbnail, trailing_slash=false) }}">
+ <meta name="twitter:card" content="summary_large_image" />
+ <meta name="twitter:image" content="{{ get_url(path=page.path ~ page.extra.thumbnail, trailing_slash=false) }}" />
+ <meta property="og:image" content="{{ get_url(path=page.path ~ page.extra.thumbnail, trailing_slash=false) }}" />
{%- elif page.extra.static_thumbnail %}
- <meta name="twitter:card" content="summary_large_image">
+ <meta name="twitter:card" content="summary_large_image" />
{%- if page.extra.static_thumbnail is matching("^http[s]?://") %}
- <meta name="twitter:image" content="{{ page.extra.static_thumbnail }}">
- <meta property="og:image" content="{{ page.extra.static_thumbnail }}">
+ <meta name="twitter:image" content="{{ page.extra.static_thumbnail }}" />
+ <meta property="og:image" content="{{ page.extra.static_thumbnail }}" />
{%- else %}
- <meta name="twitter:image" content="{{ get_url(path=page.extra.static_thumbnail, trailing_slash=false) }}">
- <meta property="og:image" content="{{ get_url(path=page.extra.static_thumbnail, trailing_slash=false) }}">
+ <meta name="twitter:image" content="{{ get_url(path=page.extra.static_thumbnail, trailing_slash=false) }}" />
+ <meta property="og:image" content="{{ get_url(path=page.extra.static_thumbnail, trailing_slash=false) }}" />
{%- endif %}
{%- elif config.extra.banner %}
- <meta name="twitter:card" content="summary_large_image">
- <meta name="twitter:image" content="{{ get_url(path=config.extra.banner, trailing_slash=false) }}">
- <meta property="og:image" content="{{ get_url(path=config.extra.banner, trailing_slash=false) }}">
+ <meta name="twitter:card" content="summary_large_image" />
+ <meta name="twitter:image" content="{{ get_url(path=config.extra.banner, trailing_slash=false) }}" />
+ <meta property="og:image" content="{{ get_url(path=config.extra.banner, trailing_slash=false) }}" />
{%- else %}
- <meta name="twitter:card" content="summary">
+ <meta name="twitter:card" content="summary" />
{%- endif %}
{%- if config.extra.open.audio %}
- <meta property="og:audio" content="{{ config.extra.open.audio }}">
+ <meta property="og:audio" content="{{ config.extra.open.audio }}" />
{%- endif %}
{%- if config.extra.open.locale %}
- <meta property="og:locale" content="{{ config.extra.open.locale }}">
+ <meta property="og:locale" content="{{ config.extra.open.locale }}" />
{%- endif %}
{%- if config.extra.open.videos %}
{%- for video in config.extra.open.videos %}
- <meta property="og:video" content="{{ get_url(path=video) }}">
+ <meta property="og:video" content="{{ get_url(path=video) }}" />
{%- endfor %}
{%- endif %}
{#- SEO MEDIA END #}
- <meta property="og:site_name" content="{{ title }}">
- <meta property="og:locale" content="en_US">
- <meta property="og:type" content="website">
+ <meta property="og:site_name" content="{{ title }}" />
+ <meta property="og:locale" content="en_US" />
+ <meta property="og:type" content="website" />
{%- if page.updated %}
- <meta property="og:updated_time" content="{{ page.updated | date(format='%F') }}">
+ <meta property="og:updated_time" content="{{ page.updated | date(format='%F') }}" />
{%- elif page.date %}
- <meta property="og:updated_time" content="{{ page.date | date(format='%F') }}">
+ <meta property="og:updated_time" content="{{ page.date | date(format='%F') }}" />
{%- else %}
- <meta property="og:updated_time" content="{{ updated_time }}">
+ <meta property="og:updated_time" content="{{ updated_time }}" />
{%- endif %}
{%- if config.extra.social.twitter %}
- <meta name="twitter:site" content="@{{ config.extra.twitter }}">
- <meta name="twitter:creator" content="@{{ config.extra.twitter }}">
+ <meta name="twitter:site" content="@{{ config.extra.twitter }}" />
+ <meta name="twitter:creator" content="@{{ config.extra.twitter }}" />
{%- endif %}
@@ -202,10 +202,10 @@
{%- macro security() %}
{%- if config.extra.security_header_referrer %}
- <meta name="referrer" content="{{ config.extra.security_header_referrer | safe }}">
+ <meta name="referrer" content="{{ config.extra.security_header_referrer | safe }}" />
{%- endif %}
{%- if config.extra.security_header_csp %}
- <meta http-equiv="Content-Security-Policy" content="{{ config.extra.security_header_csp | safe }}">
+ <meta http-equiv="Content-Security-Policy" content="{{ config.extra.security_header_csp | safe }}" />
{%- endif %}
{%- endmacro %}
@@ -214,7 +214,7 @@
{# https://github.com/KaTeX/KaTeX/tree/main/contrib/mathtex-script-type/ #}
{%- macro math() %}
{%- if config.extra.math or page.extra.math %}
- <link rel="preload" href="https://cdn.jsdelivr.net/npm/katex@0.15.6/dist/katex.min.css" as="style" integrity="sha384-ZPe7yZ91iWxYumsBEOn7ieg8q/o+qh/hQpSaPow8T6BwALcXSCS6C6fSRPIAnTQs" onload="this.onload=null;this.rel='stylesheet'" crossorigin="anonymous">
+ <link rel="preload" href="https://cdn.jsdelivr.net/npm/katex@0.15.6/dist/katex.min.css" as="style" integrity="sha384-ZPe7yZ91iWxYumsBEOn7ieg8q/o+qh/hQpSaPow8T6BwALcXSCS6C6fSRPIAnTQs" onload="this.onload=null;this.rel='stylesheet'" crossorigin="anonymous" />
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.6/dist/katex.min.js" integrity="sha384-ljao5I1l+8KYFXG7LNEA7DyaFvuvSCmedUf6Y6JI7LJqiu8q5dEivP2nDdFH31V4" crossorigin="anonymous"></script>
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.6/dist/contrib/mathtex-script-type.min.js" integrity="sha384-jiBVvJ8NGGj5n7kJaiWwWp9AjC+Yh8rhZY3GtAX8yU28azcLgoRo4oukO87g7zDT" crossorigin="anonymous"></script>
{%- if config.extra.math_auto_render or page.extra.math_auto_render %}
diff --git a/templates/macros/social.html b/templates/macros/social.html
index d34fb29..c1b0726 100644
--- a/templates/macros/social.html
+++ b/templates/macros/social.html
@@ -1,47 +1,45 @@
{%- macro social_links(social_config) %}
{%- set base_url = get_url(path="", lang=lang) %}
- <span>
- {%- if config.generate_feed %}{%- if config.extra.social.feed %}
- <a href="{{ get_url(path=config.feed_filename, trailing_slash=false) | safe }}" target="_blank"><span class="svg rss" title="Atom/RSS Feed"></span></a>{% endif %}{% endif %}
- {%- if social_config.mail %}
- <a href="mailto:{{ social_config.mail }}" target="_blank"><span class="svg mail" title="Mail"></span></a>{% endif %}
- {%- if social_config.mastodon %}
- <a href="{{ social_config.mastodon }}/" target="_blank"><span class="svg mastodon" title="Mastodon"></span></a>{% endif %}
- {%- if social_config.element %}
- <a href="https://{{ social_config.element }}/" target="_blank"><span class="svg element" title="Element"></span></a>{% endif %}
- {%- if social_config.matrix %}
- <a href="https://{{ social_config.matrix }}/" target="_blank"><span class="svg matrix" title="Matrix"></span></a>{% endif %}
- {%- if social_config.twitter %}
- <a href="https://twitter.com/{{ social_config.twitter }}/" target="_blank"><span class="svg twitter" title="Twitter"></span></a>{% endif %}
- {%- if social_config.facebook %}
- <a href="https://www.facebook.com/{{ social_config.facebook }}/" target="_blank"><span class="svg facebook" title="Facebook"></span></a>{% endif %}
- {%- if social_config.linkedin %}
- <a href="https://www.linkedin.com/in/{{ social_config.linkedin }}/" target="_blank"><span class="svg linkedin" title="LinkedIn"></span></a>{% endif %}
- {%- if social_config.researchgate %}
- <a href="https://www.researchgate.net/profile/{{ social_config.researchgate }}/" target="_blank"><span class="svg researchgate" title="ResearchGate"></span></a>{% endif %}
- {%- if social_config.gitlab %}
- <a href="https://gitlab.com/{{ social_config.gitlab }}/" target="_blank"><span class="svg gitlab" title="Gitlab"></span></a>{% endif %}
- {%- if social_config.github %}
- <a href="https://github.com/{{ social_config.github }}/" target="_blank"><span class="svg github" title="Github"></span></a>{% endif %}
- {%- if social_config.bitbucket %}
- <a href="https://bitbucket.org/{{ social_config.bitbucket }}/" target="_blank"><span class="svg bitbucket" title="Bitbucket"></span></a>{% endif %}
- {%- if social_config.python %}
- <a href="https://pypi.org/user/{{ social_config.python }}/" target="_blank"><span class="svg python" title="Python"></span></a>{% endif %}
- {%- if social_config.docker %}
- <a href="https://hub.docker.com/u/{{ social_config.docker }}/" target="_blank"><span class="svg docker" title="Docker"></span></a>{% endif %}
- {%- if social_config.stack %}
- <a href="https://stackoverflow.com/users/{{ social_config.stack }}/" target="_blank"><span class="svg stack" title="Stack"></span></a>{% endif %}
- {%- if social_config.instagram %}
- <a href="https://www.instagram.com/{{ social_config.instagram }}/" target="_blank"><span class="svg instagram" title="Instagram"></span></a>{% endif %}
- {%- if social_config.pinterest %}
- <a href="https://www.pinterest.com/{{ social_config.pinterest }}/" target="_blank"><span class="svg pinterest" title="Pinterest"></span></a>{% endif %}
- {%- if social_config.twitch %}
- <a href="https://www.twitch.tv/{{ social_config.twitch }}/" target="_blank"><span class="svg twitch" title="Twitch"></span></a>{% endif %}
- {%- if social_config.youtube %}
- <a href="https://www.youtube.com/channel/{{ social_config.youtube }}/" target="_blank"><span class="svg youtube" title="YouTube"></span></a>{% endif %}
- {%- if social_config.buymeacoffee %}
- <a href="https://www.buymeacoffee.com/{{ social_config.buymeacoffee }}/" target="_blank"><span class="svg buymeacoffee" title="Buy Me A Coffee"></span></a>{% endif %}
- {%- if social_config.github_sponsor %}
- <a href="https://github.com/sponsors/{{ social_config.github_sponsor }}/" target="_blank"><span class="svg github-sponsor" title="GitHub Sponsor"></span></a>{% endif %}
- </span>
+ {%- if config.generate_feed %}{%- if config.extra.social.feed %}
+ <a href="{{ get_url(path=config.feed_filename, trailing_slash=false) | safe }}" target="_blank"><i class="svg rss" title="Atom/RSS Feed"></i></a>{% endif %}{% endif %}
+ {%- if social_config.mail %}
+ <a href="mailto:{{ social_config.mail }}" target="_blank"><i class="svg mail" title="Mail"></i></a>{% endif %}
+ {%- if social_config.mastodon %}
+ <a href="{{ social_config.mastodon }}/" target="_blank"><i class="svg mastodon" title="Mastodon"></i></a>{% endif %}
+ {%- if social_config.element %}
+ <a href="https://{{ social_config.element }}/" target="_blank"><i class="svg element" title="Element"></i></a>{% endif %}
+ {%- if social_config.matrix %}
+ <a href="https://{{ social_config.matrix }}/" target="_blank"><i class="svg matrix" title="Matrix"></i></a>{% endif %}
+ {%- if social_config.twitter %}
+ <a href="https://twitter.com/{{ social_config.twitter }}/" target="_blank"><i class="svg twitter" title="Twitter"></i></a>{% endif %}
+ {%- if social_config.facebook %}
+ <a href="https://www.facebook.com/{{ social_config.facebook }}/" target="_blank"><i class="svg facebook" title="Facebook"></i></a>{% endif %}
+ {%- if social_config.linkedin %}
+ <a href="https://www.linkedin.com/in/{{ social_config.linkedin }}/" target="_blank"><i class="svg linkedin" title="LinkedIn"></i></a>{% endif %}
+ {%- if social_config.researchgate %}
+ <a href="https://www.researchgate.net/profile/{{ social_config.researchgate }}/" target="_blank"><i class="svg researchgate" title="ResearchGate"></i></a>{% endif %}
+ {%- if social_config.gitlab %}
+ <a href="https://gitlab.com/{{ social_config.gitlab }}/" target="_blank"><i class="svg gitlab" title="Gitlab"></i></a>{% endif %}
+ {%- if social_config.github %}
+ <a href="https://github.com/{{ social_config.github }}/" target="_blank"><i class="svg github" title="Github"></i></a>{% endif %}
+ {%- if social_config.bitbucket %}
+ <a href="https://bitbucket.org/{{ social_config.bitbucket }}/" target="_blank"><i class="svg bitbucket" title="Bitbucket"></i></a>{% endif %}
+ {%- if social_config.python %}
+ <a href="https://pypi.org/user/{{ social_config.python }}/" target="_blank"><i class="svg python" title="Python"></i></a>{% endif %}
+ {%- if social_config.docker %}
+ <a href="https://hub.docker.com/u/{{ social_config.docker }}/" target="_blank"><i class="svg docker" title="Docker"></i></a>{% endif %}
+ {%- if social_config.stack %}
+ <a href="https://stackoverflow.com/users/{{ social_config.stack }}/" target="_blank"><i class="svg stack" title="Stack"></i></a>{% endif %}
+ {%- if social_config.instagram %}
+ <a href="https://www.instagram.com/{{ social_config.instagram }}/" target="_blank"><i class="svg instagram" title="Instagram"></i></a>{% endif %}
+ {%- if social_config.pinterest %}
+ <a href="https://www.pinterest.com/{{ social_config.pinterest }}/" target="_blank"><i class="svg pinterest" title="Pinterest"></i></a>{% endif %}
+ {%- if social_config.twitch %}
+ <a href="https://www.twitch.tv/{{ social_config.twitch }}/" target="_blank"><i class="svg twitch" title="Twitch"></i></a>{% endif %}
+ {%- if social_config.youtube %}
+ <a href="https://www.youtube.com/channel/{{ social_config.youtube }}/" target="_blank"><i class="svg youtube" title="YouTube"></i></a>{% endif %}
+ {%- if social_config.buymeacoffee %}
+ <a href="https://www.buymeacoffee.com/{{ social_config.buymeacoffee }}/" target="_blank"><i class="svg buymeacoffee" title="Buy Me A Coffee"></i></a>{% endif %}
+ {%- if social_config.github_sponsor %}
+ <a href="https://github.com/sponsors/{{ social_config.github_sponsor }}/" target="_blank"><i class="svg github-sponsor" title="GitHub Sponsor"></i></a>{% endif %}
{%- endmacro %}
diff --git a/templates/shortcodes/audio.html b/templates/shortcodes/audio.html
index 3f9368e..2dbce68 100644
--- a/templates/shortcodes/audio.html
+++ b/templates/shortcodes/audio.html
@@ -1,7 +1,7 @@
<audio controls>
{% for source in sources -%}
{% set type = source | split(pat=".") | last -%}
- <source src="{{ config.base_url | safe }}{{ page.path | safe }}{{ source | safe }}" type="{{ 'audio/' ~ type }}">
+ <source src="{{ config.base_url | safe }}{{ page.path | safe }}{{ source | safe }}" type="{{ 'audio/' ~ type }}" />
{% endfor -%}
Your browser doesn't support the audio tag and/or the audio formats in use here – sorry!
</audio>
diff --git a/templates/shortcodes/gif.html b/templates/shortcodes/gif.html
index 3ae56fd..a49a879 100644
--- a/templates/shortcodes/gif.html
+++ b/templates/shortcodes/gif.html
@@ -1,7 +1,7 @@
<video autoplay loop muted playsinline>
{% for source in sources -%}
{% set type = source | split(pat=".") | last -%}
- <source src="{{ config.base_url | safe }}{{ page.path | safe }}{{ source | safe }}" type="{{ 'video/' ~ type }}">
+ <source src="{{ config.base_url | safe }}{{ page.path | safe }}{{ source | safe }}" type="{{ 'video/' ~ type }}" />
{% endfor -%}
Your browser doesn't support the video tag, which I use in place of .gifs, and/or the video formats in use here – sorry!
</video>
diff --git a/templates/shortcodes/image.html b/templates/shortcodes/image.html
index 3653c8a..8452ce9 100644
--- a/templates/shortcodes/image.html
+++ b/templates/shortcodes/image.html
@@ -1,7 +1,7 @@
<picture>
{% for source in sources -%}
{% set type = source | split(pat=".") | last -%}
- <source srcset="{{ config.base_url | safe}}{{ page.path | safe }}{{ source | safe }}" type="{{ 'img/' ~ type }}">
+ <source srcset="{{ config.base_url | safe}}{{ page.path | safe }}{{ source | safe }}" type="{{ 'img/' ~ type }}" />
{% endfor -%}
- <img src="{{ fpath }}" alt="{{ falt | default(value='Image') }}" {% if fw %}width="{{fw}}" {% endif %}{% if fh %}height="{{fh}}" {% endif %}/>
+ <img src="{{ fpath }}" alt="{{ falt | default(value='Image') }}"{% if fw %} width="{{fw}}"{% endif %}{% if fh %} height="{{fh}}"{% endif %} />
</picture>
diff --git a/templates/shortcodes/img.html b/templates/shortcodes/img.html
index 46fb39d..4645569 100644
--- a/templates/shortcodes/img.html
+++ b/templates/shortcodes/img.html
@@ -1,5 +1,3 @@
-{# {{ img(src="ferris.svg" class="" alt="" w=600 h=400) }} #}
-
{%- set dirtest = src | trim_start_matches(pat="./") %}
{%- if dirtest is containing("/") %}
{%- set reldir = true %}
@@ -20,4 +18,4 @@
{%- set img = src | split(pat="/") | last %}
{%- set name = img | split(pat=".") | first %}
-<img src="{{ path | safe }}{{ img | safe }}" {% if class %}class="{{class}}" {% endif %}{% if alt %}alt="{{alt}}" {% endif %}{% if w %}width="{{w}}" {% endif %}{% if h %}height="{{h}}" {% endif %}/>
+<img src="{{ path | safe }}{{ img | safe }}"{% if class %} class="{{class}}"{% endif %}{% if alt %} alt="{{alt}}"{% endif %}{% if w %} width="{{w}}"{% endif %}{% if h %} height="{{h}}"{% endif %} />
diff --git a/templates/shortcodes/imghover.html b/templates/shortcodes/imghover.html
index 4bda6da..b1af3f9 100644
--- a/templates/shortcodes/imghover.html
+++ b/templates/shortcodes/imghover.html
@@ -29,7 +29,7 @@
{%- set_global bg = source | split(pat="/") | last %}
{%- else %}
<div id="{{ sourcename }}"><b>{{ sourcename }} on hover</b></div>
- <div id="{{ sourcename }}image" alt="{{ sourcename }}"> </div>
+ <div id="{{ sourcename }}image" title="{{ sourcename }}"> </div>
{%- endif %}
{%- endfor %}
diff --git a/templates/shortcodes/video.html b/templates/shortcodes/video.html
index a1a2f31..c6bd867 100644
--- a/templates/shortcodes/video.html
+++ b/templates/shortcodes/video.html
@@ -1,7 +1,7 @@
<video controls>
{% for source in sources -%}
{% set type = source | split(pat=".") | last -%}
- <source src="{{ config.base_url | safe }}{{ page.path | safe }}{{ source | safe }}" type="{{ 'video/' ~ type }}">
+ <source src="{{ config.base_url | safe }}{{ page.path | safe }}{{ source | safe }}" type="{{ 'video/' ~ type }}" />
{% endfor -%}
Your browser doesn't support the video tag and/or the video formats in use here – sorry!
</video>
diff --git a/templates/shortcodes/vm.html b/templates/shortcodes/vm.html
index 9b593e8..f222682 100644
--- a/templates/shortcodes/vm.html
+++ b/templates/shortcodes/vm.html
@@ -1,3 +1,3 @@
-<div {% if class %}class="{{class}}" {% endif %}style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;">
- <iframe src="https://player.vimeo.com/video/{{id}}?embedded=true{% if autoplay %}&autoplay=1{% endif %}{% if loop %}&loop=1{% endif %}{% if noautopause %}&autopause=0{% endif %}{% if not cookie %}&dnt=1{% endif %}" title="{{title | default(value="Vimeo") }}" style="position:absolute;top:0;left:0;" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
+<div{% if class %} class="{{class}}"{% endif %} style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;">
+ <iframe src="https://player.vimeo.com/video/{{id}}?embedded=true{% if autoplay %}&autoplay=1{% endif %}{% if loop %}&loop=1{% endif %}{% if noautopause %}&autopause=0{% endif %}{% if not cookie %}&dnt=1{% endif %}" title="{{title | default(value='Vimeo') }}" style="position:absolute;top:0;left:0;" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
</div>
diff --git a/templates/shortcodes/yt.html b/templates/shortcodes/yt.html
index d865602..748f6ae 100644
--- a/templates/shortcodes/yt.html
+++ b/templates/shortcodes/yt.html
@@ -1,3 +1,3 @@
-<div{% if class %}class="{{class}}"{% endif %} style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;">
- <iframe src="https://www.youtube{% if not cookie %}-nocookie{% endif %}.com/embed/{{id}}{% if playlist %}?list={{playlist}}{% endif %}{% if autoplay %}?autoplay=1{% endif %}" title="{{title | default(value="Youtube") }}" style="position:absolute;top:0;left:0;" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
+<div{% if class %} class="{{class}}"{% endif %} style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;">
+ <iframe src="https://www.youtube{% if not cookie %}-nocookie{% endif %}.com/embed/{{id}}{% if playlist %}?list={{playlist}}{% endif %}{% if autoplay %}?autoplay=1{% endif %}" title="{{title | default(value='Youtube') }}" style="position:absolute;top:0;left:0;" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
</div>
diff --git a/templates/tags/list.html b/templates/tags/list.html
index 3559ada..53f492f 100644
--- a/templates/tags/list.html
+++ b/templates/tags/list.html
@@ -17,10 +17,10 @@
{%- block content %}
<div>
- <center>
+ <div class="c">
<h1>{{ terms | length }} Tags</h1>
<p>{% for term in terms %} #<a href="#{{ term.name }}">{{ term.name }}</a> {% endfor %}</p>
- </center>
+ </div>
{%- for term in terms %}
<h2 id="{{ term.name }}">#<a href="{{ term.permalink | safe }}">{{ term.name }}</a></h2>
{%- for page in term.pages %}