:root {
    --mw: 50rem;
    --s75: .75em;
    --s1: 1em;
    --s125: 1.25em;
    --sout: 1rem;
    --hm: 2.5rem;

    --f: 1.2em / 1.6 sans-serif, system-ui;
    --fw: 1;
    --h1-scale: 4;
    --h1-skew: -10deg;

    --t: .5s;

    --fg: #222;
    --bg: #fff;
    --en: #000;

    --w: #ffe01c;
    --i: #1c8dff;
    --e: #ff1c1c;
    --o: #5cff00;
    --a: #0000f9;
    --as: #06f;

    --tc: #9333F3; --tb: #9333F333; --tbh: #9c4dec4b;
    --yc: #178b3f; --yb: #33f3664b; --ybh: #33f36677;
    --sc: #f60;    --sb: #ff884c4b; --sbh: #ce6e3d55;

    --cm: 99999%;
}

@media (prefers-color-scheme: light) {
    :root {
        --fg: #eee;
        --en: #fff;
        --bg: #000;
        --w: #ffff00;
        --i: #0077ff;
        --e: #ff0000;
        --o: #00ff00;
        --a: #8cb4ff;
        --as: #5e9eff;
        --tc: #b366ff; --tb: #b366ff44; --tbh: #c480ff1f;
        --yc: #2ecc71; --yb: #2ecc7133; --ybh: #4cd1791f;
        --sc: #ff8c33; --sb: #ff8c3333; --sbh: #ff9f4d1f;
    }

    .icon {
        filter: invert(1) contrast(var(--cm)) !important;
    }
}

@-moz-document url-prefix() {
    :root {
        --cm: 900%;
        --fw: 400;
    }
    header { border-radius: 0 !important; }
    .theme-toggle { margin-right: .4ch; }
}

body {
    position: relative;
    max-width: var(--mw);
    margin: var(--sout) auto;
    padding: var(--sout);

    background: var(--bg);
    color: var(--fg);

    font: var(--f);
    text-rendering: optimizeSpeed;
    -webkit-font-smoothing: none;
    -moz-osx-font-smoothing: grayscale;
    font-smooth: never;

    image-rendering: pixelated;
}

header, p, table, th, td, h2, h3, h4, code,
#moth, #roses, .al {
    filter: contrast(var(--cm));
}

.icon, h1 {
    user-select: none;
}

h2, h3, h4, code, th, .al b {
    background-color: var(--en);
    color: var(--bg);
    font-family: serif;
    display: inline-block;
    font-weight: var(--fw);
    padding: 0 .5ch;
    letter-spacing: -.1ch;
    margin: 0;
}

th {
    display: table-cell;
}

header h1, p, sub, nav-list, li {
    letter-spacing: -.1ch;
}

p {
    margin-bottom: var(--s75);
    background-color: var(--bg);
}

ul {
    padding-left: var(--s125);
    margin-left: var(--s125);
}

li {
    list-style: square;
    font-weight: var(--fw);
}

sub, nav-list {
    vertical-align: middle;
}

a {
    color: var(--a);
    text-decoration: none;
    &:hover { color: var(--as); }
}

.header-main {
    display: flex;
    flex-direction: row;
    justify-content: center;
    gap: 6rem;
    align-items: center;
}

.header-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    z-index: 2;
}

#angel-left, #angel-right {
    margin-top: -3rem;
    z-index: 1;
    width: 70px;
    transform: skewX(10deg);
}

#angel-right {
    transform: scaleX(-1) skewX(10deg);
}

#roses {
    transform-origin: center center;
    transform: scaleY(.8) scaleX(1.2);
}

header {
    color: var(--en);
    background-color: var(--bg);
    border: 4px double var(--en);
    border-radius: 3.5rem;
    corner-shape: scoop;

    display: flex;
    flex-direction: column;
    align-items: center;
    margin-bottom: var(--hm);
    transition: all var(--t) ease;

    & h1 {
        font-family: serif;
        font-weight: 99999;
        white-space: nowrap;
        margin: 0;

        transform-origin: center;
        filter: contrast(var(--cm));
        transform: scaleX(var(--h1-scale)) skewX(var(--h1-skew));
        transition: transform var(--t) ease, transform-origin var(--t) ease, margin-bottom var(--t) ease;
    }

    & nav {
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
        gap: .5ch;

        & a {
            font-weight: var(--fw);
            color: var(--en);
            letter-spacing: .2ch;

            transform: scaleX(.5) scaleY(1.5);
            transform-origin: top center;
            transition: filter var(--t) ease;

            &:hover {
                color: var(--fg);
                filter: opacity(.8);
            }
        }
    }
}

table {
    width: 100%;
    font-family: serif;
    border-collapse: collapse;
    border: 1px solid var(--en);
    margin: var(--s125) 0;

    & a { color: var(--a); }
    & a:hover { color: var(--as); }
}

th, td {
    border: 1px solid var(--en);
    padding: 0.4em 0.6em;
    text-align: left;
}

td {
    background-color: var(--bg);
    color: var(--en);
}

tr:hover td {
    filter: contrast(var(--cm));
}

.sname {
    font-weight: var(--fw);
    display: inline-block;
    transform: scaleX(1) scaleY(1.8);
    transform-origin: left;
    color: var(--en);

    &:hover {
        color: var(--fg);
        filter: opacity(.8);
    }
}

.al {
    margin: var(--s125) 0;
    border-left: 3px solid var(--ac, currentColor);
    padding-left: var(--s75);

    & p { display: inline; }

    & b {
        background-color: var(--ac);
        margin-right: .5ch !important;
    }

    &[type="warning"] { --ac: var(--w); }
    &[type="info"]    { --ac: var(--i); }
    &[type="ok"]      { --ac: var(--o); }
    &[type="error"]   { --ac: var(--e); }
}

.dl {
    display: flex;
    gap: 0.5em;
}

.yl, .tl, .sl {
    height: 2ch;
    width: 2ch;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    transition: scale var(--t) ease;

    &:hover { transform: scale(1.2); }
}

.yl { background-image: url("/assets/img/icons/yggdrasil.svg"); }
.tl { background-image: url("/assets/img/icons/tor.svg"); }
.sl { background-image: url("/assets/img/icons/forgejo.svg"); }

@media (max-width: 850px) {
    :root {
        --h1-scale: 3;
    }

    .header-main {
        gap: 3rem;
    }

    header {
        border-radius: 3rem;
    }
}

@media (max-width: 600px) {
    :root {
        --h1-scale: 2.2;
    }

    .header-main {
        gap: 1.5rem;
    }

    #angel-left, #angel-right {
        width: 50px;
        margin-top: -2rem;
    }

    header {
        border-radius: 2rem;
        padding-top: 1rem;
        padding-bottom: 1rem;
    }
}

@media (max-width: 420px) {
    :root {
        --h1-scale: 1.5;
        --h1-skew: -5deg;
    }

    .header-main {
        gap: 0.5rem;
    }

    #angel-left, #angel-right {
        width: 35px;
        margin-top: -1.5rem;
    }

    header {
        border-radius: 1.5rem;
        border-width: 3px;
    }

    header nav {
        margin-top: 0.5rem;
    }
}
