:root {
    --bg: #2d2533;
    --fg: #ddd1e7;
    --accent: #fa7ab6;
    --font-heading: "GFS Artemisia", serif;
    --font-text: "Encode Sans", sans-serif;
    --font-mono: "Source Code Pro", monospace;
    --radius: 6px;
    --radius-2x: 12px;
    --transition: .15s ease-in-out;
    --transition-2x: .3s ease-in-out;
    --margin-xs: 3px;
    --margin-s: 6px;
    --margin-m: 12px;
    --margin-l: 24px;
    --margin-xl: 48px;
}

::selection {
    color: var(--bg);
    background-color: var(--accent);
}

* {
    scrollbar-color: color-mix(in oklab, var(--fg) 65%, transparent 35%) transparent;
    transition-behavior: allow-discrete;
}

body, html {
    padding: 0;
    margin: 0;
    background-color: color-mix(in oklab, var(--bg) 90%, black 10%);
    color: var(--fg);
    font-family: var(--font-text);
}

body > * {
    padding: var(--margin-l);
    max-width: 1000px;
    margin-left: auto;
    margin-right: auto;
    background-color: var(--bg);
    @media only screen and (min-width: 1048px) {
        &:first-child {
            border-radius: var(--radius-2x) var(--radius-2x) 0 0;
            margin-top: 2em;
        }
        &:last-child {
            border-radius: 0 0 var(--radius-2x) var(--radius-2x);
            margin-bottom: 2em;
        }
    }
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-heading)
}

code {
    font-family: var(--font-mono);
}

a {
    color: var(--fg);
    text-decoration: underline;
    text-decoration-color: var(--fg);
    text-decoration-thickness: 2px;
    transition: text-decoration-color var(--transition);
    &:hover, &:focus, &:active {
        text-decoration-color: var(--accent);
    }
}

header {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: start;
    .header-left {
        .header-title {
            color: var(--fg);
            text-decoration: none;
            display: inline-flex;
            flex-direction: row;
            align-items: center;
            gap: var(--margin-m);
            img {
                width: 48px;
                max-height: 48px;
                border-radius: var(--radius);
            }
            .header-title-name {
                font-family: var(--font-heading);
                font-size: 2em;
                font-weight: bold;
            }
        }

        nav {
            ul {
                list-style-type: none;
                padding: 0;
                display: flex;
                flex-direction: row;
                flex-wrap: wrap;
                gap: var(--margin-m);
            }
            &.main-nav {
                a {
                    text-decoration-color: transparent;
                    color: var(--accent);
                    &:hover, &:focus, &:active {
                        text-decoration-color: var(--accent);
                    }
                }
            }
            &.icons-nav {
                a {
                    text-decoration: none;
                    display: flex;
                    flex-direction: row;
                    align-items: center;
                    position: relative;
                    svg {
                        width: 24px;
                        height: 24px;
                        transition: color var(--transition-2x), fill var(--transition-2x);
                    }
                    &::after {
                        content: attr(data-tooltip);
                        position: absolute;
                        left: 50%;
                        top: 28px;
                        transform: translateX(-50%);
                        text-align: center;
                        border-radius: var(--radius);
                        padding: var(--margin-s);
                        font-size: .95em;
                        background-color: color-mix(in oklab, var(--bg) 80%, black 20%);
                        overflow: clip;
                        white-space: nowrap;
                        visibility: hidden;
                        @starting-style {
                            visibility: hidden;
                            opacity: 0;
                        }
                        pointer-events: none;
                        opacity: 0;
                        transition:
                            visibility var(--transition-2x),
                            opacity var(--transition-2x);
                    }
                    &:hover, &:focus, &:active {
                        color: var(--accent);
                        &::after {
                            visibility: visible;
                            opacity: 1;
                            color: var(--fg);
                        }
                    }
                }
            }
        }
    }
    .header-right {
        margin-top: calc(24px - 1em);
        form {
            display: flex;
            flex-direction: row;
            flex-wrap: nowrap;
            align-items: center;
            gap: var(--margin-s);
            input, button {
                font-family: var(--font-text);
                font-size: 1em;
                box-sizing: border-box;
                background-color: transparent;
                border: none;
                border-bottom: 2px solid transparent;
                outline: none;
                height: 2em;
                transition: border-color var(--transition);
                &:hover {
                    border-color: var(--fg);
                }
                &:active, &:focus {
                    border-color: var(--accent);
                }
            }
            input::placeholder {
                color: var(--fg);
                opacity: .6;
                font-style: italic;
            }
            button {
                width: 2em;
                img {
                    width: 1.3em;
                    height: 1.3em;
                }
            }
            input:invalid + button {
                opacity: .5;
                pointer-events: none;
            }
            input {
                width: 100%;
                max-width: 200px;
            }
        }
    }

    @media only screen and (max-width: 800px) {
        flex-direction: column;
        justify-content: unset;
        align-items: unset;
        .header-right {
            form input {
                max-width: unset;
            }
        }
    }
}



