/* // TODO: fix all transition syntax
// TODO: double-colon selectors */

*, ::after, ::before {
    box-sizing: border-box;
}

:root {
    --root-font-size: 14px;

    --text: #212121;
    --background: #fafafa;
    --border: #ccc;

    --action: #ff9000;
    --important: #ff4df1;

    --link-normal-color: #0d27fa;
    --link-normal-sub-color: #475bff;
    --link-active-color: #ff9000;

    --footer-background: #ddd;

    --left-panel-background: #c8e0cf;
    --left-panel-header-background: #b8e2ba;

    --right-panel-color: #f1f1f1;
    --divider-color: #a6a6a6;

    --textbox-border: #888;
    --textbox-selected-border: #ff9000;
    --textbox-selected-shadow: #ff810094;
    --textbox-background: #fafafa;

    --checkbox-color: #ff4df1;

    --control-disabled: #aaa;
    --control-enabled: #050505;
    --control-selected: #ff9000;

    --scrollbar-background: #ddd;
    --scrollbar-color: #aaa;

    --shadow-color: 128,128,128;

    --message-wrapper-background: rgba(190, 190, 190, 0.85);
    --message-shadow-background: rgb(190, 190, 190);
    --message-background: #fafafa;


    --button-background: #ffd96f;
    --button-selected-shadow: #ffd96f63;
    --button-selected-color: #070707;
}




html {
    font-size: var(--root-font-size);
}
body {
    padding: 0;
    min-height: 100vh;
    display: flex;

    font-size: 1rem;
    font-family: 'Exo 2', 'Open Sans', 'Roboto', 'Segoe UI', Tahoma, sans-serif;
    font-weight: normal;
    letter-spacing: 0.02rem;
    text-align: center;

    background-color: var(--background);
    color: var(--text);
}
ol, ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
    overflow: hidden;
}
a {
    text-decoration: none;
}
svg {
    width: 100%;
    height: 100%;
}
label {
}



:root {
    --accent-border: #ccc;

    --component-border: #999;
    --component-background: #fafafa;
    --component-focus: #cccccca9;
    --component-shadow-action: #ff8d0099;

    --button-inset-shadow: #555555aa;
    --cb-tick: #e31fe6;

    --window-wrapper-background: rgba(190, 190, 190, 0.85);
    --window-shadow-background: rgb(190, 190, 190);
    --window-background: #fafafa;
}


.component {
    display: flex; justify-content: flex-start; align-items: center;
}
.component.column {
    flex-direction: column;
}
    .component > label {
        flex-basis: auto;
        width: max-content;
    }
    .component > input, .component > button {
        position: relative;
    }
    .component > input[type='checkbox'], .component > input[type='checkbox'] + label, .component > button {
        cursor: pointer;
    }
    .component > input[type='checkbox'] {
        width: 1.25rem; height: 1.25rem;
        min-width: 1.25rem; min-height: 1.25rem;
        max-width: 1.25rem; max-height: 1.25rem;
    }
    .component > input + label, .component > label + input {
        margin-left: .5rem;
    }
    .component.column > input + label, .component.column > label + input {
        margin-left: 0;
    }
    .component > button {
        min-width: 5rem;
        min-height: 1.7rem;
        width: 100%;
        height: 100%;
    }
    .component.column > label {
        margin-bottom: .25rem;
    }


@supports (-webkit-appearance: none) or (-moz-appearance: none) or (appearance: none) {
    .component > input, .component > button {
        -webkit-appearance: none; -moz-appearance: none; appearance: none;
        outline: none;
        border: 1px solid var(--component-border-action, var(--component-border));
        background: var(--component-background-action, var(--component-background));
        border-radius: 3px;
        transition: border-color .15s, background-color .15s, box-shadow .15s;
    }
    .component > input[type='checkbox']:checked:not(:hover) {
        --component-border-action: #666;
        --component-background-action: #fff4ea;
    }
    .component > input:hover, .component > button:hover {
        --component-border-action: #ff8d00;
        box-shadow: 0 0 3px 1px var(--component-shadow-action);
    }
    .component > input:focus:not(:hover), .component > button:focus:not(:hover) {
        box-shadow: 0 0 1px 2px var(--component-focus);
    }
    .component > input[type='checkbox']::after {
        content: '';
        display: block;
        left: 0;
        top: 0;
        position: absolute;
        width: 30%;
        height: 60%;
        border: 2px solid var(--cb-tick);
        border-top: 0;
        border-left: 0;
        left: 35%;
        top: 15%;
        opacity: 0;
        transform: rotate(45deg);
        transition: opacity .15s;
    }
    .component > input[type='checkbox']:checked::after {
        opacity: 1;
    }

    .component > input[type='text'] {
        min-height: 1.6rem;
        padding: .15rem .3rem;
        min-width: 12.5rem;
        width: 100%;
    }

    .component > button::after {
        left: -1px;
        top: -1px;
        content: '';
        position: absolute;
        width: calc(100% + 2px);
        height: calc(100% + 2px);
        opacity: 0;
        border-radius: 3px;
        border: 1px solid transparent;
        box-shadow: inset 0 0 2px 1px var(--button-inset-shadow);
        transition: opacity .15s;
    }
    .component > button:active::after {
        opacity: 1;
    }
}



