@import "fonts.css";

/** RESET */
* {
    margin: 0;
    padding: 0;
    position: relative;
    box-sizing: border-box;
}

:root {
    font-size: 0.8rem;
    --base-hue: 217;
    --base-saturation: 0%;
    --base-lightness: 95%;
    --fixed-hue-color: hsl(
        var(--base-hue),
        var(--base-saturation),
        var(--base-lightness)
    );
    --light-border: color-mix(in srgb, var(--fixed-hue-color), black 15%);
    --border: color-mix(in srgb, var(--fixed-hue-color), black 25%);
    --spacing: 30px;
    --slight-shadow: 0 1px 4px color-mix(in srgb, var(--fixed-hue-color), black 0.3%);
    --slight-inset-shadow: inset 0 -1px 3px color-mix(in srgb, var(--fixed-hue-color), black 6%);
    --links-color: hsl(
        var(--base-hue),
        calc(var(--base-saturation) + 70%),
        calc(var(--base-lightness) - 40%)
    );
    --bg-color: color-mix(in srgb, var(--fixed-hue-color), white 50%);
    --bg-variation-color: color-mix(in srgb, var(--fixed-hue-color), white 75%);
    --code-bg: hsl(
        var(--base-hue),
        calc(var(--base-saturation) + 55%),
        calc(var(--base-lightness) + 3.5%)
    );

    @media (max-width: 690px) {
        font-size: 0.76rem;
    }
}

/** GENERAL */
body {
    font-family: "Inter", sans-serif;
    line-height: 1.5;
    background: var(--bg-color);
}

code {
    font-family: "JetBrains Mono", monospace;
    font-size: 1rem;
}

a {
    color: var(--links-color);
    text-decoration: none;
    transition: all 0.075s ease-in-out;
}

.container {
    width: 100%;
    max-width: 640px;
    margin: 0 auto;
}

/** HEADER */
header.main {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 100%;
    padding-top: calc(var(--spacing) * 2);

    @media (max-width: 690px) {
        padding-top: var(--spacing);
        padding-bottom: var(--spacing);
    }

    .container {
        display: flex;
        align-items: center;
        flex-direction: column;
        gap: var(--spacing);

        @media (max-width: 690px) {
            gap: calc(var(--spacing) / 2);
        }
    }

    .icon {
        a {
            display: flex;
            align-items: center;
            font-size: 1.8rem;
            font-weight: 600;
            color: #111;
            text-decoration: none;
            text-transform: uppercase;
            letter-spacing: 0;
            justify-content: center;
            border-radius: 25%;
            border: 1px solid var(--light-border);
            box-shadow: var(--slight-shadow);
            width: calc(var(--spacing) * 2);
            height: calc(var(--spacing) * 2);
            background: var(--bg-variation-color);

            &:hover {
                color: #fff;
                background: #111;
                border-color: transparent;
            }
        }
    }

    .title {
        font-size: 0.9rem;
        font-weight: 700;
        color: #333;
        text-transform: uppercase;
        letter-spacing: 0.1em;
        text-align: center;
        text-shadow: 0 1px 0 rgba(255, 255, 255, 0.75);
        padding-left: var(--spacing);
        padding-right: var(--spacing);

        a {
            color: #111;

            &:hover {
                color: #111;
                background: transparent;
                border-color: #111;
            }
        }
    }

    .nav {
        display: flex;
        gap: 10px;

        a {
            color: #666;
            text-shadow: 0 1px 0 #fff;
            font-weight: 500;
            background: linear-gradient(
                rgba(255, 255, 255, 0.85),
                rgba(0, 0, 0, 0.014)
            );
            box-shadow: var(--slight-shadow);
            border: 1px solid var(--light-border);
            border-radius: 6px;
            padding: 2px 4px;

            &:hover {
                color: #111;
                background: transparent;
            }

            &.--active {
                color: #111;
                text-shadow: 0 1px 0 #fff;
                font-weight: 600;
                background: color-mix(
                    in srgb,
                    var(--fixed-hue-color),
                    black 1%
                );
                box-shadow: var(--slight-inset-shadow), 0 1px 0 #fff;
                border: 1px solid var(--border);
                border-radius: 6px;
            }
        }
    }
}

/** CONTENT */
main.content {
    display: flex;
    flex-direction: column;

    .no-posts {
        text-align: center;
        background: #fff;
        border-top: 1px solid var(--light-border);
        border-bottom: 1px solid var(--light-border);
        padding: var(--spacing);
    }
}

