:root {
    --sidebar-text-scale:    1.25;
    --sidebar-button-margin: 0px;
    --sidebar-button-size:   40px;
    --sidebar-width:         calc(35ch * var(--sidebar-text-scale));
    --sidebar-border-width:  1px;
    --sidebar-padding:       2ch;
}



#sidebar, #sidebar-button *, #sidebar-attached-button-background {
    transition: 0.25s ease;
}

#sidebar-button {
    transition: width 0.25s ease;
}



#sidebar {
    user-select: none;
    z-index: 1001;
    position: fixed;
    box-sizing: border-box;
    padding: var(--sidebar-padding);
    padding-top: calc(
        var(--sidebar-button-margin) * 2
        + var(--sidebar-button-size)
        + var(--sidebar-border-width)
    );
    border-right: var(--sidebar-border-width) solid;
    border-color: var(--text-grey-bright);
    margin: 0;
    background-color: var(--text-background-bright);
    overflow-x: hidden;
    overflow-y: scroll;
    overscroll-behavior: contain;
    width: var(--sidebar-width);
    height: 100vh;
    top: 0;

    left: calc(-1 * var(--sidebar-width));
}

#sidebar-toggle:checked ~ #sidebar {
    left: 0;
}

#sidebar * {
    color: var(--text);
    font-size: calc(var(--root-font-size) * var(--sidebar-text-scale));
    line-height: calc(var(--root-line-height) * var(--sidebar-text-scale));
    overflow-wrap: break-word;

    margin: 0;
}

#sidebar .sidebar-heading {
    color: var(--text-white-bright);
    text-align: center;
    font-size: calc(var(--root-font-size) * 2.75);
    line-height: calc(var(--root-line-height) * 4);
}

#sidebar .page-disabled {
    color: var(--text);
}

#sidebar .page-disabled:hover {
    color: var(--text-grey-bright);
}

#sidebar .page-not-allowed {
    color: var(--text);
    text-decoration: line-through;
}
#sidebar .page-not-allowed:hover {
    color: var(--text-grey-bright);
}

#sidebar .redacted-text {
    text-decoration: none;
    color: #0000;
    background-color: var(--text-grey);
}
#sidebar .redacted-text:hover {
    color: #0000;
    background-color: var(--text-grey-dark);
}


#sidebar a {
    color: var(--text-white);
    text-decoration: none;
}

#sidebar a:hover {
    color: var(--deep-purple-bright);
}

#sidebar a:active {
    color: var(--text-white-bright);
}



#sidebar-attached-button-background {
    background-color: var(--text-background) !important;
    mask: linear-gradient(to bottom, black, transparent);
    z-index: 1002;
    position: fixed;
    box-sizing: border-box;
    width: var(--sidebar-width);
    height: calc(
        var(--sidebar-button-size) * 1.5
        + var(--sidebar-button-margin) * 2
        + var(--sidebar-border-width)
    );
    top: 0;
    left: calc(-1 * var(--sidebar-width));
    background-color: var(--text-background-bright);
    border-right: var(--sidebar-border-width) solid;
    border-color: var(--text-grey-bright);
    pointer-events: none;
}

#sidebar-toggle:checked ~ #sidebar-attached-button-background {
    left: 0;
}



#sidebar-button {
    width: var(--sidebar-button-size);
    height: var(--sidebar-button-size);
    
    z-index: 1004;
    position: fixed;

    top: var(--sidebar-button-margin);
    left: var(--sidebar-button-margin);
}

#sidebar-toggle:checked ~ #sidebar-button {
    width: calc(
        var(--sidebar-width)
        - var(--sidebar-button-margin) * 2
        - var(--sidebar-border-width)
    );
    top: var(--sidebar-button-margin);
}



#sidebar-button * {
    position: absolute;
    image-rendering: pixelated;
}

#sidebar-button-cap-left {
    background-image: url(../../assets/sidebar_button_cap.png);
    width: calc(var(--sidebar-button-size) / 2);
    height: var(--sidebar-button-size);
    z-index: 1004;
    left: 0;
}

#sidebar-button:hover > #sidebar-button-cap-left {
    background-image: url(../../assets/sidebar_button_cap_hover.png);
}

#sidebar-button-center {
    background-image: url(../../assets/sidebar_button_center.png);
    z-index: 1003;
    left: 50%;
    transform: translateX(-50%);
    /* the `+ 1px` at the end prevents awful seams on odd scale factors */
    width: calc(
        100%
        + var(--sidebar-button-margin) * 2
        - var(--sidebar-button-size)
        + 1px
    );
    height: var(--sidebar-button-size);
}

#sidebar-button:hover > #sidebar-button-center {
    background-image: url(../../assets/sidebar_button_center_hover.png);
}

#sidebar-button-cap-right {
    background-image: url(../../assets/sidebar_button_cap.png);
    width: calc(var(--sidebar-button-size) / 2);
    height: var(--sidebar-button-size);
    z-index: 1004;
    transform: scaleX(-1.0);
    right: 0;
}

#sidebar-button:hover > #sidebar-button-cap-right {
    background-image: url(../../assets/sidebar_button_cap_hover.png);
}



#sidebar-toggle {
    visibility: hidden;
    position: absolute;
    display: none;
}


/* pretend this value is `--article-width + (--sidebar-width * 2)` */
@media (max-width: 1600px) {
    #sidebar {
        width: 100vw !important;
        left: -100vw !important;
        background-color: #181818f8;
    }
    #sidebar-toggle:checked ~ #sidebar {
        left: 0 !important;
    }

    #sidebar-attached-button-background {
        width: 100vw !important;
        left: -100vw !important;
    }
    #sidebar-toggle:checked ~ #sidebar-attached-button-background {
        left: 0 !important;
    }

    #sidebar-toggle:checked ~ #sidebar-button {
        width: var(--sidebar-button-size) !important;
    }
}
