/*
 * Copyright (c) 2019, Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

/* Result colors */
.success {
  background-color: #b4fd98;
}
.failure {
  background-color: #ffb8b8;
}
.unstable {
  background-color: #ffe133;
}

/* TF report */
#tf-report-main {
  margin-bottom: 10px;
  margin-top: 10px;
}
#tf-report-main table {
  border: 1px dotted #aaa;
  border-collapse: collapse;
  font: 10px monospace;
}
#tf-report-main td, #tf-report-main th {
  border: 1px solid #c8c8c8;
  padding: 5px 10px;
  font: 10px monospace;
  vertical-align: middle;
}
#tf-report-main th {
  background-color: #e0f7ff;
  font-weight: bold;
}
#tf-report-main .buildlink {
  display: inline-block;
  height: 16px;
  margin-left: 10px;
  vertical-align: middle;
  /* Console icon 16x16 */
  background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACJUlEQVR42qVTO4saYRS9n/EtCoKvQgZBFCyUyDba2BgRJF2a7QQDYmOhhSJCViw0oI2NU7gsFrEQZKsUEVKIGMXB/AQ3jJjOahVf6yNzvzAQAm4WcuEyMPPdc8853xkC/1mk1WppdTrdW71eLyeEwPl8vngYv2Efj0eYzWY/o9HoV9Ltdr+EQqEwDj9XIrAIslwuIZ/Pvye9Xo+32WxMo9EAr9f7T5DD4QCLxQLi8Tik02mW9Pt93mAwMN84DqxWK3wfj2H5+PgskFarhVQqBdlsliWDwYA3Go3Mh5sbeHd9DaFIBD4WCsA/PFwEcDqdEIvFoFqtsmQ4HFKAu1YL3oTD8Pn+HrjhkBp1SYbdbodisQi1Wo0lo9GIN5lMjNvtBolEAsKNgD8QgNdXV4DGfrq9hfV6TQFRP5oXDAahUqlAvV5nyXg8pgAOhwOUSiUoFApQq9X0iQDb7ZYO7vd72Gw2sNvtICLILJfLIBjPEo7jeIvFwng8HlCpVLTlcjlIpVIQc/H09EQHEQDZIIOC4FOz2WTJZDLhzWYz4/P5QKPR0O3IRCaTUYDT6US3IxMcXq1WEBAkZjIZEEL4GwAlICpejwiCLNAT1I7bxWH0wO/3QzKZhHa7TT344XK5bNPpFMQ0imkTY4seoAyxkSFK7HQ6dZLL5UqJRCLzSig8/Gcj/b/fiS2kcVkqlaJEiK9kPp/bhO2Kl/6ByEwAXwtSZ+SlQ5fqF5qGN9ApekVGAAAAAElFTkSuQmCC') no-repeat left top;
  width: 16px;
}
#tf-report-main .emptycell {
  background-color: #eee;
}
#tf-report-main .failure {
  vertical-align: middle;
}
#tf-report-main .success {
  vertical-align: middle;
}
#tf-report-main .unstable {
  vertical-align: middle;
}
#tf-report-main .result {
  display: inline-block;
  min-width: 50px;
}
#tf-report-main .dim {
  opacity: 0.2;
}
#tf-report-main input[type="checkbox"] {
  margin-left: 10px;
  vertical-align: middle;
}

/* Label container */
.tf-label-container {
  margin-bottom: 10px;
  margin-top: 10px;
  position: relative;
}
.tf-label-container .tf-label-label {
  background-color: white;
  left: 10px;
  position: absolute;
  top: -0.65em;
}
.tf-label-container pre {
  white-space: pre;
}
.tf-label-container .tf-label-content,
.tf-label-container pre {
  border: 1px dotted #ffb8b8;
  padding: 1em;
}

/* Rebuild table */
#tf-rebuild-button, #tf-rebuild-all-button {
  background-color: #4b758b; /* Same color as Jenkis buttons */
  border: 1px solid #aaa;
  color: #eee;
  display: block;
  font-weight: bold;
  margin-bottom: 10px;
  padding: 5px 15px;
  width: 250px;
}
#tf-rebuild-button[disabled] {
  background-color: #ccc;
  color: #ddd;
}
#tf-rebuild-table {
  margin-bottom: 20px;
  margin-top: 20px;
}
#tf-rebuild-table .desc-col {
  padding-right: 10px;
  vertical-align: middle;
}
#tf-rebuild-table .button-col {
  border-left: 1px solid #c8c8c8;
  padding-left: 10px;
  vertical-align: middle;
}
#tf-rebuild-table .select-row {
  font-size: 0.8em;
  padding-bottom: 15px;
  padding-top: 10px;
  text-align: center;
}
#tf-rebuild-table .select-all {
  border: 1px solid #ccc;
  border-radius: 3px;
  cursor: pointer;
  display: inline-block;
  padding: 2px 3px 0px 3px;
}
