@import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Source+Code+Pro&display=swap');
* {
    font-family: 'Roboto', sans-serif;
    font-size: 100%;
}

html {
    height: 100%;
    background-color: #FFFFFF;
}

body {
    max-width: 1024px;
    min-height: 100%;
    margin: auto;
}

body::before {
    padding: 5px;
    content: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3C!-- Generator: Adobe Illustrator 25.4.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' id='Ebene_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='220px' height='80px' viewBox='0 0 220 80' style='enable-background:new 0 0 220 80;' xml:space='preserve'%3E%3Cpath d='M17.7,0.6v11.9H8.3V0.6H0v31h8.3v-12h9.4v12h8.3v-31H17.7z M39.7,32c7.2,0,11.5-3.7,11.5-9.7c0-4.3-1.9-6.9-6.7-8.9 l-4.2-1.8c-2-0.9-2.7-1.5-2.7-2.6c0-1.4,1.4-2.3,3.5-2.3c3.3,0,6,1.6,6.8,1.6c0.2,0,0.4,0,0.6-0.2c0.2-0.1,0.3-0.3,0.3-0.5l1.9-5.3 c-3-1.6-6.4-2.4-9.8-2.4c-6.9,0-11.4,3.7-11.4,9.1c0,4.2,1.9,7,6.2,8.9l4.9,2.2c1.6,0.7,2.3,1.5,2.3,2.6c0,1.7-1.2,2.5-3.7,2.5 c-3.8,0-7.1-1.7-7.8-1.7c-0.2,0-0.5,0.1-0.6,0.2c-0.2,0.1-0.3,0.3-0.4,0.5l-1.5,5.5C32.5,31.3,36.1,32,39.7,32z M75.2,31.5v-6 c0-0.8-0.3-1.1-1.1-1.1H63.6V0.6h-8.3v31H75.2z M89.8,32c8.6,0,12.9-4.5,12.9-13.6V0.6h-8.3v17.2c0,5.1-1.3,7-4.6,7s-4.6-1.9-4.6-7 V0.6h-8.3v17.9C76.8,27.5,81.1,32.1,89.8,32L89.8,32z'/%3E%3Cpath d='M111.1,31.5h7.2c0.3,0,0.5-0.1,0.5-0.5v-1.2c0-0.1,0-0.1,0-0.2c0-0.1-0.1-0.1-0.1-0.2c0,0-0.1-0.1-0.2-0.1 c-0.1,0-0.1,0-0.2,0h-5.2V18.1c0-0.4-0.1-0.5-0.5-0.5H111c-0.3,0-0.5,0.2-0.5,0.5V31C110.5,31.4,110.7,31.5,111.1,31.5z M123.7,31.8 c1.2,0,2.3-0.5,3.2-1.3v0.6c0,0.3,0.2,0.4,0.5,0.4h1.3c0.4,0,0.5-0.2,0.5-0.5v-8.9c0-0.3-0.2-0.5-0.5-0.5h-1.5 c-0.3,0-0.5,0.1-0.5,0.5v6.5c-0.7,0.6-1.5,0.9-2.4,1c-1,0-1.5-0.6-1.5-2v-5.6c0-0.3-0.1-0.5-0.5-0.5H121c-0.4,0-0.5,0.2-0.5,0.5v6 C120.4,30.5,121.5,31.8,123.7,31.8L123.7,31.8z M134,29.7l4.4-6.4c0.1-0.2,0.2-0.4,0.2-0.7V22c0-0.2-0.1-0.4-0.5-0.4h-6.5 c-0.3,0-0.4,0.2-0.4,0.4v0.9c0,0.4,0.1,0.5,0.5,0.5h3.7l-4.3,6.4c-0.2,0.2-0.2,0.4-0.2,0.7V31c0,0.1,0,0.1,0,0.2 c0,0.1,0.1,0.1,0.1,0.2c0,0,0.1,0.1,0.2,0.1c0.1,0,0.1,0,0.2,0h6.9c0.1,0,0.1,0,0.2,0c0,0,0.1,0,0.1-0.1c0,0,0.1-0.1,0.1-0.1 c0,0,0-0.1,0-0.2V30c0-0.3-0.2-0.3-0.4-0.3H134z M144.7,31.8c1.2,0,2.4-0.2,3.5-0.6c0.1,0,0.1-0.1,0.2-0.1c0,0,0.1-0.1,0.1-0.2 c0-0.1,0-0.1,0-0.2c0-0.1,0-0.1,0-0.2l-0.3-1c-0.1-0.2-0.2-0.3-0.5-0.2c-0.8,0.3-1.6,0.5-2.5,0.5c-0.7,0-1.5-0.2-2-0.7 c-0.5-0.5-0.9-1.2-0.9-1.9h6c0.5,0,0.7-0.1,0.7-0.6v-0.3c0-3-1.6-4.9-4.2-4.9c-3,0-5.1,2.1-5.1,5.2 C139.6,29.8,141.5,31.8,144.7,31.8L144.7,31.8z M142.2,25.5c0-0.6,0.3-1.2,0.7-1.6c0.4-0.4,1-0.7,1.6-0.7c0.3,0,0.5,0.1,0.8,0.2 c0.2,0.1,0.5,0.3,0.6,0.4c0.2,0.2,0.3,0.4,0.4,0.7c0.1,0.2,0.1,0.5,0.1,0.8v0.2L142.2,25.5z M151.3,31.5h1.5c0.3,0,0.5-0.2,0.5-0.5 v-6.5c0.2-0.3,0.5-0.5,0.9-0.7c0.3-0.2,0.7-0.3,1.1-0.3c0.2,0,0.3,0,0.6,0s0.4,0,0.4-0.3l0.2-1.5c0-0.1,0-0.1,0-0.2s0-0.1-0.1-0.2 c-0.2-0.1-0.4-0.2-0.7-0.1c-0.5,0-1,0.1-1.4,0.4c-0.4,0.2-0.8,0.6-1.1,1V22c0-0.3-0.2-0.4-0.5-0.4h-1.4c-0.4,0-0.5,0.1-0.5,0.5V31 C150.8,31.4,150.9,31.5,151.3,31.5L151.3,31.5z M158.3,31.5h1.5c0.4,0,0.5-0.2,0.5-0.5v-6.5c0.6-0.6,1.5-0.9,2.3-1 c1.1,0,1.6,0.6,1.6,2V31c0,0.4,0.2,0.5,0.5,0.5h1.5c0.3,0,0.5-0.2,0.5-0.5v-6c0-2.4-1.1-3.6-3.2-3.6c-1.2,0-2.4,0.5-3.3,1.3V22 c0-0.3-0.2-0.4-0.5-0.4h-1.3c-0.1,0-0.1,0-0.2,0c-0.1,0-0.1,0.1-0.2,0.1c0,0-0.1,0.1-0.1,0.2c0,0.1,0,0.1,0,0.2V31 c0,0.1,0,0.1,0,0.2c0,0.1,0.1,0.1,0.1,0.2c0,0,0.1,0.1,0.2,0.1C158.1,31.5,158.2,31.5,158.3,31.5L158.3,31.5z'/%3E%3Cpath d='M112.7,14.5c0.3,0,0.5-0.1,0.5-0.5V8.4h5.7V14c0,0.4,0.2,0.5,0.5,0.5h1.6c0.3,0,0.5-0.1,0.5-0.5V1c0-0.4-0.2-0.5-0.5-0.5 h-1.6c-0.3,0-0.5,0.1-0.5,0.5v5.1h-5.7V1c0-0.4-0.2-0.5-0.5-0.5h-1.6c-0.3,0-0.6,0.1-0.6,0.5v13c0,0.4,0.2,0.5,0.6,0.5H112.7z M128.3,14.7c3,0,5-2.1,5-5.2c0-3.3-1.8-5.2-4.9-5.2c-3.1,0-5,2-5,5.2C123.4,12.8,125.3,14.8,128.3,14.7L128.3,14.7z M128.3,12.8 c-1.5,0-2.3-1.2-2.3-3.3c0-2,0.9-3.2,2.4-3.2c1.5,0,2.3,1.1,2.3,3.2C130.7,11.6,129.8,12.8,128.3,12.8z M139.7,14.7c1,0,2-0.2,3-0.6 c0.3-0.1,0.3-0.3,0.2-0.6l-0.3-1c-0.1-0.2-0.2-0.2-0.4-0.2c-0.7,0.3-1.4,0.5-2.1,0.5c-1.7,0-2.7-1.2-2.7-3.3c0-2.1,1-3.2,2.8-3.2 c0.7,0,1.3,0.1,2,0.4c0.2,0.1,0.4,0.1,0.5-0.2l0.3-1.1c0.1-0.3,0-0.4-0.2-0.5c-0.9-0.4-1.8-0.6-2.7-0.6c-3.1,0-5.1,2.1-5.1,5.3 C134.8,12.8,136.6,14.7,139.7,14.7L139.7,14.7z M145.1,14.5h1.6c0.3,0,0.4-0.2,0.4-0.5V7.5c0.7-0.6,1.6-0.9,2.5-1 c1.2,0,1.5,0.8,1.5,2V14c0,0.4,0.2,0.5,0.5,0.5h1.4c0.4,0,0.5-0.1,0.5-0.5V8c0-2.2-0.9-3.6-3.2-3.6c-1.2,0-2.3,0.4-3.2,1.2V1 c0-0.4-0.2-0.5-0.5-0.5h-1.3c-0.3,0-0.6,0.1-0.6,0.5v13c0,0.1,0,0.1,0,0.2c0,0.1,0.1,0.1,0.1,0.2c0,0,0.1,0.1,0.2,0.1 C145,14.5,145.1,14.5,145.1,14.5L145.1,14.5z M158.8,14.7c2.4,0,4-1.3,4-3.2c0-0.6-0.2-1.2-0.5-1.6c-0.3-0.5-0.8-0.8-1.4-1L159,8.2 c-0.7-0.3-1-0.6-1-1.1s0.5-0.9,1.2-0.9c0.8,0,1.6,0.1,2.3,0.5c0,0,0.1,0.1,0.1,0.1c0.1,0,0.1,0,0.2,0c0,0,0.1,0,0.1-0.1 c0,0,0.1-0.1,0.1-0.1l0.4-1.1c0.1-0.3,0-0.4-0.2-0.5c-0.9-0.4-2-0.6-3-0.6c-2.2,0-3.7,1.2-3.7,2.9c0,0.6,0.2,1.2,0.6,1.7 c0.4,0.5,0.9,0.9,1.5,1l1.6,0.6c0.9,0.3,1.2,0.7,1.2,1.2c0,0.7-0.6,1.1-1.6,1.1c-0.9,0-1.7-0.3-2.5-0.6c-0.2-0.1-0.4,0-0.5,0.2 l-0.4,1.1c0,0,0,0.1,0,0.1c0,0.1,0,0.1,0,0.1c0,0,0.1,0.1,0.1,0.1c0,0,0.1,0.1,0.1,0.1C156.6,14.5,157.7,14.7,158.8,14.7L158.8,14.7 z M168.9,14.7c1,0,2-0.2,3-0.6c0.3-0.1,0.3-0.3,0.2-0.6l-0.3-1c-0.1-0.2-0.2-0.2-0.4-0.2c-0.7,0.3-1.4,0.5-2.1,0.5 c-1.7,0-2.7-1.2-2.7-3.3c0-2.1,1-3.2,2.8-3.2c0.7,0,1.4,0.1,2,0.4c0.2,0.1,0.4,0.1,0.5-0.2l0.3-1.1c0.1-0.3,0-0.4-0.2-0.5 c-0.9-0.4-1.8-0.6-2.7-0.6c-3.1,0-5.1,2.1-5.1,5.3C164.1,12.8,165.9,14.7,168.9,14.7L168.9,14.7z M176,14.5c0.3,0,0.4-0.2,0.4-0.5 V7.5c0.7-0.6,1.6-0.9,2.5-1c1.2,0,1.5,0.8,1.5,2V14c0,0.4,0.2,0.5,0.5,0.5h1.4c0.4,0,0.5-0.1,0.5-0.5V8c0-2.2-0.9-3.6-3.2-3.6 c-1.2,0-2.3,0.4-3.2,1.2V1c0-0.4-0.2-0.5-0.5-0.5h-1.4c-0.3,0-0.5,0.1-0.5,0.5v13c0,0.1,0,0.1,0,0.2c0,0.1,0.1,0.1,0.1,0.2 c0,0,0.1,0.1,0.2,0.1c0.1,0,0.1,0,0.2,0H176z M188.3,14.7c1.2,0,2.3-0.5,3.2-1.3v0.6c0,0.3,0.2,0.4,0.5,0.4h1.3 c0.4,0,0.5-0.2,0.5-0.5V5.1c0-0.3-0.2-0.5-0.5-0.5H192c-0.3,0-0.5,0.1-0.5,0.5v6.5c-0.7,0.6-1.5,0.9-2.4,1c-1,0-1.5-0.6-1.5-2V5.1 c0-0.3-0.1-0.5-0.5-0.5h-1.4c-0.4,0-0.5,0.2-0.5,0.5v6C185.1,13.5,186.2,14.8,188.3,14.7L188.3,14.7z M196.8,14.5h1.6 c0.3,0,0.4-0.2,0.4-0.5V1c0-0.4-0.2-0.5-0.5-0.5h-1.4c-0.3,0-0.5,0.1-0.5,0.5v13c0,0.1,0,0.1,0,0.2c0,0.1,0.1,0.1,0.1,0.2 c0,0,0.1,0.1,0.2,0.1C196.7,14.5,196.8,14.5,196.8,14.5z M205.9,14.7c1.2,0,2.4-0.2,3.5-0.6c0.1,0,0.1,0,0.2-0.1 c0,0,0.1-0.1,0.1-0.1c0-0.1,0-0.1,0-0.2c0-0.1,0-0.1,0-0.2l-0.3-1.1c-0.1-0.2-0.2-0.3-0.5-0.2c-0.8,0.3-1.6,0.5-2.5,0.5 c-0.7,0-1.5-0.2-2-0.7c-0.5-0.5-0.9-1.2-0.9-1.9h5.9c0.5,0,0.7-0.1,0.7-0.6V9.2c0-3-1.6-4.9-4.2-4.9c-3,0-5.1,2.1-5.1,5.2 C200.8,12.8,202.7,14.8,205.9,14.7L205.9,14.7z M203.4,8.5c0-0.6,0.3-1.2,0.7-1.6c0.4-0.4,1-0.7,1.6-0.7c0.3,0,0.5,0.1,0.8,0.2 c0.2,0.1,0.5,0.3,0.6,0.4c0.2,0.2,0.3,0.4,0.4,0.7c0.1,0.2,0.1,0.5,0.1,0.8v0.2H203.4z'/%3E%3C/svg%3E%0A");
    display: block;
}

