@charset "UTF-8";

@font-face {
    font-family: "elzevier";
    src: url("/fonts/elzevier/elzevier-regular.woff2") format("woff2"),
         url("/fonts/elzevier/elzevier-regular.woff") format("woff");
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "elzevier";
    src: url("/fonts/elzevier/elzevier-bold.woff2") format("woff2"),
         url("/fonts/elzevier/elzevier-bold.woff") format("woff");
    font-weight: bold;
    font-style: normal;
    font-display: swap;
}

.elzevier {
    font-family: "elzevier", serif;
}

.lettrine {
    font-family: "elzevier", serif; /* Use the Elzevier font */
    float: left;
    font-size: 4em; /* Adjust size for the drop cap */
    line-height: 0.8; /* Adjust vertical spacing */
    padding: 0 0.1em 0.1em 0; /* Space around the drop cap */
    text-transform: capitalize; /* Ensure the first letter is capitalized */
}

@font-face {
    font-family: "et-bembo";
    src: local('ET Bembo RomanLF'), local('ETBembo-RomanLF'),
    url("/fonts/et-bembo-roman-line-figures/et-bembo-roman-line-figures.woff") format("woff"),
    url("/fonts/et-bembo-roman-line-figures/et-bembo-roman-line-figures.ttf") format("truetype");
    font-weight: normal;
    font-style: normal;
    font-display: block;
}

@font-face {
    font-family: "et-bembo";
    src: local("ET Bembo DisplayItalic"), local('ETBembo-DisplayItalic'),
    url("/fonts/et-bembo-display-italic-old-style-figures/et-bembo-display-italic-old-style-figures.woff") format("woff"),
    url("/fonts/et-bembo-display-italic-old-style-figures/et-bembo-display-italic-old-style-figures.ttf") format("truetype");
    font-weight: normal;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: "et-bembo";
    src: local("ET Bembo BoldLF"), local('ETBembo-BoldLF'), url("/fonts/et-bembo-bold-line-figures/et-bembo-bold-line-figures.woff") format("woff"), url("/fonts/et-bembo-bold-line-figures/et-bembo-bold-line-figures.ttf") format("truetype");
    font-weight: bold;
    font-style: normal;
    font-display: swap;
}

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
}

em {
    font-style: italic;
}

strong {
    font-weight: bold;
}

body {
    display: flex;
    flex-flow: row nowrap;
    justify-content: center;
    align-items: flex-start;
}

ol, ul {
    list-style: none;
}

table {
    border-collapse: collapse;
    border-spacing: 0;
}

ul {
    list-style: outside circle;
}

ol {
    list-style: outside decimal;
}

ol ol {
    list-style: lower-roman;
}

ul.vault {
    list-style-type: circle
}
p.list {
    margin-bottom: 3rem;
}

article > footer {
    text-align: right;
}

.de-emphasize {
    color: rgba(17, 17, 17, 0.5);
}

.copyright {
    padding-bottom: 2rem;
    font-size: 1rem;
}

/* Pygment is .highlight. Make everything the same width as Tufte paragraphs. */
div.highlight, article footer {
    width: 60%;
}

.highlight {
    border-radius: 3px;
}

.code > .highlight {
    border-radius: 0 3px 3px 0;
}

.linenos {
    border-radius: 3px 0 0 3px;
    background-color: #073642;
    border-right: 1px solid #00232C;
    color: #586E75;
    text-shadow: 0 -1px #021014;
}

td.code {
    width: 100%;
    max-width: 100px;
}

.linenos a {
    color: #586E75;
}

sub, sup {
    position: relative;
    font-size: 75%;
    line-height: 0;
    vertical-align: baseline;
}

sup {
    top: -0.5em;
}

sub {
    bottom: -0.25em;
}

article pre, .page pre {
    padding: .8em;
    line-height: 1.1em;
    overflow: auto;
}

header .header_box {
    padding-top: 4.5em;
}

footer.paginator {
    margin-top: 4rem;
    display: flex;
    justify-content: space-between;
    font-size: 1.2rem;
}

footer.paginator > span.hide {
    visibility: hidden;
}

