/**
 * colors
 */

:root, .bright {
    --color-background: #FFFFFF;
    --color-surface: #FFFFFF;
    --color-onsurface: #3F3F3F;
    --color-surfacecontainerlowest: #F6F6F6;
    --color-onsurfacecontainerlowest: #0D0D0D;
    --color-surfacecontainerlow: #F5F5F5;
    --color-onsurfacecontainerlow: #232323;
    --color-surfacecontainer: #F2F2F2;
    --color-onsurfacecontainer: #1C1C1C;
    --color-surfacecontainerhigh: #EEEEEE;
    --color-onsurfacecontainerhigh: #323232;
    --color-surfacecontainerhighest: #6F6F6F;
    --color-onsurfacecontainerhighest: #FFFFFF;
    --color-primary: rgb(128,0,0);
    --color-onprimary: #FFFFFF;
    --color-primarycontainer: #CCCCCC;
    --color-onprimarycontainer: #FFFFFF;
}

@media screen and (prefers-color-scheme: dark) {
    :root {
        --color-background: #121212;
        --color-surface: #121212;
        --color-onsurface: #F3F3F3;
        --color-surfacecontainerlowest: #1F1F1F;
        --color-onsurfacecontainerlowest: #FFFFFF;
        --color-surfacecontainerlow: #212121;
        --color-onsurfacecontainerlow: #FFFFFF;
        --color-surfacecontainer: #3232323;
        --color-onsurfacecontainer: #FFFFFF;
        --color-surfacecontainerhigh: #6F6F6F;
        --color-onsurfacecontainerhigh: #FFFFFF;
        --color-surfacecontainerhighest: #848482;
        --color-onsurfacecontainerhighest: #FFFFFF;
        --color-primary: rgb(128,0,0);
        --color-onprimary: #FFFFFF;
        --color-primarycontainer: #CCCCCC;
        --color-onprimarycontainer: #FFFFFF;
    }
}

.dark {
    --color-background: #121212;
    --color-surface: #121212;
    --color-onsurface: #F3F3F3;
    --color-surfacecontainerlowest: #1F1F1F;
    --color-onsurfacecontainerlowest: #FFFFFF;
    --color-surfacecontainerlow: #212121;
    --color-onsurfacecontainerlow: #FFFFFF;
    --color-surfacecontainer: #3232323;
    --color-onsurfacecontainer: #FFFFFF;
    --color-surfacecontainerhigh: #6F6F6F;
    --color-onsurfacecontainerhigh: #FFFFFF;
    --color-surfacecontainerhighest: #848482;
    --color-onsurfacecontainerhighest: #FFFFFF;
    --color-primary: rgb(128,0,0);
    --color-onprimary: #FFFFFF;
    --color-primarycontainer: #CCCCCC;
    --color-onprimarycontainer: #FFFFFF;
}

/**
 * fonts
 */

@font-face {
    font-family: 'MenuRegular';
    src: url('../fonts/pixeldroidMenuRegular/pixeldroidMenuRegular.otf'), '../fonts/pixeldroidMenuRegular/pixeldroidMenuRegular.ttf') format('truetype'), url('../fonts/pixeldroidMenuRegular/pixeldroidMenuRegular-64.fnt') format('fnt');
    font-weight: normal;
    font-style: normal;
}
@font-face {
    font-family: 'BoticRegular';
    src: url('../fonts/pixeldroidBoticRegular/pixeldroidBoticRegular.otf'), '../fonts/pixeldroidBoticRegular/pixeldroidBoticRegular.ttf') format('truetype'), url('../fonts/pixeldroidBoticRegular/pixeldroidBoticRegular-64.fnt') format('fnt');
    font-weight: normal;
    font-style: normal;
}


/**
 * general
 */

:root {
    --width-page: 90%;
    --width-page-vw: 90vw;
    --width-indent-page: 2rem;
    --width-padding: 1rem;
}


body {
    font-family: serif;
    color: var(--color-onsurface);
    background-color: var(--color-surface);
}

body, .container {
    height: 100vh;
}

.container {
    width: var(--width-page);
    max-width: 64rem;
    margin: auto;
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: auto 1fr auto;
    grid-template-areas:
        "header"
        "main"
        "footer";
}

/**
 * Style: Typewriter
 */

.typewriter {
    h1, h2, h3, h4, h5, h6, p, a, li {
        font-family: mono;
    }

    ul {
        padding-inline-start: 1rem;
        list-style-type: "- ";
    }

    ol {
        padding-inline-start: 2rem;
    }
}

/**
 * Fonts
 */

.font-menuregular {
    font-family: MenuRegular !important;
}

.font-boticregular {
    font-family: BoticRegular !important;
}