nav {
    background-color: #F0F0F0;
    text-align: right;
}

nav a {
    display: inline-block;
    padding: 5px 10px;
    height: 100%;
    margin: 0;
    color: black;
    text-decoration: none;
}

nav a:hover {
    background: rgb(186, 224, 234);
}

h1 {
    font-size: 2.25rem;
    margin-bottom: 1.5rem;
}

h2 {
    font-size: 1.25rem;
    margin-bottom: .25em;
}

p {
    line-height: 1.5;
}

#appname {
    display: flex;
    justify-content: flex-end;
    align-items: center;
}

#logout {
    display: flex;
    justify-content: flex-end;
}

.teams-row > label {
    font-weight: bold;
    padding: 5px 10px;
    border-bottom: solid 1px black;
}

.teams-row {
    display: flex;
    flex-flow: row wrap;
}

.teams-col1 {
    flex-grow: 0;
    flex-shrink: 0;
    flex-basis: 40px;
    padding: 5px 10px;
}
.teams-col2 {
    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: 10px;
    padding: 5px 10px;
}
.teams-col3 {
    flex-grow: 0;
    flex-shrink: 0;
    flex-basis: 40px;
    padding: 5px 10px;
}
.teams-col1-data {
    background-color: #F0F0F0;
    border-bottom: dashed 1px black;
}
.teams-col2-data {
    border-bottom: dashed 1px black;
}
.teams-col3-data {
    border-bottom: dashed 1px black;
}
table {
    border-collapse: collapse;
    width: 100%;
}
tr {
    height: 32px;
}
.challenge-name:       { width: 20% }
.challenge-lat-e2e:    { width: 8% }
.challenge-lat-client: { width: 8% }
.challenge-count:      { width: 8% }
.challenge-dupl:       { width: 8% }
.challenge-unord:      { width: 8% }
.challenge-io:         { width: 8% }
.challenge-rank:      { width: 8% }
.challenge-status:     { width: 8% }
.challenge-exec:       { width: 8% }
.challenge-logs:       { width: 8% }
th {
    text-align: left;
    border-bottom: solid 1px black;
}

