html,
body {
    height: 100%;
    margin: unset;
    color: var(--primary-text-color);
    font-size: 14px;
    font-family: 'Roboto', 'Helvetica Neue', sans-serif;
}

body {
    --primary-color: #06a04a;
    --link-color: #1976d2;
    --error-color: #EF5350;

    --red: #EF5350;
    --orange: #FF9800;
    --yellow: #FDD835;
    --green: #9CCC65;
    --purple: #AB47BC;
    --blue: #42A5F5;
    --brown: #8D6E63;
    --grey: #BDBDBD;
    --empty: #EEEEEE;
    --empty-light: #FAFAFA;
    --empty-teal: #E7F1F0;

    --primary-text-color: #000000de;
    --secondary-text-color: #0000008a;
    --disabled-text-color: #00000042;
    --caption-text-color: rgba(49, 51, 63, 0.6); /* Match Streamlit's caption color */
    --form-field-color: rgb(240, 242, 246); /* Match Streamlit's form field color */
    --border-color: rgba(0, 0, 0, .12);
    --tooltip-color: #333d;
    --tooltip-text-color: #fff;
    --dk-card-background: #fff;

    --sidebar-background-color: white;
    --sidebar-item-hover-color: #f5f5f5;
    --sidebar-active-item-color: #f5f5f5;
    --sidebar-active-item-border-color: #b4e3c9;

    --field-underline-color: #9e9e9e;

    --button-hover-state-opacity: 0.12;
    --button-generic-background-color: #ffffff;

    --button-basic-background: transparent;
    --button-basic-text-color: rgba(0, 0, 0, .87);
    --button-basic-hover-state-background: rgba(0, 0, 0, .54);

    --button-basic-flat-text-color: rgba(0, 0, 0);
    --button-basic-flat-background: rgba(0, 0, 0, .87);

    --button-basic-stroked-text-color: rgba(0, 0, 0, .87);
    --button-basic-stroked-background: transparent;

    --button-primary-background: transparent;
    --button-primary-text-color: var(--primary-color);
    --button-primary-hover-state-background: var(--primary-color);

    --button-primary-flat-text-color: rgba(255, 255, 255);
    --button-primary-flat-background: var(--primary-color);

    --button-primary-stroked-text-color: var(--primary-color);
    --button-primary-stroked-background: transparent;
    --button-stroked-border: 1px solid var(--border-color);

    --button-warn-background: transparent;
    --button-warn-text-color: var(--red);
    --button-warn-hover-state-background: var(--red);

    --button-warn-flat-text-color: rgba(255, 255, 255);
    --button-warn-flat-background: var(--red);

    --button-warn-stroked-text-color: var(--red);
    --button-warn-stroked-background: transparent;

    --portal-background: white;
    --portal-box-shadow: rgba(0, 0, 0, 0.16) 0px 4px 16px;
    --select-hover-background: rgb(240, 242, 246);

    --app-background-color: #f8f9fa;
}

@media (prefers-color-scheme: dark) {
    body {
        --empty: #424242;
        --empty-light: #212121;
        --empty-teal: #242E2D;

        --primary-text-color: rgba(255, 255, 255);
        --secondary-text-color: rgba(255, 255, 255, .7);
        --disabled-text-color: rgba(255, 255, 255, .5);
        --caption-text-color: rgba(250, 250, 250, .6); /* Match Streamlit's caption color */
        --form-field-color: rgb(38, 39, 48); /* Match Streamlit's form field color */
        --border-color: rgba(255, 255, 255, .25);
        --tooltip-color: #eee;
        --tooltip-text-color: #000;
        --dk-card-background: #14181f;

        --sidebar-background-color: #14181f;
        --sidebar-item-hover-color: #10141b;
        --sidebar-active-item-color: #10141b;
        --sidebar-active-item-border-color: #b4e3c9;
        --dk-text-value-background: unset;

        --button-generic-background-color: rgb(38, 39, 48);

        --button-basic-background: transparent;
        --button-basic-text-color: rgba(255, 255, 255);
        --button-basic-hover-state-background: rgba(255, 255, 255, .54);

        --button-basic-flat-text-color: rgba(255, 255, 255);
        --button-basic-flat-background: rgba(255, 255, 255, .54);

        --button-basic-stroked-text-color: rgba(255, 255, 255, .87);
        --button-basic-stroked-background: transparent;

        --button-stroked-border: 1px solid var(--border-color);

        --portal-background: #14181f;
        --portal-box-shadow: rgba(0, 0, 0, 0.95) 0px 4px 16px;
        --select-hover-background: rgb(38, 39, 48);

        --app-background-color: rgb(14, 17, 23);
    }
}

