:root {
    --c1-val: 2, 45, 62;
    --c2-val: 22, 105, 122;
    --c3-val: 219, 100, 0;
    --c4-val: 255, 209, 144;
    --c5-val: 248, 241, 241;
    --error-val: 153, 7, 4;
    --all-colors:
        rgb(2, 45, 62),
        rgb(22, 105, 122),
        rgb(219, 100, 0),
        rgb(255, 209, 144),
        rgb(248, 241, 241),
        rgb(153, 7, 4);

    --c1: rgb(var(--c1-val));
    --c2: rgb(var(--c2-val));
    --c3: rgb(var(--c3-val));
    --c4: rgb(var(--c4-val));
    --c5: rgb(var(--c5-val));

    --contrast-light: #fff;
    --contrast-dark: var(--c1);
    --c1-contrast: var(--contrast-light);
    --c2-contrast: var(--contrast-light);
    --c3-contrast: var(--contrast-light);
    --c4-contrast: var(--contrast-dark);
    --c5-contrast: var(--contrast-dark);

    --font-size: 16px;
    --inp-font-size: 14px;
    --font-family: "Inter", sans-serif;
    --main-border-color: var(--c2);
    --main-text-color: var(--c1);
    --main-border-radius: 7px;
    --c1-bg-color: var(--c3);
    --c1-font-color: var(--c3-contrast);

    --error-color: rgb(var(--error-val));
    --error-contrast: var(--contrast-light);
    --error-font-size: calc(var(--font-size) - 2px);

    --std-inp-pad: 4px;
    --input-pad-hz: 8px;
    --filter-min-width: 250px;

    --field-border-width: 1px;
    --field-border: var(--field-border-width) solid var(--main-border-color);
}

body {
    font-family: var(--font-family);
    font-size: var(--font-size);
    color: var(--main-text-color);
    margin: 0px;
}

input,
textarea,
select {
    box-sizing: content-box;
    font-size: var(--inp-font-size);
    color: var(--main-text-color);
    border: var(--field-border);
    border-radius: var(--main-border-radius);
    background-color: var(--c1-contrast);
}

select,
button {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}

input[type='text'],
input[type='password'] {
    padding: calc(var(--std-inp-pad) + 1px) var(--input-pad-hz) calc(var(--std-inp-pad) - 1px) var(--input-pad-hz);
    height: calc(var(--inp-font-size) + 2 * var(--field-border-width));
}

textarea {
    padding: calc(var(--std-inp-pad) + 1px) var(--input-pad-hz) calc(var(--std-inp-pad) - 1px) var(--input-pad-hz);
    font-family: inherit;
    resize: none;
    overflow-y: hidden;
}

button {
    font-size: var(--inp-font-size);
    border: 0;
    /* border: var(--field-border); */
    border-radius: var(--main-border-radius);
    padding: 5px 10px;
    background-color: var(--c1-bg-color);
    color: var(--c1-font-color);
    font-weight: bold;
    cursor: pointer;
}

button:hover {
    background-color: var(--c1-font-color);
    color: var(--c1-bg-color);
}

select {
    border: var(--field-border);
    border-radius: var(--main-border-radius);
    padding: var(--std-inp-pad) var(--input-pad-hz);
    height: calc(var(--inp-font-size) + 2 * var(--field-border-width));
}

/* for dropdown/collapse  */
[data-hvisible] {
    transform-origin: top;
    transition: transform 400ms ease;
}

[data-hvisible='0'] {
    transform: scaleY(0);
}

[data-hvisible='1'] {
    transform: scaleY(1);
}

div.main_errors {
    --error-padding-x: 10px;
    --error-padding-y: 5px;
    display: flex;
    flex-flow: row wrap;
    position: fixed;
    left: 0;
    width: 100%;
    background-color: var(--error-contrast);
    align-items: flex-end;
    gap: 1px;
}

div.main_errors_top {
    top: 0;
}

div.main_errors_bottom {
    bottom: 0;
}

div.main_errors div.main_error {
    position: relative;
    padding: var(--error-padding-y) var(--error-padding-x);
    font-size: var(--error-font-size);
    flex-basis: 100%;
}

div.main_errors div.error_error {
    background-color: var(--error-color);
    color: var(--error-contrast);
}

div.main_errors div.error_warning {
    background-color: var(--c3);
    color: var(--c3-contrast);
}

div.main_errors div.error_one_string {
    overflow: hidden;
    max-height: var(--error-font-size);
}

div.main_error div.close_error {
    margin: -4px -4px 2px 2px;
    float: right;
    color: var(--error-contrast);
    cursor: pointer;
    font-size: larger;
    transform: scaleX(1.3);
}