input,select,textarea {
    border: 1px solid #000;
    box-shadow: none;
    border-radius: 0;
    padding: 5px 10px;
    outline: 0 none;
}

input:focus,select:focus,textarea:focus {
    border: 1px solid #449dc2;
}

button {
    border-radius: 0;
    border: 0;
    box-shadow: none;
    background-color: rgb(119, 197, 216);
    padding: 5px 10px;

}

button:hover {
    background-color: rgb(186, 224, 234);
}

button:disabled {
    background-color: #F0F0F0;
}

#output {
    position: fixed;
    display: grid;
    grid-template-rows: max-content 1fr;
    grid-template-columns: 1fr max-content;
    grid-template-areas: "outputTitle outputClose"
                         "outputContents outputContents";
    left: 20px;
    top: 20px;
    right: 20px;
    bottom: 20px;
    padding: 10px 10px;
    background-color: #F0F0F0;
}

.hidden {
    display:none !important;
}

#outputTitle {
    grid-area: outputTitle;
    padding: 10px 10px;
    font-size: 16px;
    font-weight: bold;
}

#outputClose {
    grid-area: outputClose;
    padding: 10px 10px;
}

#outputContent {
    grid-area: outputContents;
    background-color: #F0F0F0;
}

#outputText {
    width: 100%;
    height: 100%;
    resize: none;
    scroll: vertical;
    color: #F0F0F0;
    padding: 0px;
    background-color: black;
    border: none;
    font-family: 'Source Code Pro', sans-serif;
}

