/*
 * Copyright (C) 2009 Google Inc. All rights reserved.
 * Copyright (C) 2010 Apple 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.
 */

.heap-snapshot-sidebar-tree-item .icon {
    content: url(Images/profileIcon.png);
}

.heap-snapshot-sidebar-tree-item.small .icon {
    content: url(Images/profileSmallIcon.png);
}

.heap-snapshot-view {
    display: none;
    overflow: hidden;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
}

.heap-snapshot-view.visible {
    display: block;
}

.heap-snapshot-view .data-grid {
    border: none;
    max-height: 100%;
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    bottom: 93px;
}

.heap-snapshot-view .data-grid th.count-column {
    text-align: center;
}

.heap-snapshot-view .data-grid td.count-column {
    text-align: right;
}

.heap-snapshot-view .data-grid th.size-column {
    text-align: center;
}

.heap-snapshot-view .data-grid td.size-column {
    text-align: right;
}

.heap-snapshot-view .data-grid th.countDelta-column {
    text-align: center;
}

.heap-snapshot-view .data-grid td.countDelta-column {
    text-align: right;
}

.heap-snapshot-view .data-grid th.sizeDelta-column {
    text-align: center;
}

.heap-snapshot-view .data-grid td.sizeDelta-column {
    text-align: right;
}

#heap-snapshot-summary-container {
    position: absolute;
    padding-top: 20px;
    bottom: 0;
    left: 0;
    right: 0;
    height: 93px;
    margin-left: -1px;
    border-left: 1px solid rgb(102, 102, 102);
    background-color: rgb(101, 111, 130);
    background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));
    background-repeat: repeat-x;
    background-position: top;
    text-align: center;
    text-shadow: black 0 1px 1px;
    white-space: nowrap;
    color: white;
    -webkit-background-size: 1px 6px;
    -webkit-background-origin: padding;
    -webkit-background-clip: padding;
}

.heap-snapshot-summary {
    display: inline-block;
    width: 50%;
    min-width: 300px;
    position: relative;
}

.heap-snapshot-summary canvas.summary-graph {
    width: 225px;
}

.heap-snapshot-summary-label {
    font-size: 12px;
    font-weight: bold;
    position: absolute;
    top: 1px;
    width: 50%;
    left: 25%;
}
