/*
 * Copyright (c) 2009, 2018 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

.yui-layout-loading {
    visibility: hidden;
}

body.yui-layout {
    overflow: hidden;
    position: relative;
    padding: 0;
    margin: 0;
}

.yui-layout-doc {
    position: relative;
    overflow: hidden;
    padding: 0;
    margin: 0;
}

.yui-layout-unit {
    height: 50px;
    width: 50px;
    padding: 0;
    margin: 0;
    float: none;
    z-index: 0;
    /*overflow: hidden;*/
}

.yui-layout-unit-top {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
}

.yui-layout-unit-left {
    position: absolute;
    top: 0;
    left: 0;
}

.yui-layout-unit-right {
    position: absolute;
    top: 0;
    right: 0;
}

.yui-layout-unit-bottom {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
}

.yui-layout-unit-center {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
}

.yui-layout div.yui-layout-hd {
    position: absolute;
    top: 0;
    left: 0;
    zoom: 1;
    width: 100%;
    /*overflow: hidden;*/
}
.yui-layout div.yui-layout-bd {
    position: absolute;
    top: 0;
    left: 0;
    zoom: 1;
    width: 100%;
    /*overflow: hidden;*/
}
.yui-layout .yui-layout-noscroll div.yui-layout-bd {
    overflow: hidden;
}
.yui-layout .yui-layout-scroll div.yui-layout-bd {
    overflow: auto;
}
.yui-layout div.yui-layout-ft {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    zoom: 1;
    /*overflow: hidden;*/
}

.yui-layout .yui-layout-unit div.yui-layout-hd h2 {
    text-align: left;
}

.yui-layout .yui-layout-unit div.yui-layout-hd .collapse {
    cursor: pointer;
    height: 13px;
    position: absolute;
    right: 2px;
    top: 2px;
    width: 17px;
    font-size: 0;
}

.yui-layout .yui-layout-unit div.yui-layout-hd .close {
    cursor: pointer;
    height: 13px;
    position: absolute;
    right: 2px;
    top: 2px;
    width: 17px;
    font-size: 0;
}
.yui-layout .yui-layout-unit div.yui-layout-hd .collapse-close {
    right: 25px;
}


.yui-layout .yui-layout-clip {
    position: absolute;
    height: 20px;
    background-color: #c0c0c0;
    display: none;
}

.yui-layout .yui-layout-clip .collapse {
    cursor: pointer;
    height: 13px;
    position: absolute;
    right: 2px;
    top: 2px;
    width: 17px;
    font-size: 0px;
}

.yui-layout .yui-layout-wrap {
    height: 100%;
    width: 100%;
    position: absolute;
    left: 0;
}

/*
.yui-layout .yui-layout-unit .yui-content {
    overflow: hidden;
}
.yui-layout .yui-layout-unit .yui-layout-scroll {
    overflow: auto;
}
*/