#login {
    display: grid;
    grid-template-rows: max-contents max-contents;
    grid-template-columns: max-contents 1fr;
    gap: 5px 10px;
}

#login * {
    max-width: 400px;
}

#logout {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 10px;
}

#cache {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 10px;
    margin-bottom: 5px;
}

#errorOuter {
    z-index: 1;
    width: 100vw;
    height: 100vh;
    position: fixed;
    top:0;
    left:0;
    display: flex;
    justify-content: center;
    align-items: center;
    background: rgba(0,0,0,0.5);
}

#errorInner {
  z-index: 2;
  max-width: 60%;
  min-width: 40%;
  background-color: #FFFFFF;
}

#errorHeader {
   background-color: #F0F0F0;
}

#errorInner > * {
    padding: 5px 10px;
}

#errorFooter {
    text-align: end;
}

.dialogOuter {
    z-index: 1;
    width: 100vw;
    height: 100vh;
    position: fixed;
    top:0;
    left:0;
    display: flex;
    justify-content: center;
    align-items: center;
    background: rgba(0,0,0,0.5);
}

.dialogInner {
  z-index: 2;
  min-width: 40%;
  background-color: #FFFFFF;
  display: grid;
  grid-template-rows: max-content 1fr max-content;
  grid-template-columns: 1fr;
}

.dialogHeader {
   background-color: #F0F0F0;
   display: grid;
   grid-template-rows: max-content;
   grid-template-columns: 1fr max-content;
}

.dialogTitle {
    padding-left: 10px;
    display:flex;
    align-items: center;
    font-weight: bold;
}

.dialogFooter {
   padding: 5px 10px;
   display: flex;
   justify-content: right;
   gap: 10px;
}

#settingsDialog {
   padding: 5px 10px;
   display: grid;
   grid-template-rows: max-content max-content;
   grid-template-columns: max-content 1fr;
   grid-template-areas: "labelComponent inputComponent"
                        "labelStringPersistorClassName inputStringPersistorClassName";
   align-items: center;
   gap: 10px;
}

#labelSettingsComponentVersion { grid-area: labelComponent; }
#inputSettingsComponentVersion { grid-area: inputComponent; }
#labelSettingsStringPersistorClassName { grid-area: labelStringPersistorClassName; }
#inputSettingsStringPersistorClassName { grid-area: inputStringPersistorClassName; }