code {
    font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
    font-size: 1.0rem;
}
/* inline code styles */
p > code, li > code, span.sidenote > code, span.marginnote > code {
    background-color: #F9F2F4;
    border-radius: 4px;
    box-sizing: border-box;
    color: #C7254E;
    padding: 2px 4px;
    white-space: nowrap;
}
pre {
    font-family: Consolas, Monaco, Menlo, "Courier New", monospace;
}

footer p {
    margin: 0;
    font-size: 1.2rem;
}

main {
    padding: 0 4rem 0 6rem;
    max-width: 1000px;
    width: 70%;
}

article > header > p {
    margin: 0;
    font-size: 1rem;
}

/* aside + nav-bar = asidebar! */
#asidebar {
    padding: 8rem 0 0 4rem;
}

#asidebar #logo {
    text-align: center;
    margin-bottom: 2rem;
    min-height: 123px;
}

#asidebar .main-menu ul {
    text-align: center;
    margin: 0;
    padding: 0;
}

#asidebar .main-menu ul li {
    margin: 0 0 20px 0;
    padding: 0;
    list-style: none;
}

#asidebar .main-menu ul li a {
    color: rgb(17, 17, 17);
    text-decoration: none;
    position: relative;
    padding: 10px 10px;
}

#asidebar .main-menu ul li a:after {
    content: "";
    position: absolute;
    height: 2px;
    bottom: 7px;
    left: 10px;
    right: 10px;
    background-color: rgba(17, 17, 17, 0.7);
    visibility: hidden;
    transform: scaleX(0);
    transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

#asidebar .main-menu ul li a:hover {
    text-decoration: none;
}

#asidebar .main-menu ul li a:hover:after {
    visibility: visible;
    transform: scaleX(1);
}

#asidebar #social {
    text-align: center;
    padding: 0;
    margin: 2rem 0 0;
    display: flex;
    flex-flow: row wrap;
    justify-content: space-evenly;
    align-items: center;
}

#asidebar #social li {
    margin: 0;
    display: inline;
    list-style: none;
    flex: 1;
}

section.available {
    padding-top: 0;
    padding-bottom: 2rem;
}

section.available p {
    padding-top: 1rem;
    padding-bottom: 1rem;
    border-top: 1px dashed rgba(17,17,17,0.2);
    border-bottom: 1px dashed rgba(17,17,17,0.2);
}

@media screen and (max-width: 1200px) {
    main {
        padding-right: 0;
    }

    #asidebar #logo {
        min-height: initial;
    }

    #asidebar #logo img {
        max-width: 100px;
    }
}

@media screen and (max-width: 950px) {
    main {
        padding-left: 4rem;
    }

    #asidebar {
        padding-left: 2rem;
    }
}

