* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

:root {
    color-scheme: light dark;
}

html {
    --text: #000000;
    --text-alt: #555555;
    --text-accent: #eaeaea;
    --link: #127d99;
    --background: #ffffff;
    --select-highlight: #c9ddf7;
    --code-background: #eaeaea;

    --mono-font: San Francisco Mono, Monaco, "Liberation Mono", "Consolas", "Lucida Console", "DejaVu Sans Mono", monospace;

    font-size: 12pt;
}

@media (prefers-color-scheme: dark) {
    html {
        --text: #fbfbfb;
        --text-alt: #bbbbbb;
        --text-accent: #303030;
        --background: #1c1c1c;
        --link: #88aec3;
        --select-highlight: #2a649d;
        --code-background: #282c34;
    }

    .invert {
        filter: invert(100%);
    }
}

body {
    color: var(--text);
    background-color: var(--background);
    word-wrap: break-word;
}

img {
    margin-top: 1ch;
    margin-bottom: 1.3rem;
    margin-left: auto;
    margin-right: auto;
    display: block;
    max-width: 100%;
    border: solid 1px var(--text-accent);
}

h1, h2, h3, h4, h5, h6 {
    margin-bottom: 0.8ch;
    text-wrap: balance;
}

h2, h3, h4, h5, h6 {
    padding-top: 1rem;
}

h1 > code, h2 > code, h3 > code, h4 > code, h5 > code, h6 > code {
    font-size: inherit;
}

ul {
    list-style: disc;
}


ol, ul, p, details, video {
    margin-bottom: 1.3rem;
}

li > ul, li > ol {
    margin-bottom: 0;
}

p, li {
    text-wrap: pretty;
}

ol, ul {
    margin-left: 1.6rem;
}

blockquote {
    border-left: solid var(--text-accent) 4px;
    margin-bottom: 1rem;
    padding-left: 1rem;
}

blockquote p {
    text-align: left;
}

/* fix in-line formatting */
sub, sup {
    line-height: 0;
}

sup {
    font-weight: bold;
    text-decoration: underline;
}

/* General Tags */
.title {
    display: inline-block;
}

.post-header {
    margin-bottom: 2ch;
    text-align: left;
}

#links {
    display: flex;
    gap: 2ch;
}

.title-link {
    color: var(--text);
}

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

a:has(sup) {
    text-decoration: none;
}

a:has(code) {
    text-decoration: none;
}

a:hover {
    color: var(--text-alt);
}

.header-anchor {
    color: var(--text);
    text-decoration: none;
}

.header-anchor:hover {
    text-decoration: underline;
}

header {
    display: flex;
    align-items: center;
    padding-top: 1rem;
    padding-bottom: 1rem;
    margin-bottom: 1rem;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-between;
}

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

main {
    display: grid;
    grid-template-columns: 1fr min(72ch, 90%) 1fr;
}

main > * {
    grid-column: 2;
}

footer {
    padding-bottom: 1rem;
}

hr {
    padding: 1ch;
    margin: 2ch 0 2ch 0;
    border: 0;
    border-top: 1px solid var(--text-accent);
}

.footnotes hr {
    margin: 3ch 0 3ch 0;
    padding: 0;
}

.footnote-ref {
    text-decoration: none;
}

#scroll-buffer {
    display: block;
    height: 10%;
    margin-top: 10%;
}

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

summary {
    cursor: pointer;
}

.callout {
    margin-bottom: 1.3rem;
    padding: 1ch;
    border: solid 1px var(--text-accent);
}

/* syntax highlight */
code {
    font-family: var(--mono-font);
    font-size: 10pt;
}

pre {
    padding: 1ch;
    word-wrap: normal;
    overflow-x: auto;
    line-height: 1.2em;
    text-size-adjust: none;
    -webkit-text-size-adjust: none;
    margin-bottom: 1.3rem;
}

pre > code {
    padding: 0;
}

.bg { color: #ebdbb2; background-color: #282828; }
.chroma { color: #ebdbb2; background-color: #282828; }
.chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
.chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
.chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
.chroma .hl { background-color: #3d3d3d }
.chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em; color: #756d59 }
.chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em; color: #756d59 }
.chroma .line { display: flex; }
.chroma .k { color: #fe8019 }
.chroma .kc { color: #fe8019 }
.chroma .kd { color: #fe8019 }
.chroma .kn { color: #fe8019 }
.chroma .kp { color: #fe8019 }
.chroma .kr { color: #fe8019 }
.chroma .kt { color: #fabd2f }
.chroma .na { color: #b8bb26; font-weight: bold }
.chroma .nb { color: #fabd2f }
.chroma .no { color: #d3869b }
.chroma .ni { color: #fabd2f }
.chroma .ne { color: #fb4934 }
.chroma .nf { color: #fabd2f }
.chroma .nl { color: #fb4934 }
.chroma .nt { color: #fb4934 }
.chroma .s { color: #b8bb26 }
.chroma .sa { color: #b8bb26 }
.chroma .sb { color: #b8bb26 }
.chroma .sc { color: #b8bb26 }
.chroma .dl { color: #b8bb26 }
.chroma .sd { color: #b8bb26 }
.chroma .s2 { color: #b8bb26 }
.chroma .se { color: #b8bb26 }
.chroma .sh { color: #b8bb26 }
.chroma .si { color: #b8bb26 }
.chroma .sx { color: #b8bb26 }
.chroma .sr { color: #b8bb26 }
.chroma .s1 { color: #b8bb26 }
.chroma .ss { color: #83a598 }
.chroma .m { color: #d3869b }
.chroma .mb { color: #d3869b }
.chroma .mf { color: #d3869b }
.chroma .mh { color: #d3869b }
.chroma .mi { color: #d3869b }
.chroma .il { color: #d3869b }
.chroma .mo { color: #d3869b }
.chroma .o { color: #fe8019 }
.chroma .ow { color: #fe8019 }
.chroma .c { color: #928374; font-style: italic }
.chroma .ch { color: #928374; font-style: italic }
.chroma .cm { color: #928374; font-style: italic }
.chroma .c1 { color: #928374; font-style: italic }
.chroma .cs { color: #928374; font-style: italic }
.chroma .cp { color: #8ec07c }
.chroma .cpf { color: #8ec07c; }
.chroma .gd { color: #282828; background-color: #fb4934 }
.chroma .ge { color: #83a598; text-decoration: underline }
.chroma .gr { background-color: #fb4934; font-weight: bold }
.chroma .gh { color: #b8bb26; font-weight: bold }
.chroma .gi { color: #282828; background-color: #b8bb26 }
.chroma .go { color: #504945 }
.chroma .gu { color: #b8bb26; font-weight: bold }
.chroma .gt { background-color: #fb4934; font-weight: bold }
