/*
 * Copyright (C) 2013 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:
 * 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 APPLE 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 APPLE 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.
 */

.breakpoint-action-block-header {
    margin-bottom: 3px;
}

body[dir=ltr] .breakpoint-action-button-container {
    float: right;
}

body[dir=rtl] .breakpoint-action-button-container {
    float: left;
}

:matches(.breakpoint-action-append-button, .breakpoint-action-remove-button) {
    background-origin: border-box;
    width: 13px;
    height: 13px;
    margin-top: 2px;
    -webkit-margin-start: 5px;
    background-color: transparent;
    border: none;
    opacity: 0.6;
}

.breakpoint-action-append-button {
    background-image: url(../Images/Plus13.svg);
}

.breakpoint-action-remove-button {
    background-image: url(../Images/Minus.svg);
}

.breakpoint-action-block-body {
    margin: 1px 2px 6px 2px;
    padding: 8px;
    width: 100%;
    border-radius: 4px;
    border: 1px solid hsl(0, 0%, 74%);
    background-color: hsla(0, 0%, 87%, 0.95);
    box-shadow: inset 0 0 2px hsl(0, 0%, 78%);
}

.breakpoint-action-block-body > .description {
    margin-top: 6px;
    -webkit-margin-end: 2px;
    text-align: right;
    color: var(--text-color-gray-medium);
}

.breakpoint-action-block-body > input {
    width: 100%;
    text-align: left;
}

.breakpoint-action-eval-editor {
    margin: 2px 0;
    padding: 2px 0 1px 0;
    -webkit-appearance: textfield;
    border: 1px solid hsl(0, 0%, 78%);
    background: white;
}

.breakpoint-action-eval-editor > .CodeMirror {
    width: 336px; /* NOTE: Fixed value, manually tuned to .edit-breakpoint-popover-content.wide width */
    height: auto;
}

.breakpoint-action-eval-editor > .CodeMirror-scroll {
    width: 336px; /* NOTE: Fixed value, manually tuned to .edit-breakpoint-popover-content.wide width */
    overflow: hidden;
}

@media (prefers-color-scheme: dark) {
    .breakpoint-action-block-body {
        border-color: var(--text-color-quaternary);
        background-color: unset;
        box-shadow: unset;
    }

    .breakpoint-action-block-body > .description {
        color: var(--text-color-secondary);
    }

    .breakpoint-action-append-button,
    .breakpoint-action-remove-button {
        filter: invert();
    }

    .breakpoint-action-eval-editor {
        background: var(--background-color-code);
    }
}