/* sidebar mobile-ish break that coincides with Tufte's sidenotes disappearing */
@media screen and (max-width: 760px) {
    body {
        display: block;
    }

    main {
        padding-right: 4rem;
        overflow-x: hidden;
        box-sizing: border-box;
        width: 100%;
    }

    body > main > article:first-of-type {
        padding-top: 0;
    }

    div.highlight, article footer {
        width: 100%;
    }

    #asidebar {
        display: flex;
        flex-flow: row nowrap;
        justify-content: flex-start;
        align-items: center;
        padding: 2rem 0 0 4rem;
    }

    #asidebar #logo img {
        max-width: 90px;
    }

    #asidebar #logo {
        margin-bottom: 0;
    }

    #asidebar .main-menu ul {
        margin: 0 0 2em 0;
    }

    #asidebar nav {
        padding-left: 2rem
    }

    #asidebar .main-menu ul {
        text-align: left
    }

    #asidebar .main-menu ul li {
        float: left;
        margin: 0;
        padding: 0 0.25rem;
    }

    #asidebar .main-menu ul li a:hover:after {
        display: none;
    }

    #asidebar .main-menu ul li a {
        padding: 0;
        margin-left: 0.25rem;
    }

    #asidebar .main-menu ul li a:link {
        text-decoration: none;
        background: linear-gradient(#fffff8, #fffff8), linear-gradient(#fffff8, #fffff8), linear-gradient(#333, #333);
        background-size: 0.05em 1px, 0.05em 1px, 1px 1px;
        background-repeat: no-repeat, no-repeat, repeat-x;
        text-shadow: 0.03em 0 #fffff8, -0.03em 0 #fffff8, 0 0.03em #fffff8, 0 -0.03em #fffff8, 0.06em 0 #fffff8, -0.06em 0 #fffff8, 0.09em 0 #fffff8, -0.09em 0 #fffff8, 0.12em 0 #fffff8, -0.12em 0 #fffff8, 0.15em 0 #fffff8, -0.15em 0 #fffff8;
        background-position: 0 93%, 100% 93%, 0 93%;
    }

    #asidebar .main-menu ul li a:link::selection {
        text-shadow: 0.03em 0 #b4d5fe, -0.03em 0 #b4d5fe, 0 0.03em #b4d5fe, 0 -0.03em #b4d5fe, 0.06em 0 #b4d5fe, -0.06em 0 #b4d5fe, 0.09em 0 #b4d5fe, -0.09em 0 #b4d5fe, 0.12em 0 #b4d5fe, -0.12em 0 #b4d5fe, 0.15em 0 #b4d5fe, -0.15em 0 #b4d5fe;
        background: #b4d5fe;
    }

    #asidebar .main-menu ul li a:link::-moz-selection {
        text-shadow: 0.03em 0 #b4d5fe, -0.03em 0 #b4d5fe, 0 0.03em #b4d5fe, 0 -0.03em #b4d5fe, 0.06em 0 #b4d5fe, -0.06em 0 #b4d5fe, 0.09em 0 #b4d5fe, -0.09em 0 #b4d5fe, 0.12em 0 #b4d5fe, -0.12em 0 #b4d5fe, 0.15em 0 #b4d5fe, -0.15em 0 #b4d5fe;
        background: #b4d5fe;
    }

    #asidebar #social {
        padding-left: 2rem;
        display: block;
        margin: 0;
    }

    #asidebar #social li {
        padding-left: 0.25rem
    }

    article pre, article code {
        white-space: pre-wrap;
    }
}

@media screen and (max-width: 600px) {
    main {
        padding: 0 2rem;
    }

    #asidebar {
        padding: 2rem 2rem 0 2rem
    }
}

@media screen and (max-width: 420px) {
    #asidebar #logo img {
        max-width: 80px;
    }

    #asidebar .main-menu ul {
        display: flex;
        flex-flow: row wrap;
        align-items: center;
        justify-content: space-between;
        margin: 0;
    }

    #asidebar .main-menu ul li {
        float: none;
        margin-bottom: 8px;
    }

    #asidebar #social {
        display: none;
    }

    #asidebar nav {
        max-width: 170px;
    }

    main > footer {
        padding-bottom: 0.5rem;
    }
}

/* make <del>s accessible to screen readers. Thanks, MDN! */
del::before,
del::after {
    clip-path: inset(100%);
    clip: rect(1px, 1px, 1px, 1px);
    height: 1px;
    overflow: hidden;
    position: absolute;
    white-space: nowrap;
    width: 1px;
}

del::before {
    content: " [deletion start] ";
}

del::after {
    content: " [deletion end] ";
}

@media print {
    * {
        background: #fff;
    }

    main > article {
        padding-top: 0;
    }

    main {
        width: 100%;
        padding: 0;
    }

    #asidebar {
        display: none;
    }

    img {
        break-inside: avoid;
    }

    p, table, pre {
        widows: 3;
        orphans: 3;
    }

    h1, h2, h3, h4, h5, h6 {
        break-after: avoid;
    }
}

/*
    Tufte CSS styles. Originally from https://edwardtufte.github.io/tufte-css/
    Modified as needed to fit into a 2-column display by Your Name in the
    green San Diegan spring of 2019.
*/
html {
    font-size: 15px;
}

body {
    font-family: et-bembo, Palatino, "Palatino Linotype", "Palatino LT STD", "Book Antiqua", Georgia, serif;
    background-color: #fffff8;
    color: #111;
}

