@charset "utf-8";

:root {
    --font-main: "Bitter", serif;
    --font-text: "Fira Sans", sans-serif;

    --hue: 298;
    --saturation-fg: 70%;
    --saturation-bg: 30%;

    --fg-link: hsl(var(--hue), var(--saturation-fg), 50%);
    --fg-text: hsl(var(--hue), var(--saturation-fg), 20%);
    --bg-lines: hsl(var(--hue), var(--saturation-bg), 80%);
    --bg-code: hsl(var(--hue), var(--saturation-bg), 93%);
    --bg-page: hsl(var(--hue), var(--saturation-bg), 98%);

    --container-width: 45rem;
}

/*
 * Base styling
 */

body {
    background: var(--bg-page);
    color: var(--fg-text);
    font-family: var(--font-main);
    line-height: 1.5em;

    margin: 0;
    min-height: 100vh;
    display: flex;
    flex-direction: column;

    & > div {
        flex: 1;
    }
}

p {
    text-align: justify;
    font-family: var(--font-text);
    hyphens: auto;
}

ul {
    padding-left: 1.25em;
    text-align: justify;
    font-family: var(--font-text);

    li {
        list-style: square;
        margin: 0.3em 0;
    }
}

a {
    text-decoration: none;
    color: var(--fg-link);

    &:hover {
        text-decoration: underline;
    }
}

h2,
h3,
h4,
h5,
h6 {
    margin: 1.7em 0 0.4em 0;
}

hr {
    margin: 2em auto;
    width: 40%;
    border: 0;
    border-top: 1px solid var(--bg-lines);
}

img {
    margin: 1em 0;
    border-radius: 0.2em;
    width: 100%;
}

code {
    display: inline-block;
    padding: 0.1em 0.4em;
    font-size: 1.1em;

    border-radius: 0.2em;
    background: var(--bg-code);
}

pre {
    border-radius: 0.5em;
    background: var(--bg-code);

    code {
        box-sizing: border-box;
        display: block;
        padding: 0.8em 1.4em;

        font-size: 1.1em;
        line-height: 1.7em;

        width: 100%;
        overflow-x: auto;
    }
}

div.container {
    max-width: var(--container-width);
    margin: auto;

    @media all and (max-width: calc(var(--container-width) + 4rem)) {
        margin-left: 1rem;
        margin-right: 1rem;
    }
}

/*
 * Header
 */

header#main-header {
    color: var(--fg-text);
    padding: 1em 0;
    margin-bottom: 1.5em;
    background: var(--bg-page);

    & > div.container {
        display: flex;
    }

    div#title {
        font-weight: 700;
        flex: 1;
        font-size: 1.3em;

        a {
            color: var(--fg-text);
        }
    }

    nav {
        flex: 1;
        text-align: right;

        a {
            display: inline-block;
            margin: 0;
            padding: 0 0.5em;

            &.active {
                color: var(--fg-text);

                &:hover {
                    text-decoration: none;
                }
            }

            &:first-child {
                padding-left: 0;
            }

            &:last-child {
                padding-right: 0;
            }
        }
    }

    @media all and (max-width: var(--container-width)) {
        & > div.container {
            flex-direction: column;
        }

        div#title {
            text-align: center;
        }

        nav {
            margin-top: 0.3em;
            text-align: center;
        }
    }
}

/*
 * Index page
 */

.index-container {
    display: flex;
    flex-direction: column;

    .index-centerer {
        padding: 1.5em 0.5em;
        flex: 1;

        display: flex;
        justify-content: center;
        align-items: center;

        .id-card {
            display: flex;
            align-items: center;

            img {
                height: 8em;
                width: 8em;

                border-radius: 50%;
                margin: 0;
            }

            .id-card-details {
                padding: 0 0 0 2em;

                h1 {
                    margin: 0 0 0.5em 0;
                }

                .role {
                    margin: 0.3em 0 0 0;
                }
            }

            @media all and (max-width: 30em) {
                flex-direction: column;
                text-align: center;

                .id-card-details {
                    padding: 1.5em 0 0 0;
                }
            }
        }

        nav {
            margin: 2em 1em 1em 1em;
            display: flex;
            justify-content: center;

            a {
                margin: 0 0.5em;
            }
        }
    }
}

/*
 * Posts
 */

div.post-meta {
    margin: 2em 0;
    text-align: center;

    h1 {
        margin: 0 0 0.4em 0;
        font-size: 1.7em;
        font-weight: 700;
        line-height: 1.2em;
    }

    p {
        font-family: var(--font-main);
        font-style: italic;
        margin: 0;
        color: var(--fg-text);

        display: inline-flex;
        flex-wrap: wrap;
        align-items: center;
        justify-content: center;
        column-gap: 1.5em;
        row-gap: 0.15em;

        a.author {
            display: inline-flex;
            align-items: center;
            font-style: normal;

            img {
                height: 1.5em;
                width: 1.5em;
                margin: 0 0.4em 0 0;
                border-radius: 50%;
            }
        }
    }
}

h2.blog-list-year {
    display: flex;
    align-items: center;
    margin: 0.5em 0;

    span {
        display: block;
        flex: 1;
        height: 0;
        border-bottom: 2px solid var(--bg-lines);

        &.before {
            margin-right: 1em;
        }

        &.after {
            margin-left: 1em;
        }
    }
}

/*
 * Error pages
 */

.error-container {
    display: flex;
    flex-direction: column;
    background: var(--bg-page);

    .error-centerer {
        padding: 1.5em 0.5em;
        flex: 1;

        display: flex;
        justify-content: center;
        align-items: center;

        h2 {
            font-weight: 400;
            font-size: 8em;
            text-align: center;
            line-height: 1.2em;
            margin: 0;
        }

        p {
            padding-top: 0.5em;
            font-size: 1.2em;
            line-height: 1.2em;
            text-align: center;
            margin: 0;
        }
    }
}

/*
 * Footer
 */

footer {
    flex: 0;
    padding: 1.5em 0;
    font-size: 0.9em;

    ul {
        font-family: var(--font-main);
        text-align: center;
        margin: 0;
        padding: 0;

        li {
            margin: 0.1em 0.5em;
            display: inline-block;
        }
    }
}

/*
 * Font families
 */

@font-face {
    font-family: "Bitter";
    font-style: normal;
    font-weight: 400;
    src: url("fonts/bitter-400-normal.woff2") format("woff2");
}

@font-face {
    font-family: "Bitter";
    font-style: italic;
    font-weight: 400;
    src: url("fonts/bitter-400-italic.woff2") format("woff2");
}

@font-face {
    font-family: "Bitter";
    font-style: normal;
    font-weight: 700;
    src: url("fonts/bitter-700-normal.woff2") format("woff2");
}

@font-face {
    font-family: "Bitter";
    font-style: italic;
    font-weight: 700;
    src: url("fonts/bitter-700-italic.woff2") format("woff2");
}

@font-face {
    font-family: "Fira Sans";
    font-style: normal;
    font-weight: 400;
    src: url("fonts/fira-sans-400-normal.woff2") format("woff2");
}

@font-face {
    font-family: "Fira Sans";
    font-style: italic;
    font-weight: 400;
    src: url("fonts/fira-sans-400-italic.woff2") format("woff2");
}

@font-face {
    font-family: "Fira Sans";
    font-style: normal;
    font-weight: 700;
    src: url("fonts/fira-sans-700-normal.woff2") format("woff2");
}

@font-face {
    font-family: "Fira Sans";
    font-style: italic;
    font-weight: 700;
    src: url("fonts/fira-sans-700-italic.woff2") format("woff2");
}
