<!-- DO NOT EDIT. This file has been generated. Source:
    ../tools/build-compute-kind-widget-fallback-props.py
-->
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Basic User Interface Test: Compute kind of widget: border-block-start-width maybe disables native appearance for input-search-text</title>
<link rel="help" href="https://drafts.csswg.org/css-ui-4/#appearance-disabling-properties">
<link rel="help" href="https://html.spec.whatwg.org/#widgets">
<meta name="assert" content="appropriate widget is used when props includes border-block-start-width.">
<link rel="match" href="../compute-kind-widget-fallback-input-search-text-ref.html">
<style>
    #container { width: 500px; }
    /* NOTE: This rule is only used in the search-text-input tests: */
    #container > #search-text-input { appearance: textfield; }
    /* NOTE: This rule is only used in the select-menulist-button tests: */
    #container > #select-menulist-button { appearance: none; appearance: menulist-button; }
</style>

<div id="container">
    <input id="search-text-input" type="search" value="input-search-text">
</div>

<script>
// Set author-level CSS that matches UA style, but don't use the 'revert' value.
const elements = document.querySelectorAll('#container > *');
const props = "border-block-start-width".split(",");
for (const el of elements) {
  for (const prop of props) {
    el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
  }
}
</script>
