/*
 * 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.
 */

.find-banner {
    border-bottom: 1px solid var(--border-color);

    position: absolute;
    top: -22px;
    left: 0;
    right: 0;
    height: 22px;

    text-align: right;

    white-space: nowrap;
    overflow: hidden;

    transition-property: top;
    transition-duration: 200ms;
    transition-timing-function: ease-in;

    z-index: var(--z-index-header);

    --find-banner-outer-child-margin: 8px;
}

.find-banner.showing {
    top: 0;
    transition-timing-function: ease-out;
}

.no-find-banner-transition:matches(.find-banner, .supports-find-banner) {
    transition-duration: 0s !important;
}

.supports-find-banner {
    transition-property: top;
    transition-duration: 200ms;
    transition-timing-function: ease-in;
}

.supports-find-banner.showing-find-banner {
    top: 22px !important;
    transition-timing-function: ease-out;
}

.find-banner > :first-child {
    -webkit-margin-start: var(--find-banner-outer-child-margin) !important;
}

.find-banner > :last-child {
    -webkit-margin-end: var(--find-banner-outer-child-margin) !important;
}

.find-banner > input[type="search"] {
    width: 30vw;
    min-width: 143px;
    max-width: 210px;
    height: 19px;
    margin-top: 1px;
    margin-bottom: 1px;
    -webkit-margin-start: 6px;
    -webkit-margin-end: -1px;
    vertical-align: top;
    background-color: white;
    border: 1px solid var(--border-color);
    outline: none;
    -webkit-appearance: none;

    --find-banner-search-box-border-radius-start: 4px;
    --find-banner-search-box-border-radius-end: 0;
}

body[dir=ltr] .find-banner > input[type="search"] {
    border-top-left-radius: var(--find-banner-search-box-border-radius-start);
    border-bottom-left-radius: var(--find-banner-search-box-border-radius-start);
    border-top-right-radius: var(--find-banner-search-box-border-radius-end);
    border-bottom-right-radius: var(--find-banner-search-box-border-radius-end);
}

body[dir=rtl] .find-banner > input[type="search"] {
    border-top-left-radius: var(--find-banner-search-box-border-radius-end);
    border-bottom-left-radius: var(--find-banner-search-box-border-radius-end);
    border-top-right-radius: var(--find-banner-search-box-border-radius-start);
    border-bottom-right-radius: var(--find-banner-search-box-border-radius-start);
}

.find-banner > button {
    margin: 1px 4px;

    padding-left: 6px;
    padding-right: 6px;

    -webkit-appearance: none;

    border-radius: 4px;
    border: 1px solid var(--border-color);
    color: var(--glyph-color);
    background-color: var(--button-background-color);

    line-height: 11px;

    height: 19px;

    text-align: center;
    vertical-align: top;

    outline-offset: -2px;
}

.find-banner > button > .glyph {
    display: inline-block;

    width: 7px;
    height: 11px;
}

.find-banner > button:disabled > .glyph {
    opacity: 0.4;
}

.find-banner > button:active:not(:disabled) {
    border: 1px solid var(--border-color);
    background-color: var(--button-background-color-pressed);
}

.find-banner > button.segmented {
    margin: 1px 0;

    --find-banner-previous-result-border-end: solid 1px var(--border-color);
}

.find-banner > button.segmented.previous-result {
    border-radius: 0;
}

body[dir=ltr] .find-banner > button.segmented.previous-result {
    border-right: var(--find-banner-previous-result-border-end);
}

body[dir=rtl] .find-banner > button.segmented.previous-result {
    border-left: var(--find-banner-previous-result-border-end);
}

