/* GENERAL STYLES */
html {
    @media (prefers-reduced-motion: no-preference) {
        scroll-behavior: smooth;
    }
}

body {
    display: flex;
    align-items: center;
    flex-direction: column;
    font-family: var(--ff-default), system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
    color: var(--clr-body-txt);
    background-color: var(--clr-body-bg);
}

main {
    width: 100%;
    display: grid;
    font-size: var(--fs-main);
}

h1 {
    color: var(--clr-main-heading);
    font-size: var(--fs-h1);
    border-bottom: 0.18rem solid var(--clr-title-border);
    padding-bottom: 0.3em;
    margin-bottom: 0.5em;
}

h2, h3, h4, h5, h6 { color: var(--clr-sub-heading); }
h1, h2, h3 { line-height: 1.2; }
h2, .h2 { font-size: var(--fs-h2); }
h3, .h3 { font-size: var(--fs-h3); }

h2:has(+ *[class]:not(.heading-anchor)), .h2:has(+ *[class]),
h3:has(+ *[class]:not(.heading-anchor)), .h3:has(+ *[class]) { margin-bottom: 0.5em; }

h4, .h4 { font-size: var(--fs-h4); }

strong { color: var(--clr-bold-txt); }

:focus { outline: 0.15em solid currentColor; }

a {
    font-weight: 700;
    color: var(--clr-link);
}

a:hover { color: var(--clr-link-hover); }
a:not([class]):focus { outline: 0.15rem solid var(--clr-link); }
a:hover img, a:focus img { outline: 0.2em solid currentColor; }

a[href^="http"]:not([href*="leilukin.com"]):not(:has(img, svg, picture)),
.external-link { padding-right: var(--sz-external-link); }

a[href^="http"]:not([href*="leilukin.com"]):not(:has(img, svg, picture))::after,
.external-link::after {
    position: absolute;
    content: "";
    display: inline-block;
    width: 1em;
    height: 1em;
    margin-left: 0.3em;
    background-color: currentColor;
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3C!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--%3E%3Cpath d='M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z'/%3E%3C/svg%3E");
    mask-repeat: no-repeat;
    mask-size: 90%;
    transform: translateY(0.25em);
}

:not(.c-blockquote) > blockquote,
.c-blockquote {
	padding: 1em 1.4em 1.4em;
	border-inline-start: 0.1em solid var(--clr-main-heading);
    background-color: var(--clr-quote-bg);
    margin-bottom: 1em;
}

blockquote > * + :not([class]),
* + blockquote,
* + .c-blockquote,
.c-blockquote__attribution { margin-top: var(--sz-paragraph-margin); }

button:hover { cursor: pointer; }

button:focus,
details:focus { outline-offset: 0.2em; }

figure {
    margin-bottom: var(--sz-paragraph-margin);
    display: grid;
    place-content: center;
    justify-items: center;
}

figcaption {
    text-align: center;
    font-size: 0.9em;
    margin-top: 0.2em;
}

code { font-family: var(--ff-monospace), ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono', monospace; }

:not(pre) > code { padding: 0.125em 0.25em; }

:not(pre) > code,
pre { background-color: var(--clr-code-bg); }

pre {
    border: 0.1em solid var(--clr-code-border);
    max-width: 90vw;
    overflow: auto;
    padding: 1rem;
}

pre > code { white-space: pre; }

summary { cursor: pointer; }

dl {
    display: grid;
    gap: 1em;
    grid-template-columns: auto auto;
}

dt { font-weight: 700; }
dd {grid-column-start: 2; }