html {
  line-height:1.15;
  -webkit-text-size-adjust:100%
}
body {
  margin:0
}
h1 {
  font-size:2em;
  margin:0.67em 0
}
hr {
  box-sizing:content-box;
  height:0;
  overflow:visible
}
pre {
  font-size:1em
}
a {
  background-color:transparent
}
abbr[title] {
  border-bottom:none;
  text-decoration:underline;
  text-decoration:underline dotted
}
b,
strong {
  font-weight:600
}
code,
kbd,
samp {
  font-size:1em
}
small {
  font-size:80%
}
sub,
sup {
  font-size:85%;
  line-height:0;
  position:relative;
  vertical-align:baseline;
  font-variant-numeric:tabular-nums
}
sub {
  bottom:-0.25em
}
sup {
  top:-0.35em
}
img {
  border-style:none
}
textarea {
  overflow:auto
}
:root {
  --font-content: -apple-system, BlinkMacSystemFont, "Inter", "IBM Plex Sans", Segoe UI, Helvetica, Arial, sans-serif;
  --font-ui: var(--font-content);
  --font-mono:  ui-monospace, SFMono-Regular, "Cascadia Code", "IBM Plex Mono", "Roboto Mono", "DejaVu Sans Mono", "Liberation Mono", Menlo, Monaco, "Consolas", "Source Code Pro", monospace;
  --border-radius: 4px;
  --font-small: 0.875em;
  --font-smaller: 0.8em;
  --wrap-wide: 54em;
  --wrap-normal: 37em;
  --heading-weight: 500;
  --input-width: 20em;
  --image-radius: 6px;
  --line-height: 1.5
}
@media (max-width: 860px) {
  :root {
    --wrap-normal: 88vw;
    --wrap-wide: 100vw;
    --input-width: 100%;
    --heading-weight: 600
  }
  :root .wide,
  :root .wider {
    --border-radius: 0;
    --image-radius: 0
  }
}
:root {
  --flexoki-black: #100F0F;
  --flexoki-black-rgb: 16,15,15;
  --flexoki-paper: #FFFCF0;
  --flexoki-paper-rgb: 254,252,240;
  --flexoki-200-rgb: 206,205,195;
  --flexoki-50:              #F2F0E5;
  --flexoki-100:             #E6E4D9;
  --flexoki-150:             #DAD8CE;
  --flexoki-200:             #CECDC3;
  --flexoki-300:             #B7B5AC;
  --flexoki-400:             #9F9D96;
  --flexoki-500:             #878580;
  --flexoki-600:             #6F6E69;
  --flexoki-700:             #575653;
  --flexoki-800:             #403E3C;
  --flexoki-850:             #343331;
  --flexoki-900:             #282726;
  --flexoki-950:             #1C1B1A;
  --flexoki-red-50:          #FFE1D5;
  --flexoki-red-100:         #FFCABB;
  --flexoki-red-150:         #FDB2A2;
  --flexoki-red-200:         #F89A8A;
  --flexoki-red-300:         #E8705F;
  --flexoki-red-400:         #D14D41;
  --flexoki-red-500:         #C03E35;
  --flexoki-red-600:         #AF3029;
  --flexoki-red-700:         #942822;
  --flexoki-red-800:         #6C201C;
  --flexoki-red-850:         #551B18;
  --flexoki-red-900:         #3E1715;
  --flexoki-red-950:         #261312;
  --flexoki-orange-50:       #FFE7CE;
  --flexoki-orange-100:      #FED3AF;
  --flexoki-orange-150:      #FCC192;
  --flexoki-orange-200:      #F9AE77;
  --flexoki-orange-300:      #EC8B49;
  --flexoki-orange-400:      #DA702C;
  --flexoki-orange-500:      #CB6120;
  --flexoki-orange-600:      #BC5215;
  --flexoki-orange-700:      #9D4310;
  --flexoki-orange-800:      #71320D;
  --flexoki-orange-850:      #59290D;
  --flexoki-orange-900:      #40200D;
  --flexoki-orange-950:      #27180E;
  --flexoki-yellow-50:       #FAEEC6;
  --flexoki-yellow-100:      #F6E2A0;
  --flexoki-yellow-150:      #F1D67E;
  --flexoki-yellow-200:      #ECCB60;
  --flexoki-yellow-300:      #DFB431;
  --flexoki-yellow-400:      #D0A215;
  --flexoki-yellow-500:      #BE9207;
  --flexoki-yellow-600:      #AD8301;
  --flexoki-yellow-700:      #8E6B01;
  --flexoki-yellow-800:      #664D01;
  --flexoki-yellow-850:      #503D02;
  --flexoki-yellow-900:      #3A2D04;
  --flexoki-yellow-950:      #241E08;
  --flexoki-green-50:        #EDEECF;
  --flexoki-green-100:       #DDE2B2;
  --flexoki-green-150:       #CDD597;
  --flexoki-green-200:       #BEC97E;
  --flexoki-green-300:       #A0AF54;
  --flexoki-green-400:       #879A39;
  --flexoki-green-500:       #768D21;
  --flexoki-green-600:       #66800B;
  --flexoki-green-700:       #536907;
  --flexoki-green-800:       #3D4C07;
  --flexoki-green-850:       #313D07;
  --flexoki-green-900:       #252D09;
  --flexoki-green-950:       #1A1E0C;
  --flexoki-cyan-50:         #DDF1E4;
  --flexoki-cyan-100:        #BFE8D9;
  --flexoki-cyan-150:        #A2DECE;
  --flexoki-cyan-200:        #87D3C3;
  --flexoki-cyan-300:        #5ABDAC;
  --flexoki-cyan-400:        #3AA99F;
  --flexoki-cyan-500:        #2F968D;
  --flexoki-cyan-600:        #24837B;
  --flexoki-cyan-700:        #1C6C66;
  --flexoki-cyan-800:        #164F4A;
  --flexoki-cyan-850:        #143F3C;
  --flexoki-cyan-900:        #122F2C;
  --flexoki-cyan-950:        #101F1D;
  --flexoki-blue-50:         #E1ECEB;
  --flexoki-blue-100:        #C6DDE8;
  --flexoki-blue-150:        #ABCFE2;
  --flexoki-blue-200:        #92BFDB;
  --flexoki-blue-300:        #66A0C8;
  --flexoki-blue-400:        #4385BE;
  --flexoki-blue-500:        #3171B2;
  --flexoki-blue-600:        #205EA6;
  --flexoki-blue-700:        #1A4F8C;
  --flexoki-blue-800:        #163B66;
  --flexoki-blue-850:        #133051;
  --flexoki-blue-900:        #12253B;
  --flexoki-blue-950:        #101A24;
  --flexoki-purple-50:       #F0EAEC;
  --flexoki-purple-100:      #E2D9E9;
  --flexoki-purple-150:      #D3CAE6;
  --flexoki-purple-200:      #C4B9E0;
  --flexoki-purple-300:      #A699D0;
  --flexoki-purple-400:      #8B7EC8;
  --flexoki-purple-500:      #735EB5;
  --flexoki-purple-600:      #5E409D;
  --flexoki-purple-700:      #4F3685;
  --flexoki-purple-800:      #3C2A62;
  --flexoki-purple-850:      #31234E;
  --flexoki-purple-900:      #261C39;
  --flexoki-purple-950:      #1A1623;
  --flexoki-magenta-50:      #FEE4E5;
  --flexoki-magenta-100:     #FCCFDA;
  --flexoki-magenta-150:     #F9B9CF;
  --flexoki-magenta-200:     #F4A4C2;
  --flexoki-magenta-300:     #E47DA8;
  --flexoki-magenta-400:     #CE5D97;
  --flexoki-magenta-500:     #B74583;
  --flexoki-magenta-600:     #A02F6F;
  --flexoki-magenta-700:     #87285E;
  --flexoki-magenta-800:     #641F46;
  --flexoki-magenta-850:     #4F1B39;
  --flexoki-magenta-900:     #39172B;
  --flexoki-magenta-950:     #24131D
}
:root,
.theme-light {
  --color-bg-primary: var(--flexoki-paper);
  --color-bg-primary-rgb: var(--flexoki-paper-rgb);
  --color-inverted-rgb: var(--flexoki-black-rgb);
  --color-bg-secondary: var(--flexoki-50);
  --color-tx-normal: var(--flexoki-black);
  --color-tx-normal-rgb: var(--flexoki-black-rgb);
  --color-tx-muted: var(--flexoki-600);
  --color-tx-faint: var(--flexoki-300);
  --color-ui-normal: var(--flexoki-100);
  --color-ui-hover: var(--flexoki-150);
  --color-ui-active: var(--flexoki-200);
  --color-highlight: var(--flexoki-yellow-100);
  --color-action: var(--flexoki-cyan-600);
  --color-bg-hover: var(--flexoki-cyan-50);
  --color-selection: rgba(187,220,206,0.3);
  --color-re: var(--flexoki-red-600);
  --color-re-hover: var(--flexoki-red-400);
  --color-or: var(--flexoki-orange-600);
  --color-or-hover: var(--flexoki-orange-400);
  --color-ye: var(--flexoki-yellow-600);
  --color-ye-hover: var(--flexoki-yellow-400);
  --color-gr: var(--flexoki-green-600);
  --color-gr-hover: var(--flexoki-green-400);
  --color-cy: var(--flexoki-cyan-600);
  --color-cy-hover: var(--flexoki-cyan-400);
  --color-bl: var(--flexoki-blue-600);
  --color-bl-hover: var(--flexoki-blue-400);
  --color-pu: var(--flexoki-purple-600);
  --color-pu-hover: var(--flexoki-purple-400);
  --color-ma: var(--flexoki-magenta-600);
  --color-ma-hover: var(--flexoki-magenta-400)
}
bg {
  background-color:var(--color-bg-primary)
}
html {
  box-sizing:border-box;
  width:100%;
  height:100%;
  font-size:62.5%
}
body {
  color-scheme:light dark;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  background-color:var(--color-bg-primary);
  font-family:var(--font-content);
  margin:2vw auto 0 auto;
  line-height:var(--line-height);
  padding:2rem 0 24rem;
  overflow-x:hidden;
  font-size:1.8rem;
  font-size:calc(1.5rem + 0.25vw);
  color:var(--color-tx-normal)
}
small,
.small {
  font-size:var(--font-small);
  line-height:1.4
}
.smaller {
  font-size:var(--font-smaller);
  line-height:1.4
}
.font-ui {
  font-family:var(--font-ui)
}
.font-content {
  font-family:var(--font-content)
}
.font-mono {
  font-family:var(--font-mono)
}
mark {
  background-color:var(--color-highlight);
  color:var(--color-tx-normal)
}
footer > .links,
footer > .h-card {
  color:var(--color-tx-faint);
  font-size:var(--font-small);
}
footer > .credit {
  color:var(--color-tx-faint);
  font-size:var(--font-smaller);
  text-align:center;
}
p {
  max-width:var(--wrap-normal)
}
blockquote {
  padding-left:1.5em;
  margin:1.5em 0;
  border-left:2px solid var(--color-tx-normal)
}
blockquote p {
  margin:0
}
hr {
  width:100%;
  border:0;
  height:1px;
  margin:1.5em 0;
  background:var(--color-ui-normal)
}
main>hr,
footer>hr {
  margin:4em 0
}
heading {
  display:block;
  max-width:var(--wrap-wide);
  width:var(--wrap-normal);
  margin-left:auto;
  margin-right:auto
}
.wrap {
  max-width:var(--wrap-normal);
  margin-left:auto;
  margin-right:auto
}
article {
  display:block;
  max-width:var(--wrap-wide);
  width:var(--wrap-normal);
  margin-left:auto;
  margin-right:auto
}
article img {
  margin-bottom:0.5em
}
figure {
  margin:0;
  padding:1.5em 0;
  text-align:center
}
figcaption {
  font-size:var(--font-smaller);
  line-height:1.4;
  color:var(--color-tx-muted);
  padding:1em
}
figcaption a {
  color:var(--color-tx-muted)
}
.muted {
  color:var(--color-tx-muted)
}
.muted a {
  color:var(--color-tx-muted)
}
.faint {
  color:var(--color-tx-faint)
}
.action {
  color:var(--color-action)
}
.font-medium {
  font-weight:500
}
nav {
  margin:0 auto 3em;
  width:var(--wrap-normal);
  max-width:var(--wrap-wide)
}
@media (max-width: 54em) {
  .wide {
    border:none
  }
  .wide img,
  .wide iframe,
  .wide video {
    border-radius:0
  }
}
@media (max-width: 600px) {
  .mh {
    display:none
  }
  .mobile-grid-rows {
    grid-auto-flow:row
  }
}
.backlinks {
  display:grid;
  gap:0.5em;
  grid-template-columns:repeat(2, 1fr)
}
.backlink {
  border:1px solid var(--color-ui-normal);
  padding:0.75em;
  border-radius:var(--border-radius);
  line-height:1.3
}
.backlink:hover {
  border-color:var(--color-ui-hover)
}
.backlink .small,
.backlink .smaller {
  line-height:1.3
}
@media (max-width: 600px) {
  .backlinks {
    grid-template-columns:repeat(1, 1fr)
  }
}
.post-nav {
  display:grid;
  gap:0.5em;
  grid-template-columns:repeat(2, 1fr)
}
.post-nav .next {
  text-align:right;
}
code {
  font-family:var(--font-mono);
  background:var(--color-bg-secondary);
  border-radius:4px;
  font-size:90%
}
pre {
  font-family:var(--font-mono);
  border-radius:4px;
  padding:1em;
  font-size:90%;
  border:1px solid var(--color-ui-normal);
  white-space:pre-wrap
}
pre code {
  background-color:transparent
}
.footnote {
  color:var(--color-tx-muted);
  text-decoration:none;
  font-weight:500;
  padding-left:0.1em
}
.reversefootnote {
  color:var(--color-tx-muted);
  text-decoration:none
}
.footnotes {
  padding-top:4em
}
.footnotes:before {
  content:"Footnotes";
  padding-bottom:0.25em;
  color:var(--color-tx-muted);
  display:block
}
.footnotes li p {
  margin-block-start:0.5em;
  margin-block-end:0.5em
}
h1,
h2,
h3,
h4,
h5,
h6 {
  line-height:1.3;
  margin-bottom:0;
  padding-bottom:0
}
h1 {
  font-weight:500;
  font-size:2em;
  font-size:calc(1.35em + 0.55vw);
  letter-spacing:-0.02em;
  line-height:1.25;
  margin-top:1.5em;
  margin-bottom:0.25em
}
h2 {
  font-weight:var(--heading-weight);
  font-size:1.4em;
  font-size:calc(1em + 0.2vw);
  letter-spacing:-0.015em;
  margin-top:1em;
  margin-bottom:0.5em;
  line-height:1.3
}
h3 {
  font-weight:var(--heading-weight);
  font-size:1.2em;
  font-size:1em;
  line-height:1.3;
  margin-top:1em;
  margin-bottom:0.5em
}
h4 {
  font-size:1em;
  font-weight:600;
  line-height:1.3;
  margin-top:1em
}
h5 {
  font-weight:700;
  line-height:1.25;
  text-transform:uppercase;
  margin-bottom:1em;
  letter-spacing:0.05em;
  font-size:1.4rem
}
h1 a,
h1 a:visited,
h1 a:link {
  color:var(--color-tx-normal)
}
h1 a,
h2 a,
h3 a,
h4 a,
h5 a,
h6 a {
  color:var(--color-tx-normal);
  text-decoration:none
}
h1 a:hover,
h2 a:hover,
h3 a:hover,
h4 a:hover,
h5 a:hover,
h6 a:hover {
  color:var(--color-action)
}
h1 a .muted:hover,
h2 a .muted:hover,
h3 a .muted:hover,
h4 a .muted:hover,
h5 a .muted:hover,
h6 a .muted:hover {
  color:var(--color-tx-muted);
  text-decoration:none
}
h1,
h2,
h3,
h4,
h5,
h6 {
  position:relative
}
img {
  max-width:100%;
  display:block;
  border-radius:var(--image-radius)
}
[hidden] {
  display:none !important
}
desaturate {
  filter:grayscale(100%)
}
a {
  color:var(--color-tx-normal);
  text-decoration:underline
}
a:hover {
  color:var(--color-action);
  border-color:var(--color-action)
}
a:focus {
  outline:none;
  background-color:var(--color-bg-hover)
}
a.plain,
a.muted {
  text-decoration:none
}
ul>li {
  list-style:disc
}
ol,
ul {
  padding:0.5rem 0 1rem 1em;
  margin:0 0 0 0.5em
}
ol>li,
ul>li {
  padding:0.15rem 0
}
ol>li::marker,
ul>li::marker {
  color:var(--color-tx-faint)
}
ul>li::marker {
  font-size:85%
}
ul.list-plain {
  padding-inline-start:0;
  margin-left:0
}
ul.list-plain>li {
  list-style:none
}
@media (max-width: 600px) {
  ol>li,
  ul>li {
    padding:0.25rem 0
  }
}
table {
  margin-top:1.5em;
  margin-bottom:2.5em;
  width:100%;
  border-collapse:collapse;
  border-spacing:0;
  font-size:90%;
  font-variant-numeric:tabular-nums
}
tr {
  border-bottom:1px solid var(--color-ui-normal)
}
td {
  padding:0.5em 1em 0.5em 0;
  line-height:1.3
}
th:not(:last-child) {
  padding-right:1em
}
td:last-child {
  padding-right:0
}
th {
  text-align:left;
  font-weight:600;
  padding-bottom:0.5em
}
.table-top td {
  vertical-align:top
}
.table-col-first-md td:first-child {
  width:12em
}
.table-col-last-md td:last-child {
  width:12em
}
.table-nowrap table {
  white-space:nowrap
}
.table-tabular table {
  font-variant-numeric:tabular-nums
}
.table-small table {
  font-size:var(--font-small)
}
@media (max-width: 600px) {
  .table-mobile-wide table {
    width:106%
  }
  .table-mobile-wide table td {
    min-width:16em
  }
  .table-col-first-md td:first-child {
    min-width:9em
  }
}
textarea {
  font-family:inherit;
  font-size:inherit;
  font-weight:inherit;
  color:var(--color-tx-normal)
}
label {
  color:var(--color-tx-normal);
  display:block;
  padding:0 0 0.2em 0
}
.gallery-3,
.gallery-6,
.gallery-2 {
  display:grid;
  column-gap:0.5em;
  row-gap:0.5em;
}
.gallery-6 {
  grid-template-columns:repeat(6, 1fr);
}
.gallery-3 {
  grid-template-columns:repeat(3, 1fr);
}
.gallery-2 {
  grid-template-columns:repeat(2, 1fr);
}
.gallery-2 > figure,
.gallery-6 > figure,
.gallery-3 > figure {
  padding: 0;
}
.gallery-2 > figure > figcaption,
.gallery-6 > figure > figcaption,
.gallery-3 > figure > figcaption {
  padding: 0 1em 1em 1em;
}
.gallery-3 img,
.gallery-6 img,
.gallery-2 img {
  object-fit: cover;
  width:100%;
  aspect-ratio:1/1;
}
.gallery-3 p,
.gallery-6 p,
.gallery-2 p,
.gallery-3 img,
.gallery-2 img {
  margin:0;
}