div.main_error div.close_error:hover {
    opacity: 0.8;
}

div.main_error span.error_undo {
    cursor: pointer;
    text-decoration: underline;
}

div.main_error span.error_undo:hover {
    text-decoration: none;
}

div.generation {
    --margin: 8px;
    --form-bgcolor: rgba(var(--c1-val), 0.1);
    --response-bgcolor: rgba(var(--c3-val), 0.1);
    --response-system-bgcolor: rgba(var(--c2-val), 0.1);
    --response-llm-bgcolor: rgba(var(--c1-val), 0.1);
    width: calc(100% - calc(var(--margin) * 2));
    margin: 0 var(--margin);
    padding: var(--margin) 0;
}

div.generation div.response_container {
    --fpad: 15px;
    background-color: var(--response-bgcolor);
    border-radius: var(--main-border-radius);
    padding: var(--fpad);
    padding-bottom: calc(var(--fpad) - 10px);
    margin-bottom: 20px;
    min-width: calc(var(--filter-min-width) - 2 * var(--fpad));
    display: flex;
    flex-flow: row wrap;
    gap: 0;
}

div.generation div.response_system {
    background-color: var(--response-system-bgcolor);
}

div.generation div.response_user {
    background-color: var(--response-llm-bgcolor);
}

div.generation div.response_container div.response_role {
    font-weight: bold;
    padding-right: 10px;
}

div.generation div.response_container div.response_actions {
    flex-basis: 100%;
    justify-content: flex-end;
    column-gap: 5px;
    display: flex;
    flex-flow: row nowrap;
}

div.generation div.response_container div.response_actions div.act_pic,
div.generation div.form_container div.act_pic {
    opacity: 0.5;
    cursor: pointer;
}

div.generation div.response_container div.rtoken {
    padding: 0;
}

div.generation div.response_container div.subrtoken {
    display: flex;
    flex-flow: row nowrap;
}

div.generation div.form_container {
    --fpad: 15px;
    --gap-v: 20px;
    --gap-h: 10px;
    background-color: var(--form-bgcolor);
    border-radius: var(--main-border-radius);
    padding: var(--fpad);
    min-width: calc(var(--filter-min-width) - 2 * var(--fpad));
}

div.generation div.field_group {
    padding-bottom: var(--gap-v);
}

div.generation div.field_group:last-child {
    padding-bottom: 0px;
}

div.generation div.form_container_flex {
    display: flex;
    flex-flow: row wrap;
    gap: var(--gap-v) var(--gap-h);
    justify-content: flex-start;
}

div.form_container div.field_container {
    display: flex;
    flex-flow: row nowrap;
    align-items: center;
    gap: 5px 5px;
}

div.form_container div.field_submit {
    /* flex-basis: 100%; */
    display: flex;
    flex-flow: row;
    gap: 20px;
    overflow: hidden;
    align-items: baseline;
}

div.field_container div.field_label {
    white-space: nowrap;
}

div.field_container div.label_role {
    cursor: pointer;
    position: relative;
}

div.field_container div.label_role div.popup_role {
    position: absolute;
    background-color: var(--c1-contrast);
    left: -3px;
    top: -6px;
    display: flex;
    flex-flow: row wrap;
    border-radius: var(--main-border-radius);
    border: 1px solid var(--main-border-color);
    overflow: hidden;
}

div.field_container div.label_role div.popup_role>div {
    flex-basis: 100%;
    padding: 5px 10px;
}

div.field_container div.label_role div.popup_role div.popup_sep {
    border-bottom: 1px solid rgba(var(--c2-val), 0.5);
    height: 0px;
    padding: 0px;
}

div.field_container div.label_role div.popup_role div[data-opt]:hover {
    background-color: rgba(var(--c2-val), 1);
    color: var(--c2-contrast);
}

div.field_container div.label_role div.popup_role div.current_role {
    background-color: rgba(var(--c2-val), 0.3);
    color: var(--c2-contrast);
}

div.field_container div.label_role div.popup_role div[data-act='close']:hover {
    background-color: var(--c1);
    color: var(--c1-contrast);
}

div.field_container div.label_role div.popup_role div[data-act='remove']:hover {
    background-color: var(--c3);
    color: var(--c3-contrast);
}

div.field_group div.container_actions {
    flex-grow: 2;
    justify-content: end;
}

div.field_container[data-for='text'] {
    flex-flow: row wrap !important;
    flex-basis: 100%;
}

div.field_container[data-for='text']>div.field_txt {
    flex: 1 auto;
}

div.field_container textarea[name='text'] {
    width: calc(100% - var(--input-pad-hz) * 2 - 2px);
}

div.field_container div.add_prompt span {
    font-weight: bold;
    cursor: pointer;
}


