@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;700&display=swap');

html {
    min-width: 375px;
    overflow-x: hidden;
}

:root {
    --black: #000000;
    --white: #FFFFFF;
    --dark: #2e3440;
    --light: #eceff4;
    --blue: #81a1c1;
    --teal: #3ab6c0;
}

body {
    font-family: 'IBM Plex Sans', sans-serif;
    line-height: 1.5;
    margin: 2em auto;
    text-align: justify;
    max-width: 650px;
    width: calc(100% - 20px);
    background-color: var(--white);
    color: var(--black);
    font-size: 12pt;
}

a {
    color: var(--black);
    text-decoration: none;
}

a:hover {
    color: var(--teal);
}

h1 {
    font-size: 18pt;
}

h2 {
    font-size: 16pt;
}

h3 {
    font-size: 14pt;
}

h4,
h5,
h6 {
    font-size: 12pt;
}

.header-section-number {
    margin-right: 0.5em;
}

h2,
h3,
h4,
h5,
h6 {
    font-family: 'IBM Plex Sans', sans-serif;
    text-align: left;
    margin-top: 1.2em;
    margin-bottom: 0.5em;
}

p {
    text-indent: 1em;
    margin: 0em;
    margin-bottom: 0.5em;
}

li p {
    text-indent: 0;
}

figure p {
    display: flex;
    flex-flow: row nowrap;
    justify-content: center;
}

figcaption p {
    display: revert;
}

h1 + p,
h2 + p,
h3 + p,
h4 + p,
h5 + p,
h6 + p {
    text-indent: 0;
}

.author {
    font-size: 12pt;
    text-align: center;
    margin-top: 0em;
    margin-bottom: 2em;
}

code {
    font-family: 'IBM Plex Mono', 'Courier New', Courier, monospace;
    border-radius: 4px;
    background-color: var(--light);
    color: var(--black);
    font-size: 12pt;
}

pre > code {
    font-size: 10pt;
    background-color: var(--dark);
    color: var(--light);
}

pre {
    font-family: 'IBM Plex Mono', 'Courier New', Courier, monospace;
    background-color: var(--dark);
    color: var(--light);
    padding: 0.1em;
    border-radius: 4px;
    margin-left: 0;
    margin-right: 0;
    line-height: 1.15;
}

pre > code.sourceCode {
    position: unset;
}

pre.numberSource code > span {
    position: unset;
}

pre.numberSource {
    border: 0;
    padding-left: 0;
    padding-right: 0;
}

pre.numberSource code > span > a:first-child::before {
    color: var(--blue);
    text-decoration: none;
    content: " " counter(source-line) " ";
    text-align: left;
    width: max-content;
    left: 0;
    padding: 0;
}

div.sourceCode, pre.sourceCode {
    margin: 0em;
}

.listing {
    padding-bottom: 2em;
    padding-top: 1em;
}

.math em {
    font-family: 'IBM Plex Mono', serif;
    font-style: normal;
}

.math.display {
    text-indent: 0em;
}

#titlepage {
    max-width: 450px;
    text-align: center;
    margin-left: auto;
    margin-right: auto;
}

#titlepage p, .listing p, figure p {
    text-indent: 0;
}

#dedication {
    text-align: center;
    align-items: center;
    justify-content: center;
}

#dedication h1 {
    display: none;
}

.level1 {
    padding-top: 3em;
    padding-bottom: 3em;
    border-bottom: dashed var(--black) 1px;
}

#abstract h1 {
    text-align: center;
    font-size: 14pt;
    margin: 0em;
    margin-bottom: 1em;
}

#acknowledgments h1 {
    text-align: center;
    font-size: 14pt;
    margin: 0em;
    margin-bottom: 1em;
}

#scroller {
    height: 0.4em;
    width: 0%;
    position: fixed;
    left: 0;
    top: 0;
    background-color: var(--teal);
}

#table-of-contents {
    text-align: left;
}

#table-of-contents ul {
    list-style-type: none;
}

#table-of-contents > ul > li {
    margin-bottom: 1em;
}

.toc-section-number {
    margin-right: 0.5em;
}

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

figure {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin: 0em;
    margin-top: 2em;
    margin-bottom: 2em;
}

figcaption {
    text-align: justify;
    margin-top: 1em;
}

table > caption {
    text-align: justify;
    margin-bottom: 1em;
}

table {
    margin: 0em;
    margin-top: 2em;
    margin-bottom: 2em;
    font-size: 11pt;
    width: 100%;
}

table th {
    font-weight: normal;
    border-bottom: 1px solid var(--black);
    padding-bottom: 0.5em;
}

.MJX-TEX {
    font-size: 11pt !important;
}

.proof::after {
    content: "□";
    font-size: 1.5em;
    text-align: right;
    width: 100%;
    float: right;
    margin-top: -0.5em;
}

#footnotes {
    text-align: left;
    font-size: 11pt;
    word-wrap: break-word;
}

#references {
    word-wrap: break-word;
    border-bottom: 0em solid var(--black);
}

@media print {
    .level1 {
        page-break-after: always;
        break-after: page;
        border-bottom: none;
        padding: 0em;
        margin: 0em;
    }

    #dedication {
        display: flex;
        width: 100%;
        height: 100vh;
    }

    #titlepage {
        padding-top: 4em;
    }

    #scroller {
        display: none;
    }
}

@media screen and (max-width: 550px) {
    .MJX-TEX {
        font-size: 9pt !important;
    }

    table {
        font-size: 9pt;
    }

    pre > code {
        font-size: 8pt;
    }

    #table-of-contents {
        font-size: 10pt;
    }

    #footnotes {
        font-size: 9pt;
    }

    .proof::after {
        content: "□";
        font-size: 1em;
    }
}

@media screen and (max-width: 450px) {
    table {
        font-size: 7pt;
    }

    pre > code {
        font-size: 7pt;
    }

    #references {
        font-size: 9pt;
    }

    #footnotes {
        font-size: 8pt;
    }

    body {
        text-align: left;
    }
}