/*
 * Copyright 2020 The Go Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style
 * license that can be found in the LICENSE file.
 */
*,
::before,
::after {
  box-sizing: border-box;
}
html,
.Site {
  height: 100%;
}
.Site {
  display: flex;
  flex-direction: column;
  font-family: sans-serif;
  margin: 0;
}
h1,
h2 {
  font-weight: 600;
  letter-spacing: 0.03rem;
}
h3,
h4 {
  font-weight: 600;
  letter-spacing: 0.08rem;
}
h5,
h6 {
  font-weight: 500;
  letter-spacing: 0.08rem;
}
.Site-content {
  flex: 1 0 auto;
  width: 100%;
}
.Site-header {
  flex: none;
}
.Header {
  background: #d6d6d6;
  color: #171d27;
  padding: 0.625rem;
}
.Site-header--production .Header {
  background: #e0ebf5;
  color: #375eab;
}
.Header-title {
  font-size: 1.5rem;
  margin: 0;
}
.Workflows,
.NewWorkflow {
  padding: 0 0.625rem;
}
.Workflows-header {
  align-items: center;
  background: #fff;
  border-bottom: 0.0625rem solid #d6d6d6;
  display: flex;
  justify-content: space-between;
  margin: 0 -0.625rem;
  padding: 0 0.625rem;
}
.WorkflowList,
.TaskList {
  list-style: none;
  margin: 0;
  padding: 0;
}
.WorkflowList-title {
  font-weight: normal;
  margin: 0.875rem 0 0.5rem;
}
.WorkflowList-params {
  border: none;
  border-spacing: 0;
}
.WorkflowList-workflowStateIcon {
  background-size: contain;
  display: inline-block;
  height: 1.25rem;
  margin: -0.25rem 0;
  width: 1.25rem;
}
.Workflowlist-workflowStateIcon--error {
  background-image: url("images/error_red_24dp.svg");
}
.Workflowlist-workflowStateIcon--success {
  background-image: url("images/check_circle_green_24dp.svg");
}
.Workflowlist-workflowStateIcon--pending {
  background-image: url("images/pending_yellow_24dp.svg");
}
.WorkflowList-titleTime {
  font-size: 1rem;
}
.WorkflowList-titleStop {
  float: right;
}
.WorkflowList-paramData {
  font-size: 0.875rem;
}
.WorkflowList-paramData:first-child {
  text-transform: capitalize;
}
.WorkflowList-sectionTitle {
  font-weight: normal;
  letter-spacing: normal;
  margin: 1rem 0 0.5rem;
}
.WorkflowList-item {
  background: #fff;
  border: 0.0625rem solid #d6d6d6;
  border-radius: 0.0625rem;
  margin-top: 1rem;
  padding: 0 0.5rem;
}
.NewWorkflow-workflowSelect {
  border-bottom: 0.0625rem solid #d6d6d6;
  padding-bottom: 0.5rem;
}
.NewWorkflow-parameter {
  display: flex;
  gap: 0.5rem;
  padding: 0.5rem 0;
}
.NewWorkflow-parameter--slice {
  flex-direction: column;
}
.NewWorkflow-parameterRow {
  display: flex;
  gap: 0.5rem;
}
.NewWorkflow-parameter--string input {
  flex-grow: 1;
}
.NewWorkflow-parameter--slice textarea {
  font-family: inherit;
  height: 4rem;
  width: 100%;
}
.NewWorkflow-parameter--slice button {
  font-size: 0.625rem;
}
.NewWorkflow-workflowCreate {
  border-top: 0.0625rem solid #d6d6d6;
  padding-top: 0.5rem;
}
.TaskList {
  align-items: center;
  border-bottom: 0.0625rem solid #d6d6d6;
  border-collapse: collapse;
  margin-bottom: 1rem;
  width: 100%;
}
.TaskList-itemHeaderCol {
  padding: 0.3125rem 0;
}
.TaskList-itemCol {
  border-top: 0.0625rem solid #d6d6d6;
  overflow: hidden;
  padding: 0.5rem 0 0.5rem 0.0625rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.TaskList-itemSummary {
  align-items: center;
  cursor: pointer;
  font-size: 0.8125rem;
  padding: 0.5rem;
}
.TaskList-itemSummary:hover {
  background-color: #fafafa;
}
.TaskList-itemExpand {
  padding: 0.25rem 0 0;
  text-align: center;
  width: 2rem;
}
.TaskList-itemExpandControl {
  height: 1.5rem;
  width: 1.5rem;
}
.TaskList-expanded .TaskList-itemExpandClosed {
  display: none;
}
.TaskList-ItemExpandOpened {
  display: none;
}
.TaskList-expanded .TaskList-ItemExpandOpened {
  display: inline;
}
.TaskList-itemLogsRow {
  display: none;
}
.TaskList-expanded.TaskList-itemLogsRow {
  display: table-row;
}
.TaskList-itemCol.TaskList-itemState {
  padding: 0.25rem 0 0;
  width: 3.25rem;
}
.TaskList-itemStateIcon {
  height: 1.25rem;
  width: 1.25rem;
}
.TaskList-itemLogs {
  background-color: #f5f5f5;
  box-shadow: inset 0 0.375rem 0.375rem -0.5rem #888;
  font-size: 0.8125rem;
  margin: 0;
  padding: 1rem 0;
}
.TaskList-itemLogLine {
  font-family: monospace;
  padding: 0 1rem;
  tab-size: 4;
  white-space: pre-wrap;
}
.TaskList-itemLogLine:nth-child(even) {
  background-color: #fafafa;
}
.TaskList-itemLogLineError {
  background-color: #c9483c;
  color: white;
  padding: 0.5rem 1rem;
}
.TaskList-itemHeader {
  align-items: center;
  font-size: 0.8125rem;
  font-weight: bold;
}
.Button {
  background: #375eab;
  border: none;
  border-radius: 0.1875rem;
  box-shadow: 0 0.1875rem 0.0625rem -0.125rem rgb(0 0 0 / 20%),
    0 0.125rem 0.125rem 0 rgb(0 0 0 / 14%),
    0 0.0625rem 0.3125rem 0 rgb(0 0 0 / 12%);
  color: #fff;
  font-size: 0.875rem;
  min-width: 4rem;
  padding: 0.5rem 1rem;
  text-decoration: none;
}
.Button--small {
  font-size: 0.75rem;
  padding: 0.25rem 0.5rem;
}
.Button:hover,
.Button:focus {
  background: #3b65b3;
  box-shadow: 0 0.125rem 0.25rem -0.0625rem rgb(0 0 0 / 20%),
    0 0.25rem 0.3125rem 0 rgb(0 0 0 / 14%),
    0 0.0625rem 0.625rem 0 rgb(0 0 0 / 12%);
}
.Button:active {
  background: #4373cc;
  box-shadow: 0 0.3125rem 0.3125rem -0.1875rem rgb(0 0 0 / 20%),
    0 0.5rem 0.625rem 0.0625rem rgb(0 0 0 / 14%),
    0 0.1875rem 0.875rem 0.125rem rgb(0 0 0 / 12%);
}
.Button--red {
  background: #d14836;
}
.Button--red:hover,
.Button--red:focus {
  background: #c53727;
}
.Button--red:active {
  background: #d14836;
}