.lb-outer {
    position: fixed;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
}

.lb-outer div.lb-inner {
    width: 100%;
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: rgba(var(--c5-val), 0.95);
}

.lb-outer div.lb-dialog {
    width: min-content;
    /* background-color: var(--c4); */
    background-color: rgb(var(--c4-val), 0.8);
    border-radius: var(--main-border-radius);
    display: flex;
    flex-flow: row wrap;
    align-items: center;
    gap: 0px;
    --padding-h: 15px;
}

.lb-outer div.lb-dialog>div {
    flex-basis: 100%;
}

.lb-outer div.lb-dialog div.lb-title {
    position: relative;
    border-top-right-radius: var(--main-border-radius);
    border-top-left-radius: var(--main-border-radius);
    padding: 10px var(--padding-h);
    white-space: nowrap;
    background-color: var(--c2);
    color: var(--c2-contrast);
    font-weight: bold;
}

/* .lb-outer div.lb-dialog div.lb-title-content {
} */

.lb-outer div.lb-dialog div.lb-content {
    position: relative;
    padding: var(--padding-h);
}

.lb-outer div.lb-dialog div.lb-content-cover {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgb(var(--c5-val), 0.95);
    display: flex;
    justify-content: center;
    align-items: center;
}

.lb-outer div.lb-dialog div.lb-cover-progress {
    width: 30%;
    overflow: hidden;
    transform: translateX(-15%);
    color: var(--c2);
    font-weight: bold;
}

/* .lb-outer div.lb-dialog div.lb-content-inner {
}

.lb-outer div.lb-dialog div.lb-content-text {
} */

.lb-outer div.lb-close-container {
    --close-size: 24px;
    --close-padding: 5px;
    position: absolute;
    right: 7px;
    top: 7px;
    height: var(--close-size);
    width: var(--close-size);
    background-color: var(--error-contrast);
    border-radius: var(--main-border-radius);
    cursor: pointer;
    display: flex;
    justify-content: center;
    align-items: center;
}

.lb-outer div.lb-close-container div.lb-close {
    opacity: 0.6;
    width: calc(var(--close-size) - var(--close-padding) * 2);
    height: calc(var(--close-size) - var(--close-padding) * 2);
    background: center / contain url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTIxLjMxcHgiIGhlaWdodD0iMTIyLjg3NnB4IiB2aWV3Qm94PSIwIDAgMTIxLjMxIDEyMi44NzYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEyMS4zMSAxMjIuODc2IiB4bWw6c3BhY2U9InByZXNlcnZlIj48Zz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTkwLjkxNCw1LjI5NmM2LjkyNy03LjAzNCwxOC4xODgtNy4wNjUsMjUuMTU0LTAuMDY4IGM2Ljk2MSw2Ljk5NSw2Ljk5MSwxOC4zNjksMC4wNjgsMjUuMzk3TDg1Ljc0Myw2MS40NTJsMzAuNDI1LDMwLjg1NWM2Ljg2Niw2Ljk3OCw2Ljc3MywxOC4yOC0wLjIwOCwyNS4yNDcgYy02Ljk4Myw2Ljk2NC0xOC4yMSw2Ljk0Ni0yNS4wNzQtMC4wMzFMNjAuNjY5LDg2Ljg4MUwzMC4zOTUsMTE3LjU4Yy02LjkyNyw3LjAzNC0xOC4xODgsNy4wNjUtMjUuMTU0LDAuMDY4IGMtNi45NjEtNi45OTUtNi45OTItMTguMzY5LTAuMDY4LTI1LjM5N2wzMC4zOTMtMzAuODI3TDUuMTQyLDMwLjU2OGMtNi44NjctNi45NzgtNi43NzMtMTguMjgsMC4yMDgtMjUuMjQ3IGM2Ljk4My02Ljk2MywxOC4yMS02Ljk0NiwyNS4wNzQsMC4wMzFsMzAuMjE3LDMwLjY0M0w5MC45MTQsNS4yOTZMOTAuOTE0LDUuMjk2eiIvPjwvZz48L3N2Zz4=");
}

.lb-outer div.lb-close-container div.lb-close:hover {
    opacity: 0.9;
}

.lb-outer div.lb-buttons {
    display: flex;
    justify-content: center;
    gap: 20px;
}

.lb-outer div.lb-errors {
    min-height: calc(var(--font-size) + 2px);
    color: var(--error-color);
    font-size: var(--error-font-size);
    padding: 3px 0;
}

.lb-outer div.lb-login-grid {
    display: grid;
    grid-template-columns: max-content auto;
    gap: 10px;
    align-items: center;
}

.lb-outer div.lb-login-grid input[type] {
    width: 25ch;
}