:root
{
    --color_theme_primary: #00d8f4;
    --color_theme_secondary: #ffffd4;

    --color_tag_object_bg: #fff;
    --color_tag_object_fg: blue;

    --color_text_normal: black;
    --color_text_bubble: black;
    --color_text_link: blue;

    --color_site_textfields: white;
    --color_text_placeholder: gray;

    --color_site_transparency: rgba(0, 0, 0, 0.1);
    --color_site_dropshadow: rgba(0, 0, 0, 0.25);
    --color_3d_shadow: rgba(0, 0, 0, 0.5);
    --color_3d_highlight: rgba(255, 255, 255, 0.5);

    --size_sticky_side: 300px;
}

html
{
    height: 100vh;
    box-sizing: border-box;
}

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

body
{
    height: 100%;
    margin: 0;
}

* { color: var(--color_text_normal); }

a
{
    color: var(--color_text_link);
    cursor: pointer;
}

input, select, textarea
{
    margin-top: 2px;
    margin-bottom: 2px;

    padding: 2px;

    border: none;
    border-radius: 2px;

    background-color: var(--color_site_textfields);
}

input::placeholder, textarea::placeholder
{
    color: var(--color_text_placeholder);
    opacity: 1;
}

body
{
    display: grid;
    grid-template:
        "header" auto
        "content_body" 1fr
        /1fr;

    background-color: var(--color_theme_primary);
}

#header
{
    grid-area: header;
    display: grid;
    grid-template-columns: 1fr 1fr 1fr 1fr auto;
    grid-template-rows: auto;

    margin: 8px;

    background-color: var(--color_site_transparency);
}
#content_body
{
    grid-area: content_body;
    display: grid;
    grid-auto-rows: min-content;
    grid-gap: 8px;

    margin: 8px;
    margin-top: 0;
}
#header button
{
    border: 0;
    cursor: pointer;
    background-color: transparent;
}
.header_element
{
    display: flex;
    flex: 1;
    justify-content: center;
}
.header_element:hover
{
    background-color: var(--color_theme_secondary);
}

pre
{
    white-space: pre-line;
}

#left
{
    grid-area: left;
}
#right
{
    grid-area: right;
}

#content_body.sticky_side_left
{
    grid-template:
        "left right"
        /var(--size_sticky_side) 1fr;
}
#content_body.sticky_side_right
{
    grid-template:
        "left right"
        /1fr var(--size_sticky_side);
}

#content_body.sticky_side_left #left,
#content_body.sticky_side_right #right
{
    display: grid;
    grid-auto-rows: min-content;

    z-index: 1;
    position: fixed;
    bottom: 8px;
    top: 34px;
    padding: 8px;
    width: var(--size_sticky_side);
    overflow-y: auto;
    background-color: var(--color_site_transparency);
}
#content_body.sticky_side_left #left
{
    left: 8px;
}
#content_body.sticky_side_right #right
{
    right: 8px;
}
@media screen and (max-width: 800px)
{
    #content_body.sticky_side_right #right
    {
        outline: 8px solid var(--color_theme_primary);
        background-color: var(--color_theme_primary) !important;
    }
    #content_body.sticky_side_right #right:before
    {
        content: "";
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        background-color: var(--color_site_transparency);
        z-index: -1;
    }
}

.editor_input
{
    width: 100%;
    max-width: 800px;
}

.hidden
{
    display: none !important;
}
.panel
{
    background-color: var(--color_site_transparency);
    border-radius: 5px;
    padding: 8px;
}

button,
button *
{
    color: black;
}
button:disabled
{
    background-color: #cccccc !important;
}
.gray_button
{
    background-color: #cccccc;
}
.green_button
{
    background-color: #6df16f;
}
.red_button
{
    background-color: #ff4949;
}
.yellow_button
{
    background-color: #ffea57;
}

button
{
    border-top: 2px solid var(--color_3d_highlight);
    border-left: 2px solid var(--color_3d_highlight);
    border-right: 2px solid var(--color_3d_shadow);
    border-bottom: 2px solid var(--color_3d_shadow);
}
button:active
{
    border-top: 2px solid var(--color_3d_shadow);
    border-left: 2px solid var(--color_3d_shadow);
    border-right: 2px solid var(--color_3d_highlight);
    border-bottom: 2px solid var(--color_3d_highlight);
}

.remove_tag_button,
.remove_tag_button_perm
{
    /*position: absolute;*/
    top: 3px;
    vertical-align: middle;
    font-size: 7pt;

    min-width:  18px;
    min-height: 14px;
    /*padding: 0;*/

}
/*
The Remove button will be display:none by default, but is shown when the tag
is hovered over.
*/
.remove_tag_button
{
    display: none;
}
.tag_object:hover + * .remove_tag_button,
.tag_object:hover + .remove_tag_button,
.remove_tag_button:hover,
.remove_tag_button_perm:hover
{
    display:inline;
}

.tag_object
{
    border-radius: 2px;
    padding-left: 2px;
    padding-right: 2px;

    background-color: var(--color_tag_object_bg);
    color: var(--color_tag_object_fg);

    font-size: 0.9em;
    text-decoration: none;
    font-family: monospace;
    line-height: 1.3;
}
#message_area
{
    display: flex;
    flex: 2;
    flex-direction: column;
    align-items: center;

    overflow-y: auto;

    background-color: var(--color_site_transparency);
}
.message_bubble
{
    width: 80%;
    margin: 4px;

    word-wrap: break-word;
}
.message_bubble *
{
    color: var(--color_text_bubble);
}
.message_positive
{
    background-color: #afa;
}
.message_negative
{
    background-color: #faa;
}