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

.case-frame {
    position: static;
    padding: 0;
    margin: 0;
}
.case-frame .cases-list {
    padding-top: 15px;
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 250px;
    overflow: auto;
    font-size: 13px;
}
.case-frame .cases-list ul {
    padding-left: 32px;
    margin-top: 170px;
    list-style-type: decimal;
}
.case-frame .info-panel {
    position: fixed;
    padding: 10px 20px;
    top: 0;
    left: 0;
    width: 195px;
    background: #fff;
    border-bottom: 1px solid #ccc;
}
.case-frame .info-panel .current {
    height: 24px;
    line-height: 24px;
    white-space: nowrap;
    text-decoration: underline;
}
.case-frame .info-panel .renderer-selector {
    margin: 10px;
}
.case-frame .info-panel .list-filter {
    margin: 10px 0;
}
.case-frame .page-content {
    margin-left: 255px;
    height: 100%;
    padding: 0;
    position: relative;
    border-left: 1px solid #333;
}
.case-frame .page-content iframe {
    padding: 0;
    margin: 0;
    border-width: 0;
    overflow: visible;
    visibility: visible;
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
}