/** ARCHIVE */
section.archive {
    &:before {
        display: block;
        content: "";
        width: 4px;
        height: calc(100% - var(--spacing));
        opacity: 0.5;
        background: var(--light-border);
        border-top-left-radius: 4px;
        border-top-right-radius: 4px;
        position: absolute;
        z-index: 1;
        top: var(--spacing);
        left: calc(50% - 2px);
    }

    .year {
        border-bottom: 1px solid var(--light-border);
        padding-top: calc(var(--spacing) * 3);
        padding-bottom: calc(var(--spacing) * 3);

        @media (max-width: 690px) {
            padding-top: calc(var(--spacing) / 2);
            padding-left: calc(var(--spacing) / 2);
            padding-right: calc(var(--spacing) / 2);
            padding-bottom: calc(var(--spacing) / 2);
        }

        > .title {
            font-size: 2rem;
            font-weight: 600;
            line-height: 1.15;
            color: #333;
            letter-spacing: -0.04em;
        }

        .container {
            display: flex;
            flex-direction: column;
            gap: var(--spacing);
            text-shadow: 0 1px 0 #fff;
            background: #fff;
            box-shadow: var(--slight-shadow);
            border: 1px solid var(--light-border);
            border-radius: 6px;
            overflow: hidden;
            z-index: 2;
            padding: calc(var(--spacing) * 2);

            &:before {
                display: block;
                content: "";
                width: 100%;
                height: 100%;
                background: url(../img/blog/paper-bg.png) #fff;
                opacity: 0.5;
                position: absolute;
                top: 0;
                left: 0;
            }

            @media (max-width: 690px) {
                gap: calc(var(--spacing) / 2);
                padding: calc(var(--spacing) / 1.5);
            }

            .months {
                display: flex;
                flex-direction: column;
                gap: var(--spacing);

                .month {
                    display: flex;
                    flex-direction: column;
                    gap: calc(var(--spacing) / 5);

                    > .title {
                        font-size: 0.9rem;
                        font-weight: 500;
                        text-transform: uppercase;
                        color: rgba(0, 0, 0, 0.5);
                    }
                }
            }

            article.post {
                display: flex;
                border-bottom: 1px solid var(--light-border);
                height: calc(var(--spacing) * 1.25);
                align-items: center;
                gap: calc(var(--spacing) / 2);

                * {
                    position: relative;
                    z-index: 2;
                }

                &:last-child {
                    border-bottom: none;
                }

                .title {
                    font-size: 1.15rem;
                    font-weight: 500;
                    color: #111;
                    text-decoration: none;
                    transition: all 0.15s;
                    text-overflow: ellipsis;
                    white-space: nowrap;
                    overflow: hidden;

                    a {
                        color: inherit;
                        border-bottom: 1px solid transparent;

                        &:hover {
                            color: #111;
                            border-color: #111;
                        }
                    }
                }

                .meta {
                    white-space: nowrap;
                    color: rgba(0, 0, 0, 0.5);

                    time {
                        width: 27px;
                        line-height: 1;
                        display: flex;
                        align-items: center;
                        justify-content: center;
                        font-size: 0.9rem;
                        font-weight: 500;
                        background: #fff;
                        border: 1px solid var(--light-border);
                        box-shadow: var(--slight-shadow);
                        border-radius: 6px;
                        padding: 4px;
                    }
                }
            }
        }

        &:nth-child(even) {
            background: var(--bg-variation-color);
        }
    }
}