.hidden {
    display: none !important;
}


.shadow-bottom-inset {
    box-shadow: 0 10px 5px -10px rgba(var(--shadow-color), 0.75) inset;
}


.textbox {
    padding: .25rem .5rem;
    background-color: var(--background);
    border: 1px solid var(--textbox-border);
    border-radius: .2rem;
    transition: box-shadow .2s ease-out;
}

    .textbox:focus {
        border-color: var(--textbox-selected-border);
        box-shadow: 0 0 0 .1rem var(--textbox-selected-shadow);
        outline: .15rem solid transparent;
    }



/* 3rd party css styling */

.pd-theme td:not(.is-selected):not(.is-today) [data-pika-month="2"][data-pika-day="8"] {
    background-color: var(--important-date-background);
    border-radius: 4px;
}

.pd-theme .pika-row td:nth-last-child(-n+2):not(.is-selected) .pika-button:not(:hover) {
    background-color: var(--weekend-background);
}

.simplebar-track.simplebar-vertical {
    width: 1rem !important;
}






.body-spacer {
    width: 5vw;
    max-width: 5vw;
}

.body-wrapper {
    max-width: 1500px;
    width: fit-content;

    display: flex;
    flex-direction: column;
    margin: 0 auto;
    flex-grow: 1;
}

    .panel-wrapper {
        flex-grow: 1;
        display: flex;
    }

        .left-panel {
            max-width: 15.5rem;
            min-width: 12.5rem;
            flex-basis: 100%;
            background-color: var(--left-panel-background);
            border-right: 1px solid var(--border);

            display: flex;
            flex-direction: column;
            user-select: none;
        }

            .left-panel > .header {
                height: 3rem;
                display: flex;
                justify-content: center;
                align-items: center;
                border-bottom: 1px solid var(--border);
                background-color: var(--left-panel-header-background);
            }

                .left-panel .header .text {
                    font-size: 1.5rem;
                    font-weight: 700;
                }

            .left-panel .sections {
                padding: .5rem 0 .5rem 1rem;
            }

                .left-panel .section {
                    margin: .25rem 0;
                    position: relative;
                    display: flex; align-items: center;
                }

                    .left-panel .section .clickable-area {
                        width: 80%; max-width: 100%;
                        padding: .5rem 1rem .5rem .5rem;
                        cursor: pointer;
                        display: flex; align-items: center;
                    }
                    .left-panel .section .image {
                        min-width: 1.5rem; max-width: 1.5rem; width: 1.5rem;
                        min-height: 1.5rem; max-height: 1.5rem; height: 1.5rem;
                        margin-right: 1rem;
                        transition: fill .15s;
                    }
                    .left-panel .section .text {
                        font-size: 1.15rem; font-weight: 300;
                        color: var(--link-normal-color);
                        transition: color .15s;
                    }
                    .left-panel .clickable-area:hover .text, .left-panel .clickable-area:active .text {
                        color: var(--link-active-color);
                    }
                    .left-panel .clickable-area:hover .image, .left-panel .clickable-area:active .image {
                        fill: var(--link-active-color);
                    }

                .left-panel .section .arrow {
                    display: block;
                    width: 1rem;
                    height: 1rem;
                    border-right: 1px solid var(--border);
                    border-top: 1px solid var(--border);
                    transform: rotate(-135deg);
                    position: absolute;
                    right: -.51rem;
                    background-color: var(--right-panel-color);
                }

                .left-panel .section.sub .clickable-area {
                     width: 100%;
                     padding: .25rem 0;
                     margin-right: .5rem;
                 }
                .left-panel .section.sub .image {
                    min-width: 1rem; max-width: 1rem; width: 1rem;
                    min-height: 1rem; max-height: 1rem; height: 1rem;
                    margin-right: .5rem;
                }
                .left-panel .section.sub .text {
                    font-size: 1rem;
                    color: var(--link-normal-sub-color);
                }
                .left-panel .section.sub .clickable-area:hover .image {
                    fill: unset;
                }
                .left-panel .section.sub .clickable-area:hover .image.collapser {
                    fill: var(--link-active-color);
                }
                .left-panel .section.sub .dot-filler {
                    flex: 1;
                    height: 2px;
                    border-top: 2px dashed rgba(0,0,0,0.25);
                    margin-left: .5rem; margin-right: .5rem;
                }
                .left-panel .section.sub .collapser {
                    display: none;
                    margin-right: 0;
                }
                .left-panel .section.sub .collapser.active {
                    display: block;
                }

                .left-panel .ss-line {
                    position: absolute;
                    height: 100%;
                    width: 2px;
                    border-left: 2px dashed rgba(0,0,0,0.25);
                    left: 0;
                    top: 0;
                }


            .left-panel .divider { display: none; }
            .left-panel .divider:not(:last-child) {
                display: block;
                width: 85%;
                border: 1px solid var(--divider-color);
                background-color: var(--divider-color);
                border-radius: 1px;
                align-self: center;
                margin-bottom: .25rem;
            }

            .left-panel .divider + div {
                padding: .5rem 1rem 1rem 1.5rem;
                display: flex; flex-direction: column; align-items: stretch;
            }

        .right-panel {
            flex-grow: 1;
            display: flex;
            background-color: var(--right-panel-color);
            padding: 1rem;
        }

            .right-panel .no-section {
                font-size: 2rem;
                font-weight: 700;
                flex: 1;
            }



    .footer {
        min-height: 2rem;
        max-height: 2rem;
        height: 2rem;
        display: flex;
        justify-content: center;
        align-items: center;

        background-color: var(--footer-background);
        border-top: 1px solid var(--border);
    }