.clickable {
    cursor: pointer !important;
}

.hidden {
    display: none !important;
}

.invisible {
    visibility: hidden !important;
}

.dot {
    font-size: 10px;
    font-style: normal;
}

.dot::before {
    content: '⬤';
}

/* Table styles */
.table {
    background-color: var(--dk-card-background);
    border: var(--button-stroked-border);
    border-radius: 8px;
    padding: 16px;
    box-sizing: border-box;
}

.table-row {
    padding: 12px 0;
}

.table.hoverable .table-row:hover {
    background-color: var(--select-hover-background);
}

.table-row:not(:last-child) {
    border-bottom: var(--button-stroked-border);
}

.table-row:last-child {
    padding-bottom: 0;
}

.table-header {
    border-bottom: var(--button-stroked-border);
    padding: 0 0 8px 0;
    font-size: 12px;
    color: var(--caption-text-color);
    text-transform: uppercase;
}

.table-header > *,
.table-row > * {
    box-sizing: border-box;
    padding: 0 4px;
}
/*  */

/* Text utilities */
.text-primary {
    color: var(--primary-text-color);
}

.text-secondary {
    color: var(--secondary-text-color);
}

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

.text-caption {
    font-size: 12px;
    color: var(--caption-text-color);
}

.text-error {
    color: var(--error-color);
}

.text-green {
    color: var(--primary-color);
}

.text-capitalize {
    text-transform: capitalize;
}
/*  */

/* Flex utilities */
.flex-row {
    display: flex;
    flex-direction: row;
    align-items: center;
}

.flex-column {
    display: flex;
    flex-direction: column;
}

.fx-flex {
    flex: 1 1 0%;
}

.fx-flex-wrap {
    flex-wrap: wrap;
}

.fx-align-flex-center {
    align-items: center;
}

.fx-align-flex-start {
    align-items: flex-start;
}

.fx-align-flex-end {
    align-items: flex-end;
}

.fx-align-baseline {
    align-items: baseline;
}

.fx-align-stretch {
    align-items: stretch;
}

.fx-justify-flex-end {
    justify-items: flex-end;
}

.fx-justify-content-flex-end {
    justify-content: flex-end;
}

.fx-justify-flex-start {
    justify-content: flex-start;
}

.fx-justify-center {
    justify-content: center;
}

.fx-justify-space-between {
    justify-content: space-between;
}

.fx-flex-align-content {
    align-content: flex-start;
}

.fx-gap-1 {
    gap: 4px;
}

.fx-gap-2 {
    gap: 8px;
}

.fx-gap-3 {
    gap: 12px;
}

.fx-gap-4 {
    gap: 16px;
}

.fx-gap-5 {
    gap: 24px;
}

.fx-gap-6 {
    gap: 32px;
}

.fx-gap-7 {
    gap: 40px;
}

/*  */

/* Whitespace utilities */
.mt-0 {
    margin-top: 0;
}

.mt-1 {
    margin-top: 4px;
}

.mt-2 {
    margin-top: 8px;
}

.mt-3 {
    margin-top: 12px;
}

.mt-4 {
    margin-top: 16px;
}

.mt-5 {
    margin-top: 24px;
}

.mt-6 {
    margin-top: 32px;
}

.mt-7 {
    margin-top: 40px;
}

.mr-0 {
    margin-right: 0;
}

.mr-1 {
    margin-right: 4px;
}

.mr-2 {
    margin-right: 8px;
}