/** POSTS */
section.posts {
    article.post {
        border-bottom: 1px solid var(--light-border);
        padding-top: calc(var(--spacing) * 3);
        padding-bottom: calc(var(--spacing) * 3);

        @media (max-width: 690px) {
            padding-top: calc(var(--spacing) / 2);
            padding-left: calc(var(--spacing) / 2);
            padding-right: calc(var(--spacing) / 2);
            padding-bottom: calc(var(--spacing) / 2);
        }

        .container {
            display: flex;
            flex-direction: column;
            gap: var(--spacing);
            background: #fff;
            box-shadow: var(--slight-shadow);
            border: 1px solid var(--light-border);
            border-radius: 6px;
            overflow: hidden;
            padding: calc(var(--spacing) * 2);

            @media (max-width: 690px) {
                gap: calc(var(--spacing) / 2);
                padding: calc(var(--spacing) / 1.5);
            }
        }

        &:nth-child(even) {
            background: var(--bg-variation-color);
        }

        header.post {
            display: flex;
            flex-direction: column;
            gap: 10px;
            text-shadow: 0 1px 0 #fff;

            @media (max-width: 690px) {
                gap: 5px;
            }

            h2.title {
                width: 90%;
                font-size: 2rem;
                font-weight: 600;
                line-height: 1.15;
                color: #333;
                letter-spacing: -0.04em;

                a {
                    color: #111;
                    text-decoration: none;
                    transition: all 0.15s;
                    border-bottom: 1px solid transparent;

                    &:hover {
                        color: #111;
                        background: transparent;
                        border-color: #111;
                    }
                }
            }

            .meta {
                display: flex;
                gap: 10px;
                color: #666;
                font-weight: 400;
                font-size: 0.95rem;
                letter-spacing: -0.02em;

                span {
                    color: #999;
                }
            }
        }

        .content {
            font-family: "Inter", sans-serif;
            font-size: 1.15rem;
            display: flex;
            flex-direction: column;
            gap: var(--spacing);
            letter-spacing: -0.021em;
            color: #272727;
            line-height: 1.65;
            text-wrap: pretty;

            @media (max-width: 690px) {
                gap: calc(var(--spacing) / 2);
            }

            a {
                border-bottom: 1px solid var(--links-color);

                &:hover {
                    border-bottom: 2px solid var(--links-color);
                }
            }

            h1,
            h2,
            h3,
            h4,
            h5,
            h6 {
                font-family: "Inter", sans-serif;
                letter-spacing: -0.04em;
                line-height: 1.25;
                font-weight: 600;
                hyphens: auto;
                hyphenate-limit-chars: 7;
                text-wrap: pretty;
                text-align: left;
                margin-top: var(--spacing);
                margin-bottom: calc(var(--spacing) * -0.1);

                code {
                    font-size: inherit;
                }
            }

            :is(h1, h2, h3, h4, h5, h6) + :is(h1, h2, h3, h4, h5, h6) {
                margin-top: 0;
            }

            h1 {
                font-size: 1.6rem;
            }

            h2 {
                font-size: 1.5rem;
            }

            h3 {
                font-size: 1.4rem;
            }

            h4 {
                font-size: 1.3rem;
            }

            h5 {
                font-size: 1.25rem;
            }

            h6 {
                font-size: 1rem;
                text-transform: uppercase;
            }

            hr {
                width: 100%;
                height: 1px;
                background-color: #eee;
                border: none;
            }

            strong {
                color: #111;
                font-weight: 600;
            }

            ul {
                margin-left: 16px;

                li {
                    list-style: disc;
                }
            }

            ol {
                margin-left: 26px;

                li {
                    list-style: decimal-leading-zero;
                }
            }

            ol, ul {
                display: flex;
                flex-direction: column;
                gap: calc(var(--spacing) / 4);
            }

            blockquote {
                display: flex;
                flex-direction: column;
                gap: var(--spacing);
                border-left: 2px solid #ddd;
                padding-left: var(--spacing);
            }

            img {
                width: 100%;
                height: auto;
            }

            code {
                color: #111;
                background: var(--code-bg);
                padding: 2px 5px;
                border-radius: 6px;
                box-shadow: var(--slight-shadow);
                border: 1px solid var(--light-border);
                text-shadow: 0 1px 0 #fff;
            }

            pre {
                width: calc(100% + var(--spacing) * 4);
                max-height: 350px;
                background: var(--code-bg);
                line-height: 1.25;
                box-shadow: var(--slight-shadow);
                border-top: 1px solid var(--light-border);
                border-bottom: 1px solid var(--light-border);
                padding: var(--spacing) calc(var(--spacing) * 2);
                overflow: auto;
                margin-left: calc(var(--spacing) * -2);

                @media (max-width: 690px) {
                    width: calc(100% + var(--spacing));
                    padding: calc(var(--spacing) / 1.25);
                    margin-left: calc(var(--spacing) * -0.75);
                }

                code {
                    padding: 0;
                    border: 0;
                    box-shadow: none;
                }
            }
        }
    }
}

/** FOOTER */
footer.main {
    display: flex;
    flex-direction: column;
    gap: calc(var(--spacing) / 2);
    justify-content: center;
    text-align: center;
    font-size: 0.9rem;
    text-shadow: 0 1px 0 rgba(255, 255, 255, 0.75);
    color: rgba(0, 0, 0, 0.75);
    line-height: 1.75;
    padding-top: calc(var(--spacing) * 3);
    padding-left: var(--spacing);
    padding-right: var(--spacing);
    padding-bottom: calc(var(--spacing) * 3);

    @media (max-width: 690px) {
        padding-top: var(--spacing);
        padding-bottom: var(--spacing);
    }

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

        &.credit {
            gap: 5px;
            color: rgba(0, 0, 0, 0.5);
        }
    }

    .itypd {
        margin-left: 2px;
        margin-right: 2px;

        &:hover {
            background: transparent;
        }

        svg {
            width: auto;
            height: 15px;
        }
    }
}
