:root {
    --base-font-size: 1em;
}

html {
    height: 100%;
}

body {
    height: 100%;
    margin: 0;
    display: grid;
    grid-template-rows: auto 1fr auto;
    font-family: sans, sans-serif;
    line-height: 1.75;
    box-sizing: border-box;
    min-width: 0;
}

main {
    margin: 0 auto;
    padding: 0 20px;
    max-width: 100%;
    min-width: 600px;
    box-sizing: border-box;
}

p, section li {
    font-family: prose, sans-serif;
}

section p {
    line-height: 2;
}

pre {
    max-width: 100%;
    overflow: auto;
    box-sizing: border-box;
    padding: 12px;
    margin: 40px 10px;
    box-shadow: 1px 1px 3px 1.5px #00000077;
    transition: 1000ms;
}

pre:hover {
    box-shadow: 1px 1px 3px 2.5px #00777777;
}

code {
    padding: 3px 6px;
    margin-right: 3px;
    white-space: nowrap;
    font-size: calc(var(--base-font-size) * 0.8);
    box-shadow: 1px 1px 1px 1px #00000077;
    transition: 1000ms;
}

code:hover {
    box-shadow: 1px 1px 1px 1px #00777799;
}

pre, code {
    font-family: mono, monospace;
    background: #e0e0e0;
    border: solid 2px #d0d0d0;
    border-radius: 6px;
}

a {
    color: #0f6366;
    text-decoration: underline dotted #138e8e;
    text-decoration-thickness: 1.5px;
    text-underline-offset: 3px;
}

a.attached {
    transition: 1500ms;
}

a.attached:hover,
#nav-main a:hover
{
    color: #117c7c;
    text-decoration-color: #10afaf;
    text-shadow: 0px 0px 22px #10afaf;
}

a.detached {
    color: #595959;
    text-decoration-color: #444444;
}

a.external {
    color: #1958a7;
    text-decoration-color: #2A7CDF;
    text-decoration-style: solid;
    transition: 1500ms;
}

a.external:hover {
    color: #0393b2;
    text-decoration-color: #1ed4f1;
}

a:visited,
a.detached:visited,
a.external:visited
{
    text-decoration-color: #999;
}

footer div a {
    text-decoration: none;
}

div.header-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

div.labels {
    margin-right: 10px;
    display: flex;
    align-items: center;
}

span.label {
    padding: 3px 6px;
    border-radius: 6px;
    margin: 5px;
    font-size: calc(var(--base-font-size) * 0.7);
}

span.root-label {
    color: #fff;
    font-weight: bolder;
    background: #158181ff;
    border: outset 2px #ffffff;
    box-shadow: 2px 2px #20c3c3ff;
}

span.id-label {
    font-family: mono, monospace;
    background: #e0e0e0;
    border: solid 1px #d0d0d0;
}

span.hidden-label  {
    background: #888;
    color: #eee;
    border: solid 1px #d0d0d0;
}

h1 {
    font-family: title, serif;
}

h2, h3, h4, h5, h6 {
    font-family: serifed, serif;
}

main h2 {
    margin-top: 10px;
}

h1, h2, h3, h4, h5, h6 {
    font-weight: 1;
    margin: 10px 0;
}

h1.node-title {
    display: inline;
}

h2.connections-title {
    font-family: title;
    margin-bottom: 0px;
}

h3.connections-title {
    margin-top: 0px;
}

h1 { font-size: calc(var(--base-font-size) * 3.6); }
h2 { font-size: calc(var(--base-font-size) * 3.4); }
h3 { font-size: calc(var(--base-font-size) * 3.0); }
h4 { font-size: calc(var(--base-font-size) * 2.6); }
h5 { font-size: calc(var(--base-font-size) * 2.2); }
h6 { font-size: calc(var(--base-font-size) * 1.8); }

footer div {
    margin: 20px 0;
    text-align: center;
    font-family: sans;
    font-size: calc(var(--base-font-size) * 0.8);
}

footer p {
    font-size: calc(var(--base-font-size) * 1.1);
    font-family: sans;
    margin: 0;
}

span.detached-connection {
    filter: opacity(60%);
}

div.connections-container {
    margin-bottom: 60px;
}

hr.connections {
    margin-top: 60px;
}

nav#nav-main a {
    text-decoration: none;
    transition: 1500ms;
}

