/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*/

#main {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
}

* {
    font-family: "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;
}

.header {
    background-color: #fff;
    box-shadow: 0 0  20px rgba(0, 0, 0, 0.05);
    position: relative;
    z-index: 20;
    height: 55px;
}

.header>* {
    display: inline-block;
    vertical-align: middle;
}

.header h1 {
    color: #222;
    line-height: 50px;
    margin: 0;
    font-size: 20px;
}

#logo>* {
    display: inline-block;
    vertical-align: middle;
}

#logo img {
    height: 30px;
    margin-right: 20px;
}

.el-aside {
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);
    position: relative;
    z-index: 10;
}

.el-main {
    background: #f3f4fa;
    padding: 0;
}

.nav-toolbar, .test-run-controls {
    padding: 10px 10px;
    background: #fff;
    position: fixed;
    width: 330px;
    z-index: 2;
    /* box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); */
    border-bottom: 1px solid #eee;
}

.test-run-controls {
    z-index: 1;
    position: sticky;
    width: 100%;
    padding: 5px 40px;
    top: 0px;

    background: #896bda;
    box-shadow: 0 0 20px rgb(0 0 0 / 20%);
    border-bottom: none;
}

.test-run-controls>* {
    display: inline-block;
    vertical-align: middle;
}

.nav-toolbar .el-button {
    padding-left: 8px;
    padding-right: 8px;
}

.run-config-item {
    margin: 0 5px;
    color: #fff;
    font-size: 12px;
}
.run-config-item>* {
    display: inline-block;
    vertical-align: middle;
    font-size: 12px;
    color: #fff;
}

.run-config-item .el-progress-circle__track {
    stroke: rgba(255, 255, 255, 0.3)!important;
}
.run-config-item .el-progress-circle__path {
    stroke: rgba(255, 255, 255, 1)!important;
}

.run-config-item .el-input__inner,
.run-config-item .el-button-group {
    border: none;
}
.run-config-item .el-button {
    border-color: #fff;
}

.run-config-item .label {
    margin-right: 2px;
    margin-left: 5px;
    text-transform: uppercase;
}


.test-list {
    overflow-x: hidden;
    background: #fff;
    margin: 0;
    padding: 0;

    position: absolute;
    top: 48px;
    bottom: 0;
    right: 0;
    left: 0;
    overflow-y: scroll;
}
.test-list li {
    list-style: none;
    padding-left: 10px;
    cursor: pointer;
    color: #222;
}
.test-list li .el-checkbox {
    margin-right: 5px;
}
.test-list li a.menu-link {
    display: inline-block;
    text-decoration: none;
    font-size: 14px;
    line-height: 40px;
    color: #222;
    margin-left: 3px;
    cursor: pointer;
}
.test-list li a.menu-link i {
    font-size: 16px;
    margin-left: 10px;
    color: #ccc;
}

.test-list li.active {
    background: #5470C6;
}
.test-list li.active a {
    color: #fff;
}
.test-list li:hover {
    border-right: 4px solid #5470C6
}
.test-list li>* {
    vertical-align: middle;
    display: inline-block
}

.test-list .el-progress__text {
    font-size: 12px!important;
}

.el-progress.is-success .el-progress__text {
    color: #67C23A;
    -webkit-text-stroke: 1px #67C23A;
}
.el-progress.is-exception .el-progress__text {
    color: #F56C6C;
    -webkit-text-stroke: 1px #F56C6C;
}

.no-result {
    text-align: center;
    font-size: 30px;
    padding: 100px 0;
    color: #ccc;
}

.test-result {
    padding: 20px;
    margin-top: 20px;
}

.test-result .el-progress__text {
    font-size: 14px!important;
}

.test-result h3 {
    font-size: 40px;
    font-weight: 200;
    padding: 0;
    margin: 0;
}

.test-result .title {
    margin-left: 20px;
}
.test-result .title>* {
    display: inline-block;
    vertical-align: middle;
}
.test-result .title a {
    margin-left: 10px;
    font-size: 20px;
    font-weight: 200;
    text-decoration: none;
}
.test-result .title a:hover {
    text-decoration: underline;
}

.single-test-ops {
    padding: 20px 20px 0 10px;
}
.single-test-ops .el-button {
    margin-left: 10px;
}

.test-screenshots {
    margin-top: 20px;
    padding: 0 20px;
}

.test-screenshots h4 {
    margin-top: 60px;
}

.test-screenshots .preview {
    cursor: pointer;
    color: #409eff;
    float: right;
    font-size: 20px;
}
.test-screenshots .preview:hover {
    text-decoration: underline;
}

.test-screenshots img {
    /* height: 200px; */
    width: 100%;
}
.test-screenshots h4 {
    font-size: 30px;
    font-weight: 200;
    color: #162436;
}

.test-errors, .test-logs {
    margin-top: 20px;
    padding: 0 20px;
}

.test-logs .log-item {
    margin: 10px 20px;
    color: #909399;
}

.test-errors .error-item {
    margin: 10px 20px;
    color: #f56c6c
}

iframe {
    border: none;
    overflow: overlay;
}

#tests-runs-dialog .el-dialog {
    width: 90%;
    max-width: 1200px;
}


::-webkit-scrollbar {
    height: 8px;
    width: 8px;
    -webkit-transition: all 0.3s ease-in-out;
    transition: all 0.3s ease-in-out;
    -webkit-border-radius: 2px;
    border-radius: 2px
}

::-webkit-scrollbar-button {
    display: none
}

::-webkit-scrollbar-thumb {
    width: 8px;
    min-height: 15px;
    background: rgba(50,50,50,0.6) !important;
    -webkit-transition: all 0.3s ease-in-out;
    transition: all 0.3s ease-in-out;
    -webkit-border-radius: 2px;
    border-radius: 2px
}

::-webkit-scrollbar-thumb:hover {
    background: rgba(0,0,0,0.5) !important
}