.font-serif {
    font-family: serif !important;
}

.font-sans {
    font-family: sans !important;
}

.font-mono {
    font-family: mono !important;
}


/**
 * Front Page / 404
 */

#front, #page404 {
    ul {
        padding-left: 0;
        padding-right: 0;
        list-style-type: none;
    }

    li {
        padding-bottom: 0.5rem;
    }

    a {
        text-decoration: none;
    }

    #latest-nav {
        grid-area: footer;
        font-weight: bold;
    }

    #front-header {
        grid-area: main;
    }

    #front-with-cards-header {
        grid-area: header;
    }

    #front-cards {
        grid-area: main;
    }

    #front-header, #front-with-cards-header, #page404-header {
        align-content: center;

        text-align: center;

        li {
            display: inline;
            padding: 0 0.5rem;
        }
    }
}

#front {
    &>header h1 {
        margin-bottom: 0;
        font-size: clamp(2rem, 10vw, 9rem);
        text-transform: none;
    }

    h2 {
        margin: 0 0 1rem 0;
        text-transform: none;
        font-size: 1.5rem;
    }
}

#page404 {
    hgroup {
        font-size: clamp(2rem, 6vw, 6rem);
        margin-bottom: 3rem;

        h1 {
            font-size: clamp(2rem, 20vw, 9rem);
            margin-bottom: 0;
        }
    }
}

#front-with-cards-header {
    margin-bottom: 3rem;
}

.deck {
    display: grid;
    grid-template-columns: 1fr 1fr;
    justify-content: center;
    justify-items: stretch;
    grid-auto-flow: row;
    gap: 1rem 1rem;

    li {
        display: block;
        margin: 0;
        padding: 0;
    }

    hgroup {
        display: grid;
        grid-template-areas:
            "image"
            "header";
        grid-template-rows: 1fr auto;
        border-style: solid;
        border-width: calc(1rem / 16);
        grid-template-columns: 1fr;
        justify-content: center;
        justify-items: stretch;
    }

    img {
        grid-area: image;
        max-width: 100%;
    }

    h1 {
        grid-area: header;
        text-align: center;
        margin: 0;
        padding: 1rem;
    }
}

/**
 * Short Navigation
 */

#short-navigation {
    h1 {
        display: inline;
        a {
            font-family: inherit;
        }
    }

    ul {
        padding-left: 0;
        padding-right: 0;
        list-style-type: none;
        display: inline;
    }

    li {
        display: inline;
        padding: 0 0.5rem;
    }

    a {
        text-decoration: none;
    }
}

/**
 * Categories / Default
 */

.container {
    &>#short-navigation {
        grid-area: header;
        margin: 1rem 0 3rem 0;
    }

    &>main {
        grid-area: main;
    }
}

.page {
    main& {
        padding: 0 0 0 var(--width-indent-page);
    }

    header {
        text-align: center;
        margin-left: calc(-1 * var(--width-indent-page));
        margin-bottom: 2rem;

        p {
            text-align: inherit;
        }
    }

    h1 {
        text-transform: uppercase;
    }

    h2 {
        text-transform: uppercase;
        margin-left: calc(-1 * var(--width-indent-page));
        font-weight: normal;
    }

    a {
        text-overflow: ellipsis;
        overflow: hidden;
        white-space: nowrap;
        display: inline-block;
        max-width: calc(var(--width-page-vw) - var(--width-indent-page));
    }

    p, li {
        line-height: 1.5;
    }

    p {
        text-align: justify;
    }

    ul, ol {
        padding-inline-start: 2rem;
    }

    pre {
        margin-left: calc(-1 * var(--width-padding));
        padding: var(--width-padding);
        border-style: solid;
        border-width: 0 0 0 calc(1rem / 16);
        font-family: mono;
        width: calc(var(--width-page-vw) - var(--width-padding));
        overflow-x: auto;
    }

    code, pre {
        background-color: var(--color-surfacecontainerlowest);
        color: var(--color-onsurfacecontainerlowest);
    }

    code {
        font-size: 0.8rem;
        line-height: 1.5rem;
        padding: 0 0.5rem;
    }

    .abstract {
        font-style: italic;
        margin-bottom: 1rem;
    }

    footer {
        margin-top: 3rem;

        p {
            text-align: right;
        }
    }
}

#categories {
    ul {
        list-style-type: '> ';

        a {
            text-decoration: none;
        }
    }
}

/**
 * Authors
 */

.mugshot {
    max-width: 8rem;
    max-height: 8rem;
    display: inline-block;

    &.circle {
        border-radius: 50%;
        overflow: hidden;
        border-width: 0.3rem;
        border-style: solid;
    }

    img {
        width: 100%;
    }
}
