/* Normalize */

* {
    margin: 0;
    padding: 0;
    color: darkgreen;
    font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
    font-size: 17px;
    text-align: left;
}

body {
    background: rgb(240, 255, 240);
}

body > div {
    margin: auto;
    max-width: 1150px;
    text-align: center;
    border-radius: 0.2em;
    border: 1px solid forestgreen;
    background-image: linear-gradient(rgb(250,255,250), white);
    padding: 0.7em 2em;
}

table {
    border-spacing: 0;
}

td {
    vertical-align: top;
}

ul {
    list-style-position: inside;
}

a {
    text-decoration: underline;
    color: inherit;
}

a:hover {
    cursor: pointer;
}

h1 {
    font-size: 1.3em;
    padding-bottom: 0.3em;
}

/* Classes */

.centered {
    text-align: center;
}

.bold {
    font-weight: bold;
}
.error {
    color: red;
}

.nl2br {
    white-space: pre-line;
}

/* Layout */

div.flex-space-between {
    display: flex;
    justify-content: space-between;
}

/* Form */

div.flexform {
    display: flex;
    padding: 0.4em;
    justify-content: space-between;
    flex-wrap: wrap;
}

div.flexform.centered {
    justify-content: center;
    column-gap: 0.5em;
}

div.gridform {
    display: grid;
    padding: 0.4em;
    column-gap: 0.5em;
    justify-content: center;
    row-gap: 0.5em;
}

div.gridform > * {
    justify-self: start;
}

/* Data table */

div.tcentered > div.table,
div.table.tcentered {
    margin-left: auto;
    margin-right: auto;
}

div.table {
    display: table;
    padding: 0.4em;
}

div.tnopad {
    padding: 0;
}

div.w100 {
    width: 100%;
}

div.w50 {
    width: 50%;
}

div.w33 {
    width: 33%;
}

div.w25 {
    width: 25%;
}

div.w20 {
    width: 20%;
}

div.trow {
    display: table-row;
}

div.tcell {
    display: table-cell;
}

div.tautopad > div.table:not(:first-child) {
    padding-top: 0;
}

div.tautopad > div.table:first-child:not(:last-child) {
    padding-bottom: 0;
}

div.tvabottom {
    vertical-align: bottom;
}

/* Forms */

input, select, textarea {
    padding: 0.3em;
    background-color: white;
    border: 1px solid darkgreen;
    border-radius: 0.2em;
}

select:disabled {
    -webkit-appearance: none;
}

input:disabled, select:disabled, textarea:disabled {
    color: forestgreen;
    border: 1px solid forestgreen;
}

input[type="checkbox"] {
    width: 1.1em;
    height: 1.1em;
}

button {
    padding: 0.3em;
    border-radius: 0.2em;
    border: 1px solid darkgreen;
    background-color: floralwhite;
    vertical-align: middle;
}

button:disabled {
    color: darkseagreen;
    border: 1px solid forestgreen;
}

/* Data table */

table.data {
    width: 100%;
    border-collapse: separate;
    border: solid 1px darkgreen;
    border-radius: 0.2em;
}

table.data tr.highlight1 > td,  table.data tr.highlight1 > td * {
    color: darkseagreen;
}

table.data tr.highlight2 {
    background: linear-gradient(floralwhite, white);
}

table.data tr.data:hover {
    background: floralwhite;
    cursor: pointer;
}

table.data th {
    background-color: rgb(240,255,240);
    color: darkgreen;
    text-align: center;
    padding: 0.5em;
    border: solid 1px forestgreen;
    vertical-align: middle;
}

table.data td {
    padding: 0.4em;
    border: solid 1px forestgreen;
    vertical-align: middle;
}

table.data td.loading {
    background: radial-gradient(floralwhite, white 60%);
    text-align: center;
    vertical-align: middle;
}

table.data td.highlight1 {
    color: darkseagreen;
}

table.data td.compact,
table.data th.compact {
    width: 1%;
    white-space: nowrap;
}

/* Submenu*/

div.submenu {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
}

div.submenu > div.items {
    flex: 2;
    display: flex;
    justify-content: center;
    gap: 0 2em;
    flex-wrap: wrap;
    border-bottom: 1px solid forestgreen;
}

div.submenu > div.items > a {
    font-size: 1.1em;
    color: forestgreen;
}
div.submenu > div.items > a.active {
    font-weight: bold;
}

div.submenu > h1 {
    flex: 1;
    margin-right: auto;
}

div.submenu > div.gap {
    flex: 1;
    margin-left: auto;
}