/*
 * Copyright (C) 2012 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:
 *
 *     * Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 *     * 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.
 *     * Neither the name of Google Inc. nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
 * OWNER OR 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.
 */

.indexed-db-data-view .data-view-toolbar {
    position: relative;
    background-color: #eee;
    border-bottom: 1px solid #ccc;
}

.indexed-db-data-view .data-grid {
    flex: auto;
}

.indexed-db-data-view .data-grid .data-container tr:nth-last-child(1) {
    background-color: white;
}

.indexed-db-data-view .data-grid .data-container tr:nth-last-child(1) td {
    border: 0;
}

.indexed-db-data-view .data-grid .data-container tr:nth-last-child(2) td {
    border-bottom: 1px solid #aaa;
}

.indexed-db-data-view .data-grid:focus .data-container tr.selected {
    background-color: #cdddf5;
    color: inherit;
}

.indexed-db-data-view .section,
.indexed-db-data-view .section > .header,
.indexed-db-data-view .section > .header .title {
    margin: 0;
    min-height: inherit;
    line-height: inherit;
}

.indexed-db-data-view .data-grid .data-container td .section .header .title {
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
}

.indexed-db-key-path {
    color: rgb(196, 26, 22);
    white-space: pre-wrap;
    unicode-bidi: -webkit-isolate;
}

.source-code.indexed-db-key-path {
    font-size: unset !important;
}

.resources-toolbar {
    padding-right: 10px;
}

.object-store-summary-bar {
    flex: 0 0 27px;
    line-height: 27px;
    padding-left: 5px;
    background-color: #eee;
    border-top: 1px solid #ccc;
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
}
