/*
 * Copyright (c) 2014 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

.elements-disclosure {
    width: 100%;
    display: inline-block;
    line-height: normal;
}

.elements-disclosure li {
    /** Keep margin-left & padding-left in sync with ElementsTreeElements.updateDecorators **/
    padding: 0 0 0 14px;
    border-top: 1px solid transparent;
    margin-left: -2px;
    word-wrap: break-word;
    position: relative;
    min-height: 15px;
    line-height: 1.36;
}

.elements-disclosure li.parent {
    /** Keep it in sync with ElementsTreeElements.updateDecorators **/
    margin-left: -13px;
}

.elements-disclosure li .selected-hint:before {
    font-style: italic;
    content: " == $0";
    opacity: 0;
    position: absolute;
    white-space: pre;
}

.elements-disclosure .elements-tree-outline:not(.hide-selection-when-blurred) li.selected .selected-hint:before {
    opacity: 0.6;
}

.elements-disclosure li.parent::before {
    box-sizing: border-box;
}

.elements-disclosure li.parent::before {
    user-select: none;
    -webkit-mask-image: url(Images/treeoutlineTriangles.svg);
    -webkit-mask-size: 32px 24px;
    content: '\00a0\00a0';
    color: transparent;
    text-shadow: none;
    margin-right: -3px;
}

.elements-disclosure li.always-parent::before {
    visibility: hidden;
}

.elements-disclosure li.parent::before {
    -webkit-mask-position: 0 0;
    background-color: #727272;
}

.elements-disclosure li .selection {
    display: none;
    z-index: -1;
}

.elements-disclosure li.hovered:not(.selected) .selection {
    display: block;
    left: 3px;
    right: 3px;
    background-color: var(--item-hover-color);
    border-radius: 5px;
}

.elements-disclosure li.parent.expanded::before {
    -webkit-mask-position: -16px 0;
}

.elements-disclosure li.selected .selection {
    display: block;
}

.elements-disclosure .elements-tree-outline:not(.hide-selection-when-blurred) .selection {
    background-color: var(--item-selection-inactive-bg-color);
}

.elements-disclosure .elements-tree-outline.hide-selection-when-blurred .selected:focus[data-keyboard-focus="true"] .highlight > * {
    background: var(--focus-bg-color);
    border-radius: 2px;
    box-shadow: 0px 0px 0px 2px var(--focus-bg-color);
}

.elements-disclosure ol {
    list-style-type: none;
    /** Keep it in sync with ElementsTreeElements.updateDecorators **/
    padding-inline-start: 12px;
    margin: 0;
}

.elements-disclosure ol.children {
    display: none;
}

.elements-disclosure ol.children.expanded {
    display: block;
}

.elements-disclosure li .webkit-html-tag.close {
    margin-left: -12px;
}

.elements-disclosure > ol {
    position: relative;
    margin: 0;
    cursor: default;
    min-width: 100%;
    min-height: 100%;
    padding-left: 2px;
}

.elements-disclosure .elements-tree-outline:not(.hide-selection-when-blurred) li.selected:focus .selection {
    background-color: var(--item-selection-bg-color);
}

.elements-tree-outline ol.shadow-root-depth-4 {
    background-color: rgba(0, 0, 0, 0.04);
}

.elements-tree-outline ol.shadow-root-depth-3 {
    background-color: rgba(0, 0, 0, 0.03);
}

.elements-tree-outline ol.shadow-root-depth-2 {
    background-color: rgba(0, 0, 0, 0.02);
}

.elements-tree-outline ol.shadow-root-depth-1 {
    background-color: rgba(0, 0, 0, 0.01);
}

.elements-tree-outline ol.shadow-root-deep {
    background-color: transparent;
}

.elements-tree-editor {
    box-shadow: var(--drop-shadow);
    margin-right: 4px;
}

.elements-disclosure li.elements-drag-over .selection {
    display: block;
    margin-top: -2px;
    border-top: 2px solid var(--selection-bg-color);
}