.mr-3 {
    margin-right: 12px;
}

.mr-4 {
    margin-right: 16px;
}

.mr-5 {
    margin-right: 24px;
}

.mr-6 {
    margin-right: 32px;
}

.mr-7 {
    margin-right: 40px;
}

.mb-0 {
    margin-bottom: 0;
}

.mb-1 {
    margin-bottom: 4px;
}

.mb-2 {
    margin-bottom: 8px;
}

.mb-3 {
    margin-bottom: 12px;
}

.mb-4 {
    margin-bottom: 16px;
}

.mb-5 {
    margin-bottom: 24px;
}

.mb-6 {
    margin-bottom: 32px;
}

.mb-7 {
    margin-bottom: 40px;
}

.ml-0 {
    margin-left: 0;
}

.ml-1 {
    margin-left: 4px;
}

.ml-2 {
    margin-left: 8px;
}

.ml-3 {
    margin-left: 12px;
}

.ml-4 {
    margin-left: 16px;
}

.ml-5 {
    margin-left: 24px;
}

.ml-6 {
    margin-left: 32px;
}

.ml-7 {
    margin-left: 40px;
}

.p-0 {
    padding: 0;
}

.p-1 {
    padding: 4px;
}

.p-2 {
    padding: 8px;
}

.p-3 {
    padding: 12px;
}

.p-4 {
    padding: 16px;
}

.p-5 {
    padding: 24px;
}

.p-6 {
    padding: 32px;
}

.p-7 {
    padding: 40px;
}

.pt-0 {
    padding-top: 0;
}

.pt-1 {
    padding-top: 4px;
}

.pt-2 {
    padding-top: 8px;
}

.pt-3 {
    padding-top: 12px;
}

.pt-4 {
    padding-top: 16px;
}

.pt-5 {
    padding-top: 24px;
}

.pt-6 {
    padding-top: 32px;
}

.pt-7 {
    padding-top: 40px;
}

.pr-0 {
    padding-right: 0;
}

.pr-1 {
    padding-right: 4px;
}

.pr-2 {
    padding-right: 8px;
}

.pr-3 {
    padding-right: 12px;
}

.pr-4 {
    padding-right: 16px;
}

.pr-5 {
    padding-right: 24px;
}

.pr-6 {
    padding-right: 32px;
}

.pr-7 {
    padding-right: 40px;
}

.pb-0 {
    padding-bottom: 0;
}

.pb-1 {
    padding-bottom: 4px;
}

.pb-2 {
    padding-bottom: 8px;
}

.pb-3 {
    padding-bottom: 12px;
}

.pb-4 {
    padding-bottom: 16px;
}

.pb-5 {
    padding-bottom: 24px;
}

.pb-6 {
    padding-bottom: 32px;
}

.pb-7 {
    padding-bottom: 40px;
}

.pl-0 {
    padding-left: 0;
}

.pl-1 {
    padding-left: 4px;
}

.pl-2 {
    padding-left: 8px;
}

.pl-3 {
    padding-left: 12px;
}

.pl-4 {
    padding-left: 16px;
}

.pl-5 {
    padding-left: 24px;
}

.pl-6 {
    padding-left: 32px;
}

.pl-7 {
    padding-left: 40px;
}
/*  */

code {
    position: relative;
    border-radius: 0.5rem;
    display: block;
    margin: 0px;
    overflow: auto;
    padding: 24px 16px;
    color: var(--primary-text-color);
    background-color: var(--empty-light);
}

code > .tg-icon {
    position: absolute;
    top: 21px;
    right: 16px;
    color: var(--secondary-text-color);
    cursor: pointer;
    opacity: 0;
}

code > .tg-icon:hover {
    opacity: 1;
}

.accent-primary {
    accent-color: var(--primary-color);
}

.border {
    border: var(--button-stroked-border);
}

.border-radius-1 {
    border-radius: 4px;
}

input::-ms-reveal,
input::-ms-clear {
    display: none;
}

.text-left {
    text-align: left;
}

.text-right {
    text-align: right;
}

.text-center {
    text-align: center;
}
