/*
 * 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 {
    -webkit-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;
}
