/*
 * Copyright (C) 2006, 2007, 2008 Apple Inc.  All rights reserved.
 * Copyright (C) 2009 Anthony Ricaud <rik@webkit.org>
 * Copyright (C) 2011 Google Inc. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 * 1. Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above
 * copyright notice, this list of conditions and the following disclaimer
 * in the documentation and/or other materials provided with the
 * distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. AND ITS CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE INC.
 * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
 .tabbed-pane {
    -webkit-flex-direction: column;
    display: -webkit-flex;
    height: 100%;
}

.tabbed-pane-content {
    -webkit-flex: 1;
    position: relative;
    overflow: auto;
}

.tabbed-pane-content.has-no-tabs {
    background-color: lightgray;
}

.tabbed-pane-header {
    height: 23px;
    border-bottom: 1px solid rgb(163, 163, 163);
    overflow: hidden;
    width: 100%;
}

.tabbed-pane-header-contents {
    margin: 0 10px;
}

.tabbed-pane-header-tabs {
    float: left;
}

.tabbed-pane-header-tab {
    float: left;
    margin-top: 2px;
    padding: 2px 4px 2px 4px;
    height: 21px;
    border: 1px solid transparent;
    border-bottom: none;
    line-height: 15px;
    
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
}

.tabbed-pane-header-tab.measuring {
    visibility: hidden;
}

.tabbed-pane-header-tab.selected {
    background-color: white;
    border: 1px solid rgb(163, 163, 163);
    border-bottom: none;
}

.tabbed-pane-header-tab .close-button-gray {
    position: relative;
    top: 2px;
    left: 1px;
    margin-left: 2px;
    margin-top: -3px;
    visibility: hidden;
}

.tabbed-pane-header-tab:hover .close-button-gray,
.tabbed-pane-header-tab.selected .close-button-gray {
    visibility: visible;
}

.tabbed-pane-header-tabs-drop-down-container {
    float: left;
    position: relative;
    vertical-align: bottom;
    top: 1px;
    padding-left: 3px;
}

.tabbed-pane-header-tabs-drop-down-container.measuring {
    visibility: hidden;
}

.tabbed-pane-header-tabs-drop-down {
    position: relative;
    opacity: 0.7;
    color: rgb(30, 30, 30);
    font-size: 133%;
    padding: 0 3px;
}

.tabbed-pane-header-tabs-drop-down:hover {
    opacity: 1.0;
}

.tabbed-pane-header-tabs-drop-down:active {
    opacity: 0.8;
}

select.tabbed-pane-header-tabs-drop-down-select {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    opacity: 0;
    border: none;
    margin: 0;
    font-size: 75%;
    -webkit-appearance: none;
}
