@import "./vars.css";

/* ===== Reset ===== */
*, *::before, *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* ===== Base ===== */

html {
    font-size: 100%;
    scroll-behavior: smooth;
    scroll-padding-top: 6em;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body {
    font-family: var(--ff-sans);
    background-color: var(--clr-bg);
    background-image: var(--linear-background);
    color: var(--clr-text);
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
    padding-top: 4em;
}

a {
    text-decoration: none;
}

img, iframe {
    display: block;
    max-width: 100%;
}

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

pre:has(.copy-btn) {
    position: relative;
    
    .copy-btn {
        position: absolute;
        top: 0; right: 0;
        padding: 0.25em 0.5em;
        background-color: var(--clr-surface-alt);
        color: var(--clr-text);
    }
}

ul, li {
    list-style: none;
}

ul {
    display: flex;
    flex-direction: column;
    gap: 0.5em;
    padding-left: 1.5em;

    li {
        position: relative;

        &::before {
            content: "•";
            position: absolute;
            left: -1.5em;
            color: var(--clr-accent);
        }
    }
}



button {
    font: inherit;
    border: none;
    background: none;
    cursor: pointer;
}

.button {
    background-color: var(--clr-accent);
    color: var(--clr-white);
    padding: 1em 2em;
    border-radius: 0.5em;
    transition: all var(--transition-duration);

    &:hover {
        background-color: var(--clr-accent-dark);
    }
    &:active {
        background-color: var(--clr-white);
        color: var(--clr-accent-dark);
    }

    &.icon {
        padding: 1em;
    }

    &.full {
        /* width: 100%; */
        display: block;
        text-align: center;
    }
}

.link {
    color: var(--clr-accent);
    transition: color var(--transition-duration);

    &:hover {
        color: var(--clr-accent-dark);
    }
}

/* ===== Skip Link ===== */

.skip-link {
    position: absolute;
    top: -100%;
    left: 1em;
    z-index: var(--z-top);

    &:focus {
        top: 1em;
    }
}

/* ===== Site Header / Nav ===== */

.site-header {
    position: fixed;
    top: 0; left: 0; right: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 4em;
    padding-inline: 1em;
    background: var(--clr-surface-alt);
    padding-block: 1em;
    backdrop-filter: blur(0.75em);
    -webkit-backdrop-filter: blur(0.75em);
    border-bottom: 1px solid var(--clr-border);
    z-index: var(--z-header);
}

.site-logo {
    font-size: 1.5em;
    font-weight: bold;
    color: var(--clr-white);
    
    span {
        color: var(--clr-accent);
    }
}

/* Mobile menu toggle */
.nav-toggle {
    display: none;
    background: none;
    border: none;
    cursor: pointer;
    padding: 0.5em;
    color: var(--clr-white);
    font-size: 1.25em;

    @media (max-width: 768px) {
        display: block;
    }
}

ul.nav-list {
    flex-direction: row;
    gap: 2em;

    li::before {
        content: none;
    }

    a {
        color: var(--clr-text-muted);
        font-size: 0.9em;
        padding: 0.5em;
        transition: color var(--transition-duration);
        
        &:hover {
            color: var(--clr-white);
        }
        
        &.active {
            color: var(--clr-accent);
        }
    }

    @media (max-width: 768px) {
        position: fixed;
        top: 0; left: 0;
        width: 100%; height: 100dvh;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 2em;
        background: var(--clr-surface);
        opacity: 0;
        pointer-events: none;
        z-index: -1;
        transition: opacity var(--transition-duration);
        
        &.open {
            opacity: 1;
            pointer-events: auto;
        }

        a {
            font-size: 1.5em;
        }
    }
}

/* ===== Main ===== */

main {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2em;
    padding: 2em 1em;
    width: min(100%, var(--max-width));
    margin-inline: auto;
}

section {
    width: 100%;
    margin-inline: auto;

    &.hr {
        border: solid var(--clr-border);
        border-width: 1px 0;
        padding: 1px;
    }
}

.page-header {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1em;
    padding-block: 2em;
}

/* ===== Footer ===== */

.site-footer {
    display: flex;
    flex-direction: column;
    gap: 1em;
    align-items: center;
    justify-content: center;
    min-height: 12em;
    padding: 1em;
    border-top: 1px solid var(--clr-border);
    background: var(--clr-surface-alt);
    backdrop-filter: blur(0.75em);
    -webkit-backdrop-filter: blur(0.75em);
    margin-top: auto;
    
    p {
        max-width: 720px;
        text-align: center;
        color: var(--clr-text-muted);
        text-wrap: balance;
    }
    
    p:not(:first-child) {
        font-size: 0.9em;
    }
}