.window-wrapper {
    position: fixed;
    width: 100%; height: 100%;
    background-color: var(--window-wrapper-background);
    z-index: 100;

    overflow: hidden;
    display: flex; justify-content: center; align-items: center;
    opacity: 0;
    visibility: hidden;
    transition: opacity .35s, visibility .35s;
}
    .window-wrapper.active {
        opacity: 1;
        visibility: visible;
    }
    .window {
        min-width: min(400px, 80vw); max-width: 1200px;
        min-height: fit-content; max-height: 800px;
        position: relative;
        background-color: var(--window-background);
        border-radius: 1rem;
        display: flex; flex-direction: column; align-items: center;
        padding: 2rem;
        box-shadow: 0 0 100px 40px var(--window-shadow-background);
        opacity: 0;
        visibility: hidden;
        transition: opacity .35s, visibility .35s;
    }
        .window.active {
            opacity: 1;
            visibility: visible;
        }
        .window .close-button {
            position: absolute;
            right: 1.5rem; top: 1.5rem;
            width: 2rem; height: 2rem;
            opacity: .3;
            transition: opacity .2s;
            cursor: pointer;
        }
        .window .close-button:hover {
            opacity: 1;
        }
        .window .close-button::before, .window .close-button::after {
            position: absolute;
            left: calc(50% - 1px);
            content: ' ';
            height: 100%;
            width: 2px;
            background-color: var(--text);
        }
        .window .close-button::before { transform: rotate(45deg); }
        .window .close-button::after { transform: rotate(-45deg); }

        .window > *:nth-child(n+2):not(:last-child) {
            margin-bottom: 1.5rem;
        }




/* old stuff */


.message-wrapper {
    position: fixed;
    width: 100%;
    height: 100%;
    background-color: var(--message-wrapper-background);
    z-index: 100;

    overflow: hidden;
    display: flex;
    justify-content: center;
    align-items: center;
    opacity: 0;
    visibility: hidden;
    transition: opacity .35s, visibility .35s;
}
    .message-wrapper.active {
        opacity: 1;
        visibility: visible;
    }
    .message {
        min-width: min(400px, 80vw); max-width: 1200px;
        min-height: min(300px, 80vh); max-height: 800px;
        position: relative;
        background-color: var(--message-background);
        border-radius: 1rem;
        display: flex; flex-direction: column; align-items: center;
        padding: 2rem;
        box-shadow: 0 0 100px 40px var(--message-shadow-background);
    }
        .message .close-button {
            position: absolute;
            right: 1.5rem; top: 1.5rem;
            width: 2rem; height: 2rem;
            opacity: .3;
            transition: opacity .2s;
            cursor: pointer;
        }
        .message .close-button:hover {
            opacity: 1;
        }
        .message .close-button:before, .message .close-button:after {
            position: absolute;
            left: calc(50% - 1px);
            content: ' ';
            height: 100%;
            width: 2px;
            background-color: var(--text);
        }
        .message .close-button:before { transform: rotate(45deg); }
        .message .close-button:after { transform: rotate(-45deg); }

        .message > *:nth-child(n+2):not(:last-child) {
            margin-bottom: 1.5rem;
        }
        .message .icon {
            width: 4rem;
            height: 4rem;
            display: flex; justify-content: center; align-items: center;
        }
        .message .header {
            font-size: 2.25rem;
            font-weight: 600;
            margin-left: 1rem; margin-right: 1rem;
        }
        .message .text {
            font-size: 1.25rem;
            flex: 1;
        }
        .message .button {
            min-width: 10rem;
            min-height: 2.5rem;
            background-color: var(--button-background);
            border-radius: 2rem;
            display: flex; justify-content: center; align-items: center;
            cursor: pointer;
            user-select: none;
            transition: box-shadow .15s ease-out;
            color: var(--text);
        }
            .message .button:hover {
                box-shadow: 0 0 0 .1rem var(--button-selected-shadow);
                outline: .15rem solid transparent;
                color: var(--button-selected-color);
            }
            .message .button .button-text {
                font-size: 1.1rem;
                font-weight: 500;
            }
