:root {
    --input_height: 2rem;
    --padding: 0.4rem;
    --padding-s: 0.2rem;
}

.kvJSONForm .modified:valid {
    border-color: var(--special_color, #000) !important;
}

.kvJSONForm [disabled],
.kvJSONForm div.JSONData:not([contenteditable]) {
    background-color: var(--faint_color, #EEE) !important;
}

.kvJSONForm[disabled] .newRow,
.kvJSONForm[disabled] .deleteRow,
.kvJSONForm[disabled] .newColumn,
.kvJSONForm[disabled] .deleteColumn {
    display: none;
}

.kvJSONForm .zoom {
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 10;
    background-color: var(--base_color, #FFF);
}

.kvJSONForm .zoom textarea,
.kvJSONForm .zoom [contenteditable] {
    margin: 2px 2px 2px 0;
    height: calc(100% - 5rem);
}

.kvJSONForm .newRow,
.kvJSONForm .deleteRow,
.kvJSONForm .newColumn,
.kvJSONForm .deleteColumn {
    cursor: pointer;
    font-size: smaller;
    color: var(--special_color, #000);
}

.columnar {
    table-layout: fixed;
}

.columnar th:first-child {
    width: 1rem;
    white-space: nowrap;
    text-align: left;
    padding: 0 0.5rem;
}

.kvJSONForm .newRow {
    padding-bottom: 1rem;
}

.kvJSONForm .deleteRow {
    width: 1rem;
}

.kvJSONForm {
    padding: 0;
}

.kvJSONForm [readonly] {
    border-color: transparent;
    background-color: var(--light_color, #DDD) !important;
}

.kvJSONForm option:not([selected])[disabled] {
    display: inherit;
}

.kvJSONForm form,
.kvJSONForm table,
.kvJSONForm h2,
.kvJSONForm hr,
.kvJSONForm label:has(textarea, div) {
    border-collapse: collapse;
    width: 100%;
}

.kvJSONForm table[form] tbody:nth-child(even) {
    background-color: var(--shade_color, #DDD);
}

.kvJSONForm table.sortable tbody tr:hover {
    cursor: grab;
}

.kvJSONForm table.collapse tbody,
.kvJSONForm table.collapse tfoot:not(.summaryRow) {
    display: none;
}

.kvJSONForm td {
    padding: var(--padding-s);
    vertical-align: middle;
}

.kvJSONForm caption {
    text-align: left;
    font-weight: bolder;
    border-bottom: thin solid var(--special_color, #000);
    padding-top: 0.5rem;
    color: var(--special_color, #000);
}

.kvJSONForm th {
    vertical-align: middle;
    font-size: smaller;
    background-color: var(--dark_color, #000);
    color: var(--base_color, #FFF);
    padding: var(--padding);
}

.kvJSONForm legend {
    display: block;
    font-size: smaller;
    font-weight: bolder;
    line-height: 1rem;
}

.kvJSONForm option:not([selected])[disabled] {
    display: none;
}

.kvJSONForm label {
    display: inline-block !important;
    padding: var(--padding) 0;
    break-inside: avoid;
    line-height: 1rem;
}

.kvJSONForm label:has(textarea),
.kvJSONForm label:has(input[type="text"]),
.kvJSONForm label:has(input:not([type])) {
    display: block;
}

.kvJSONForm label>span {
    display: block;
    font-size: smaller;
}

.kvJSONForm :invalid {
    border-color: var(--error_color, #F00) !important;
}

.kvJSONForm table textarea {
    border: thin solid var(--shade_color, #DDD);
}

td.JSONData,
table.JSONData {
    background-color: transparent;
}

.kvJSONForm output {
    font-family: inherit;
    display: block;
    font-weight: normal;
    border: none;
    padding: var(--padding);
}

.kvJSONForm input,
.kvJSONForm select:not([multiple]) {
    font-family: inherit;
    padding: var(--padding);
    border: thin solid var(--shade_color, #DDD);
}

.kvJSONForm input[type="search"],
.kvJSONForm input[type="text"],
.kvJSONForm input:not([type]),
.kvJSONForm textarea,
.kvJSONForm progress,
.kvJSONForm meter {
    width: -webkit-fill-available;
    width: -moz-available;
    width: fill-available;
}

.kvJSONForm textarea,
.kvJSONForm div[contenteditable] {
    font-family: inherit;
    font-weight: initial;
    padding: var(--padding);
    border: thin solid var(--shade_color, #DDD);
    background-color: var(--base_color, #FFF);
}

.kvJSONForm fieldset {
    border: thin solid var(--shade_color, #DDD);
    margin: var(--padding);
}

.kvJSONForm fieldset label {
    font-weight: normal !important;
    padding-right: 1.1rem;
    display: block;
}

.kvJSONForm fieldset label>span {
    display: block;
    margin-top: -1.25rem;
    margin-left: 1.75rem;
}

.kvJSONForm .stickyBottom {
    position: fixed;
    bottom: 0;
    z-index: 1;
    box-sizing: border-box;
}