<!-- 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-image-width maybe disables native appearance for checkbox-input</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-image-width.">
<link rel="match" href="../compute-kind-widget-fallback-checkbox-input-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="checkbox-input" type="checkbox">
</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-image-width".split(",");
for (const el of elements) {
  for (const prop of props) {
    el.style.setProperty(prop, getComputedStyle(el).getPropertyValue(prop));
  }
}
</script>
