* {
  font-family: sans-serif;
}

a {
  color: black;
}

body {
  margin: 8px;
  min-width: fit-content;
}

select, input {
  box-sizing: border-box;
}

.failed {
  background-color: lightcoral;
  border-radius: 10px;
  padding: 10px;
}

.loader {
  animation: spin 1.4s linear infinite;
  border: 7px solid #f9f9f9;
  border-radius: 50%;
  border-top: 7px solid #3498db;
  height: 70px;
  width: 70px;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

article {
  box-shadow: 0 3px 1px -2px rgba(0,0,0,.2),
              0 2px 2px 0 rgba(0,0,0,.14),
              0 1px 5px 0 rgba(0,0,0,.12);
  display: block;
  margin: 30px;
  padding: 20px;
}

article label {
  color: gray;
  display: block;
  padding-bottom: 20px;
}

article select[multiple] {
  height: 140px;
}

article textarea {
  width: 80%;
}

article input[type="text"], article input[type="number"] {
  line-height: 40px;
  width: 80%;
}

article select, article input[type="submit"] {
  height: 40px;
  width: 80%;
}

.table {
  background-color: white;
  margin: 0 auto;
  text-align: left;
  width: 80%;
}

.table.faded {
  opacity: 0.4;
  pointer-events: none;
}

.table th, .table td {
  border: 1px solid #ddd;
  padding: 5px;
}

.table tr:nth-child(odd) {
  background-color: white;
}

.table tr:nth-child(even) {
  background-color: #f2f2f2;
}

.table tr:hover {
  background-color: #ddd;
}

.table th {
  background-color: #1781a5;
  color: white;
  padding-bottom: 12px;
  padding-top: 12px;
}

.table input, .table select {
  width: 100%;
}

.add-row-template {
  display: none;
}

.action {
  cursor: pointer;
  display: block;
  text-decoration: underline;
}

.center {
  text-align: center;
}

.table .sort-asc, .table .sort-desc {
  cursor: pointer;
}

.table .hidden {
  display: none;
}

.table .group-header {
  cursor: pointer;
  background-color: white !important;
  color: black;
}

.table .group-header .sort-column {
  font-weight: bold;
}

.table .group-header.collapsed .sort-column::before {
  content: '▸ ';
}

.table .group-header.expanded .sort-column::before {
  content: '▾ ';
}

.table .group-header:hover {
  background-color: #ddd !important;
}

.table-loader {
  display: none;
  left: calc(50% - 84px);
  position: absolute;
}

.accordion .accordion-title {
  cursor: pointer
}

.accordion .accordion-icon {
  float: right;
  font-size: 20pt;
  font-weight: bold;
}

.accordion .accordion-content {
  display: none;
}

.code {
  background-color: #ddd;
  padding: 10px;
}

header {
  background-color: #1781a5;
  color: white;
  display: flex;
  font-weight: 700;
  justify-content: space-between;
  max-width: calc(100vw - 22px);
  padding: 2px;
}

header a {
  color: white;
  text-decoration: none;
}

header a.active {
  background-color: #129fce;
}

header a:hover {
  background-color: #228cb2;
}

header ul {
  list-style-type: none;
  margin: 0;
}

header li {
  cursor: pointer;
  padding: 5px;
}

header li:hover {
  background-color: #228cb2;
}

header nav > ul > li {
  float: left;
  margin-right: 50px;
}

header ul ul {
  display: none;
}

header ul > li:hover ul {
  background-color: #1781a5;
  display: block;
  /* (50 / 2 [header nav > ul > li]) + 5 [header ul > li:hover ul li] */
  margin-left: -30px;
  padding: 4px;
  position: absolute;
  z-index: 100;
}

header ul > li:hover ul li {
  margin: 50x;
}

.success {
  background-color: lightgreen;
  border-radius: 10px;
  padding: 10px;
}

.errorlist {
  background-color: lightcoral;
  border-radius: 10px;
  list-style-type: none;
  padding: 10px;
}

.text-wrapper {
  position: relative;
  width: 960px;
  margin-left: auto;
  margin-right: auto;
  margin-top: 3em;
  max-width: calc(100vw - 22px);
}

.text-wrapper hr {
  color: #1781a5;
  background: #1781a5;
  height: 1px;
  border: 0;
}

.text-wrapper table {
  border-collapse: collapse;
  border-spacing: 0;
  width: 100%;
}

.text-wrapper td, .text-wrapper th {
  border: 1px solid #888;
  margin: 0;
  padding: 3px;
}