nav#nav-main {
    text-align: center;
    margin-bottom: 20px;
    margin-top: 10px;
}

#nav-main-spread {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin: 0 10px;
}

nav#nav-main ul {
    display: inline;
    padding-left: 10px;
    margin: 0;
}

nav#nav-main li {
    margin-right: 10px;
    display: inline;
}

.nav-inputs {
    margin-right: 10px;
}

.nav-inputs div {
    display: flex;
    align-items: right;
}

form.node-selector, form.navbar-search {
    display: inline;
}

.node-selector select {
    width: 100px;
}

.navbar-search input[type="text"] {
    width: 100px;
    border-radius: 5px;
}

input[type="text"],
input[type="submit"],
select,
button
{
    border-radius: 5px;
    padding: 5px 8px;
    margin-right: 3px;
    background: #eeeeff00;
    border-color: #216767;
    border-width: 0.5px;
    transition: 1500ms;
}

input[type="text"]:hover,
input[type="submit"]:hover,
select:hover,
button:hover
{
    border-color: #36a9a9;
    box-shadow: 2px 2px #36a9a9ee;
}

div#error-poem {
    text-align: right;
    margin-top: 8em;
    margin-right: 2em;
    font-size: 0.8em;
    font-size: calc(var(--base-font-size) * 0.8);
}

em, i {
    font-style: oblique 20deg;
    font-weight: 300;
    padding-right: 2px;
}

em#index-node-count {
    font-size: calc(var(--base-font-size) * 0.8);
}

table {
    margin: auto;
    border-collapse: collapse;
    border: 0.5px dotted #666;
}

td, th {
    padding: 10px;
    border: 0.5px dotted #666;
}

summary {
    margin-bottom: 15px;
    cursor: pointer;
}

hr {
    border: 1px dashed #555;
}

footer hr {
    margin-top: 60px;
}

@media (prefers-color-scheme: dark) {
    * {
        background: #222222;
        color: #f1e9e5;
    }

    pre, code {
        background: #333333;
        border: solid 1px #434343;
    }

    a {
        color: #1dd7d7;
        text-decoration-color: #159b9b;
    }

    a.attached:hover,
    #nav-main a:hover
    {
        color: #00ffff;
        text-decoration-color: #66ffff;
    }

    a.external {
        color: #2fbae4;
        text-decoration-color: #46c1e7;
    }

    a.external:hover {
        color: #74e5ff;
        text-decoration-color: #aeffff;
    }

    a.detached {
        color: #acacac;
        text-decoration-color: #777;
    }

    span.id-label {
        background: #444;
        border-color: #666;
    }

    span.hidden-label  {
        background: #000;
        border-color: #555;
        color: #969696;
    }


    input[type="text"],
    input[type="submit"],
    select,
    button
    {
        background: #002020;
        border-color: #138e8e;
    }

    input[type="text"]:hover,
    input[type="submit"]:hover,
    select:hover,
    button:hover
    {
        border-color: #00ffff;
    }

    span.root-label {
        border-width: 1px;
    }

}

@media (max-width: 600px) {
    nav li {
        margin-right: 3px;
    }

    div.header-row {
        display: block;
    }

    #nav-main-spread {
        display: inline;
        margin: 0;
    }

    .nav-inputs {
        margin-right: 0px;
    }

    div.nav-inputs {
        margin-top: 10px;
    }

    main {
        width: 95vw;
        padding: 0 2.5vw;
        min-width: unset;
    }

    ul {
        padding-left: 20px;
    }

    pre {
        max-width: 100%;
        margin: 15px 0px;
    }
}

@media (min-width: 601px) {

    div.connections-container {
        width: 100%;
        display: grid;
        grid-template-columns: 1fr 1fr;
    }
}

@media (min-width: 1100px) and (max-width: 2100px) {
    main {
        width: 800px;
        margin: 0 auto;
    }
}

@media (min-width: 2100px) {
    :root {
        --base-font-size: 1vw;
    }

    main {
        max-width: 40%;
    }

    .nav-inputs :is(input, select, button) {
        height: calc(var(--base-font-size) * 1.6);
        font-size: calc(var(--base-font-size) * 0.8);
        padding: 0 calc(var(--base-font-size) * 0.3);;
    }

    .nav-inputs input[type="text"], .nav-inputs select {
        min-width: calc(var(--base-font-size) * 5);
    }
}