article {
    &.paginator-article {
        margin-bottom: var(--margin-xl);
        h2, h3 {
            a {
                color: var(--accent);
                text-decoration-color: transparent;
                &:hover, &:focus, &:active {
                    text-decoration-color: var(--accent);
                }
            }
        }
    }
    p {
        text-align: justify;
    }
    img {
        max-width: 100%;
        margin-left: auto;
        margin-right: auto;
        &.article-image {
            display: block;
            margin-top: var(--margin-m);
            margin-bottom: var(--margin-m);
            &.preview {
                max-height: 300px;
            }
        }
    }
    p > img:only-child, figure img {
        display: block;
        margin: auto;
    }
    figure figcaption {
        text-align: center;
        max-width: 80%;
        margin: auto;
    }
    pre {
        padding: var(--margin-m);
        padding-bottom: var(--margin-l);
        max-width: 100%;
        overflow-x: auto;
        border: 1px solid color-mix(in oklab, var(--fg) 70%, black 30%);
        border-radius: var(--radius);
    }

    code:not(pre code) {
        padding: 0 var(--margin-xs);
        border-radius: var(--radius);
        border: 1px solid color-mix(in oklab, var(--fg) 70%, black 30%);
        font-size: .8em;
        background-color: color-mix(in oklab, var(--bg) 90%, black 10%);
    }

    table {
        border-collapse: collapse;
        overflow-x: auto;
        display: block;
        td, th {
            padding: var(--margin-s);
            border: 1px solid color-mix(in oklab, var(--fg) 70%, black 30%);
        }
        th, tr:nth-child(even) {
            background-color: color-mix(in oklab, var(--bg) 90%, black 10%);
        }
    }
}

.dim {
    opacity: .6;
    a {
        text-decoration-thickness: 1px;
    }
}

.under-article {
    font-size: .93em;
    gap: var(--margin-l);
    &, > span {
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
    }
    > span {
        gap: var(--margin-s);
        img {
            width: 18px;
            height: 18px;
            margin: 0;
        }
    }
}

.paginator-navigation {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: end;
    align-items: center;
    gap: var(--margin-s);
    a, span {
        width: 2em;
        height: 2em;
        vertical-align: middle;
        display: flex;
        flex-direction: row;
        justify-content: center;
        align-items: center;
        box-sizing: border-box;
    }
    a {
        color: var(--accent);
        text-decoration: none;
        border-bottom: 2px solid transparent;
        transition: border-color var(--transition);
        &:hover, &:focus, &:active {
            border-bottom: 2px solid var(--accent);
        }
    }
    span {
        border-bottom: 2px solid var(--fg);
    }
}

hr {
    border: none;
    border-top: 2px solid var(--fg);
    display: block;
    width: 60%;
    margin-top: var(--margin-xl);
    margin-bottom: var(--margin-xl);
}

table.post-list {
    td.dim {
        display: flex;
        flex-direction: row;
        align-items: center;
        gap: var(--margin-s);
        img {
            width: 18px;
            height: 18px;
        }
        font-size: .93em;
    }
}

table.post-list, ul.tag-list, #toc ul {
    a {
        text-decoration-color: transparent;
        &:hover, &:focus, &:active {
            text-decoration-color: var(--accent);
        }
    }
}
