@charset "utf-8";


/* Fonts */

@font-face {
    font-family: "Aporetic Serif Mono";
    font-display: swap;
    font-weight:  700;
    font-stretch: normal;
    font-style:   normal;
    src: url('/fonts/aporetic-serif-mono-normalbolditalic.woff2') format('woff2');
}

@font-face {
    font-family: "Aporetic Serif Mono";
    font-display: swap;
    font-weight:  700;
    font-stretch: normal;
    font-style:   normal;
    src: url('/fonts/aporetic-serif-mono-normalboldupright.woff2') format('woff2');
}

@font-face {
    font-family: "Aporetic Serif Mono";
    font-display: swap;
    font-weight:  400;
    font-stretch: normal;
    font-style:   normal;
    src: url('/fonts/aporetic-serif-mono-normalregularitalic.woff2') format('woff2');
}

@font-face {
    font-family: "Aporetic Serif Mono";
    font-display: swap;
    font-weight:  400;
    font-stretch: normal;
    font-style:   normal;
    src: url('/fonts/aporetic-serif-mono-normalregularupright.woff2') format('woff2');
}

@font-face {
    font-family: "Aporetic Serif";
     font-display: swap;
    font-weight:  700;
    font-stretch: normal;
    font-style:   normal;
   src: url('/fonts/aporetic-serif-normalbolditalic.woff2') format('woff2');
}

@font-face {
    font-family: "Aporetic Serif";
    font-display: swap;
    font-weight:  700;
    font-stretch: normal;
    font-style:   normal;
    src: url('/fonts/aporetic-serif-normalboldupright.woff2') format('woff2');
}

@font-face {
    font-family: "Aporetic Serif";
    font-display: swap;
    font-weight:  400;
    font-stretch: normal;
    font-style:   normal;
    src: url('/fonts/aporetic-serif-normalregularitalic.woff2') format('woff2');
}

@font-face {
    font-family: "Aporetic Serif";
    font-display: swap;
    font-weight:  400;
    font-stretch: normal;
    font-style:   normal;
    src: url('/fonts/aporetic-serif-normalregularupright.woff2') format('woff2');
}


/* Variables */

:root {
    --font-serif-regular: "Aporetic Serif", serif;
    --font-serif-mono:    "Aporetic Serif Mono", monospace;
    --font-sans-regular:  "Aporetic Sans", sans-serif;
    --font-sans-mono:     "Aporetic Sans Mono", monospace;

    --default-fg: black;
    --default-bg: white;
    --default-family: var(--font-sans-regular);
    --default-size: 14pt;

    --header-family: var(--font-serif-regular);

    --link-fg: #3548cf;

    --body-margin: 0px;

    --divider-color: #9f9f9f; /* window-divider */

    --content-border: 2px solid var(--divider-color);
    --content-padding: 10px;

    --nav-height: 125px;
    --toc-nav-vspacing: 20px;
    --toc-base-padding: 5px;
    --toc-ul-padding-left: 20px;
    --toc-local-padding: 5px;
    --toc-extra-padding-x: 4px;

    --tbl-border-color: #193668; /* org-table */
    --tbl-border-size: 1px;

    --code-fg: #005f5f;
    --code-family: var(--font-serif-mono);
    --code-size:   var(--default-size);

    --example-family: var(--default-serif-mono);
    --example-size:   var(--default-size);

    --src-bg: #fbf9e7;
    --src-border-color: #7f7f7f;
    --src-border: 1px solid var(--src-border-color);
    --src-family: var(--default-serif-mono);

    --src-label-fg: var(--src-border-color);

    --src-builtin-fg: #8f0075;
    --src-builtin-weight: bold;

    --src-keyword-fg: #531ab6;
    --src-keyword-weight: bold;

    --src-variable-name-fg: #005e8b;

    --src-string-fg: #3548cf;

    --src-constant-fg: #0000b0;

    --src-function-name-fg: #721045;

    --src-comment-fg: #595959;
    --src-comment-style: italic;

    --src-comment-delimiter-fg: var(--src-comment-fg);
    --src-comment-delimiter-style: italic;

    --src-regexp-grouping-backslash-fg: var(--src-function-name-fg);
    --src-regexp-grouping-backslash-weight: bold;

    --src-regexp-grouping-construct-fg: #00663f;
    --src-regexp-grouping-construct-weight: bold;

    --src-doc-fg: #2a5045;
    --src-doc-style: italic;

    --src-type-fg: #005f5f;
    --src-type-weight: bold;
}


/* Dark overrides */

