/* Copyright (C) 2016 The Android Open Source Project

 Licensed 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.
*/

table {
    font-family: Roboto !important;
    font-size: 13px !important;
    white-space: nowrap !important;
}
.table-header-cell {
    background-color: white;
    transition: max-width 1s;
    max-width: 150px;
}
.table-header-cell:hover {
    transition-delay: 0.5s;
    max-width: 1000px;
}
.table-header-content.table-header-legend {
    max-width: none;
}
.table-header-content {
    font-weight: initial;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    display: inline-block;
    max-width: inherit;
    width: 100%;
}
.page-button-wrapper {
    top: 50%;
    bottom: auto;
    padding: 0;
}
#newer-wrapper {
    left: 23px;
    right: auto;
}
#chart-holder {
    padding: 30px 5px;
}
#pie-chart-div {
    width: 100%;
    height: 300px;
}
#profiling-container {
    padding: 0;
}
#error-div {
    padding: 30px 25px;
}
#profiling-body {
    border: none;
}
#profiling-list {
    max-height: 200px;
    overflow-y: scroll;
}
.collapsible-header {
    user-select: none;
}
.collapsible-link {
    color: inherit;
}
.collection a.collection-item.profiling-point-name {
    color: #616161;
    font-size: 13px;
    padding: 2px 0 2px 25px;
}
#legend-wrapper {
    display: inline-block;
    padding: 10px 15px 12px;
}
.btn.inline-btn {
    border-radius: 50px;
    height: auto;
    line-height: inherit;
    padding: 1px;
    margin-left: 2px;
}
i.material-icons.inline-icon {
    font-size: inherit;
}
a.legend-circle {
    width: 15px;
    height: 15px;
    padding: 0;
    border-radius: 15px;
}
.legend-header-cell {
    text-transform: capitalize;
}
.legend-entry {
    display: inline-block;
    margin: 0 5px;
    min-width: 50px;
}
.legend-bubble {
    border-radius: 20px;
    height: 20px;
    width: 20px;
    margin: 0 auto;
}
#pie-chart-wrapper {
    padding: 25px 0;
}
.pie-chart-title {
    cursor: default;
}
div.status-icon {
    width: 10px;
    height: 10px;
    border-radius: 10px;
    display: inline-block;
    margin-left: 5px;
}
.test-case-status {
    border-radius: 50px;
    display: inline-block;
    height: 100%;
    width: 100%;
}
.test-case-status.width-1 {
    width: calc(100% - 18px);
}