body[dir=ltr] .find-banner > button.segmented.previous-result > .glyph {
    background-image: url(../Images/BackForwardArrows.svg#left-arrow-normal);
}

body[dir=rtl] .find-banner > button.segmented.previous-result > .glyph {
    background-image: url(../Images/BackForwardArrows.svg#right-arrow-normal);
}

body[dir=ltr] .find-banner > button.segmented.previous-result:active:not(:disabled) > .glyph {
    background-image: url(../Images/BackForwardArrows.svg#left-arrow-active);
}

body[dir=rtl] .find-banner > button.segmented.previous-result:active:not(:disabled) > .glyph {
    background-image: url(../Images/BackForwardArrows.svg#right-arrow-active);
}

.find-banner > button.segmented.next-result {
    --next-result-border-style-start: none;
    --next-result-border-radius-start: 0;
}

body[dir=ltr] .find-banner > button.segmented.next-result {
    border-top-left-radius: var(--next-result-border-radius-start);
    border-bottom-left-radius: var(--next-result-border-radius-start);
    border-left: var(--next-result-border-style-start);
}

body[dir=rtl] .find-banner > button.segmented.next-result {
    border-top-right-radius: var(--next-result-border-radius-start);
    border-bottom-right-radius: var(--next-result-border-radius-start);
    border-right: var(--next-result-border-style-start);
}

.find-banner > button.segmented.next-result > .glyph {
    -webkit-margin-start: 1px;
}

body[dir=ltr] .find-banner > button.segmented.next-result > .glyph {
    background-image: url(../Images/BackForwardArrows.svg#right-arrow-normal);
}

body[dir=rtl] .find-banner > button.segmented.next-result > .glyph {
    background-image: url(../Images/BackForwardArrows.svg#left-arrow-normal);
}

body[dir=ltr] .find-banner > button.segmented.next-result:active:not(:disabled) > .glyph {
    background-image: url(../Images/BackForwardArrows.svg#right-arrow-active);
}

body[dir=rtl] .find-banner > button.segmented.next-result:active:not(:disabled) > .glyph {
    background-image: url(../Images/BackForwardArrows.svg#left-arrow-active);
}

.find-banner > button.segmented {
    min-width: 22px;
    padding: 3px 6px 2px;
}

.find-banner > button.segmented > .glyph {
    background-size: 7px 11px;
    background-repeat: no-repeat;
}

.find-banner > label {
    margin: 0 6px;
    line-height: 21px;
}

.find-banner.console-find-banner {
    position: relative;
    top: auto;
    border: 0;
}

body .find-banner.console-find-banner {
    flex-wrap: nowrap;
}

.find-banner.console-find-banner > input[type="search"] {
    padding-top: 0;
    outline: none;
    border: 1px solid var(--border-color);

    --console-find-banner-search-box-border-radius-start: 3px;
    --console-find-banner-search-box-border-radius-end: 0;
}

body[dir=ltr] .find-banner.console-find-banner > input[type="search"] {
    border-top-left-radius: var(--console-find-banner-search-box-border-radius-start);
    border-bottom-left-radius: var(--console-find-banner-search-box-border-radius-start);
    border-top-right-radius: var(--console-find-banner-search-box-border-radius-end);
    border-bottom-right-radius: var(--console-find-banner-search-box-border-radius-end);
}

body[dir=rtl] .find-banner.console-find-banner > input[type="search"] {
    border-top-left-radius: var(--console-find-banner-search-box-border-radius-end);
    border-bottom-left-radius: var(--console-find-banner-search-box-border-radius-end);
    border-top-right-radius: var(--console-find-banner-search-box-border-radius-start);
    border-bottom-right-radius: var(--console-find-banner-search-box-border-radius-start);
}

.find-banner.console-find-banner > :matches(input[type="search"], button) {
    background-color: inherit;
    height: 22px;
}

.find-banner.console-find-banner > input[type="search"]::-webkit-textfield-decoration-container {
    -webkit-margin-start: 4px;
}

.find-banner.console-find-banner > input[type="search"]:focus,
.find-banner.console-find-banner > input[type="search"]:focus ~ button,
.find-banner.console-find-banner > input[type="search"]:not(:placeholder-shown),
.find-banner.console-find-banner > input[type="search"]:not(:placeholder-shown) ~ button {
    background-color: var(--background-color);
}

@media (prefers-color-scheme: dark) {
    .find-banner > button.segmented {
        background: transparent !important;
    }

    .find-banner > button.segmented > .glyph {
        filter: invert();
    }

    .find-banner > input[type="search"] {
        background-color: var(--background-color-alternate);
        border-color: var(--background-color-selected);
    }
}