@media (prefers-color-scheme: dark) {
    :root {
	color-scheme: dark;

	--scrollbar-track-color:       #303030;
	--scrollbar-thumb-color:       #808080;
	--scrollbar-thumb-hover-color: #505050;
	--scrollbar-corner-color:      #404040;

	--default-fg: white;
	--default-bg: black;

	--link-fg: #79a8ff;

	--divider-color: #646464;

	--tbl-border-color: #c6daff;

	--src-bg: #1e1e1e;

	--src-builtin-fg:       #f78fe7;
	--src-keyword-fg:       #b6a0ff;
	--src-variable-name-fg: #00d3d0;
	--src-string-fg:        #79a8ff;
	--src-constant-fg:      #00bcff;
	--src-function-name-fg: #feacd0;

	--src-comment-fg: #989898;

	--src-regexp-grouping-construct-fg: #00c06f;

	--src-doc-fg:  #9ac8e0;
	--src-type-fg: #6ae4b9;

	--code-fg: #6ae4b9;
    }
}


/* Responsive variables */

/* Large screens */
@media (min-width: 1024px) {
    :root {
        --side-width: 250px;
        --content-width: calc(92% - var(--side-width));
        --nav-base-font-size: 80%;
        --nav-padding: 14px 16px;
        --toc-base-font-size: 70%;
        --toc-ul-font-size: 150%;
        --toc-ul-local-font-size: 130%;
        --toc-ul-2-font-size: 80%;
        --toc-ul-3-font-size: 80%;
        --src-size: 14pt;
        --rss-padding: 0 0 0 25px;
        --rss-size: 25px 25px;
        --rss-pos: 50%;
    }
}

/* Medium screens */
@media (min-width: 600px) and (max-width: 1024px) {
    :root {
        --side-width: 175px;
        --content-width: calc(92% - var(--side-width));
        --nav-base-font-size: 70%;
        --nav-padding: 5px 6px;
        --toc-base-font-size: 70%;
        --toc-ul-font-size: 130%;
        --toc-ul-local-font-size: 130%;
        --toc-ul-2-font-size: 80%;
        --src-size: 14pt;
        --rss-padding: 0 0 19px 9px;
        --rss-size: 10px 10px;
        --rss-pos: 25%;
    }
}

/* Small screens */
@media (max-width: 600px) {
    :root {
        --content-width: 100%;
	--nav-base-font-size: 80%;
        --nav-padding: 5px 6px;
        --toc-base-font-size: 80%;
        --toc-ul-font-size: 120%;
        --toc-ul-local-font-size: 130%;
        --toc-ul-2-font-size: 80%;
        --src-size: 14pt;
    }
}


/* Immutable */

/* Body */
body {
    color:            var(--default-fg);
    background-color: var(--default-bg);
    font-family:      var(--default-family);
    font-size:        var(--default-size);

    margin: 0;
}

/* Headers */
h1, h2, h3, h4, h5, h6 {
    font-family: var(--header-family);
}

/* Scroll bars */
/* ::-webkit-scrollbar { */
/*     width: 12px; */
/*     height: 12px; */
/* } */

/* ::-webkit-scrollbar-track { */
/*     background: var(--scrollbar-track-color); */
/*     border-radius: 10px; */
/* } */

/* ::-webkit-scrollbar-thumb { */
/*     background: var(--scrollbar-thumb-color); */
/*     border-radius: 10px; */
/* } */

/* ::-webkit-scrollbar-thumb:hover { */
/*     background: var(--scrollbar-thumb-hover-color); */
/* } */

/* ::-webkit-scrollbar-corner { */
/*     background: var(--scrollbar-corner-color); */
/* } */

/* Links */
a {
    color: var(--link-fg);
}

/* Content */
#content {
    width:     var(--content-width);
    padding: 0 var(--content-padding);
}

@media (min-width: 600px) {
    #content {
        margin-left:  calc(var(--side-width) + var(--body-margin) + 2*var(--content-padding));
        margin-right: var(--body-margin);
        border-left:  var(--content-border);
    }
}

@media (max-width: 600px) {
    #content {
        margin-left:  0;
        margin-right: 0;
    }
}

@media (min-width: 600px) {
    nav {
        left:     var(--content-padding);
        position: fixed;
        width:    var(--side-width);
    }

    nav > ul {
        padding:         0;
        margin:          0;
        list-style-type: none;
        display:         block;
    }

    nav > ul > li {
        padding: var(--toc-base-padding) 0;
    }

    nav > ul > li:not(:last-of-type) {
        border-bottom: 1px solid var(--divider-color);
    }

    nav > ul > li > ul {
        padding:    0;
        text-align: center;
        overflow-x: auto;
        white-space: nowrap;
        -ms-overflow-style: none;  /* Internet Explorer 10+ */
        scrollbar-width: none;  /* Firefox */
    }
    nav > ul > li > ul::-webkit-scrollbar {
        display: none;  /* Safari and Chrome */
    }

    nav > ul > li > ul > li {
        display: inline-block;
    }
}

html {
}

@media (max-width: 600px) {
    nav {
        border-bottom: 2px solid var(--divider-color);
    }

    nav > ul {
        padding:         0;
        margin:          0 8px;
        list-style-type: none;
        display:         block;
    }

    nav > ul > li {
        padding: var(--toc-base-padding) 0;
    }

    nav > ul > li:not(:last-of-type) {
        border-bottom: 1px solid var(--divider-color);
    }

    nav > ul > li > ul {
        padding:    0;
        text-align: center;
        overflow-x: auto;
    }

    nav > ul > li > ul > li {
        display: inline-block;
    }
}