h1 {
    font-weight: 400;
    margin-top: 4rem;
    margin-bottom: 1.5rem;
    font-size: 3.2rem;
    line-height: 1;
}

h2 {
    font-style: italic;
    font-weight: 400;
    margin-top: 2.1rem;
    margin-bottom: 1.4rem;
    font-size: 2.2rem;
    line-height: 1;
}

h3 {
    font-style: italic;
    font-weight: 400;
    font-size: 1.8rem;
    margin-top: 2.5rem;
    margin-bottom: 1.4rem;
    line-height: 1;
}

hr {
    display: block;
    height: 1px;
    width: 60%;
    border: 0;
    border-top: 2px solid rgba(17, 17, 17, 0.1);
    margin: 1em 0;
    padding: 0;
}
hr.separator {
    margin: 0;
}
hr.separator.extra {
    margin: 4rem 0;
}
p.subtitle {
    font-style: italic;
    margin-top: 1rem;
    margin-bottom: 1rem;
    font-size: 1.8rem;
    display: block;
    line-height: 1;
}

.numeral {
    font-family: et-bembo-roman-old-style;
}

.danger {
    color: red;
}

article {
    counter-reset: sidenote-counter;
    position: relative;
}

article:first-of-type {
    padding: 4rem 0;
}

article.intro {
    padding-bottom: 0;
}

article:last-of-type {
    padding-bottom: 4rem;
}

section {
    padding-top: 1rem;
    padding-bottom: 1rem;
}

p, ol, ul {
    font-size: 1.4rem;
    line-height: 2rem;
}

p {
    margin-top: 1.4rem;
    margin-bottom: 1.4rem;
    padding-right: 0;
    vertical-align: baseline;
}

/* Chapter Epigraphs */
div.epigraph {
    margin: 5em 0;
}

div.epigraph > blockquote {
    margin-top: 3em;
    margin-bottom: 3em;
}

div.epigraph > blockquote, div.epigraph > blockquote > p {
    font-style: italic;
}

div.epigraph > blockquote > footer {
    font-style: normal;
}

blockquote > footer > cite {
    font-style: italic;
}

/* end chapter epigraphs styles */

blockquote {
    margin: 1.4rem 40px;
    font-size: 1.4rem;
    padding-left: 1.4rem;
    border-left: 2px solid rgba(17, 17, 17, 0.1);
}

blockquote p {
    width: 59%;
}

blockquote footer {
    width: 59%;
    font-size: 1.1rem;
    text-align: right;
}

section > p, section > footer, section > table, section > hr {
    width: 60%;
}

/* 54 + 6 == 60, to be the same width as paragraph */
section > ol, section > ul {
    width: 54%;
    -webkit-padding-start: 6%;
    -moz-padding-start: 6%;
}

li:not(:first-child) {
    margin-top: 0.25rem;
}

figure {
    padding: 0;
    border: 0;
    font: inherit;
    vertical-align: baseline;
    max-width: 60%;
    margin: 0 0 3em 0;
}

figcaption {
    float: right;
    clear: right;
    margin-top: 0;
    margin-bottom: 0;
    font-size: 1.1rem;
    line-height: 1.6;
    vertical-align: baseline;
    position: relative;
    max-width: 40%;
}

figure.fullwidth figcaption {
    margin-right: 24%;
}

/* Links: replicate underline that clears descenders */
a:link, a:visited {
    color: inherit;
}