.elements-disclosure li.in-clipboard .highlight {
    outline: 1px dotted darkgrey;
}

.CodeMirror {
    background-color: white;
    height: 300px !important;
}

.CodeMirror-lines {
    padding: 0;
}

.CodeMirror pre {
    padding: 0;
}

button, input, select {
  font-family: inherit;
  font-size: inherit;
}

.editing {
    box-shadow: var(--drop-shadow);
    background-color: white;
    text-overflow: clip !important;
    padding-left: 2px;
    margin-left: -2px;
    padding-right: 2px;
    margin-right: -2px;
    margin-bottom: -1px;
    padding-bottom: 1px;
    opacity: 1.0 !important;
}

.editing,
.editing * {
    color: #222 !important;
    text-decoration: none !important;
}

.editing br {
    display: none;
}

.elements-gutter-decoration {
    position: absolute;
    top: 3px;
    left: 2px;
    height: 9px;
    width: 9px;
    border-radius: 5px;
    border: 1px solid orange;
    background-color: orange;
    cursor: pointer;
}

.elements-gutter-decoration.elements-has-decorated-children {
    opacity: 0.5;
}

.add-attribute {
    margin-left: 1px;
    margin-right: 1px;
    white-space: nowrap;
}

.elements-tree-nowrap, .elements-tree-nowrap .li {
    white-space: pre !important;
}

.elements-disclosure .elements-tree-nowrap li {
    word-wrap: normal;
}

/* DOM update highlight */
@-webkit-keyframes dom-update-highlight-animation {
    from {
        background-color: rgb(158, 54, 153);
        color: white;
    }
    80% {
        background-color: rgb(245, 219, 244);
        color: inherit;
    }
    to {
        background-color: inherit;
    }
}

@-webkit-keyframes dom-update-highlight-animation-dark {
    from {
        background-color: rgb(158, 54, 153);
        color: white;
    }
    80% {
        background-color: #333;
        color: inherit;
    }
    to {
        background-color: inherit;
    }
}

.dom-update-highlight {
    -webkit-animation: dom-update-highlight-animation 1.4s 1 cubic-bezier(0, 0, 0.2, 1);
    border-radius: 2px;
}

:host-context(.-theme-with-dark-background) .dom-update-highlight {
    -webkit-animation: dom-update-highlight-animation-dark 1.4s 1 cubic-bezier(0, 0, 0.2, 1);
}

.elements-disclosure.single-node li {
    padding-left: 2px;
}

.elements-tree-shortcut-title, .elements-tree-shortcut-link {
    color: rgb(87, 87, 87);
}

.elements-disclosure .gutter-container {
    position: absolute;
    top: 0;
    left: 0;
    cursor: pointer;
    width: 15px;
    height: 15px;
}

.elements-hide-gutter .gutter-container {
    display: none;
}

.gutter-menu-icon {
    display: block;
    visibility: hidden;
    transform: rotate(-90deg) scale(0.8);
    background-color: white;
    position: relative;
    left: -7px;
    top: -3px;
}

.elements-disclosure li.selected .gutter-container:not(.has-decorations) .gutter-menu-icon {
    visibility: visible;
}

/** Guide line */
li.selected {
    z-index: 0;
}

li.hovered:not(.always-parent) + ol.children, .elements-tree-outline ol.shadow-root, li.selected:not(.always-parent) + ol.children {
    margin-left: 5px;
    padding-inline-start: 6px;
    border-width: 1px;
    border-left-style: solid;
}

li.hovered:not(.always-parent) + ol.children:not(.shadow-root) {
    border-color: hsla(0,0%,0%,0.1);
}

.elements-tree-outline ol.shadow-root {
    border-color: hsla(0,0%,80%,1);
}

li.selected:not(.always-parent) + ol.children {
    border-color: hsla(216,68%,80%,1) !important;
}