nav > ul > li > span {
    display: none;
}

code {
    color:       var(--code-fg);
    font-family: var(--code-family);
    font-size:   var(--code-size);
}

pre.example {
    font-family: var(--example-family);
    font-size:   var(--example-size);
}

hr {
    border: 1px solid var(--divider-color);
    /* border-bottom: 1px solid var(--divider-color); */
}

.org-src-container {
    border:           var(--src-border);
    background-color: var(--src-bg);
    font-family:      var(--src-family);
    font-size:        var(--src-size);
    margin: 10px;
}

.src-label {
    top:           0;
    left:          0;
    color:         var(--src-label-fg);
    border-bottom: var(--src-border);
    padding: 2px;
    padding-left: 4px;
    display: flex;
    justify-content: space-between
}

pre.src {
    max-height:       50ex;
    overflow-x:       auto;
    overflow-y:       auto;
    line-height:      2.5ex;
    margin: 0px;
    padding: 4px;
}

.org-builtin {
    color:  var(--src-builtin-fg);
    weight: var(--src-builtin-weight);
}

.org-keyword {
    color:  var(--src-keyword-fg);
    weight: var(--src-keyword-weight);
}

.org-variable-name {
    color: var(--src-variable-name-fg);
}

.org-string {
    color: var(--src-string-fg);
}

.org-constant {
    color: var(--src-constant-fg);
}

.org-comment {
    color:      var(--src-comment-fg);
    font-style: var(--src-comment-style);
}

.org-comment-delimiter {
    color:      var(--src-comment-delimiter-fg);
    font-style: var(--src-comment-delimiter-style);
}

.org-function-name {
    color: var(--src-function-name-fg);
}

.org-regexp-grouping-backslash {
    color:      var(--src-regexp-grouping-backslash-fg);
    font-style: var(--src-regexp-grouping-backslash-style);
}

.org-regexp-grouping-construct {
    color:      var(--src-regexp-grouping-construct-fg);
    font-style: var(--src-regexp-grouping-construct-style);
}

.org-doc {
    color:      var(--src-doc-fg);
    font-style: var(--src-doc-style);
}

.org-type {
    color:  var(--src-type-fg);
    weight: var(--src-type-weight);
}

/* Basic styling (color, font, shadow) common to global and local TOC */
#table-of-contents, .org-info-js_local-toc {
    font-size: var(--toc-base-font-size);
}

#org-div-home-and-up {
    width:           var(--side-width);
    border-right:    var(--toc-border-right);
    justify-content: center;
}

/* Size (global TOC only) */
#table-of-contents {
    width: calc(var(--side-width) - 2*var(--toc-base-padding));
}

/* Fixed vertical table of content */
@media screen and (min-width: 600px) {
    #org-div-home-and-up {
        position: fixed;
        left:     var(--content-padding);
        overflow: auto;
        padding:  var(--toc-base-padding);
    }
    #table-of-contents {
        position: fixed;
        left:     var(--content-padding);
        top:      var(--nav-height);
        bottom:   0;
        padding:  0 var(--toc-base-padding);
        overflow: auto;
        border-top: 2px solid var(--divider-color);
        -ms-overflow-style: none;  /* Internet Explorer 10+ */
        scrollbar-width: none;  /* Firefox */
    }
    #table-of-contents::-webkit-scrollbar {
        display: none;  /* Safari and Chrome */
    }
}

@media screen and (min-width: 600px) and (max-width: 1024px) {
    #table-of-contents > div > ul > li > ul > li > ul {
        display: none;
    }
}

@media screen and (max-width: 600px) {
    #table-of-contents {
        position: relative;
        width:    90%;
        margin:   auto;
    }
}

#table-of-contents ul, .org-info-js_local-toc ul {
    list-style-type: none;
    margin:          0;
    padding-left:    var(--toc-ul-padding-left);
}

#table-of-contents ul {
    font-size: var(--toc-ul-font-size);
}

.org-info-js_local-toc ul {
    font-size: var(--toc-ul-local-font-size);
}

#table-of-contents > div > ul, .org-info-js_local-toc > div > ul {
    list-style-type: none;
    margin:          0;
    padding-left:    var(--toc-extra-padding-x);
}

#table-of-contents > div > ul > li > ul {
    font-size:      var(--toc-ul-2-font-size);
    vertical-align: middle;
}

#table-of-contents > div > ul > li > ul > li > ul {
    font-size:      var(--toc-ul-3-font-size);
    vertical-align: middle;
}

ul {
    list-style-type: '- ';
}

table, td, th {
    text-align: left;
}

table {
    border-collapse: collapse;
    width:           100%;
}

th, td {
    padding: 3px;
}
