/*
 * Adwaita icons for styling HTML elements
 *
 * Copyright (C) 2020 Igalia S.L.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public License
 * along with this library; see the file COPYING.LIB.  If not, write to
 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301, USA.
 *
 */

input[type="search"]::-webkit-search-results-button,
input[type="search"]::-webkit-search-results-decoration {
    -webkit-appearance: none;
    -webkit-box-shadow: none !important;
    width: 1em;
    height: 1em;
    -webkit-mask-image: url("data:image/svg+xml;utf-8, \
        <svg xmlns='http://www.w3.org/2000/svg' width='16' height='16'> \
          <g color='%23000' font-weight='400' font-family='sans-serif' white-space='normal' fill='black'> \
            <path d='M6.508 1C3.48 1 1.002 3.473 1.002 6.5c0 3.026 2.478 5.5 5.506 5.5s5.504-2.474 5.504-5.5c0-3.027-2.476-5.5-5.504-5.5zm0 2a3.486 3.486 0 0 1 3.504 3.5c0 1.944-1.556 3.5-3.504 3.5a3.488 3.488 0 0 1-3.506-3.5C3.002 4.555 4.56 3 6.508 3z' style='line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none' overflow='visible'/> \
            <path d='M10 8.99a1 1 0 0 0-.695 1.717l4.004 4a1 1 0 1 0 1.414-1.414l-4.004-4A1 1 0 0 0 10 8.99z' style='line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none' overflow='visible'/> \
          </g> \
        </svg>");
    -webkit-mask-size: 1em 1em;
}

input[type="search"]::-webkit-search-cancel-button {
    -webkit-appearance: none;
    -webkit-box-shadow: none !important;
    width: 1em;
    height: 1em;
    -webkit-mask-image: url("data:image/svg+xml;utf-8, \
        <svg xmlns='http://www.w3.org/2000/svg' width='16' height='16'> \
          <path d='M6 2L0 8l6 6h9.035A1.03 1.03 0 0 0 16 13V3c0-.53-.346-1-1.009-1zm1 3h1.031c.255.011.51.129.688.313L10 6.593l1.313-1.28c.265-.231.446-.306.687-.313h1v1c0 .286-.034.55-.25.75l-1.281 1.281 1.25 1.25c.188.188.281.454.281.719v1h-1c-.265 0-.53-.093-.719-.281L10 9.438l-1.281 1.28A1.015 1.015 0 0 1 8 11H7v-1c0-.265.093-.53.281-.719l1.282-1.25L7.28 6.75A.909.909 0 0 1 7 6z' style='marker:none' color='%23000' overflow='visible' fill='black'/> \
        </svg>");
    -webkit-mask-size: 1em 1em;
}

body[dir="rtl"] input[type="search"]::-webkit-search-cancel-button {
    -webkit-appearance: none;
    -webkit-box-shadow: none !important;
    -webkit-mask-image: url("data:image/svg+xml;utf-8, \
        <svg xmlns='http://www.w3.org/2000/svg' width='16' height='16'> \
          <path d='M10 2l6 6-6 6H.965A1.03 1.03 0 0 1 0 13V3c0-.53.346-1 1.009-1zM9 5H7.969a1.04 1.04 0 0 0-.688.313L6 6.593l-1.313-1.28C4.423 5.082 4.242 5.006 4 5H3v1c0 .286.034.55.25.75l1.281 1.281-1.25 1.25A1.015 1.015 0 0 0 3 10v1h1c.265 0 .53-.093.719-.281L6 9.438l1.281 1.28c.188.189.454.282.719.282h1v-1c0-.265-.093-.53-.281-.719l-1.281-1.25 1.28-1.281A.909.909 0 0 0 9 6z' style='marker:none' color='%23000' overflow='visible' fill='black'/> \
        </svg>");
    -webkit-mask-size: 1em 1em;
}

input[type="search"]::-webkit-search-results-button,
input[type="search"]::-webkit-search-results-decoration,
input[type="search"]::-webkit-search-cancel-button {
    background-color: currentColor;
    opacity: .75;
}

input[type="search"]::-webkit-search-results-button:hover,
input[type="search"]::-webkit-search-results-decoration:hover,
input[type="search"]::-webkit-search-cancel-button:hover {
    opacity: 1;
}
