~erock/pico

fb68af20c2e4033ad9cbd367a9fde80612fb8389 — Eric Bower a month ago ed3a7c3
feat(css): abstracted common css into single file for all services

It was becoming tedious to make the same change in three different css
files, so I abstracted the main styling into a single file and am now
copying the css into each service's public directory with `make css`.
M Makefile => Makefile +9 -0
@@ 7,6 7,15 @@ DOCKER_TAG?=$(shell git log --format="%H" -n 1)
DOCKER_PLATFORM?=linux/amd64,linux/arm64
DOCKER_BUILDX_BUILD?=docker buildx build --push --platform $(DOCKER_PLATFORM)

css:
	cp ./smol.css lists/public/main.css
	cp ./smol.css prose/public/main.css
	cp ./smol.css pastes/public/main.css

	cp ./syntax.css pastes/public/syntax.css
	cp ./syntax.css prose/public/syntax.css
.PHONY: css

lint:
	docker run --rm -v $(shell pwd):/app -w /app golangci/golangci-lint:latest golangci-lint run -E goimports -E godot
.PHONY: lint

M lists/html/blog.page.tmpl => lists/html/blog.page.tmpl +1 -1
@@ 55,7 55,7 @@
        <article>
            <div class="flex items-center">
                <time datetime="{{.UpdatedAtISO}}" class="font-italic text-sm post-date">{{.UpdatedTimeAgo}}</time>
                <h2 class="font-bold flex-1"><a href="{{.URL}}">{{.Title}}</a></h2>
                <div class="font-bold flex-1"><a href="{{.URL}}">{{.Title}}</a></div>
            </div>
        </article>
        {{end}}

M lists/html/read.page.tmpl => lists/html/read.page.tmpl +1 -1
@@ 22,7 22,7 @@
        <div class="flex items-center">
            <time datetime="{{.UpdatedAtISO}}" class="font-italic text-sm post-date">{{.UpdatedTimeAgo}}</time>
            <div class="flex-1">
                <h2 class="inline"><a href="{{.URL}}">{{.Title}}</a></h2>
                <div class="inline"><a href="{{.URL}}">{{.Title}}</a></div>
                <address class="text-sm inline">
                    <a href="{{.BlogURL}}" class="link-grey">({{.Username}})</a>
                </address>