article a:link {
    text-decoration: none;
    background: linear-gradient(#fffff8, #fffff8), linear-gradient(#fffff8, #fffff8), linear-gradient(#333, #333);
    background-size: 0.05em 1px, 0.05em 1px, 1px 1px;
    background-repeat: no-repeat, no-repeat, repeat-x;
    text-shadow: 0.03em 0 #fffff8, -0.03em 0 #fffff8, 0 0.03em #fffff8, 0 -0.03em #fffff8, 0.06em 0 #fffff8, -0.06em 0 #fffff8, 0.09em 0 #fffff8, -0.09em 0 #fffff8, 0.12em 0 #fffff8, -0.12em 0 #fffff8, 0.15em 0 #fffff8, -0.15em 0 #fffff8;
    background-position: 0 93%, 100% 93%, 0 93%;
}

/* make underlines sungglier on jobsphones */
@media screen and (-webkit-min-device-pixel-ratio: 0) {
    article a:link {
        background-position-y: 87%, 87%, 87%;
    }
}

article a:link::selection {
    text-shadow: 0.03em 0 #b4d5fe, -0.03em 0 #b4d5fe, 0 0.03em #b4d5fe, 0 -0.03em #b4d5fe, 0.06em 0 #b4d5fe, -0.06em 0 #b4d5fe, 0.09em 0 #b4d5fe, -0.09em 0 #b4d5fe, 0.12em 0 #b4d5fe, -0.12em 0 #b4d5fe, 0.15em 0 #b4d5fe, -0.15em 0 #b4d5fe;
    background: #b4d5fe;
}

article a:link::-moz-selection {
    text-shadow: 0.03em 0 #b4d5fe, -0.03em 0 #b4d5fe, 0 0.03em #b4d5fe, 0 -0.03em #b4d5fe, 0.06em 0 #b4d5fe, -0.06em 0 #b4d5fe, 0.09em 0 #b4d5fe, -0.09em 0 #b4d5fe, 0.12em 0 #b4d5fe, -0.12em 0 #b4d5fe, 0.15em 0 #b4d5fe, -0.15em 0 #b4d5fe;
    background: #b4d5fe;
}

main > article > header > h1 > a:link.no-line {
    background: none;
    text-shadow: none;
}

.sidenote, .marginnote {
    float: right;
    clear: right;
    margin-right: -63%;
    width: 52%;
    margin-top: 0;
    margin-bottom: 0;
    font-size: 1.1rem;
    line-height: 1.3;
    vertical-align: baseline;
    position: relative;
    /* Otherwise, highlighting a paragraph correctly grabs the sidenotes
     TODO: figure out how to improve this later */
    -moz-user-select: none;
    -ms-user-select: none;
    -webkit-user-select: none;
    user-select: none;
}

@media (max-width: 1230px) {
    .sidenote, .marginnote {
        margin-right: -60%;
        width: 45%;
    }
}

.sidenote-number {
    counter-increment: sidenote-counter;
}

.sidenote-number:after, .sidenote:before {
    font-family: et-bembo-roman-old-style;
    position: relative;
    vertical-align: baseline;
}

.sidenote-number:after {
    content: counter(sidenote-counter);
    font-size: 1rem;
    top: -0.5rem;
    left: 0.1rem;
}

.sidenote:before {
    content: counter(sidenote-counter) " ";
    font-size: 1rem;
    top: -0.5rem;
}

blockquote .sidenote, blockquote .marginnote {
    margin-right: -82%;
    min-width: 59%;
    text-align: left;
}

article img {
    max-width: 100%;
}

div.fullwidth, table.fullwidth {
    width: 100%;
}

div.table-wrapper {
    overflow-x: auto;
    font-family: "Trebuchet MS", "Gill Sans", "Gill Sans MT", sans-serif;
}

.sans {
    font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
    letter-spacing: .03em;
}

.sans > code {
    font-size: 1.2rem;
}

h1 > code, h2 > code, h3 > code {
    font-size: 0.80em;
}

.marginnote > code, .sidenote > code {
    font-size: 1rem;
}

.fullwidth {
    max-width: 90%;
    clear: both;
}

span.newthought {
    font-variant: small-caps;
    font-size: 1.2em;
}

input.margin-toggle {
    display: none;
}

label.sidenote-number {
    display: inline;
}

label.margin-toggle:not(.sidenote-number) {
    display: none;
}

.iframe-wrapper {
    position: relative;
    padding-bottom: 56.25%; /* 16:9 */
    padding-top: 25px;
    height: 0;
}

.iframe-wrapper iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

@media (max-width: 760px) {
    hr, section > p, section > footer, section > table {
        width: 100%;
    }

    pre.code {
        width: 97%;
    }

    section > ol {
        width: 90%;
    }

    section > ul {
        width: 90%;
    }

    figure {
        max-width: 90%;
    }

    figcaption, figure.fullwidth figcaption {
        margin-right: 0;
        max-width: none;
    }

    blockquote {
        margin-left: 0;
        margin-right: 0;
    }

    blockquote p, blockquote footer {
        width: 100%;
    }

    label.sidenote-number {
        text-decoration: underline;
        color: #6087dd;
    }

    label.margin-toggle:not(.sidenote-number) {
        display: inline;
        font-size: 1.2rem;
        color: #6087dd;
        vertical-align: super;
        margin-left: -4px;
        text-decoration: underline;
    }

    .sidenote, .marginnote {
        display: none;
    }

    .margin-toggle:checked + .sidenote,
    .margin-toggle:checked + .marginnote {
        display: block;
        float: left;
        left: 1rem;
        clear: both;
        width: 95%;
        margin: 1rem 2.5%;
        vertical-align: baseline;
        position: relative;
        -moz-user-select: text;
        -ms-user-select: text;
        -webkit-user-select: text;
        user-select: text;
    }

    label {
        cursor: pointer;
    }

    div.table-wrapper, table {
        width: 85%;
    }
}

td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight { background: #f8f8f8; }
.highlight .c { color: #3D7B7B; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #9C6500 } /* Comment.Preproc */
.highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
.highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #E40000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #008400 } /* Generic.Inserted */
.highlight .go { color: #717171 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #687822 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .no { color: #880000 } /* Name.Constant */
.highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nl { color: #767600 } /* Name.Label */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #666666 } /* Literal.Number.Bin */
.highlight .mf { color: #666666 } /* Literal.Number.Float */
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #A45A77 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0000FF } /* Name.Function.Magic */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */


/*
 * ===================================================================
 *   FINAL AND CORRECT FIX for Tufte CSS Math
 * ===================================================================
*/
/*
 * ===================================================================
 *   THE FINAL, CORRECTED, AND TESTED FIX for Tufte CSS Math
 * ===================================================================
*/

/*
 * This targets the math container itself (e.g., mjx-container).
 * It does NOT touch the parent paragraph, preserving the 60% width.
*/
/*
 * ===================================================================
 *   FINAL AND CORRECT FIX for Tufte CSS Math
 *   (Now that the render_math plugin is no longer interfering)
 * ===================================================================
*/

/*
 * This targets the math container inside the 60% paragraph.
*//*
 * =======================================================
 *   PERMANENT FONT SIZE FIX for MathJax/KaTeX
 * =======================================================
*/
/*
 * =======================================================
 *   PERMANENT FONT SIZE FIX for MathJax/KaTeX
 * =======================================================
*/
/*
 * =======================================================
 *   FINAL AND CORRECT MATH STYLES for Tufte CSS
 *   (Now that the HTML structure is fixed)
 * =======================================================
*/

/*
 * =======================================================
 *   FINAL, DEFINITIVE FIX for Pelican's Invalid Math HTML
 * =======================================================
*/

/*
 * This rule targets the div.math that is INCORRECTLY
 * placed after a paragraph by the broken browser rendering.
*/
/*
 * ================================================================
 *   FINAL, CORRECT, AND DEFINITIVE FIX for Pelican/Tufte/MathJax
 * ================================================================
*/

/*
 * STAGE 1: Target the container created by the broken HTML.
 * Force it into the 60% text column and center it on the page.
*/
/*
 * =======================================================
 *   FINAL, CORRECT MATH STYLES for the Structural Fix
 * =======================================================
*/

/* Rule 1: Style the div.math container that we created in the Markdown. */
section > div.math {
    /* This forces the container into the 60% "middle third" text column. */
    width: 60%;
    
    /* This centers the 60% block itself on the page. */
    margin-left: auto;
    margin-right: auto;
    
    /* This gives it the same vertical spacing as a paragraph. */
    margin-top: 1.4rem;
    margin-bottom: 1.4rem;
  
    /* This centers the math content *inside* the block. */
    text-align: center;
    
    /* For positioning scroll indicator */
    position: relative;
  }
  
  /* Rule 2: Permanently fix the font size. */
  .math mjx-container[display="true"] {
      font-size: 1.4rem !important;
  }

  /* Ensure inline math matches paragraph line-height and doesn't overflow */
  .math mjx-container[display="false"],
  span.math mjx-container[display="false"],
  p span.math mjx-container[display="false"] {
      font-size: 1.4rem; /* match body text */
      line-height: 2rem;
  }

  /* Make MathJax containers wrap/linebreak gracefully on small screens */
  mjx-container[display="true"],
  mjx-container[display="false"] {
      overflow-x: auto;
      overflow-y: visible;
      -webkit-overflow-scrolling: touch;
      max-width: 100%;
  }

  /* Add fade indicator on the right when content overflows */
  section > div.math-wrapper::after,
  section > div.math::after {
      content: '';
      position: absolute;
      top: 0;
      right: 0;
      bottom: 0;
      width: 50px;
      background: linear-gradient(to right, 
          transparent 0%, 
          rgba(255, 255, 248, 0.2) 30%, 
          rgba(255, 255, 248, 0.5) 60%, 
          rgba(255, 255, 248, 0.95) 100%);
      pointer-events: none;
      opacity: 0;
      transition: opacity 0.4s ease-in-out;
  }

  /* Show fade when wrapper has scrollable child */
  section > div.math-wrapper.has-scrollable::after,
  section > div.math.has-scrollable::after {
      opacity: 1;
  }

  /* Hide fade when scrolled to the end */
  section > div.math-wrapper.scrolled-to-end::after,
  section > div.math.scrolled-to-end::after {
      opacity: 0;
      transition: opacity 0.4s ease-in-out;
  }

  /* Add scrollable arrow indicator */
  section > div.math-wrapper::before,
  section > div.math::before {
      content: '→';
      position: absolute;
      right: 10px;
      top: 50%;
      transform: translateY(-50%);
      font-size: 1.5rem;
      color: rgba(17, 17, 17, 0.4);
      pointer-events: none;
      opacity: 0;
      transition: opacity 0.4s ease-in-out, transform 0.3s ease;
      z-index: 1;
  }

  /* Show arrow when wrapper has scrollable child */
  section > div.math-wrapper.has-scrollable::before,
  section > div.math.has-scrollable::before {
      opacity: 1;
      animation: bounce-arrow 1.5s ease-in-out infinite;
  }

  /* Hide arrow when scrolled to end */
  section > div.math-wrapper.scrolled-to-end::before,
  section > div.math.scrolled-to-end::before {
      opacity: 0;
      animation: none;
      transition: opacity 0.4s ease-in-out;
  }

  @keyframes bounce-arrow {
      0%, 100% {
          transform: translateY(-50%) translateX(0);
      }
      50% {
          transform: translateY(-50%) translateX(5px);
      }
  }

  /* Keep display equations within the 60% column by default (align with paragraph column) */
  section > mjx-container[display="true"],
  section > div.math > mjx-container[display="true"],
  section > div.math {
      width: 60%;
      margin-left: 0;
      margin-right: 0;
  }

  /* Correct alignment using the plugin-emitted wrapper */
  section > div.math-wrapper {
      width: 60%;
      margin-left: 0;
      margin-right: 0;
      margin-top: 1.4rem;
      margin-bottom: 1.4rem;
      position: relative;
  }

  section > div.math-wrapper > div.math {
      text-align: center; /* center equation within the text column */
  }

  section > div.math-wrapper mjx-container[display="true"] {
      font-size: 1.4rem !important;
  }

  /* Center the MathJax display container inside the 60% column */
  section > div.math-wrapper mjx-container[display="true"],
  section > div.math > mjx-container[display="true"] {
      display: block;
      margin-left: auto;
      margin-right: auto;
  }

  /* Mobile: let display equations expand to the content width */
  @media (max-width: 760px) {
      section > mjx-container[display="true"],
      section > div.math > mjx-container[display="true"],
      section > div.math,
      section > div.math-wrapper,
      section > div.math-wrapper > div.math {
          width: 100%;
      }

      /* Slightly reduce display math size on narrow screens */
      .math mjx-container[display="true"] {
          font-size: 1.25rem !important;
      }
  }