@import url("https://fonts.googleapis.com/css2?family=Epilogue:wght@700&family=Inter:wght@400;700&display=swap");
/* Lume's design system */
/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */
*,:after,:before{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;line-height:1.15;-moz-tab-size:4;-o-tab-size:4;tab-size:4}
body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;margin:0}
hr{color:inherit;height:0}
abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}
b,strong{font-weight:bolder}
code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}
small{font-size:80%}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
sub{bottom:-.25em}
sup{top:-.5em}
table{border-color:inherit;text-indent:0}
button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}
button,select{text-transform:none}
[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}
::-moz-focus-inner{border-style:none;padding:0}
:-moz-focusring{outline:1px dotted ButtonText}
:-moz-ui-invalid{box-shadow:none}
legend{padding:0}
progress{vertical-align:baseline}
::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}
[type=search]{-webkit-appearance:textfield;outline-offset:-2px}
::-webkit-search-decoration{-webkit-appearance:none}
::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}
summary{display:list-item}
:focus-visible{outline-offset:2px;outline-style:solid;outline-width:1px}
details{border:1px solid}
summary{--marker-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m8 9.586 5.293-5.293a1 1 0 1 1 1.414 1.414l-6 6a1 1 0 0 1-1.414 0l-6-6a1 1 0 0 1 1.414-1.414L8 9.586Z' fill='%23000'/%3E%3C/svg%3E");align-items:center;background:inherit;background:var(--marker-image) no-repeat center left .5em;background-size:1em 1em;color:inherit;cursor:pointer;display:flex;list-style:none;min-height:2.75em;padding:.7em .7em .7em 2em;text-decoration:none}
summary::-webkit-details-marker{display:none}
a[role=button],button,input[type=button],input[type=reset],input[type=submit]{align-items:center;background:inherit;border:1px solid;color:inherit;-moz-column-gap:.5em;column-gap:.5em;display:inline-flex;justify-content:center;min-height:2.75em;padding:.7em;text-align:center;text-decoration:none}
:is(button,input[type=button],input[type=reset],input[type=submit],a[role=button]):not(:disabled){cursor:pointer}
:is(button,input[type=button],input[type=reset],input[type=submit],a[role=button]):disabled,[aria-disabled=true]:is(button,input[type=button],input[type=reset],input[type=submit],a[role=button]){opacity:.33;pointer-events:none}
select{--marker-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m8 9.586 5.293-5.293a1 1 0 1 1 1.414 1.414l-6 6a1 1 0 0 1-1.414 0l-6-6a1 1 0 0 1 1.414-1.414L8 9.586Z' fill='%23000'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--marker-image) no-repeat center right .5em;background-size:1em 1em;border:1px solid;border-radius:0;color:inherit;display:block;min-height:2.75em;padding:.7em 2em .7em .7em}
select:not(:disabled){cursor:pointer}
select:disabled{opacity:.33;pointer-events:none}
input[type=checkbox]{accent-color:currentColor;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-position:50%;background-repeat:no-repeat;border:1px solid;color:inherit;height:1.5em;transition:background-color .2s;vertical-align:middle;width:1.5em}
input[type=checkbox]:checked{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.92 3c.297 0 .552.109.763.326.211.217.317.48.317.786 0 .307-.107.57-.32.79l-7.56 7.777a1.02 1.02 0 0 1-.76.321 1.03 1.03 0 0 1-.768-.321l-4.28-4.394A1.09 1.09 0 0 1 1 7.495c0-.307.106-.57.317-.787.21-.217.466-.325.764-.325s.555.11.77.33l3.51 3.611 6.79-6.994c.213-.22.47-.33.768-.33Z'/%3E%3C/svg%3E")}
input[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 8a1 1 0 0 1 1-1h12a1 1 0 1 1 0 2H2a1 1 0 0 1-1-1Z'/%3E%3C/svg%3E")}
input[type=checkbox]:not(:disabled){cursor:pointer}
input[type=checkbox]:disabled{opacity:.33;pointer-events:none}
input[type=radio]{accent-color:currentColor;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-position:50%;background-repeat:no-repeat;border:1px solid;border-radius:50%;color:inherit;height:1.5em;transition:border-width .2s;vertical-align:middle;width:1.5em}
input[type=radio]:checked{border-width:.5em}
input[type=radio]:not(:disabled){cursor:pointer}
input[type=radio]:disabled{opacity:.33;pointer-events:none}
input[type=range]{--color-background:#fff;--track-height:1px;accent-color:currentColor;-webkit-appearance:none;background-color:transparent;color:currentColor;cursor:pointer;display:block;height:1.5em;margin:0;vertical-align:middle;width:100%}
input[type=range]::-webkit-slider-runnable-track{background:currentColor;border:0;height:var(--track-height);width:100%}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--color-background);border:1px solid;border-radius:50%;cursor:pointer;height:1.5em;margin-top:calc((-1.5em + var(--track-height))/2);width:1.5em}
input[type=range]:focus::-webkit-slider-runnable-track{background:currentColor}
input[type=range]::-moz-range-track{background:currentColor;border:0;height:var(--track-height);width:100%}
input[type=range]::-moz-range-thumb{background:var(--color-background);border:1px solid;border-radius:50%;box-sizing:border-box;cursor:pointer;height:1.5em;width:1.5em}
input[type=range]:not(:disabled){cursor:pointer}
input[type=range]:not(:disabled):focus-visible::-webkit-slider-thumb,input[type=range]:not(:disabled):hover::-webkit-slider-thumb{background:currentColor}
input[type=range]:not(:disabled):focus-visible::-moz-range-thumb,input[type=range]:not(:disabled):hover::-moz-range-thumb{background:currentColor}
input[type=range]:disabled{opacity:.33;pointer-events:none}
hr{background:none;border:none;border-top:1px solid;margin-bottom:2em;margin-top:2em}
input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{background:inherit;border:1px solid;color:inherit;display:block;min-height:2.75em;padding:.7em;width:100%}
:is(input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea):disabled{opacity:.33;pointer-events:none}
:is(input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea)::-moz-placeholder{color:currentColor;opacity:.5}
:is(input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea)::placeholder{color:currentColor;opacity:.5}
textarea{-webkit-appearance:initial;min-height:3em;resize:vertical}
progress{background:transparent;border:1px solid;display:block;height:.5em;width:100%}
progress::-webkit-progress-value{background:currentColor;height:calc(100% + 1px);position:relative;top:-1px}
progress::-webkit-progress-bar{background:transparent}
progress::-moz-progress-bar{background:currentColor}
progress:indeterminate{animation:progressIndeterminate 1s linear infinite alternate;background:linear-gradient(currentColor,currentColor) no-repeat;background-size:25% 100%}
progress:indeterminate::-moz-progress-bar{background:transparent}
@keyframes progressIndeterminate{0%{background-position-x:0}to{background-position-x:100%}}
dialog{border-width:1px;max-width:calc(100% - 2em);padding:1em}
[role=tooltip]{background:#fff;border:1px solid;margin:0;max-width:30em;padding:1em;position:absolute}
button[role=switch]{--color-off:gray;--color-on:currentColor;border:none;padding:0}
button[role=switch]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='8'/%3E%3C/svg%3E") no-repeat 0 currentColor;background-size:2em 2em;border:1px solid;border-radius:1em;color:var(--color-off);content:"";display:block;flex:0 0 auto;height:2em;transition-duration:.2s;transition-property:background-color,background-position;width:3.5em}
button[role=switch][aria-checked=true]:before{background-position-x:right;color:var(--color-on)}
:root{--color-base:#14181f;--color-text:#29303d;--color-dim:#525f7a;--color-link:var(--color-primary);--color-link-hover:var(--color-primary-highlight);--color-line:#e0e4eb;--color-background:#fff;--color-highlight:#f3f4f7;--color-primary:#bf4040;--color-primary-highlight:#933;--code-text:var(--color-base);--code-comment:#708090;--code-token-1:#91084d;--code-token-2:#913608;--code-token-3:#086891;--code-token-4:#369108;--code-inserted:#639108;--code-deleted:#910853;--code-border:var(--color-line);--code-background:var(--color-highlight);--code-background-selection:#b3d4fc;--font-family-code:Consolas,Menlo,Monaco,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L","Courier New",Courier,monospace;--font-family-ui:-apple-system,system-ui,sans-serif;--font-family-display:Epilogue,var(--font-family-ui);--font-code:.9em/1.5 var(--font-family-code);--font-display:bold clamp(2rem,10vw,4rem)/1 var(--font-family-display);--font-display-spacing:-0.02em;--font-title:bold clamp(1.5rem,8vw,2rem)/1.2 var(--font-family-ui);--font-title-spacing:-0.015em;--font-body:clamp(1rem,5vw,1.2rem)/1.6 var(--font-family-ui);--font-body-bold:bold var(--font-body);--font-body-spacing:0;--font-ui:1rem/1.4 var(--font-family-ui);--font-ui-bold:bold var(--font-ui);--font-small:0.85rem/1.4 var(--font-family-ui);--font-small-bold:bold var(--font-small);--row-gap-xsmall:1rem;--row-gap-small:2.5rem;--row-gap-medium:5rem;--border-radius:6px;--animation-duration:0.2s;--pagefind-ui-scale:.8;--pagefind-ui-primary:var(--color-text);--pagefind-ui-text:var(--color-text);--pagefind-ui-background:var(--color-highlight);--pagefind-ui-border:var(--color-line);--pagefind-ui-tag:var(--color-highlight);--pagefind-ui-border-width:1px;--pagefind-ui-border-radius:var(--border-radius);--pagefind-ui-image-border-radius:var(--border-radius);--pagefind-ui-image-box-ratio:3/2;--pagefind-ui-font:var(--font-family-ui);color-scheme:light}
@supports (font-variation-settings:normal){:root{--font-family-ui:Inter,-apple-system,system-ui,sans-serif;--font-display-spacing:-0.035em;--font-title-spacing:-0.025em;--font-body-spacing:-0.015em}}
@media (prefers-color-scheme:dark){:root{--color-base:#fff;--color-text:#c2c9d6;--color-dim:#8592ad;--color-line:#29303d;--color-background:#14181f;--color-highlight:#1f242e;--color-primary:#f45757;--color-primary-highlight:#f66f6f;--code-text:var(--color-base);--code-comment:hsl(0,0,50%);--code-token-1:#faeb9e;--code-token-2:#d67a5c;--code-token-3:#8c9966;--code-token-4:#e9bc63;--code-inserted:#8c9966;--code-deleted:#d16a47;--code-border:var(--color-line);--code-background:var(--color-highlight);--code-background-selection:hsla(0,0,93%,0.15);color-scheme:dark}}
html{scroll-behavior:smooth;scroll-padding-top:120px}
body,html{background-color:var(--color-background);color:var(--color-base);font:var(--font-ui)}
main>:first-child{margin-top:0}
a{color:var(--color-link)}
a:hover{color:var(--color-link-hover);text-decoration:none}
table{margin:1em 0}
table td,table th{padding-right:1em}
code,pre{font:var(--font-code);letter-spacing:0}
:not(pre)>code{background:var(--color-line);border-radius:4px;padding:0 .2rem}
:focus{z-index:1}
:focus-visible{outline-color:var(--color-line)}
hr{color:var(--color-line);margin:var(--row-gap-medium) 0}
.badge{border:1px solid var(--color-line);border-radius:4px;color:var(--color-dim);display:inline-block;padding:.2em .6em;text-decoration:none}
.badge:hover{background-color:var(--color-line)}
.body{color:var(--color-text);font:var(--font-body);letter-spacing:var(--font-body-spacing)}
.body>:first-child{margin-top:0}
.body h2,.body h3,.body h4,.body h5,.body h6{color:var(--color-base);margin:1.5em 0 .5em}
.body h1{font:var(--font-display);letter-spacing:var(--font-display-spacing);padding-bottom:.1em}
.body h1,.body h2{border-bottom:1px solid var(--color-line)}
.body h2{font:var(--font-title);letter-spacing:var(--font-title-spacing);padding-bottom:.2em}
.body img{max-width:100%}
.body .header-anchor{color:inherit;text-decoration:none}
.breadcrumb{display:flex;flex-wrap:wrap;font:var(--font-small);list-style:none;margin:0;padding:0}
.breadcrumb>li:after{content:"/";display:inline-block;padding:0 .5em}
.breadcrumb a{text-decoration:none}
.breadcrumb a:hover{text-decoration:underline}
.button{background:var(--background,none);border:0;border-radius:var(--border-radius);color:var(--color,currentColor);flex:0 0 auto;font:var(--font-ui);transition-duration:var(--animation-duration);transition-property:background-color,color}
.button.is-small{font:var(--font-small);min-height:1em}
.button.is-primary{--color:var(--color-background);--color-hover:var(--color-background);--background:var(--color-primary);--background-hover:var(--color-primary-highlight)}
.button.is-secondary{--color:var(--color-dim);--color-hover:var(--color-text);--color-active:var(--color-base);--background:var(--color-highlight);--background-hover:var(--color-line);--background-active:var(--color-line)}
.button:hover{background:var(--background-hover,none);color:var(--color-hover,currentColor)}
code[class*=language-],pre[class*=language-]{border-radius:var(--border-radius);color:var(--code-text);direction:ltr;font:var(--font-code);-webkit-hyphens:none;hyphens:none;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;white-space:pre;word-break:normal;word-spacing:normal}
code[class*=language-] ::-moz-selection, code[class*=language-]::-moz-selection, pre[class*=language-] ::-moz-selection, pre[class*=language-]::-moz-selection{background:var(--code-background-selection)}
code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{background:var(--code-background-selection)}
pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1em}
:not(pre)>code[class*=language-],pre[class*=language-]{background:var(--code-background);border:1px solid var(--code-border)}
:not(pre)>code[class*=language-]{padding:.15em .2em .05em}
.namespace,.token.punctuation{opacity:.7}
.token{position:relative;z-index:1}
.token.bold,.token.important{font-weight:700}
.token.italic{font-style:italic}
.token.entity{cursor:help}
.token.cdata,.token.comment,.token.doctype,.token.prolog{color:var(--code-comment)}
.token.builtin,.token.constant,.token.keyword,.token.property,.token.selector,.token.symbol{color:var(--code-token-1)}
.token.boolean,.token.number,.token.tag{color:var(--code-token-2)}
.token.deleted{color:var(--code-deleted)}
.token.inserted{color:var(--code-inserted)}
.token.attr-value,.token.char,.token.entity,.token.operator,.token.string,.token.url,.token.variable{color:var(--code-token-3)}
.token.atrule,.token.attr-name,.token.important,.token.regex{color:var(--code-token-4)}
.emptyState{background-color:var(--color-highlight);border-radius:var(--border-radius);color:var(--color-dim);font:var(--font-body);padding:2em}
.search .pagefind-ui__search-input{font-weight:400}
.search .pagefind-ui__search-input::-moz-placeholder{color:var(--color-dim);opacity:1}
.search .pagefind-ui__search-input::placeholder{color:var(--color-dim);opacity:1}
.search .pagefind-ui__search-input:focus{background:var(--color-background)}
.search .pagefind-ui__search-clear{background:none;z-index:2}
.search .pagefind-ui__drawer{background-color:var(--color-highlight);border-radius:var(--pagefind-ui-border-radius);margin-top:4px;padding:0 1em}
.search .pagefind-ui__results-area{margin-top:0}
.search .pagefind-ui__result{border-bottom:none!important}
.toc{font:var(--font-small);margin-bottom:var(--row-gap-small)}
.toc h2{font:var(--font-small-bold);margin:.5em 0;text-transform:uppercase}
.toc ol{color:var(--color-dim);margin:0;padding-left:1.5em}
.toc ul{margin:0;padding-left:1em}
.toc li{margin:.1em 0}
.toc a{color:inherit}
.pagination ul{-moz-column-gap:2rem;column-gap:2rem;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));list-style:none;padding:0}
.pagination a{color:var(--color-dim);display:block;text-decoration:none}
.pagination a:hover strong{text-decoration:underline}
.pagination strong{color:var(--color-base);display:block}
.pagination-prev{grid-column:1;text-align:left}
.pagination-page{grid-column:2;text-align:center}
.pagination-next{grid-column:3;text-align:right}
@media only screen and (max-width:576px){.pagination strong{display:none}}
/* Custom components */
.navbar {
  display: flex;
  flex-wrap: wrap;
  -moz-column-gap: 1rem;
       column-gap: 1rem;
  row-gap: 1rem;
  justify-content: space-between;
  padding: 2rem min(5vw, 5rem);
}
.navbar-links {
  padding: 0;
  margin: 0;
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  -moz-column-gap: 1.5rem;
       column-gap: 1.5rem;
  font: var(--font-ui-bold);
}
.navbar-links [aria-current="page"] {
    text-decoration: none;
  }
.navbar-search {
  padding: 0 1em;
  margin-left: auto;
  display: flex;
  align-items: center;
}
.navbar-home {
  text-decoration: none;
}
.page-header {
  margin-bottom: var(--row-gap-medium);
}
.page-header > p:first-child {
    margin-top: 0;
    margin-bottom: var(--row-gap-medium);
  }
.page-title {
  font: var(--font-display);
  letter-spacing: var(--font-display-spacing);
  margin: 0;
}
.page-navigation {
  margin-bottom: var(--row-gap-medium);
}
.page-navigation ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5em;
  }
.page-navigation h2 {
    font: var(--font-body-bold);
    letter-spacing: var(--font-body-spacing);
    margin: 0.5em 0;
  }
.page-pagination {
  border-top: solid 1px var(--color-line);
  margin-top: var(--row-gap-medium);
}
.page-footer {
  text-align: center;
}
.postList {
  list-style: none;
  padding: 0;
}
.postList article.post + article.post {
    margin-top: var(--row-gap-medium);
  }
.postList li.post + li.post {
    margin-top: var(--row-gap-small);
  }
.postList .post-header {
    margin-bottom: var(--row-gap-xsmall);
  }
.postList .post-details {
    font: var(--font-small);
  }
.postList .post-title {
    font: var(--font-title);
    letter-spacing: var(--font-title-spacing);
    display: block;
  }
.postList .post-title a {
      text-decoration: none;
    }
.post-header {
  margin-bottom: var(--row-gap-small);
}
.post-title {
  font: var(--font-display);
  letter-spacing: var(--font-display-spacing);
  margin: 0 0 0.1em;
}
.post-details {
  display: flex;
  flex-flow: row wrap;
  row-gap: 1em;
  -moz-column-gap: .5em;
       column-gap: .5em;
  align-items: center;
  font: var(--font-small);
  color: var(--color-dim);
}
.post-details p {
    margin: 0;
  }
.post-details p:nth-child(-n+2)::after {
    content: "•";
    padding-left: .5em;
    align-self: stretch;
  }
.post-details p:last-of-type {
    margin-right: .5em;
  }
.post-details a {
    color: inherit;
  }
.post-tags {
  display: flex;
  flex-flow: row wrap;
  gap: .5em;
  align-items: center;
}
.post-link {
  display: inline-block;
}
/* Make the links black */
:root {
  --color-link: var(--color-base);
  --color-link-hover: var(--color-dim);
}
/* Page layout */
main {
  padding: var(--row-gap-medium) 0;
  max-width: min(100% - 15vw, 45em);
  margin: 0 auto;
}
main > :first-child {
    margin-top: 0;
  }
/* Search tweak */
.search {
  margin-top: var(--row-gap-xsmall);
}