M lists/public/main.css => lists/public/main.css +60 -34
@@ 1,24 1,31 @@
*, ::before, ::after {
*,
::before,
::after {
  box-sizing: border-box;
}

::-moz-focus-inner {
	border-style: none;
	padding: 0;
  border-style: none;
  padding: 0;
}
:-moz-focusring {
  outline: 1px dotted ButtonText;
}
:-moz-ui-invalid {
  box-shadow: none;
}
:-moz-focusring { outline: 1px dotted ButtonText; }
:-moz-ui-invalid { box-shadow: none; }

@media (prefers-color-scheme: light) {
  :root {
    --white: #6a737d;
    --code: rgba(255, 229, 100, 0.2);
    --code: #fff8d3;
    --code-border: #f0d547;
    --pre: #f6f8fa;
    --bg-color: #fff;
    --text-color: #24292f;
    --link-color: #005cc5;
    --visited: #6f42c1;
    --blockquote: #785840;
    --blockquote: #005cc5;
    --blockquote-bg: #fff;
    --hover: #d73a49;
    --grey: #ccc;


@@ 28,7 35,8 @@
@media (prefers-color-scheme: dark) {
  :root {
    --white: #f2f2f2;
    --code: #252525;
    --code: #414558;
    --code-border: #252525;
    --pre: #252525;
    --bg-color: #282a36;
    --text-color: #f2f2f2;


@@ 45,17 53,18 @@ html {
  background-color: var(--bg-color);
  color: var(--text-color);
  line-height: 1.5;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell,
    "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji",
    "Segoe UI Emoji", "Segoe UI Symbol";
	-webkit-text-size-adjust: 100%;
	-moz-tab-size: 4;
	tab-size: 4;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
    Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial,
    sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
  -webkit-text-size-adjust: 100%;
  -moz-tab-size: 4;
  tab-size: 4;
  font-size: 17px;
}

body {
  margin: 0 auto;
  max-width: 35rem;
  max-width: 42rem;
}

img {


@@ 63,34 72,43 @@ img {
  height: auto;
}

b, strong {
b,
strong {
  font-weight: bold;
}

code, kbd, samp, pre {
	font-family: ui-monospace, SFMono-Regular, Consolas, 'Liberation Mono', Menlo, monospace;
	font-size: 0.8rem;
code,
kbd,
samp,
pre {
  font-family: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", Menlo,
    monospace;
  font-size: 0.8rem;
}

code, kbd, samp {
code,
kbd,
samp {
  background-color: var(--code);
  border: 1px solid var(--code-border);
}

pre > code {
  background-color: inherit;
  padding: 0;
  border: none;
}

code {
  border-radius: 0.3rem;
  padding: .15rem .2rem .05rem;
  padding: 0.15rem 0.2rem 0.05rem;
}

pre {
  border-radius: 5px;
  padding: 1rem;
  margin: 1rem 0;
  overflow-x: auto;
  margin: 0;
  background-color: var(--pre) !important;
}



@@ 102,10 120,12 @@ summary {
  display: list-item;
}

h1, h2, h3 {
h1,
h2,
h3 {
  margin: 0;
	padding: 0;
	border: 0;
  padding: 0.6rem 0 0 0;
  border: 0;
  font-style: normal;
  font-weight: inherit;
  font-size: inherit;


@@ 126,7 146,8 @@ a {
  color: var(--link-color);
}

a:hover, a:visited:hover {
a:hover,
a:visited:hover {
  color: var(--hover);
}



@@ 144,7 165,7 @@ a.link-grey:visited {
}

section {
  margin-bottom: 2rem;
  margin-bottom: 1.4rem;
}

section:last-child {


@@ 166,11 187,16 @@ article {
blockquote {
  border-left: 5px solid var(--blockquote);
  background-color: var(--blockquote-bg);
  padding: 0.5rem;
  margin: 0.5rem 0;
  padding: 0.8rem;
  margin: 1rem 0;
}

blockquote > p {
  margin: 0;
}

ul, ol {
ul,
ol {
  padding: 0 0 0 2rem;
  list-style-position: outside;
}


@@ 201,7 227,7 @@ dd {
}

dd:not(:last-child) {
  margin-bottom: .5rem;
  margin-bottom: 0.5rem;
}

.post-date {


@@ 213,17 239,17 @@ dd:not(:last-child) {
}

.text-2xl {
  font-size: 1.5rem;
  font-size: 1.85rem;
  line-height: 1.15;
}

.text-xl {
  font-size: 1.25rem;
  font-size: 1.45rem;
  line-height: 1.15;
}

.text-lg {
  font-size: 1.125rem;
  font-size: 1.25rem;
  line-height: 1.15;
}


M pastes/public/main.css => pastes/public/main.css +59 -60
@@ 1,24 1,31 @@
*, ::before, ::after {
*,
::before,
::after {
  box-sizing: border-box;
}

::-moz-focus-inner {
	border-style: none;
	padding: 0;
  border-style: none;
  padding: 0;
}
:-moz-focusring {
  outline: 1px dotted ButtonText;
}
:-moz-ui-invalid {
  box-shadow: none;
}
:-moz-focusring { outline: 1px dotted ButtonText; }
:-moz-ui-invalid { box-shadow: none; }

@media (prefers-color-scheme: light) {
  :root {
    --white: #6a737d;
    --code: rgba(255, 229, 100, 0.2);
    --code: #fff8d3;
    --code-border: #f0d547;
    --pre: #f6f8fa;
    --bg-color: #fff;
    --text-color: #24292f;
    --link-color: #005cc5;
    --visited: #6f42c1;
    --blockquote: #785840;
    --blockquote: #005cc5;
    --blockquote-bg: #fff;
    --hover: #d73a49;
    --grey: #ccc;


@@ 28,7 35,8 @@
@media (prefers-color-scheme: dark) {
  :root {
    --white: #f2f2f2;
    --code: #252525;
    --code: #414558;
    --code-border: #252525;
    --pre: #252525;
    --bg-color: #282a36;
    --text-color: #f2f2f2;


@@ 45,12 53,13 @@ html {
  background-color: var(--bg-color);
  color: var(--text-color);
  line-height: 1.5;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell,
    "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji",
    "Segoe UI Emoji", "Segoe UI Symbol";
	-webkit-text-size-adjust: 100%;
	-moz-tab-size: 4;
	tab-size: 4;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
    Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial,
    sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
  -webkit-text-size-adjust: 100%;
  -moz-tab-size: 4;
  tab-size: 4;
  font-size: 17px;
}

body {


@@ 63,34 72,43 @@ img {
  height: auto;
}

b, strong {
b,
strong {
  font-weight: bold;
}

code, kbd, samp, pre {
	font-family: ui-monospace, SFMono-Regular, Consolas, 'Liberation Mono', Menlo, monospace;
	font-size: 0.8rem;
code,
kbd,
samp,
pre {
  font-family: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", Menlo,
    monospace;
  font-size: 0.8rem;
}

code, kbd, samp {
code,
kbd,
samp {
  background-color: var(--code);
  border: 1px solid var(--code-border);
}

pre > code {
  background-color: inherit;
  padding: 0;
  border: none;
}

code {
  border-radius: 0.3rem;
  padding: .15rem .2rem .05rem;
  padding: 0.15rem 0.2rem 0.05rem;
}

pre {
  border-radius: 5px;
  padding: 1rem;
  margin: 1rem 0;
  overflow-x: auto;
  margin: 0;
  background-color: var(--pre) !important;
}



@@ 102,10 120,12 @@ summary {
  display: list-item;
}

h1, h2, h3 {
h1,
h2,
h3 {
  margin: 0;
	padding: 0;
	border: 0;
  padding: 0.6rem 0 0 0;
  border: 0;
  font-style: normal;
  font-weight: inherit;
  font-size: inherit;


@@ 126,7 146,8 @@ a {
  color: var(--link-color);
}

a:hover, a:visited:hover {
a:hover,
a:visited:hover {
  color: var(--hover);
}



@@ 144,7 165,7 @@ a.link-grey:visited {
}

section {
  margin-bottom: 2rem;
  margin-bottom: 1.4rem;
}

section:last-child {


@@ 166,11 187,16 @@ article {
blockquote {
  border-left: 5px solid var(--blockquote);
  background-color: var(--blockquote-bg);
  padding: 0.5rem;
  margin: 0.5rem 0;
  padding: 0.8rem;
  margin: 1rem 0;
}

blockquote > p {
  margin: 0;
}

ul, ol {
ul,
ol {
  padding: 0 0 0 2rem;
  list-style-position: outside;
}


@@ 201,30 227,7 @@ dd {
}

dd:not(:last-child) {
  margin-bottom: .5rem;
}

.md h1 {
  font-size: 1.25rem;
  line-height: 1.15;
  font-weight: bold;
  padding: 0.5rem 0;
}

.md h2 {
  font-size: 1.125rem;
  line-height: 1.15;
  font-weight: bold;
  padding: 0.5rem 0;
}

.md h3 {
  font-weight: bold;
}

.md h4 {
  font-size: 0.875rem;
  font-weight: bold;
  margin-bottom: 0.5rem;
}

.post-date {


@@ 236,17 239,17 @@ dd:not(:last-child) {
}

.text-2xl {
  font-size: 1.5rem;
  font-size: 1.85rem;
  line-height: 1.15;
}

.text-xl {
  font-size: 1.25rem;
  font-size: 1.45rem;
  line-height: 1.15;
}

.text-lg {
  font-size: 1.125rem;
  font-size: 1.25rem;
  line-height: 1.15;
}



@@ 314,7 317,3 @@ dd:not(:last-child) {
    margin: 0;
  }
}

#post {
  max-width: 90%;
}

M pastes/public/syntax.css => pastes/public/syntax.css +695 -170
@@ 1,175 1,700 @@
@media (prefers-color-scheme: light) {
  /* Background */ .bg { background-color: #ffffff; }
  /* PreWrapper */ .chroma { background-color: #ffffff; }
  /* Other */ .chroma .x {  }
  /* Error */ .chroma .err { background-color: #a848a8 }
  /* CodeLine */ .chroma .cl {  }
  /* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
  /* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
  /* LineHighlight */ .chroma .hl { background-color: #ffffcc }
  /* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
  /* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
  /* Line */ .chroma .line { display: flex; }
  /* Keyword */ .chroma .k { color: #2838b0 }
  /* KeywordConstant */ .chroma .kc { color: #444444; font-style: italic }
  /* KeywordDeclaration */ .chroma .kd { color: #2838b0; font-style: italic }
  /* KeywordNamespace */ .chroma .kn { color: #2838b0 }
  /* KeywordPseudo */ .chroma .kp { color: #2838b0 }
  /* KeywordReserved */ .chroma .kr { color: #2838b0 }
  /* KeywordType */ .chroma .kt { color: #2838b0; font-style: italic }
  /* Name */ .chroma .n {  }
  /* NameAttribute */ .chroma .na { color: #388038 }
  /* NameBuiltin */ .chroma .nb { color: #388038 }
  /* NameBuiltinPseudo */ .chroma .bp { font-style: italic }
  /* NameClass */ .chroma .nc { color: #287088 }
  /* NameConstant */ .chroma .no { color: #b85820 }
  /* NameDecorator */ .chroma .nd { color: #287088 }
  /* NameEntity */ .chroma .ni { color: #709030 }
  /* NameException */ .chroma .ne { color: #908828 }
  /* NameFunction */ .chroma .nf { color: #785840 }
  /* NameFunctionMagic */ .chroma .fm { color: #b85820 }
  /* NameLabel */ .chroma .nl { color: #289870 }
  /* NameNamespace */ .chroma .nn { color: #289870 }
  /* NameOther */ .chroma .nx {  }
  /* NameProperty */ .chroma .py {  }
  /* NameTag */ .chroma .nt { color: #2838b0 }
  /* NameVariable */ .chroma .nv { color: #b04040 }
  /* NameVariableClass */ .chroma .vc {  }
  /* NameVariableGlobal */ .chroma .vg { color: #908828 }
  /* NameVariableInstance */ .chroma .vi {  }
  /* NameVariableMagic */ .chroma .vm { color: #b85820 }
  /* Literal */ .chroma .l {  }
  /* LiteralDate */ .chroma .ld {  }
  /* LiteralString */ .chroma .s { color: #b83838 }
  /* LiteralStringAffix */ .chroma .sa { color: #444444 }
  /* LiteralStringBacktick */ .chroma .sb { color: #b83838 }
  /* LiteralStringChar */ .chroma .sc { color: #a848a8 }
  /* LiteralStringDelimiter */ .chroma .dl { color: #b85820 }
  /* LiteralStringDoc */ .chroma .sd { color: #b85820; font-style: italic }
  /* LiteralStringDouble */ .chroma .s2 { color: #b83838 }
  /* LiteralStringEscape */ .chroma .se { color: #709030 }
  /* LiteralStringHeredoc */ .chroma .sh { color: #b83838 }
  /* LiteralStringInterpol */ .chroma .si { color: #b83838; text-decoration: underline }
  /* LiteralStringOther */ .chroma .sx { color: #a848a8 }
  /* LiteralStringRegex */ .chroma .sr { color: #a848a8 }
  /* LiteralStringSingle */ .chroma .s1 { color: #b83838 }
  /* LiteralStringSymbol */ .chroma .ss { color: #b83838 }
  /* LiteralNumber */ .chroma .m { color: #444444 }
  /* LiteralNumberBin */ .chroma .mb { color: #444444 }
  /* LiteralNumberFloat */ .chroma .mf { color: #444444 }
  /* LiteralNumberHex */ .chroma .mh { color: #444444 }
  /* LiteralNumberInteger */ .chroma .mi { color: #444444 }
  /* LiteralNumberIntegerLong */ .chroma .il { color: #444444 }
  /* LiteralNumberOct */ .chroma .mo { color: #444444 }
  /* Operator */ .chroma .o { color: #666666 }
  /* OperatorWord */ .chroma .ow { color: #a848a8 }
  /* Punctuation */ .chroma .p { color: #888888 }
  /* Comment */ .chroma .c { color: #888888; font-style: italic }
  /* CommentHashbang */ .chroma .ch { color: #287088; font-style: italic }
  /* CommentMultiline */ .chroma .cm { color: #888888; font-style: italic }
  /* CommentSingle */ .chroma .c1 { color: #888888; font-style: italic }
  /* CommentSpecial */ .chroma .cs { color: #888888; font-style: italic }
  /* CommentPreproc */ .chroma .cp { color: #289870 }
  /* CommentPreprocFile */ .chroma .cpf { color: #289870 }
  /* Generic */ .chroma .g {  }
  /* GenericDeleted */ .chroma .gd { color: #c02828 }
  /* GenericEmph */ .chroma .ge { font-style: italic }
  /* GenericError */ .chroma .gr { color: #c02828 }
  /* GenericHeading */ .chroma .gh { color: #666666 }
  /* GenericInserted */ .chroma .gi { color: #388038 }
  /* GenericOutput */ .chroma .go { color: #666666 }
  /* GenericPrompt */ .chroma .gp { color: #444444 }
  /* GenericStrong */ .chroma .gs { font-weight: bold }
  /* GenericSubheading */ .chroma .gu { color: #444444 }
  /* GenericTraceback */ .chroma .gt { color: #2838b0 }
  /* GenericUnderline */ .chroma .gl { text-decoration: underline }
  /* TextWhitespace */ .chroma .w { color: #a89028 }
  /* Background */
  .bg {
    background-color: #ffffff;
  }
  /* PreWrapper */
  .chroma {
    background-color: #ffffff;
  }
  /* Other */
  .chroma .x {
  }
  /* Error */
  .chroma .err {
    background-color: #a848a8;
  }
  /* CodeLine */
  .chroma .cl {
  }
  /* LineTableTD */
  .chroma .lntd {
    vertical-align: top;
    padding: 0;
    margin: 0;
    border: 0;
  }
  /* LineTable */
  .chroma .lntable {
    border-spacing: 0;
    padding: 0;
    margin: 0;
    border: 0;
  }
  /* LineHighlight */
  .chroma .hl {
    background-color: #ffffcc;
  }
  /* LineNumbersTable */
  .chroma .lnt {
    white-space: pre;
    user-select: none;
    margin-right: 0.4em;
    padding: 0 0.4em 0 0.4em;
    color: #7f7f7f;
  }
  /* LineNumbers */
  .chroma .ln {
    white-space: pre;
    user-select: none;
    margin-right: 0.4em;
    padding: 0 0.4em 0 0.4em;
    color: #7f7f7f;
  }
  /* Line */
  .chroma .line {
    display: flex;
  }
  /* Keyword */
  .chroma .k {
    color: #2838b0;
  }
  /* KeywordConstant */
  .chroma .kc {
    color: #444444;
    font-style: italic;
  }
  /* KeywordDeclaration */
  .chroma .kd {
    color: #2838b0;
    font-style: italic;
  }
  /* KeywordNamespace */
  .chroma .kn {
    color: #2838b0;
  }
  /* KeywordPseudo */
  .chroma .kp {
    color: #2838b0;
  }
  /* KeywordReserved */
  .chroma .kr {
    color: #2838b0;
  }
  /* KeywordType */
  .chroma .kt {
    color: #2838b0;
    font-style: italic;
  }
  /* Name */
  .chroma .n {
  }
  /* NameAttribute */
  .chroma .na {
    color: #388038;
  }
  /* NameBuiltin */
  .chroma .nb {
    color: #388038;
  }
  /* NameBuiltinPseudo */
  .chroma .bp {
    font-style: italic;
  }
  /* NameClass */
  .chroma .nc {
    color: #287088;
  }
  /* NameConstant */
  .chroma .no {
    color: #b85820;
  }
  /* NameDecorator */
  .chroma .nd {
    color: #287088;
  }
  /* NameEntity */
  .chroma .ni {
    color: #709030;
  }
  /* NameException */
  .chroma .ne {
    color: #908828;
  }
  /* NameFunction */
  .chroma .nf {
    color: #785840;
  }
  /* NameFunctionMagic */
  .chroma .fm {
    color: #b85820;
  }
  /* NameLabel */
  .chroma .nl {
    color: #289870;
  }
  /* NameNamespace */
  .chroma .nn {
    color: #289870;
  }
  /* NameOther */
  .chroma .nx {
  }
  /* NameProperty */
  .chroma .py {
  }
  /* NameTag */
  .chroma .nt {
    color: #2838b0;
  }
  /* NameVariable */
  .chroma .nv {
    color: #b04040;
  }
  /* NameVariableClass */
  .chroma .vc {
  }
  /* NameVariableGlobal */
  .chroma .vg {
    color: #908828;
  }
  /* NameVariableInstance */
  .chroma .vi {
  }
  /* NameVariableMagic */
  .chroma .vm {
    color: #b85820;
  }
  /* Literal */
  .chroma .l {
  }
  /* LiteralDate */
  .chroma .ld {
  }
  /* LiteralString */
  .chroma .s {
    color: #b83838;
  }
  /* LiteralStringAffix */
  .chroma .sa {
    color: #444444;
  }
  /* LiteralStringBacktick */
  .chroma .sb {
    color: #b83838;
  }
  /* LiteralStringChar */
  .chroma .sc {
    color: #a848a8;
  }
  /* LiteralStringDelimiter */
  .chroma .dl {
    color: #b85820;
  }
  /* LiteralStringDoc */
  .chroma .sd {
    color: #b85820;
    font-style: italic;
  }
  /* LiteralStringDouble */
  .chroma .s2 {
    color: #b83838;
  }
  /* LiteralStringEscape */
  .chroma .se {
    color: #709030;
  }
  /* LiteralStringHeredoc */
  .chroma .sh {
    color: #b83838;
  }
  /* LiteralStringInterpol */
  .chroma .si {
    color: #b83838;
    text-decoration: underline;
  }
  /* LiteralStringOther */
  .chroma .sx {
    color: #a848a8;
  }
  /* LiteralStringRegex */
  .chroma .sr {
    color: #a848a8;
  }
  /* LiteralStringSingle */
  .chroma .s1 {
    color: #b83838;
  }
  /* LiteralStringSymbol */
  .chroma .ss {
    color: #b83838;
  }
  /* LiteralNumber */
  .chroma .m {
    color: #444444;
  }
  /* LiteralNumberBin */
  .chroma .mb {
    color: #444444;
  }
  /* LiteralNumberFloat */
  .chroma .mf {
    color: #444444;
  }
  /* LiteralNumberHex */
  .chroma .mh {
    color: #444444;
  }
  /* LiteralNumberInteger */
  .chroma .mi {
    color: #444444;
  }
  /* LiteralNumberIntegerLong */
  .chroma .il {
    color: #444444;
  }
  /* LiteralNumberOct */
  .chroma .mo {
    color: #444444;
  }
  /* Operator */
  .chroma .o {
    color: #666666;
  }
  /* OperatorWord */
  .chroma .ow {
    color: #a848a8;
  }
  /* Punctuation */
  .chroma .p {
    color: #888888;
  }
  /* Comment */
  .chroma .c {
    color: #888888;
    font-style: italic;
  }
  /* CommentHashbang */
  .chroma .ch {
    color: #287088;
    font-style: italic;
  }
  /* CommentMultiline */
  .chroma .cm {
    color: #888888;
    font-style: italic;
  }
  /* CommentSingle */
  .chroma .c1 {
    color: #888888;
    font-style: italic;
  }
  /* CommentSpecial */
  .chroma .cs {
    color: #888888;
    font-style: italic;
  }
  /* CommentPreproc */
  .chroma .cp {
    color: #289870;
  }
  /* CommentPreprocFile */
  .chroma .cpf {
    color: #289870;
  }
  /* Generic */
  .chroma .g {
  }
  /* GenericDeleted */
  .chroma .gd {
    color: #c02828;
  }
  /* GenericEmph */
  .chroma .ge {
    font-style: italic;
  }
  /* GenericError */
  .chroma .gr {
    color: #c02828;
  }
  /* GenericHeading */
  .chroma .gh {
    color: #666666;
  }
  /* GenericInserted */
  .chroma .gi {
    color: #388038;
  }
  /* GenericOutput */
  .chroma .go {
    color: #666666;
  }
  /* GenericPrompt */
  .chroma .gp {
    color: #444444;
  }
  /* GenericStrong */
  .chroma .gs {
    font-weight: bold;
  }
  /* GenericSubheading */
  .chroma .gu {
    color: #444444;
  }
  /* GenericTraceback */
  .chroma .gt {
    color: #2838b0;
  }
  /* GenericUnderline */
  .chroma .gl {
    text-decoration: underline;
  }
  /* TextWhitespace */
  .chroma .w {
    color: #a89028;
  }
}

@media (prefers-color-scheme: dark) {
  /* Background */ .bg { color: #f8f8f2; background-color: #282a36; }
  /* PreWrapper */ .chroma { color: #f8f8f2; background-color: #282a36; }
  /* Other */ .chroma .x {  }
  /* Error */ .chroma .err {  }
  /* CodeLine */ .chroma .cl {  }
  /* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
  /* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
  /* LineHighlight */ .chroma .hl { background-color: #ffffcc }
  /* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
  /* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
  /* Line */ .chroma .line { display: flex; }
  /* Keyword */ .chroma .k { color: #ff79c6 }
  /* KeywordConstant */ .chroma .kc { color: #ff79c6 }
  /* KeywordDeclaration */ .chroma .kd { color: #8be9fd; font-style: italic }
  /* KeywordNamespace */ .chroma .kn { color: #ff79c6 }
  /* KeywordPseudo */ .chroma .kp { color: #ff79c6 }
  /* KeywordReserved */ .chroma .kr { color: #ff79c6 }
  /* KeywordType */ .chroma .kt { color: #8be9fd }
  /* Name */ .chroma .n {  }
  /* NameAttribute */ .chroma .na { color: #50fa7b }
  /* NameBuiltin */ .chroma .nb { color: #8be9fd; font-style: italic }
  /* NameBuiltinPseudo */ .chroma .bp {  }
  /* NameClass */ .chroma .nc { color: #50fa7b }
  /* NameConstant */ .chroma .no {  }
  /* NameDecorator */ .chroma .nd {  }
  /* NameEntity */ .chroma .ni {  }
  /* NameException */ .chroma .ne {  }
  /* NameFunction */ .chroma .nf { color: #50fa7b }
  /* NameFunctionMagic */ .chroma .fm {  }
  /* NameLabel */ .chroma .nl { color: #8be9fd; font-style: italic }
  /* NameNamespace */ .chroma .nn {  }
  /* NameOther */ .chroma .nx {  }
  /* NameProperty */ .chroma .py {  }
  /* NameTag */ .chroma .nt { color: #ff79c6 }
  /* NameVariable */ .chroma .nv { color: #8be9fd; font-style: italic }
  /* NameVariableClass */ .chroma .vc { color: #8be9fd; font-style: italic }
  /* NameVariableGlobal */ .chroma .vg { color: #8be9fd; font-style: italic }
  /* NameVariableInstance */ .chroma .vi { color: #8be9fd; font-style: italic }
  /* NameVariableMagic */ .chroma .vm {  }
  /* Literal */ .chroma .l {  }
  /* LiteralDate */ .chroma .ld {  }
  /* LiteralString */ .chroma .s { color: #f1fa8c }
  /* LiteralStringAffix */ .chroma .sa { color: #f1fa8c }
  /* LiteralStringBacktick */ .chroma .sb { color: #f1fa8c }
  /* LiteralStringChar */ .chroma .sc { color: #f1fa8c }
  /* LiteralStringDelimiter */ .chroma .dl { color: #f1fa8c }
  /* LiteralStringDoc */ .chroma .sd { color: #f1fa8c }
  /* LiteralStringDouble */ .chroma .s2 { color: #f1fa8c }
  /* LiteralStringEscape */ .chroma .se { color: #f1fa8c }
  /* LiteralStringHeredoc */ .chroma .sh { color: #f1fa8c }
  /* LiteralStringInterpol */ .chroma .si { color: #f1fa8c }
  /* LiteralStringOther */ .chroma .sx { color: #f1fa8c }
  /* LiteralStringRegex */ .chroma .sr { color: #f1fa8c }
  /* LiteralStringSingle */ .chroma .s1 { color: #f1fa8c }
  /* LiteralStringSymbol */ .chroma .ss { color: #f1fa8c }
  /* LiteralNumber */ .chroma .m { color: #bd93f9 }
  /* LiteralNumberBin */ .chroma .mb { color: #bd93f9 }
  /* LiteralNumberFloat */ .chroma .mf { color: #bd93f9 }
  /* LiteralNumberHex */ .chroma .mh { color: #bd93f9 }
  /* LiteralNumberInteger */ .chroma .mi { color: #bd93f9 }
  /* LiteralNumberIntegerLong */ .chroma .il { color: #bd93f9 }
  /* LiteralNumberOct */ .chroma .mo { color: #bd93f9 }
  /* Operator */ .chroma .o { color: #ff79c6 }
  /* OperatorWord */ .chroma .ow { color: #ff79c6 }
  /* Punctuation */ .chroma .p {  }
  /* Comment */ .chroma .c { color: #6272a4 }
  /* CommentHashbang */ .chroma .ch { color: #6272a4 }
  /* CommentMultiline */ .chroma .cm { color: #6272a4 }
  /* CommentSingle */ .chroma .c1 { color: #6272a4 }
  /* CommentSpecial */ .chroma .cs { color: #6272a4 }
  /* CommentPreproc */ .chroma .cp { color: #ff79c6 }
  /* CommentPreprocFile */ .chroma .cpf { color: #ff79c6 }
  /* Generic */ .chroma .g {  }
  /* GenericDeleted */ .chroma .gd { color: #ff5555 }
  /* GenericEmph */ .chroma .ge { text-decoration: underline }
  /* GenericError */ .chroma .gr {  }
  /* GenericHeading */ .chroma .gh { font-weight: bold }
  /* GenericInserted */ .chroma .gi { color: #50fa7b; font-weight: bold }
  /* GenericOutput */ .chroma .go { color: #44475a }
  /* GenericPrompt */ .chroma .gp {  }
  /* GenericStrong */ .chroma .gs {  }
  /* GenericSubheading */ .chroma .gu { font-weight: bold }
  /* GenericTraceback */ .chroma .gt {  }
  /* GenericUnderline */ .chroma .gl { text-decoration: underline }
  /* TextWhitespace */ .chroma .w {  }
  /* Background */
  .bg {
    color: #f8f8f2;
    background-color: #282a36;
  }
  /* PreWrapper */
  .chroma {
    color: #f8f8f2;
    background-color: #282a36;
  }
  /* Other */
  .chroma .x {
  }
  /* Error */
  .chroma .err {
  }
  /* CodeLine */
  .chroma .cl {
  }
  /* LineTableTD */
  .chroma .lntd {
    vertical-align: top;
    padding: 0;
    margin: 0;
    border: 0;
  }
  /* LineTable */
  .chroma .lntable {
    border-spacing: 0;
    padding: 0;
    margin: 0;
    border: 0;
  }
  /* LineHighlight */
  .chroma .hl {
    background-color: #ffffcc;
  }
  /* LineNumbersTable */
  .chroma .lnt {
    white-space: pre;
    user-select: none;
    margin-right: 0.4em;
    padding: 0 0.4em 0 0.4em;
    color: #7f7f7f;
  }
  /* LineNumbers */
  .chroma .ln {
    white-space: pre;
    user-select: none;
    margin-right: 0.4em;
    padding: 0 0.4em 0 0.4em;
    color: #7f7f7f;
  }
  /* Line */
  .chroma .line {
    display: flex;
  }
  /* Keyword */
  .chroma .k {
    color: #ff79c6;
  }
  /* KeywordConstant */
  .chroma .kc {
    color: #ff79c6;
  }
  /* KeywordDeclaration */
  .chroma .kd {
    color: #8be9fd;
    font-style: italic;
  }
  /* KeywordNamespace */
  .chroma .kn {
    color: #ff79c6;
  }
  /* KeywordPseudo */
  .chroma .kp {
    color: #ff79c6;
  }
  /* KeywordReserved */
  .chroma .kr {
    color: #ff79c6;
  }
  /* KeywordType */
  .chroma .kt {
    color: #8be9fd;
  }
  /* Name */
  .chroma .n {
  }
  /* NameAttribute */
  .chroma .na {
    color: #50fa7b;
  }
  /* NameBuiltin */
  .chroma .nb {
    color: #8be9fd;
    font-style: italic;
  }
  /* NameBuiltinPseudo */
  .chroma .bp {
  }
  /* NameClass */
  .chroma .nc {
    color: #50fa7b;
  }
  /* NameConstant */
  .chroma .no {
  }
  /* NameDecorator */
  .chroma .nd {
  }
  /* NameEntity */
  .chroma .ni {
  }
  /* NameException */
  .chroma .ne {
  }
  /* NameFunction */
  .chroma .nf {
    color: #50fa7b;
  }
  /* NameFunctionMagic */
  .chroma .fm {
  }
  /* NameLabel */
  .chroma .nl {
    color: #8be9fd;
    font-style: italic;
  }
  /* NameNamespace */
  .chroma .nn {
  }
  /* NameOther */
  .chroma .nx {
  }
  /* NameProperty */
  .chroma .py {
  }
  /* NameTag */
  .chroma .nt {
    color: #ff79c6;
  }
  /* NameVariable */
  .chroma .nv {
    color: #8be9fd;
    font-style: italic;
  }
  /* NameVariableClass */
  .chroma .vc {
    color: #8be9fd;
    font-style: italic;
  }
  /* NameVariableGlobal */
  .chroma .vg {
    color: #8be9fd;
    font-style: italic;
  }
  /* NameVariableInstance */
  .chroma .vi {
    color: #8be9fd;
    font-style: italic;
  }
  /* NameVariableMagic */
  .chroma .vm {
  }
  /* Literal */
  .chroma .l {
  }
  /* LiteralDate */
  .chroma .ld {
  }
  /* LiteralString */
  .chroma .s {
    color: #f1fa8c;
  }
  /* LiteralStringAffix */
  .chroma .sa {
    color: #f1fa8c;
  }
  /* LiteralStringBacktick */
  .chroma .sb {
    color: #f1fa8c;
  }
  /* LiteralStringChar */
  .chroma .sc {
    color: #f1fa8c;
  }
  /* LiteralStringDelimiter */
  .chroma .dl {
    color: #f1fa8c;
  }
  /* LiteralStringDoc */
  .chroma .sd {
    color: #f1fa8c;
  }
  /* LiteralStringDouble */
  .chroma .s2 {
    color: #f1fa8c;
  }
  /* LiteralStringEscape */
  .chroma .se {
    color: #f1fa8c;
  }
  /* LiteralStringHeredoc */
  .chroma .sh {
    color: #f1fa8c;
  }
  /* LiteralStringInterpol */
  .chroma .si {
    color: #f1fa8c;
  }
  /* LiteralStringOther */
  .chroma .sx {
    color: #f1fa8c;
  }
  /* LiteralStringRegex */
  .chroma .sr {
    color: #f1fa8c;
  }
  /* LiteralStringSingle */
  .chroma .s1 {
    color: #f1fa8c;
  }
  /* LiteralStringSymbol */
  .chroma .ss {
    color: #f1fa8c;
  }
  /* LiteralNumber */
  .chroma .m {
    color: #bd93f9;
  }
  /* LiteralNumberBin */
  .chroma .mb {
    color: #bd93f9;
  }
  /* LiteralNumberFloat */
  .chroma .mf {
    color: #bd93f9;
  }
  /* LiteralNumberHex */
  .chroma .mh {
    color: #bd93f9;
  }
  /* LiteralNumberInteger */
  .chroma .mi {
    color: #bd93f9;
  }
  /* LiteralNumberIntegerLong */
  .chroma .il {
    color: #bd93f9;
  }
  /* LiteralNumberOct */
  .chroma .mo {
    color: #bd93f9;
  }
  /* Operator */
  .chroma .o {
    color: #ff79c6;
  }
  /* OperatorWord */
  .chroma .ow {
    color: #ff79c6;
  }
  /* Punctuation */
  .chroma .p {
  }
  /* Comment */
  .chroma .c {
    color: #6272a4;
  }
  /* CommentHashbang */
  .chroma .ch {
    color: #6272a4;
  }
  /* CommentMultiline */
  .chroma .cm {
    color: #6272a4;
  }
  /* CommentSingle */
  .chroma .c1 {
    color: #6272a4;
  }
  /* CommentSpecial */
  .chroma .cs {
    color: #6272a4;
  }
  /* CommentPreproc */
  .chroma .cp {
    color: #ff79c6;
  }
  /* CommentPreprocFile */
  .chroma .cpf {
    color: #ff79c6;
  }
  /* Generic */
  .chroma .g {
  }
  /* GenericDeleted */
  .chroma .gd {
    color: #ff5555;
  }
  /* GenericEmph */
  .chroma .ge {
    text-decoration: underline;
  }
  /* GenericError */
  .chroma .gr {
  }
  /* GenericHeading */
  .chroma .gh {
    font-weight: bold;
  }
  /* GenericInserted */
  .chroma .gi {
    color: #50fa7b;
    font-weight: bold;
  }
  /* GenericOutput */
  .chroma .go {
    color: #44475a;
  }
  /* GenericPrompt */
  .chroma .gp {
  }
  /* GenericStrong */
  .chroma .gs {
  }
  /* GenericSubheading */
  .chroma .gu {
    font-weight: bold;
  }
  /* GenericTraceback */
  .chroma .gt {
  }
  /* GenericUnderline */
  .chroma .gl {
    text-decoration: underline;
  }
  /* TextWhitespace */
  .chroma .w {
  }
}

M prose/api.go => prose/api.go +1 -0
@@ 713,6 713,7 @@ func serveFile(file string, contentType string) http.HandlerFunc {
func createStaticRoutes() []shared.Route {
	return []shared.Route{
		shared.NewRoute("GET", "/main.css", serveFile("main.css", "text/css")),
		shared.NewRoute("GET", "/prose.css", serveFile("prose.css", "text/css")),
		shared.NewRoute("GET", "/syntax.css", serveFile("syntax.css", "text/css")),
		shared.NewRoute("GET", "/card.png", serveFile("card.png", "image/png")),
		shared.NewRoute("GET", "/favicon-16x16.png", serveFile("favicon-16x16.png", "image/png")),

M prose/html/base.layout.tmpl => prose/html/base.layout.tmpl +1 -0
@@ 11,6 11,7 @@
        <meta name="keywords" content="blog, blogging, write, writing" />

        <link rel="stylesheet" href="/main.css" />
        <link rel="stylesheet" href="/prose.css" />

        {{template "meta" .}}
    </head>

M prose/public/main.css => prose/public/main.css +41 -60
@@ 1,13 1,19 @@
*, ::before, ::after {
*,
::before,
::after {
  box-sizing: border-box;
}

::-moz-focus-inner {
	border-style: none;
	padding: 0;
  border-style: none;
  padding: 0;
}
:-moz-focusring {
  outline: 1px dotted ButtonText;
}
:-moz-ui-invalid {
  box-shadow: none;
}
:-moz-focusring { outline: 1px dotted ButtonText; }
:-moz-ui-invalid { box-shadow: none; }

@media (prefers-color-scheme: light) {
  :root {


@@ 47,12 53,12 @@ html {
  background-color: var(--bg-color);
  color: var(--text-color);
  line-height: 1.5;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell,
    "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji",
    "Segoe UI Emoji", "Segoe UI Symbol";
	-webkit-text-size-adjust: 100%;
	-moz-tab-size: 4;
	tab-size: 4;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
    Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial,
    sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
  -webkit-text-size-adjust: 100%;
  -moz-tab-size: 4;
  tab-size: 4;
  font-size: 17px;
}



@@ 66,16 72,23 @@ img {
  height: auto;
}

b, strong {
b,
strong {
  font-weight: bold;
}

code, kbd, samp, pre {
	font-family: ui-monospace, SFMono-Regular, Consolas, 'Liberation Mono', Menlo, monospace;
	font-size: 0.8rem;
code,
kbd,
samp,
pre {
  font-family: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", Menlo,
    monospace;
  font-size: 0.8rem;
}

code, kbd, samp {
code,
kbd,
samp {
  background-color: var(--code);
  border: 1px solid var(--code-border);
}


@@ 88,7 101,7 @@ pre > code {

code {
  border-radius: 0.3rem;
  padding: .15rem .2rem .05rem;
  padding: 0.15rem 0.2rem 0.05rem;
}

pre {


@@ 107,10 120,12 @@ summary {
  display: list-item;
}

h1, h2, h3 {
h1,
h2,
h3 {
  margin: 0;
  padding: 1rem 0 0 0;
	border: 0;
  padding: 0.6rem 0 0 0;
  border: 0;
  font-style: normal;
  font-weight: inherit;
  font-size: inherit;


@@ 131,7 146,8 @@ a {
  color: var(--link-color);
}

a:hover, a:visited:hover {
a:hover,
a:visited:hover {
  color: var(--hover);
}



@@ 149,7 165,7 @@ a.link-grey:visited {
}

section {
  margin-bottom: 2rem;
  margin-bottom: 1.4rem;
}

section:last-child {


@@ 179,17 195,8 @@ blockquote > p {
  margin: 0;
}

table {
  display: block;
  max-width: fit-content;
  margin: 0 auto;
  overflow-x: auto;
  white-space: nowrap;
  border-spacing: 10px;
  border-collapse: separate;
}

ul, ol {
ul,
ol {
  padding: 0 0 0 2rem;
  list-style-position: outside;
}


@@ 220,33 227,7 @@ dd {
}

dd:not(:last-child) {
  margin-bottom: .5rem;
}

.md h1 {
  font-size: 1.85rem;
  line-height: 1.15;
  font-weight: bold;
  padding: 1rem 0 0 0;
}

.md h2 {
  font-size: 1.45rem;
  line-height: 1.15;
  font-weight: bold;
  padding: 1rem 0 0 0;
}

.md h3 {
  font-size: 1.25rem;
  font-weight: bold;
  padding: 1rem 0 0 0;
}

.md h4 {
  font-size: 1rem;
  font-weight: bold;
  padding: 1rem 0 0 0;
  margin-bottom: 0.5rem;
}

.post-date {

A prose/public/prose.css => prose/public/prose.css +35 -0
@@ 0,0 1,35 @@
table {
  display: block;
  max-width: fit-content;
  margin: 0 auto;
  overflow-x: auto;
  white-space: nowrap;
  border-spacing: 10px;
  border-collapse: separate;
}

.md h1 {
  font-size: 1.85rem;
  line-height: 1.15;
  font-weight: bold;
  padding: 0.6rem 0 0 0;
}

.md h2 {
  font-size: 1.45rem;
  line-height: 1.15;
  font-weight: bold;
  padding: 0.6rem 0 0 0;
}

.md h3 {
  font-size: 1.25rem;
  font-weight: bold;
  padding: 0.6rem 0 0 0;
}

.md h4 {
  font-size: 1rem;
  font-weight: bold;
  padding: 0.6rem 0 0 0;
}

M prose/public/syntax.css => prose/public/syntax.css +695 -170
@@ 1,175 1,700 @@
@media (prefers-color-scheme: light) {
  /* Background */ .bg { background-color: #ffffff; }
  /* PreWrapper */ .chroma { background-color: #ffffff; }
  /* Other */ .chroma .x {  }
  /* Error */ .chroma .err { background-color: #a848a8 }
  /* CodeLine */ .chroma .cl {  }
  /* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
  /* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
  /* LineHighlight */ .chroma .hl { background-color: #ffffcc }
  /* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
  /* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
  /* Line */ .chroma .line { display: flex; }
  /* Keyword */ .chroma .k { color: #2838b0 }
  /* KeywordConstant */ .chroma .kc { color: #444444; font-style: italic }
  /* KeywordDeclaration */ .chroma .kd { color: #2838b0; font-style: italic }
  /* KeywordNamespace */ .chroma .kn { color: #2838b0 }
  /* KeywordPseudo */ .chroma .kp { color: #2838b0 }
  /* KeywordReserved */ .chroma .kr { color: #2838b0 }
  /* KeywordType */ .chroma .kt { color: #2838b0; font-style: italic }
  /* Name */ .chroma .n {  }
  /* NameAttribute */ .chroma .na { color: #388038 }
  /* NameBuiltin */ .chroma .nb { color: #388038 }
  /* NameBuiltinPseudo */ .chroma .bp { font-style: italic }
  /* NameClass */ .chroma .nc { color: #287088 }
  /* NameConstant */ .chroma .no { color: #b85820 }
  /* NameDecorator */ .chroma .nd { color: #287088 }
  /* NameEntity */ .chroma .ni { color: #709030 }
  /* NameException */ .chroma .ne { color: #908828 }
  /* NameFunction */ .chroma .nf { color: #785840 }
  /* NameFunctionMagic */ .chroma .fm { color: #b85820 }
  /* NameLabel */ .chroma .nl { color: #289870 }
  /* NameNamespace */ .chroma .nn { color: #289870 }
  /* NameOther */ .chroma .nx {  }
  /* NameProperty */ .chroma .py {  }
  /* NameTag */ .chroma .nt { color: #2838b0 }
  /* NameVariable */ .chroma .nv { color: #b04040 }
  /* NameVariableClass */ .chroma .vc {  }
  /* NameVariableGlobal */ .chroma .vg { color: #908828 }
  /* NameVariableInstance */ .chroma .vi {  }
  /* NameVariableMagic */ .chroma .vm { color: #b85820 }
  /* Literal */ .chroma .l {  }
  /* LiteralDate */ .chroma .ld {  }
  /* LiteralString */ .chroma .s { color: #b83838 }
  /* LiteralStringAffix */ .chroma .sa { color: #444444 }
  /* LiteralStringBacktick */ .chroma .sb { color: #b83838 }
  /* LiteralStringChar */ .chroma .sc { color: #a848a8 }
  /* LiteralStringDelimiter */ .chroma .dl { color: #b85820 }
  /* LiteralStringDoc */ .chroma .sd { color: #b85820; font-style: italic }
  /* LiteralStringDouble */ .chroma .s2 { color: #b83838 }
  /* LiteralStringEscape */ .chroma .se { color: #709030 }
  /* LiteralStringHeredoc */ .chroma .sh { color: #b83838 }
  /* LiteralStringInterpol */ .chroma .si { color: #b83838; text-decoration: underline }
  /* LiteralStringOther */ .chroma .sx { color: #a848a8 }
  /* LiteralStringRegex */ .chroma .sr { color: #a848a8 }
  /* LiteralStringSingle */ .chroma .s1 { color: #b83838 }
  /* LiteralStringSymbol */ .chroma .ss { color: #b83838 }
  /* LiteralNumber */ .chroma .m { color: #444444 }
  /* LiteralNumberBin */ .chroma .mb { color: #444444 }
  /* LiteralNumberFloat */ .chroma .mf { color: #444444 }
  /* LiteralNumberHex */ .chroma .mh { color: #444444 }
  /* LiteralNumberInteger */ .chroma .mi { color: #444444 }
  /* LiteralNumberIntegerLong */ .chroma .il { color: #444444 }
  /* LiteralNumberOct */ .chroma .mo { color: #444444 }
  /* Operator */ .chroma .o { color: #666666 }
  /* OperatorWord */ .chroma .ow { color: #a848a8 }
  /* Punctuation */ .chroma .p { color: #888888 }
  /* Comment */ .chroma .c { color: #888888; font-style: italic }
  /* CommentHashbang */ .chroma .ch { color: #287088; font-style: italic }
  /* CommentMultiline */ .chroma .cm { color: #888888; font-style: italic }
  /* CommentSingle */ .chroma .c1 { color: #888888; font-style: italic }
  /* CommentSpecial */ .chroma .cs { color: #888888; font-style: italic }
  /* CommentPreproc */ .chroma .cp { color: #289870 }
  /* CommentPreprocFile */ .chroma .cpf { color: #289870 }
  /* Generic */ .chroma .g {  }
  /* GenericDeleted */ .chroma .gd { color: #c02828 }
  /* GenericEmph */ .chroma .ge { font-style: italic }
  /* GenericError */ .chroma .gr { color: #c02828 }
  /* GenericHeading */ .chroma .gh { color: #666666 }
  /* GenericInserted */ .chroma .gi { color: #388038 }
  /* GenericOutput */ .chroma .go { color: #666666 }
  /* GenericPrompt */ .chroma .gp { color: #444444 }
  /* GenericStrong */ .chroma .gs { font-weight: bold }
  /* GenericSubheading */ .chroma .gu { color: #444444 }
  /* GenericTraceback */ .chroma .gt { color: #2838b0 }
  /* GenericUnderline */ .chroma .gl { text-decoration: underline }
  /* TextWhitespace */ .chroma .w { color: #a89028 }
  /* Background */
  .bg {
    background-color: #ffffff;
  }
  /* PreWrapper */
  .chroma {
    background-color: #ffffff;
  }
  /* Other */
  .chroma .x {
  }
  /* Error */
  .chroma .err {
    background-color: #a848a8;
  }
  /* CodeLine */
  .chroma .cl {
  }
  /* LineTableTD */
  .chroma .lntd {
    vertical-align: top;
    padding: 0;
    margin: 0;
    border: 0;
  }
  /* LineTable */
  .chroma .lntable {
    border-spacing: 0;
    padding: 0;
    margin: 0;
    border: 0;
  }
  /* LineHighlight */
  .chroma .hl {
    background-color: #ffffcc;
  }
  /* LineNumbersTable */
  .chroma .lnt {
    white-space: pre;
    user-select: none;
    margin-right: 0.4em;
    padding: 0 0.4em 0 0.4em;
    color: #7f7f7f;
  }
  /* LineNumbers */
  .chroma .ln {
    white-space: pre;
    user-select: none;
    margin-right: 0.4em;
    padding: 0 0.4em 0 0.4em;
    color: #7f7f7f;
  }
  /* Line */
  .chroma .line {
    display: flex;
  }
  /* Keyword */
  .chroma .k {
    color: #2838b0;
  }
  /* KeywordConstant */
  .chroma .kc {
    color: #444444;
    font-style: italic;
  }
  /* KeywordDeclaration */
  .chroma .kd {
    color: #2838b0;
    font-style: italic;
  }
  /* KeywordNamespace */
  .chroma .kn {
    color: #2838b0;
  }
  /* KeywordPseudo */
  .chroma .kp {
    color: #2838b0;
  }
  /* KeywordReserved */
  .chroma .kr {
    color: #2838b0;
  }
  /* KeywordType */
  .chroma .kt {
    color: #2838b0;
    font-style: italic;
  }
  /* Name */
  .chroma .n {
  }
  /* NameAttribute */
  .chroma .na {
    color: #388038;
  }
  /* NameBuiltin */
  .chroma .nb {
    color: #388038;
  }
  /* NameBuiltinPseudo */
  .chroma .bp {
    font-style: italic;
  }
  /* NameClass */
  .chroma .nc {
    color: #287088;
  }
  /* NameConstant */
  .chroma .no {
    color: #b85820;
  }
  /* NameDecorator */
  .chroma .nd {
    color: #287088;
  }
  /* NameEntity */
  .chroma .ni {
    color: #709030;
  }
  /* NameException */
  .chroma .ne {
    color: #908828;
  }
  /* NameFunction */
  .chroma .nf {
    color: #785840;
  }
  /* NameFunctionMagic */
  .chroma .fm {
    color: #b85820;
  }
  /* NameLabel */
  .chroma .nl {
    color: #289870;
  }
  /* NameNamespace */
  .chroma .nn {
    color: #289870;
  }
  /* NameOther */
  .chroma .nx {
  }
  /* NameProperty */
  .chroma .py {
  }
  /* NameTag */
  .chroma .nt {
    color: #2838b0;
  }
  /* NameVariable */
  .chroma .nv {
    color: #b04040;
  }
  /* NameVariableClass */
  .chroma .vc {
  }
  /* NameVariableGlobal */
  .chroma .vg {
    color: #908828;
  }
  /* NameVariableInstance */
  .chroma .vi {
  }
  /* NameVariableMagic */
  .chroma .vm {
    color: #b85820;
  }
  /* Literal */
  .chroma .l {
  }
  /* LiteralDate */
  .chroma .ld {
  }
  /* LiteralString */
  .chroma .s {
    color: #b83838;
  }
  /* LiteralStringAffix */
  .chroma .sa {
    color: #444444;
  }
  /* LiteralStringBacktick */
  .chroma .sb {
    color: #b83838;
  }
  /* LiteralStringChar */
  .chroma .sc {
    color: #a848a8;
  }
  /* LiteralStringDelimiter */
  .chroma .dl {
    color: #b85820;
  }
  /* LiteralStringDoc */
  .chroma .sd {
    color: #b85820;
    font-style: italic;
  }
  /* LiteralStringDouble */
  .chroma .s2 {
    color: #b83838;
  }
  /* LiteralStringEscape */
  .chroma .se {
    color: #709030;
  }
  /* LiteralStringHeredoc */
  .chroma .sh {
    color: #b83838;
  }
  /* LiteralStringInterpol */
  .chroma .si {
    color: #b83838;
    text-decoration: underline;
  }
  /* LiteralStringOther */
  .chroma .sx {
    color: #a848a8;
  }
  /* LiteralStringRegex */
  .chroma .sr {
    color: #a848a8;
  }
  /* LiteralStringSingle */
  .chroma .s1 {
    color: #b83838;
  }
  /* LiteralStringSymbol */
  .chroma .ss {
    color: #b83838;
  }
  /* LiteralNumber */
  .chroma .m {
    color: #444444;
  }
  /* LiteralNumberBin */
  .chroma .mb {
    color: #444444;
  }
  /* LiteralNumberFloat */
  .chroma .mf {
    color: #444444;
  }
  /* LiteralNumberHex */
  .chroma .mh {
    color: #444444;
  }
  /* LiteralNumberInteger */
  .chroma .mi {
    color: #444444;
  }
  /* LiteralNumberIntegerLong */
  .chroma .il {
    color: #444444;
  }
  /* LiteralNumberOct */
  .chroma .mo {
    color: #444444;
  }
  /* Operator */
  .chroma .o {
    color: #666666;
  }
  /* OperatorWord */
  .chroma .ow {
    color: #a848a8;
  }
  /* Punctuation */
  .chroma .p {
    color: #888888;
  }
  /* Comment */
  .chroma .c {
    color: #888888;
    font-style: italic;
  }
  /* CommentHashbang */
  .chroma .ch {
    color: #287088;
    font-style: italic;
  }
  /* CommentMultiline */
  .chroma .cm {
    color: #888888;
    font-style: italic;
  }
  /* CommentSingle */
  .chroma .c1 {
    color: #888888;
    font-style: italic;
  }
  /* CommentSpecial */
  .chroma .cs {
    color: #888888;
    font-style: italic;
  }
  /* CommentPreproc */
  .chroma .cp {
    color: #289870;
  }
  /* CommentPreprocFile */
  .chroma .cpf {
    color: #289870;
  }
  /* Generic */
  .chroma .g {
  }
  /* GenericDeleted */
  .chroma .gd {
    color: #c02828;
  }
  /* GenericEmph */
  .chroma .ge {
    font-style: italic;
  }
  /* GenericError */
  .chroma .gr {
    color: #c02828;
  }
  /* GenericHeading */
  .chroma .gh {
    color: #666666;
  }
  /* GenericInserted */
  .chroma .gi {
    color: #388038;
  }
  /* GenericOutput */
  .chroma .go {
    color: #666666;
  }
  /* GenericPrompt */
  .chroma .gp {
    color: #444444;
  }
  /* GenericStrong */
  .chroma .gs {
    font-weight: bold;
  }
  /* GenericSubheading */
  .chroma .gu {
    color: #444444;
  }
  /* GenericTraceback */
  .chroma .gt {
    color: #2838b0;
  }
  /* GenericUnderline */
  .chroma .gl {
    text-decoration: underline;
  }
  /* TextWhitespace */
  .chroma .w {
    color: #a89028;
  }
}

@media (prefers-color-scheme: dark) {
  /* Background */ .bg { color: #f8f8f2; background-color: #282a36; }
  /* PreWrapper */ .chroma { color: #f8f8f2; background-color: #282a36; }
  /* Other */ .chroma .x {  }
  /* Error */ .chroma .err {  }
  /* CodeLine */ .chroma .cl {  }
  /* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
  /* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
  /* LineHighlight */ .chroma .hl { background-color: #ffffcc }
  /* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
  /* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
  /* Line */ .chroma .line { display: flex; }
  /* Keyword */ .chroma .k { color: #ff79c6 }
  /* KeywordConstant */ .chroma .kc { color: #ff79c6 }
  /* KeywordDeclaration */ .chroma .kd { color: #8be9fd; font-style: italic }
  /* KeywordNamespace */ .chroma .kn { color: #ff79c6 }
  /* KeywordPseudo */ .chroma .kp { color: #ff79c6 }
  /* KeywordReserved */ .chroma .kr { color: #ff79c6 }
  /* KeywordType */ .chroma .kt { color: #8be9fd }
  /* Name */ .chroma .n {  }
  /* NameAttribute */ .chroma .na { color: #50fa7b }
  /* NameBuiltin */ .chroma .nb { color: #8be9fd; font-style: italic }
  /* NameBuiltinPseudo */ .chroma .bp {  }
  /* NameClass */ .chroma .nc { color: #50fa7b }
  /* NameConstant */ .chroma .no {  }
  /* NameDecorator */ .chroma .nd {  }
  /* NameEntity */ .chroma .ni {  }
  /* NameException */ .chroma .ne {  }
  /* NameFunction */ .chroma .nf { color: #50fa7b }
  /* NameFunctionMagic */ .chroma .fm {  }
  /* NameLabel */ .chroma .nl { color: #8be9fd; font-style: italic }
  /* NameNamespace */ .chroma .nn {  }
  /* NameOther */ .chroma .nx {  }
  /* NameProperty */ .chroma .py {  }
  /* NameTag */ .chroma .nt { color: #ff79c6 }
  /* NameVariable */ .chroma .nv { color: #8be9fd; font-style: italic }
  /* NameVariableClass */ .chroma .vc { color: #8be9fd; font-style: italic }
  /* NameVariableGlobal */ .chroma .vg { color: #8be9fd; font-style: italic }
  /* NameVariableInstance */ .chroma .vi { color: #8be9fd; font-style: italic }
  /* NameVariableMagic */ .chroma .vm {  }
  /* Literal */ .chroma .l {  }
  /* LiteralDate */ .chroma .ld {  }
  /* LiteralString */ .chroma .s { color: #f1fa8c }
  /* LiteralStringAffix */ .chroma .sa { color: #f1fa8c }
  /* LiteralStringBacktick */ .chroma .sb { color: #f1fa8c }
  /* LiteralStringChar */ .chroma .sc { color: #f1fa8c }
  /* LiteralStringDelimiter */ .chroma .dl { color: #f1fa8c }
  /* LiteralStringDoc */ .chroma .sd { color: #f1fa8c }
  /* LiteralStringDouble */ .chroma .s2 { color: #f1fa8c }
  /* LiteralStringEscape */ .chroma .se { color: #f1fa8c }
  /* LiteralStringHeredoc */ .chroma .sh { color: #f1fa8c }
  /* LiteralStringInterpol */ .chroma .si { color: #f1fa8c }
  /* LiteralStringOther */ .chroma .sx { color: #f1fa8c }
  /* LiteralStringRegex */ .chroma .sr { color: #f1fa8c }
  /* LiteralStringSingle */ .chroma .s1 { color: #f1fa8c }
  /* LiteralStringSymbol */ .chroma .ss { color: #f1fa8c }
  /* LiteralNumber */ .chroma .m { color: #bd93f9 }
  /* LiteralNumberBin */ .chroma .mb { color: #bd93f9 }
  /* LiteralNumberFloat */ .chroma .mf { color: #bd93f9 }
  /* LiteralNumberHex */ .chroma .mh { color: #bd93f9 }
  /* LiteralNumberInteger */ .chroma .mi { color: #bd93f9 }
  /* LiteralNumberIntegerLong */ .chroma .il { color: #bd93f9 }
  /* LiteralNumberOct */ .chroma .mo { color: #bd93f9 }
  /* Operator */ .chroma .o { color: #ff79c6 }
  /* OperatorWord */ .chroma .ow { color: #ff79c6 }
  /* Punctuation */ .chroma .p {  }
  /* Comment */ .chroma .c { color: #6272a4 }
  /* CommentHashbang */ .chroma .ch { color: #6272a4 }
  /* CommentMultiline */ .chroma .cm { color: #6272a4 }
  /* CommentSingle */ .chroma .c1 { color: #6272a4 }
  /* CommentSpecial */ .chroma .cs { color: #6272a4 }
  /* CommentPreproc */ .chroma .cp { color: #ff79c6 }
  /* CommentPreprocFile */ .chroma .cpf { color: #ff79c6 }
  /* Generic */ .chroma .g {  }
  /* GenericDeleted */ .chroma .gd { color: #ff5555 }
  /* GenericEmph */ .chroma .ge { text-decoration: underline }
  /* GenericError */ .chroma .gr {  }
  /* GenericHeading */ .chroma .gh { font-weight: bold }
  /* GenericInserted */ .chroma .gi { color: #50fa7b; font-weight: bold }
  /* GenericOutput */ .chroma .go { color: #44475a }
  /* GenericPrompt */ .chroma .gp {  }
  /* GenericStrong */ .chroma .gs {  }
  /* GenericSubheading */ .chroma .gu { font-weight: bold }
  /* GenericTraceback */ .chroma .gt {  }
  /* GenericUnderline */ .chroma .gl { text-decoration: underline }
  /* TextWhitespace */ .chroma .w {  }
  /* Background */
  .bg {
    color: #f8f8f2;
    background-color: #282a36;
  }
  /* PreWrapper */
  .chroma {
    color: #f8f8f2;
    background-color: #282a36;
  }
  /* Other */
  .chroma .x {
  }
  /* Error */
  .chroma .err {
  }
  /* CodeLine */
  .chroma .cl {
  }
  /* LineTableTD */
  .chroma .lntd {
    vertical-align: top;
    padding: 0;
    margin: 0;
    border: 0;
  }
  /* LineTable */
  .chroma .lntable {
    border-spacing: 0;
    padding: 0;
    margin: 0;
    border: 0;
  }
  /* LineHighlight */
  .chroma .hl {
    background-color: #ffffcc;
  }
  /* LineNumbersTable */
  .chroma .lnt {
    white-space: pre;
    user-select: none;
    margin-right: 0.4em;
    padding: 0 0.4em 0 0.4em;
    color: #7f7f7f;
  }
  /* LineNumbers */
  .chroma .ln {
    white-space: pre;
    user-select: none;
    margin-right: 0.4em;
    padding: 0 0.4em 0 0.4em;
    color: #7f7f7f;
  }
  /* Line */
  .chroma .line {
    display: flex;
  }
  /* Keyword */
  .chroma .k {
    color: #ff79c6;
  }
  /* KeywordConstant */
  .chroma .kc {
    color: #ff79c6;
  }
  /* KeywordDeclaration */
  .chroma .kd {
    color: #8be9fd;
    font-style: italic;
  }
  /* KeywordNamespace */
  .chroma .kn {
    color: #ff79c6;
  }
  /* KeywordPseudo */
  .chroma .kp {
    color: #ff79c6;
  }
  /* KeywordReserved */
  .chroma .kr {
    color: #ff79c6;
  }
  /* KeywordType */
  .chroma .kt {
    color: #8be9fd;
  }
  /* Name */
  .chroma .n {
  }
  /* NameAttribute */
  .chroma .na {
    color: #50fa7b;
  }
  /* NameBuiltin */
  .chroma .nb {
    color: #8be9fd;
    font-style: italic;
  }
  /* NameBuiltinPseudo */
  .chroma .bp {
  }
  /* NameClass */
  .chroma .nc {
    color: #50fa7b;
  }
  /* NameConstant */
  .chroma .no {
  }
  /* NameDecorator */
  .chroma .nd {
  }
  /* NameEntity */
  .chroma .ni {
  }
  /* NameException */
  .chroma .ne {
  }
  /* NameFunction */
  .chroma .nf {
    color: #50fa7b;
  }
  /* NameFunctionMagic */
  .chroma .fm {
  }
  /* NameLabel */
  .chroma .nl {
    color: #8be9fd;
    font-style: italic;
  }
  /* NameNamespace */
  .chroma .nn {
  }
  /* NameOther */
  .chroma .nx {
  }
  /* NameProperty */
  .chroma .py {
  }
  /* NameTag */
  .chroma .nt {
    color: #ff79c6;
  }
  /* NameVariable */
  .chroma .nv {
    color: #8be9fd;
    font-style: italic;
  }
  /* NameVariableClass */
  .chroma .vc {
    color: #8be9fd;
    font-style: italic;
  }
  /* NameVariableGlobal */
  .chroma .vg {
    color: #8be9fd;
    font-style: italic;
  }
  /* NameVariableInstance */
  .chroma .vi {
    color: #8be9fd;
    font-style: italic;
  }
  /* NameVariableMagic */
  .chroma .vm {
  }
  /* Literal */
  .chroma .l {
  }
  /* LiteralDate */
  .chroma .ld {
  }
  /* LiteralString */
  .chroma .s {
    color: #f1fa8c;
  }
  /* LiteralStringAffix */
  .chroma .sa {
    color: #f1fa8c;
  }
  /* LiteralStringBacktick */
  .chroma .sb {
    color: #f1fa8c;
  }
  /* LiteralStringChar */
  .chroma .sc {
    color: #f1fa8c;
  }
  /* LiteralStringDelimiter */
  .chroma .dl {
    color: #f1fa8c;
  }
  /* LiteralStringDoc */
  .chroma .sd {
    color: #f1fa8c;
  }
  /* LiteralStringDouble */
  .chroma .s2 {
    color: #f1fa8c;
  }
  /* LiteralStringEscape */
  .chroma .se {
    color: #f1fa8c;
  }
  /* LiteralStringHeredoc */
  .chroma .sh {
    color: #f1fa8c;
  }
  /* LiteralStringInterpol */
  .chroma .si {
    color: #f1fa8c;
  }
  /* LiteralStringOther */
  .chroma .sx {
    color: #f1fa8c;
  }
  /* LiteralStringRegex */
  .chroma .sr {
    color: #f1fa8c;
  }
  /* LiteralStringSingle */
  .chroma .s1 {
    color: #f1fa8c;
  }
  /* LiteralStringSymbol */
  .chroma .ss {
    color: #f1fa8c;
  }
  /* LiteralNumber */
  .chroma .m {
    color: #bd93f9;
  }
  /* LiteralNumberBin */
  .chroma .mb {
    color: #bd93f9;
  }
  /* LiteralNumberFloat */
  .chroma .mf {
    color: #bd93f9;
  }
  /* LiteralNumberHex */
  .chroma .mh {
    color: #bd93f9;
  }
  /* LiteralNumberInteger */
  .chroma .mi {
    color: #bd93f9;
  }
  /* LiteralNumberIntegerLong */
  .chroma .il {
    color: #bd93f9;
  }
  /* LiteralNumberOct */
  .chroma .mo {
    color: #bd93f9;
  }
  /* Operator */
  .chroma .o {
    color: #ff79c6;
  }
  /* OperatorWord */
  .chroma .ow {
    color: #ff79c6;
  }
  /* Punctuation */
  .chroma .p {
  }
  /* Comment */
  .chroma .c {
    color: #6272a4;
  }
  /* CommentHashbang */
  .chroma .ch {
    color: #6272a4;
  }
  /* CommentMultiline */
  .chroma .cm {
    color: #6272a4;
  }
  /* CommentSingle */
  .chroma .c1 {
    color: #6272a4;
  }
  /* CommentSpecial */
  .chroma .cs {
    color: #6272a4;
  }
  /* CommentPreproc */
  .chroma .cp {
    color: #ff79c6;
  }
  /* CommentPreprocFile */
  .chroma .cpf {
    color: #ff79c6;
  }
  /* Generic */
  .chroma .g {
  }
  /* GenericDeleted */
  .chroma .gd {
    color: #ff5555;
  }
  /* GenericEmph */
  .chroma .ge {
    text-decoration: underline;
  }
  /* GenericError */
  .chroma .gr {
  }
  /* GenericHeading */
  .chroma .gh {
    font-weight: bold;
  }
  /* GenericInserted */
  .chroma .gi {
    color: #50fa7b;
    font-weight: bold;
  }
  /* GenericOutput */
  .chroma .go {
    color: #44475a;
  }
  /* GenericPrompt */
  .chroma .gp {
  }
  /* GenericStrong */
  .chroma .gs {
  }
  /* GenericSubheading */
  .chroma .gu {
    font-weight: bold;
  }
  /* GenericTraceback */
  .chroma .gt {
  }
  /* GenericUnderline */
  .chroma .gl {
    text-decoration: underline;
  }
  /* TextWhitespace */
  .chroma .w {
  }
}

A smol.css => smol.css +319 -0
@@ 0,0 1,319 @@
*,
::before,
::after {
  box-sizing: border-box;
}

::-moz-focus-inner {
  border-style: none;
  padding: 0;
}
:-moz-focusring {
  outline: 1px dotted ButtonText;
}
:-moz-ui-invalid {
  box-shadow: none;
}

@media (prefers-color-scheme: light) {
  :root {
    --white: #6a737d;
    --code: #fff8d3;
    --code-border: #f0d547;
    --pre: #f6f8fa;
    --bg-color: #fff;
    --text-color: #24292f;
    --link-color: #005cc5;
    --visited: #6f42c1;
    --blockquote: #005cc5;
    --blockquote-bg: #fff;
    --hover: #d73a49;
    --grey: #ccc;
  }
}

@media (prefers-color-scheme: dark) {
  :root {
    --white: #f2f2f2;
    --code: #414558;
    --code-border: #252525;
    --pre: #252525;
    --bg-color: #282a36;
    --text-color: #f2f2f2;
    --link-color: #8be9fd;
    --visited: #bd93f9;
    --blockquote: #bd93f9;
    --blockquote-bg: #414558;
    --hover: #ff80bf;
    --grey: #414558;
  }
}

html {
  background-color: var(--bg-color);
  color: var(--text-color);
  line-height: 1.5;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
    Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial,
    sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
  -webkit-text-size-adjust: 100%;
  -moz-tab-size: 4;
  tab-size: 4;
  font-size: 17px;
}

body {
  margin: 0 auto;
  max-width: 42rem;
}

img {
  max-width: 100%;
  height: auto;
}

b,
strong {
  font-weight: bold;
}

code,
kbd,
samp,
pre {
  font-family: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", Menlo,
    monospace;
  font-size: 0.8rem;
}

code,
kbd,
samp {
  background-color: var(--code);
  border: 1px solid var(--code-border);
}

pre > code {
  background-color: inherit;
  padding: 0;
  border: none;
}

code {
  border-radius: 0.3rem;
  padding: 0.15rem 0.2rem 0.05rem;
}

pre {
  border-radius: 5px;
  padding: 1rem;
  margin: 1rem 0;
  overflow-x: auto;
  background-color: var(--pre) !important;
}

small {
  font-size: 0.8rem;
}

summary {
  display: list-item;
}

h1,
h2,
h3 {
  margin: 0;
  padding: 0.6rem 0 0 0;
  border: 0;
  font-style: normal;
  font-weight: inherit;
  font-size: inherit;
}

hr {
  color: inherit;
  border: 0;
  margin: 0;
  height: 1px;
  background: var(--grey);
  margin: 2rem auto;
  text-align: center;
}

a {
  text-decoration: underline;
  color: var(--link-color);
}

a:hover,
a:visited:hover {
  color: var(--hover);
}

a:visited {
  color: var(--visited);
}

a.link-grey {
  text-decoration: underline;
  color: var(--white);
}

a.link-grey:visited {
  color: var(--white);
}

section {
  margin-bottom: 1.4rem;
}

section:last-child {
  margin-bottom: 0;
}

header {
  margin: 1rem auto;
}

p {
  margin: 1rem 0;
}

article {
  overflow-wrap: break-word;
}

blockquote {
  border-left: 5px solid var(--blockquote);
  background-color: var(--blockquote-bg);
  padding: 0.8rem;
  margin: 1rem 0;
}

blockquote > p {
  margin: 0;
}

ul,
ol {
  padding: 0 0 0 2rem;
  list-style-position: outside;
}

ul[style*="list-style-type: none;"] {
  padding: 0;
}

li {
  margin: 0.5rem 0;
}

li > pre {
  padding: 0;
}

footer {
  text-align: center;
  margin-bottom: 4rem;
}

dt {
  font-weight: bold;
}

dd {
  margin-left: 0;
}

dd:not(:last-child) {
  margin-bottom: 0.5rem;
}

.post-date {
  width: 130px;
}

.text-grey {
  color: var(--grey);
}

.text-2xl {
  font-size: 1.85rem;
  line-height: 1.15;
}

.text-xl {
  font-size: 1.45rem;
  line-height: 1.15;
}

.text-lg {
  font-size: 1.25rem;
  line-height: 1.15;
}

.text-sm {
  font-size: 0.875rem;
}

.text-center {
  text-align: center;
}

.font-bold {
  font-weight: bold;
}

.font-italic {
  font-style: italic;
}

.inline {
  display: inline;
}

.flex {
  display: flex;
}

.items-center {
  align-items: center;
}

.m-0 {
  margin: 0;
}

.my {
  margin-top: 0.5rem;
  margin-bottom: 0.5rem;
}

.mx {
  margin-left: 0.5rem;
  margin-right: 0.5rem;
}

.mx-2 {
  margin-left: 1rem;
  margin-right: 1rem;
}

.justify-between {
  justify-content: space-between;
}

.flex-1 {
  flex: 1;
}

@media only screen and (max-width: 600px) {
  body {
    padding: 1rem;
  }

  header {
    margin: 0;
  }
}

A syntax.css => syntax.css +700 -0
@@ 0,0 1,700 @@
@media (prefers-color-scheme: light) {
  /* Background */
  .bg {
    background-color: #ffffff;
  }
  /* PreWrapper */
  .chroma {
    background-color: #ffffff;
  }
  /* Other */
  .chroma .x {
  }
  /* Error */
  .chroma .err {
    background-color: #a848a8;
  }
  /* CodeLine */
  .chroma .cl {
  }
  /* LineTableTD */
  .chroma .lntd {
    vertical-align: top;
    padding: 0;
    margin: 0;
    border: 0;
  }
  /* LineTable */
  .chroma .lntable {
    border-spacing: 0;
    padding: 0;
    margin: 0;
    border: 0;
  }
  /* LineHighlight */
  .chroma .hl {
    background-color: #ffffcc;
  }
  /* LineNumbersTable */
  .chroma .lnt {
    white-space: pre;
    user-select: none;
    margin-right: 0.4em;
    padding: 0 0.4em 0 0.4em;
    color: #7f7f7f;
  }
  /* LineNumbers */
  .chroma .ln {
    white-space: pre;
    user-select: none;
    margin-right: 0.4em;
    padding: 0 0.4em 0 0.4em;
    color: #7f7f7f;
  }
  /* Line */
  .chroma .line {
    display: flex;
  }
  /* Keyword */
  .chroma .k {
    color: #2838b0;
  }
  /* KeywordConstant */
  .chroma .kc {
    color: #444444;
    font-style: italic;
  }
  /* KeywordDeclaration */
  .chroma .kd {
    color: #2838b0;
    font-style: italic;
  }
  /* KeywordNamespace */
  .chroma .kn {
    color: #2838b0;
  }
  /* KeywordPseudo */
  .chroma .kp {
    color: #2838b0;
  }
  /* KeywordReserved */
  .chroma .kr {
    color: #2838b0;
  }
  /* KeywordType */
  .chroma .kt {
    color: #2838b0;
    font-style: italic;
  }
  /* Name */
  .chroma .n {
  }
  /* NameAttribute */
  .chroma .na {
    color: #388038;
  }
  /* NameBuiltin */
  .chroma .nb {
    color: #388038;
  }
  /* NameBuiltinPseudo */
  .chroma .bp {
    font-style: italic;
  }
  /* NameClass */
  .chroma .nc {
    color: #287088;
  }
  /* NameConstant */
  .chroma .no {
    color: #b85820;
  }
  /* NameDecorator */
  .chroma .nd {
    color: #287088;
  }
  /* NameEntity */
  .chroma .ni {
    color: #709030;
  }
  /* NameException */
  .chroma .ne {
    color: #908828;
  }
  /* NameFunction */
  .chroma .nf {
    color: #785840;
  }
  /* NameFunctionMagic */
  .chroma .fm {
    color: #b85820;
  }
  /* NameLabel */
  .chroma .nl {
    color: #289870;
  }
  /* NameNamespace */
  .chroma .nn {
    color: #289870;
  }
  /* NameOther */
  .chroma .nx {
  }
  /* NameProperty */
  .chroma .py {
  }
  /* NameTag */
  .chroma .nt {
    color: #2838b0;
  }
  /* NameVariable */
  .chroma .nv {
    color: #b04040;
  }
  /* NameVariableClass */
  .chroma .vc {
  }
  /* NameVariableGlobal */
  .chroma .vg {
    color: #908828;
  }
  /* NameVariableInstance */
  .chroma .vi {
  }
  /* NameVariableMagic */
  .chroma .vm {
    color: #b85820;
  }
  /* Literal */
  .chroma .l {
  }
  /* LiteralDate */
  .chroma .ld {
  }
  /* LiteralString */
  .chroma .s {
    color: #b83838;
  }
  /* LiteralStringAffix */
  .chroma .sa {
    color: #444444;
  }
  /* LiteralStringBacktick */
  .chroma .sb {
    color: #b83838;
  }
  /* LiteralStringChar */
  .chroma .sc {
    color: #a848a8;
  }
  /* LiteralStringDelimiter */
  .chroma .dl {
    color: #b85820;
  }
  /* LiteralStringDoc */
  .chroma .sd {
    color: #b85820;
    font-style: italic;
  }
  /* LiteralStringDouble */
  .chroma .s2 {
    color: #b83838;
  }
  /* LiteralStringEscape */
  .chroma .se {
    color: #709030;
  }
  /* LiteralStringHeredoc */
  .chroma .sh {
    color: #b83838;
  }
  /* LiteralStringInterpol */
  .chroma .si {
    color: #b83838;
    text-decoration: underline;
  }
  /* LiteralStringOther */
  .chroma .sx {
    color: #a848a8;
  }
  /* LiteralStringRegex */
  .chroma .sr {
    color: #a848a8;
  }
  /* LiteralStringSingle */
  .chroma .s1 {
    color: #b83838;
  }
  /* LiteralStringSymbol */
  .chroma .ss {
    color: #b83838;
  }
  /* LiteralNumber */
  .chroma .m {
    color: #444444;
  }
  /* LiteralNumberBin */
  .chroma .mb {
    color: #444444;
  }
  /* LiteralNumberFloat */
  .chroma .mf {
    color: #444444;
  }
  /* LiteralNumberHex */
  .chroma .mh {
    color: #444444;
  }
  /* LiteralNumberInteger */
  .chroma .mi {
    color: #444444;
  }
  /* LiteralNumberIntegerLong */
  .chroma .il {
    color: #444444;
  }
  /* LiteralNumberOct */
  .chroma .mo {
    color: #444444;
  }
  /* Operator */
  .chroma .o {
    color: #666666;
  }
  /* OperatorWord */
  .chroma .ow {
    color: #a848a8;
  }
  /* Punctuation */
  .chroma .p {
    color: #888888;
  }
  /* Comment */
  .chroma .c {
    color: #888888;
    font-style: italic;
  }
  /* CommentHashbang */
  .chroma .ch {
    color: #287088;
    font-style: italic;
  }
  /* CommentMultiline */
  .chroma .cm {
    color: #888888;
    font-style: italic;
  }
  /* CommentSingle */
  .chroma .c1 {
    color: #888888;
    font-style: italic;
  }
  /* CommentSpecial */
  .chroma .cs {
    color: #888888;
    font-style: italic;
  }
  /* CommentPreproc */
  .chroma .cp {
    color: #289870;
  }
  /* CommentPreprocFile */
  .chroma .cpf {
    color: #289870;
  }
  /* Generic */
  .chroma .g {
  }
  /* GenericDeleted */
  .chroma .gd {
    color: #c02828;
  }
  /* GenericEmph */
  .chroma .ge {
    font-style: italic;
  }
  /* GenericError */
  .chroma .gr {
    color: #c02828;
  }
  /* GenericHeading */
  .chroma .gh {
    color: #666666;
  }
  /* GenericInserted */
  .chroma .gi {
    color: #388038;
  }
  /* GenericOutput */
  .chroma .go {
    color: #666666;
  }
  /* GenericPrompt */
  .chroma .gp {
    color: #444444;
  }
  /* GenericStrong */
  .chroma .gs {
    font-weight: bold;
  }
  /* GenericSubheading */
  .chroma .gu {
    color: #444444;
  }
  /* GenericTraceback */
  .chroma .gt {
    color: #2838b0;
  }
  /* GenericUnderline */
  .chroma .gl {
    text-decoration: underline;
  }
  /* TextWhitespace */
  .chroma .w {
    color: #a89028;
  }
}

@media (prefers-color-scheme: dark) {
  /* Background */
  .bg {
    color: #f8f8f2;
    background-color: #282a36;
  }
  /* PreWrapper */
  .chroma {
    color: #f8f8f2;
    background-color: #282a36;
  }
  /* Other */
  .chroma .x {
  }
  /* Error */
  .chroma .err {
  }
  /* CodeLine */
  .chroma .cl {
  }
  /* LineTableTD */
  .chroma .lntd {
    vertical-align: top;
    padding: 0;
    margin: 0;
    border: 0;
  }
  /* LineTable */
  .chroma .lntable {
    border-spacing: 0;
    padding: 0;
    margin: 0;
    border: 0;
  }
  /* LineHighlight */
  .chroma .hl {
    background-color: #ffffcc;
  }
  /* LineNumbersTable */
  .chroma .lnt {
    white-space: pre;
    user-select: none;
    margin-right: 0.4em;
    padding: 0 0.4em 0 0.4em;
    color: #7f7f7f;
  }
  /* LineNumbers */
  .chroma .ln {
    white-space: pre;
    user-select: none;
    margin-right: 0.4em;
    padding: 0 0.4em 0 0.4em;
    color: #7f7f7f;
  }
  /* Line */
  .chroma .line {
    display: flex;
  }
  /* Keyword */
  .chroma .k {
    color: #ff79c6;
  }
  /* KeywordConstant */
  .chroma .kc {
    color: #ff79c6;
  }
  /* KeywordDeclaration */
  .chroma .kd {
    color: #8be9fd;
    font-style: italic;
  }
  /* KeywordNamespace */
  .chroma .kn {
    color: #ff79c6;
  }
  /* KeywordPseudo */
  .chroma .kp {
    color: #ff79c6;
  }
  /* KeywordReserved */
  .chroma .kr {
    color: #ff79c6;
  }
  /* KeywordType */
  .chroma .kt {
    color: #8be9fd;
  }
  /* Name */
  .chroma .n {
  }
  /* NameAttribute */
  .chroma .na {
    color: #50fa7b;
  }
  /* NameBuiltin */
  .chroma .nb {
    color: #8be9fd;
    font-style: italic;
  }
  /* NameBuiltinPseudo */
  .chroma .bp {
  }
  /* NameClass */
  .chroma .nc {
    color: #50fa7b;
  }
  /* NameConstant */
  .chroma .no {
  }
  /* NameDecorator */
  .chroma .nd {
  }
  /* NameEntity */
  .chroma .ni {
  }
  /* NameException */
  .chroma .ne {
  }
  /* NameFunction */
  .chroma .nf {
    color: #50fa7b;
  }
  /* NameFunctionMagic */
  .chroma .fm {
  }
  /* NameLabel */
  .chroma .nl {
    color: #8be9fd;
    font-style: italic;
  }
  /* NameNamespace */
  .chroma .nn {
  }
  /* NameOther */
  .chroma .nx {
  }
  /* NameProperty */
  .chroma .py {
  }
  /* NameTag */
  .chroma .nt {
    color: #ff79c6;
  }
  /* NameVariable */
  .chroma .nv {
    color: #8be9fd;
    font-style: italic;
  }
  /* NameVariableClass */
  .chroma .vc {
    color: #8be9fd;
    font-style: italic;
  }
  /* NameVariableGlobal */
  .chroma .vg {
    color: #8be9fd;
    font-style: italic;
  }
  /* NameVariableInstance */
  .chroma .vi {
    color: #8be9fd;
    font-style: italic;
  }
  /* NameVariableMagic */
  .chroma .vm {
  }
  /* Literal */
  .chroma .l {
  }
  /* LiteralDate */
  .chroma .ld {
  }
  /* LiteralString */
  .chroma .s {
    color: #f1fa8c;
  }
  /* LiteralStringAffix */
  .chroma .sa {
    color: #f1fa8c;
  }
  /* LiteralStringBacktick */
  .chroma .sb {
    color: #f1fa8c;
  }
  /* LiteralStringChar */
  .chroma .sc {
    color: #f1fa8c;
  }
  /* LiteralStringDelimiter */
  .chroma .dl {
    color: #f1fa8c;
  }
  /* LiteralStringDoc */
  .chroma .sd {
    color: #f1fa8c;
  }
  /* LiteralStringDouble */
  .chroma .s2 {
    color: #f1fa8c;
  }
  /* LiteralStringEscape */
  .chroma .se {
    color: #f1fa8c;
  }
  /* LiteralStringHeredoc */
  .chroma .sh {
    color: #f1fa8c;
  }
  /* LiteralStringInterpol */
  .chroma .si {
    color: #f1fa8c;
  }
  /* LiteralStringOther */
  .chroma .sx {
    color: #f1fa8c;
  }
  /* LiteralStringRegex */
  .chroma .sr {
    color: #f1fa8c;
  }
  /* LiteralStringSingle */
  .chroma .s1 {
    color: #f1fa8c;
  }
  /* LiteralStringSymbol */
  .chroma .ss {
    color: #f1fa8c;
  }
  /* LiteralNumber */
  .chroma .m {
    color: #bd93f9;
  }
  /* LiteralNumberBin */
  .chroma .mb {
    color: #bd93f9;
  }
  /* LiteralNumberFloat */
  .chroma .mf {
    color: #bd93f9;
  }
  /* LiteralNumberHex */
  .chroma .mh {
    color: #bd93f9;
  }
  /* LiteralNumberInteger */
  .chroma .mi {
    color: #bd93f9;
  }
  /* LiteralNumberIntegerLong */
  .chroma .il {
    color: #bd93f9;
  }
  /* LiteralNumberOct */
  .chroma .mo {
    color: #bd93f9;
  }
  /* Operator */
  .chroma .o {
    color: #ff79c6;
  }
  /* OperatorWord */
  .chroma .ow {
    color: #ff79c6;
  }
  /* Punctuation */
  .chroma .p {
  }
  /* Comment */
  .chroma .c {
    color: #6272a4;
  }
  /* CommentHashbang */
  .chroma .ch {
    color: #6272a4;
  }
  /* CommentMultiline */
  .chroma .cm {
    color: #6272a4;
  }
  /* CommentSingle */
  .chroma .c1 {
    color: #6272a4;
  }
  /* CommentSpecial */
  .chroma .cs {
    color: #6272a4;
  }
  /* CommentPreproc */
  .chroma .cp {
    color: #ff79c6;
  }
  /* CommentPreprocFile */
  .chroma .cpf {
    color: #ff79c6;
  }
  /* Generic */
  .chroma .g {
  }
  /* GenericDeleted */
  .chroma .gd {
    color: #ff5555;
  }
  /* GenericEmph */
  .chroma .ge {
    text-decoration: underline;
  }
  /* GenericError */
  .chroma .gr {
  }
  /* GenericHeading */
  .chroma .gh {
    font-weight: bold;
  }
  /* GenericInserted */
  .chroma .gi {
    color: #50fa7b;
    font-weight: bold;
  }
  /* GenericOutput */
  .chroma .go {
    color: #44475a;
  }
  /* GenericPrompt */
  .chroma .gp {
  }
  /* GenericStrong */
  .chroma .gs {
  }
  /* GenericSubheading */
  .chroma .gu {
    font-weight: bold;
  }
  /* GenericTraceback */
  .chroma .gt {
  }
  /* GenericUnderline */
  .chroma .gl {
    text-decoration: underline;
  }
  /* TextWhitespace */
  .chroma .w {
  }
}