Bug 1215878 - Implement CSS revert keyword. r=heycam,birtles
authorEmilio Cobos Álvarez <emilio@crisal.io>
Thu, 07 Mar 2019 11:59:36 +0000
changeset 520750 1ae26ce1cf090db6b0b19ea7d7eccd42373dd5fa
parent 520749 3815b3ac18232c4a827e2e7d2ad990704ea797e3
child 520751 0d33ffb859fa4e1ea031c3b2cb3274d71d66a0d5
push id10862
push userffxbld-merge
push dateMon, 11 Mar 2019 13:01:11 +0000
treeherdermozilla-beta@a2e7f5c935da [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersheycam, birtles
bugs1215878, 1501530
milestone67.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1215878 - Implement CSS revert keyword. r=heycam,birtles The only fishy bit is the animation stuff. In particular, there are two places where we just mint the revert behavior: * When serializing web-animations keyframes (the custom properties stuff in declaration_block.rs). That codepath is already not sound and I wanted to get rid of it in bug 1501530, but what do I know. * When getting an animation value from a property declaration. At that point we no longer have the CSS rules that apply to the element to compute the right revert value handy. It'd also use the wrong style anyway, I think, given the way StyleBuilder::for_animation works. We _could_ probably get them out of somewhere, but it seems like a whole lot of code reinventing the wheel which is probably not useful, and that Blink and WebKit just cannot implement either since they don't have a rule tree, so it just doesn't seem worth the churn. The custom properties code looks a bit different in order to minimize hash lookups in the common case. FWIW, `revert` for custom properties doesn't seem very useful either, but oh well. Differential Revision: https://phabricator.services.mozilla.com/D21877
devtools/client/inspector/rules/test/browser_rules_completion-new-property_02.js
devtools/client/inspector/rules/test/browser_rules_gridline-names-autocomplete.js
devtools/client/shared/sourceeditor/test/css_autocompletion_tests.json
devtools/server/tests/mochitest/test_css-properties.html
devtools/shared/css/generated/properties-db.js
layout/inspector/tests/test_bug877690.html
layout/style/test/mochitest.ini
layout/style/test/test_revert.html
servo/components/style/custom_properties.rs
servo/components/style/properties/cascade.rs
servo/components/style/properties/declaration_block.rs
servo/components/style/properties/helpers.mako.rs
servo/components/style/properties/helpers/animated_properties.mako.rs
servo/components/style/properties/properties.mako.rs
servo/components/style/rule_tree/mod.rs
servo/components/style/stylesheets/origin.rs
servo/components/style/values/mod.rs
testing/web-platform/meta/css/css-cascade/revert-val-001.html.ini
testing/web-platform/tests/css/css-cascade/revert-val-002.html
testing/web-platform/tests/css/css-cascade/revert-val-003.html
testing/web-platform/tests/css/css-variables/variable-definition-keywords.html
--- a/devtools/client/inspector/rules/test/browser_rules_completion-new-property_02.js
+++ b/devtools/client/inspector/rules/test/browser_rules_completion-new-property_02.js
@@ -26,16 +26,17 @@ const testData = [
   ["VK_TAB", {shiftKey: true}, "display", !OPEN, !SELECTED, CHANGE],
   ["VK_BACK_SPACE", {}, "", !OPEN, !SELECTED, !CHANGE],
   ["o", {}, "overflow", OPEN, SELECTED, !CHANGE],
   ["u", {}, "outline", OPEN, SELECTED, !CHANGE],
   ["VK_DOWN", {}, "outline-color", OPEN, SELECTED, !CHANGE],
   ["VK_TAB", {}, "none", !OPEN, !SELECTED, CHANGE],
   ["r", {}, "rebeccapurple", OPEN, SELECTED, CHANGE],
   ["VK_DOWN", {}, "red", OPEN, SELECTED, CHANGE],
+  ["VK_DOWN", {}, "revert", OPEN, SELECTED, CHANGE],
   ["VK_DOWN", {}, "rgb", OPEN, SELECTED, CHANGE],
   ["VK_DOWN", {}, "rgba", OPEN, SELECTED, CHANGE],
   ["VK_DOWN", {}, "rosybrown", OPEN, SELECTED, CHANGE],
   ["VK_DOWN", {}, "royalblue", OPEN, SELECTED, CHANGE],
   ["VK_RIGHT", {}, "royalblue", !OPEN, !SELECTED, !CHANGE],
   [" ", {}, "royalblue aliceblue", OPEN, SELECTED, CHANGE],
   ["!", {}, "royalblue !important", !OPEN, !SELECTED, CHANGE],
   ["VK_ESCAPE", {}, null, !OPEN, !SELECTED, CHANGE],
--- a/devtools/client/inspector/rules/test/browser_rules_gridline-names-autocomplete.js
+++ b/devtools/client/inspector/rules/test/browser_rules_gridline-names-autocomplete.js
@@ -32,17 +32,18 @@ const newAreaTestData = [
   ["g", {}, "gap", OPEN, SELECTED, !CHANGE],
   ["VK_DOWN", {}, "grid", OPEN, SELECTED, !CHANGE],
   ["VK_DOWN", {}, "grid-area", OPEN, SELECTED, !CHANGE],
   ["VK_TAB", {}, "", !OPEN, !SELECTED, !CHANGE],
   "grid-line-names-updated",
   ["c", {}, "col1-start", OPEN, SELECTED, CHANGE],
   ["VK_BACK_SPACE", {}, "c", !OPEN, !SELECTED, CHANGE],
   ["VK_BACK_SPACE", {}, "", !OPEN, !SELECTED, CHANGE],
-  ["r", {}, "row1-start", OPEN, SELECTED, CHANGE],
+  ["r", {}, "revert", OPEN, SELECTED, CHANGE],
+  ["VK_DOWN", {}, "row1-start", OPEN, SELECTED, CHANGE],
   ["r", {}, "rr", !OPEN, !SELECTED, CHANGE],
   ["VK_BACK_SPACE", {}, "r", !OPEN, !SELECTED, CHANGE],
   ["o", {}, "row1-start", OPEN, SELECTED, CHANGE],
   ["VK_RETURN", {}, "", !OPEN, !SELECTED, CHANGE],
 ];
 
 // Creates a new CSS property value.
 // Checks that grid-row only autocompletes row names.
@@ -52,17 +53,18 @@ const newRowTestData = [
   ["i", {}, "grid", OPEN, SELECTED, !CHANGE],
   ["d", {}, "grid", OPEN, SELECTED, !CHANGE],
   ["-", {}, "grid-area", OPEN, SELECTED, !CHANGE],
   ["r", {}, "grid-row", OPEN, SELECTED, !CHANGE],
   ["VK_RETURN", {}, "", !OPEN, !SELECTED, !CHANGE],
   "grid-line-names-updated",
   ["c", {}, "c", !OPEN, !SELECTED, CHANGE],
   ["VK_BACK_SPACE", {}, "", !OPEN, !SELECTED, CHANGE],
-  ["r", {}, "row1-start", OPEN, SELECTED, CHANGE],
+  ["r", {}, "revert", OPEN, SELECTED, CHANGE],
+  ["VK_DOWN", {}, "row1-start", OPEN, SELECTED, CHANGE],
   ["VK_TAB", {}, "", !OPEN, !SELECTED, CHANGE],
 ];
 
 const TEST_URL = URL_ROOT + "doc_grid_names.html";
 
 add_task(async function() {
   await addTab(TEST_URL);
   const {toolbox, inspector, view} = await openRuleView();
--- a/devtools/client/shared/sourceeditor/test/css_autocompletion_tests.json
+++ b/devtools/client/shared/sourceeditor/test/css_autocompletion_tests.json
@@ -1,16 +1,16 @@
 {
   "description": [
-    "Test states to be tested for css state machine in css-autocompelter.js file.",
+    "Test states to be tested for css state machine in css-autocompleter.js file.",
     "Test cases are of the following format:",
     "[",
     "  [",
     "    line, # The line location of the cursor",
-    "    ch    # The column locaiton of the cursor",
+    "    ch    # The column location of the cursor",
     "  ],",
     "  suggestions # Array of expected results",
     "]"
   ],
   "tests": [
     [[0, 10], []],
     [[4,  7], [".devtools-menulist", ".devtools-toolbarbutton"]],
     [[5,  8], ["-moz-animation", "-moz-animation-delay", "-moz-animation-direction",
@@ -20,17 +20,17 @@
                "-moz-appearance"]],
     [[12, 20], ["none", "number-input"]],
     [[12, 22], ["none"]],
     [[17, 22], ["hsl", "hsla"]],
     [[19, 10], ["background", "background-attachment", "background-blend-mode",
                 "background-clip", "background-color", "background-image",
                 "background-origin", "background-position", "background-position-x",
                 "background-position-y", "background-repeat", "background-size"]],
-    [[21,  9], ["auto", "inherit", "initial","unset"]],
+    [[21,  9], ["auto", "inherit", "initial", "revert", "unset" ]],
     [[25, 26], [".devtools-toolbarbutton > tab",
                 ".devtools-toolbarbutton > hbox",
                 ".devtools-toolbarbutton > .toolbarbutton-menubutton-button"]],
     [[25, 31], [".devtools-toolbarbutton > hbox.toolbarbutton-menubutton-button"]],
     [[29, 20], [".devtools-menulist:after", ".devtools-menulist:active"]],
     [[30, 10], ["#devtools-anotherone", "#devtools-itjustgoeson", "#devtools-menu",
                 "#devtools-okstopitnow", "#devtools-toolbarbutton", "#devtools-yetagain"]],
     [[39, 39], [".devtools-toolbarbutton:not([label]) > tab"]],
--- a/devtools/server/tests/mochitest/test_css-properties.html
+++ b/devtools/server/tests/mochitest/test_css-properties.html
@@ -60,17 +60,17 @@ window.onload = function() {
     ok(cssProperties.isKnown("--foob\\{ar"),
       "A CSS variable with escaped character properly evaluates.");
     ok(cssProperties.isKnown("--fübar"),
       "A CSS variable unicode properly evaluates.");
     ok(!cssProperties.isKnown("--foo bar"),
       "A CSS variable with spaces fails");
 
     is(toSortedString(cssProperties.getValues("margin")),
-       toSortedString(["auto", "inherit", "initial", "unset"]),
+       toSortedString(["auto", "inherit", "initial", "unset", "revert"]),
        "Can get values for the CSS margin.");
     is(cssProperties.getValues("foobar").length, 0,
       "Unknown values return an empty array.");
 
     const bgColorValues = cssProperties.getValues("background-color");
     ok(bgColorValues.includes("blanchedalmond"),
       "A property with color values includes blanchedalmond.");
     ok(bgColorValues.includes("papayawhip"),
--- a/devtools/shared/css/generated/properties-db.js
+++ b/devtools/shared/css/generated/properties-db.js
@@ -44,115 +44,123 @@ exports.CSS_PROPERTIES = {
       "infinite",
       "inherit",
       "initial",
       "linear",
       "none",
       "normal",
       "paused",
       "reverse",
+      "revert",
       "running",
       "step-end",
       "step-start",
       "steps",
       "unset"
     ]
   },
   "-moz-animation-delay": {
     "isInherited": false,
     "subproperties": [
       "animation-delay"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-animation-direction": {
     "isInherited": false,
     "subproperties": [
       "animation-direction"
     ],
     "supports": [],
     "values": [
       "alternate",
       "alternate-reverse",
       "inherit",
       "initial",
       "normal",
       "reverse",
+      "revert",
       "unset"
     ]
   },
   "-moz-animation-duration": {
     "isInherited": false,
     "subproperties": [
       "animation-duration"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-animation-fill-mode": {
     "isInherited": false,
     "subproperties": [
       "animation-fill-mode"
     ],
     "supports": [],
     "values": [
       "backwards",
       "both",
       "forwards",
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "-moz-animation-iteration-count": {
     "isInherited": false,
     "subproperties": [
       "animation-iteration-count"
     ],
     "supports": [],
     "values": [
       "infinite",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-animation-name": {
     "isInherited": false,
     "subproperties": [
       "animation-name"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "-moz-animation-play-state": {
     "isInherited": false,
     "subproperties": [
       "animation-play-state"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "paused",
+      "revert",
       "running",
       "unset"
     ]
   },
   "-moz-animation-timing-function": {
     "isInherited": false,
     "subproperties": [
       "animation-timing-function"
@@ -164,16 +172,17 @@ exports.CSS_PROPERTIES = {
       "cubic-bezier",
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
       "inherit",
       "initial",
       "linear",
+      "revert",
       "step-end",
       "step-start",
       "steps",
       "unset"
     ]
   },
   "-moz-appearance": {
     "isInherited": false,
@@ -257,16 +266,17 @@ exports.CSS_PROPERTIES = {
       "radio",
       "radio-container",
       "radio-label",
       "radiomenuitem",
       "range",
       "range-thumb",
       "resizer",
       "resizerpanel",
+      "revert",
       "scale-horizontal",
       "scale-vertical",
       "scalethumb-horizontal",
       "scalethumb-vertical",
       "scalethumbend",
       "scalethumbstart",
       "scalethumbtick",
       "scrollbar",
@@ -322,16 +332,17 @@ exports.CSS_PROPERTIES = {
     "subproperties": [
       "backface-visibility"
     ],
     "supports": [],
     "values": [
       "hidden",
       "inherit",
       "initial",
+      "revert",
       "unset",
       "visible"
     ]
   },
   "-moz-border-end": {
     "isInherited": false,
     "subproperties": [
       "border-inline-end-color",
@@ -352,16 +363,17 @@ exports.CSS_PROPERTIES = {
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "medium",
       "none",
       "outset",
+      "revert",
       "rgb",
       "rgba",
       "ridge",
       "solid",
       "thick",
       "thin",
       "transparent",
       "unset"
@@ -377,16 +389,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "-moz-border-end-style": {
     "isInherited": false,
@@ -400,31 +413,33 @@ exports.CSS_PROPERTIES = {
       "double",
       "groove",
       "hidden",
       "inherit",
       "initial",
       "inset",
       "none",
       "outset",
+      "revert",
       "ridge",
       "solid",
       "unset"
     ]
   },
   "-moz-border-end-width": {
     "isInherited": false,
     "subproperties": [
       "border-inline-end-width"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "medium",
+      "revert",
       "thick",
       "thin",
       "unset"
     ]
   },
   "-moz-border-image": {
     "isInherited": false,
     "subproperties": [
@@ -454,16 +469,17 @@ exports.CSS_PROPERTIES = {
       "inherit",
       "initial",
       "linear-gradient",
       "none",
       "radial-gradient",
       "repeat",
       "repeating-linear-gradient",
       "repeating-radial-gradient",
+      "revert",
       "round",
       "space",
       "stretch",
       "unset",
       "url"
     ]
   },
   "-moz-border-start": {
@@ -487,16 +503,17 @@ exports.CSS_PROPERTIES = {
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "medium",
       "none",
       "outset",
+      "revert",
       "rgb",
       "rgba",
       "ridge",
       "solid",
       "thick",
       "thin",
       "transparent",
       "unset"
@@ -512,16 +529,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "-moz-border-start-style": {
     "isInherited": false,
@@ -535,31 +553,33 @@ exports.CSS_PROPERTIES = {
       "double",
       "groove",
       "hidden",
       "inherit",
       "initial",
       "inset",
       "none",
       "outset",
+      "revert",
       "ridge",
       "solid",
       "unset"
     ]
   },
   "-moz-border-start-width": {
     "isInherited": false,
     "subproperties": [
       "border-inline-start-width"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "medium",
+      "revert",
       "thick",
       "thin",
       "unset"
     ]
   },
   "-moz-box-align": {
     "isInherited": false,
     "subproperties": [
@@ -567,142 +587,152 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "baseline",
       "center",
       "end",
       "inherit",
       "initial",
+      "revert",
       "start",
       "stretch",
       "unset"
     ]
   },
   "-moz-box-direction": {
     "isInherited": false,
     "subproperties": [
       "-moz-box-direction"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "normal",
       "reverse",
+      "revert",
       "unset"
     ]
   },
   "-moz-box-flex": {
     "isInherited": false,
     "subproperties": [
       "-moz-box-flex"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-box-ordinal-group": {
     "isInherited": false,
     "subproperties": [
       "-moz-box-ordinal-group"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-box-orient": {
     "isInherited": false,
     "subproperties": [
       "-moz-box-orient"
     ],
     "supports": [],
     "values": [
       "block-axis",
       "horizontal",
       "inherit",
       "initial",
       "inline-axis",
+      "revert",
       "unset",
       "vertical"
     ]
   },
   "-moz-box-pack": {
     "isInherited": false,
     "subproperties": [
       "-moz-box-pack"
     ],
     "supports": [],
     "values": [
       "center",
       "end",
       "inherit",
       "initial",
       "justify",
+      "revert",
       "start",
       "unset"
     ]
   },
   "-moz-box-sizing": {
     "isInherited": false,
     "subproperties": [
       "box-sizing"
     ],
     "supports": [],
     "values": [
       "border-box",
       "content-box",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-column-count": {
     "isInherited": false,
     "subproperties": [
       "column-count"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-column-fill": {
     "isInherited": false,
     "subproperties": [
       "column-fill"
     ],
     "supports": [],
     "values": [
       "auto",
       "balance",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-column-gap": {
     "isInherited": false,
     "subproperties": [
       "column-gap"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "-moz-column-rule": {
     "isInherited": false,
     "subproperties": [
       "column-rule-width",
       "column-rule-style",
@@ -722,16 +752,17 @@ exports.CSS_PROPERTIES = {
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "medium",
       "none",
       "outset",
+      "revert",
       "rgb",
       "rgba",
       "ridge",
       "solid",
       "thick",
       "thin",
       "transparent",
       "unset"
@@ -747,16 +778,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "-moz-column-rule-style": {
     "isInherited": false,
@@ -770,325 +802,349 @@ exports.CSS_PROPERTIES = {
       "double",
       "groove",
       "hidden",
       "inherit",
       "initial",
       "inset",
       "none",
       "outset",
+      "revert",
       "ridge",
       "solid",
       "unset"
     ]
   },
   "-moz-column-rule-width": {
     "isInherited": false,
     "subproperties": [
       "column-rule-width"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "medium",
+      "revert",
       "thick",
       "thin",
       "unset"
     ]
   },
   "-moz-column-width": {
     "isInherited": false,
     "subproperties": [
       "column-width"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-columns": {
     "isInherited": false,
     "subproperties": [
       "column-width",
       "column-count"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-context-properties": {
     "isInherited": true,
     "subproperties": [
       "-moz-context-properties"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "-moz-control-character-visibility": {
     "isInherited": true,
     "subproperties": [
       "-moz-control-character-visibility"
     ],
     "supports": [],
     "values": [
       "hidden",
       "inherit",
       "initial",
+      "revert",
       "unset",
       "visible"
     ]
   },
   "-moz-float-edge": {
     "isInherited": false,
     "subproperties": [
       "-moz-float-edge"
     ],
     "supports": [],
     "values": [
       "content-box",
       "inherit",
       "initial",
       "margin-box",
+      "revert",
       "unset"
     ]
   },
   "-moz-font-feature-settings": {
     "isInherited": true,
     "subproperties": [
       "font-feature-settings"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "-moz-font-language-override": {
     "isInherited": true,
     "subproperties": [
       "font-language-override"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "-moz-force-broken-image-icon": {
     "isInherited": false,
     "subproperties": [
       "-moz-force-broken-image-icon"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-hyphens": {
     "isInherited": true,
     "subproperties": [
       "hyphens"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
       "manual",
       "none",
+      "revert",
       "unset"
     ]
   },
   "-moz-image-region": {
     "isInherited": true,
     "subproperties": [
       "-moz-image-region"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
       "rect",
+      "revert",
       "unset"
     ]
   },
   "-moz-margin-end": {
     "isInherited": false,
     "subproperties": [
       "margin-inline-end"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-margin-start": {
     "isInherited": false,
     "subproperties": [
       "margin-inline-start"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-orient": {
     "isInherited": false,
     "subproperties": [
       "-moz-orient"
     ],
     "supports": [],
     "values": [
       "block",
       "horizontal",
       "inherit",
       "initial",
       "inline",
+      "revert",
       "unset",
       "vertical"
     ]
   },
   "-moz-outline-radius": {
     "isInherited": false,
     "subproperties": [
       "-moz-outline-radius-topleft",
       "-moz-outline-radius-topright",
       "-moz-outline-radius-bottomright",
       "-moz-outline-radius-bottomleft"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-outline-radius-bottomleft": {
     "isInherited": false,
     "subproperties": [
       "-moz-outline-radius-bottomleft"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-outline-radius-bottomright": {
     "isInherited": false,
     "subproperties": [
       "-moz-outline-radius-bottomright"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-outline-radius-topleft": {
     "isInherited": false,
     "subproperties": [
       "-moz-outline-radius-topleft"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-outline-radius-topright": {
     "isInherited": false,
     "subproperties": [
       "-moz-outline-radius-topright"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-padding-end": {
     "isInherited": false,
     "subproperties": [
       "padding-inline-end"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-padding-start": {
     "isInherited": false,
     "subproperties": [
       "padding-inline-start"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-perspective": {
     "isInherited": false,
     "subproperties": [
       "perspective"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "-moz-perspective-origin": {
     "isInherited": false,
     "subproperties": [
       "perspective-origin"
     ],
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
       "left",
+      "revert",
       "right",
       "top",
       "unset"
     ]
   },
   "-moz-stack-sizing": {
     "isInherited": false,
     "subproperties": [
@@ -1096,43 +1152,46 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "ignore",
       "ignore-horizontal",
       "ignore-vertical",
       "inherit",
       "initial",
+      "revert",
       "stretch-to-fit",
       "unset"
     ]
   },
   "-moz-tab-size": {
     "isInherited": true,
     "subproperties": [
       "-moz-tab-size"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-text-size-adjust": {
     "isInherited": true,
     "subproperties": [
       "-moz-text-size-adjust"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "-moz-transform": {
     "isInherited": false,
     "subproperties": [
       "transform"
     ],
@@ -1141,16 +1200,17 @@ exports.CSS_PROPERTIES = {
       "accumulatematrix",
       "inherit",
       "initial",
       "interpolatematrix",
       "matrix",
       "matrix3d",
       "none",
       "perspective",
+      "revert",
       "rotate",
       "rotate3d",
       "rotateX",
       "rotateY",
       "rotateZ",
       "scale",
       "scale3d",
       "scaleX",
@@ -1174,32 +1234,34 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
       "left",
+      "revert",
       "right",
       "top",
       "unset"
     ]
   },
   "-moz-transform-style": {
     "isInherited": false,
     "subproperties": [
       "transform-style"
     ],
     "supports": [],
     "values": [
       "flat",
       "inherit",
       "initial",
       "preserve-3d",
+      "revert",
       "unset"
     ]
   },
   "-moz-transition": {
     "isInherited": false,
     "subproperties": [
       "transition-property",
       "transition-duration",
@@ -1215,57 +1277,61 @@ exports.CSS_PROPERTIES = {
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
       "inherit",
       "initial",
       "linear",
       "none",
+      "revert",
       "step-end",
       "step-start",
       "steps",
       "unset"
     ]
   },
   "-moz-transition-delay": {
     "isInherited": false,
     "subproperties": [
       "transition-delay"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-transition-duration": {
     "isInherited": false,
     "subproperties": [
       "transition-duration"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-moz-transition-property": {
     "isInherited": false,
     "subproperties": [
       "transition-property"
     ],
     "supports": [],
     "values": [
       "all",
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "-moz-transition-timing-function": {
     "isInherited": false,
     "subproperties": [
       "transition-timing-function"
     ],
@@ -1276,16 +1342,17 @@ exports.CSS_PROPERTIES = {
       "cubic-bezier",
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
       "inherit",
       "initial",
       "linear",
+      "revert",
       "step-end",
       "step-start",
       "steps",
       "unset"
     ]
   },
   "-moz-user-focus": {
     "isInherited": true,
@@ -1294,16 +1361,17 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "ignore",
       "inherit",
       "initial",
       "none",
       "normal",
+      "revert",
       "select-after",
       "select-all",
       "select-before",
       "select-menu",
       "select-same",
       "unset"
     ]
   },
@@ -1313,30 +1381,32 @@ exports.CSS_PROPERTIES = {
       "-moz-user-input"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "-moz-user-modify": {
     "isInherited": true,
     "subproperties": [
       "-moz-user-modify"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "read-only",
       "read-write",
+      "revert",
       "unset",
       "write-only"
     ]
   },
   "-moz-user-select": {
     "isInherited": false,
     "subproperties": [
       "-moz-user-select"
@@ -1344,32 +1414,34 @@ exports.CSS_PROPERTIES = {
     "supports": [],
     "values": [
       "-moz-none",
       "all",
       "auto",
       "inherit",
       "initial",
       "none",
+      "revert",
       "text",
       "unset"
     ]
   },
   "-moz-window-dragging": {
     "isInherited": false,
     "subproperties": [
       "-moz-window-dragging"
     ],
     "supports": [],
     "values": [
       "default",
       "drag",
       "inherit",
       "initial",
       "no-drag",
+      "revert",
       "unset"
     ]
   },
   "-webkit-align-content": {
     "isInherited": false,
     "subproperties": [
       "align-content"
     ],
@@ -1380,16 +1452,17 @@ exports.CSS_PROPERTIES = {
       "end",
       "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
       "normal",
+      "revert",
       "safe",
       "space-around",
       "space-between",
       "space-evenly",
       "start",
       "stretch",
       "unsafe",
       "unset"
@@ -1407,16 +1480,17 @@ exports.CSS_PROPERTIES = {
       "end",
       "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
       "normal",
+      "revert",
       "safe",
       "self-end",
       "self-start",
       "start",
       "stretch",
       "unsafe",
       "unset"
     ]
@@ -1434,16 +1508,17 @@ exports.CSS_PROPERTIES = {
       "end",
       "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
       "normal",
+      "revert",
       "safe",
       "self-end",
       "self-start",
       "start",
       "stretch",
       "unsafe",
       "unset"
     ]
@@ -1477,115 +1552,123 @@ exports.CSS_PROPERTIES = {
       "infinite",
       "inherit",
       "initial",
       "linear",
       "none",
       "normal",
       "paused",
       "reverse",
+      "revert",
       "running",
       "step-end",
       "step-start",
       "steps",
       "unset"
     ]
   },
   "-webkit-animation-delay": {
     "isInherited": false,
     "subproperties": [
       "animation-delay"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-webkit-animation-direction": {
     "isInherited": false,
     "subproperties": [
       "animation-direction"
     ],
     "supports": [],
     "values": [
       "alternate",
       "alternate-reverse",
       "inherit",
       "initial",
       "normal",
       "reverse",
+      "revert",
       "unset"
     ]
   },
   "-webkit-animation-duration": {
     "isInherited": false,
     "subproperties": [
       "animation-duration"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-webkit-animation-fill-mode": {
     "isInherited": false,
     "subproperties": [
       "animation-fill-mode"
     ],
     "supports": [],
     "values": [
       "backwards",
       "both",
       "forwards",
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "-webkit-animation-iteration-count": {
     "isInherited": false,
     "subproperties": [
       "animation-iteration-count"
     ],
     "supports": [],
     "values": [
       "infinite",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-webkit-animation-name": {
     "isInherited": false,
     "subproperties": [
       "animation-name"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "-webkit-animation-play-state": {
     "isInherited": false,
     "subproperties": [
       "animation-play-state"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "paused",
+      "revert",
       "running",
       "unset"
     ]
   },
   "-webkit-animation-timing-function": {
     "isInherited": false,
     "subproperties": [
       "animation-timing-function"
@@ -1597,16 +1680,17 @@ exports.CSS_PROPERTIES = {
       "cubic-bezier",
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
       "inherit",
       "initial",
       "linear",
+      "revert",
       "step-end",
       "step-start",
       "steps",
       "unset"
     ]
   },
   "-webkit-appearance": {
     "isInherited": false,
@@ -1690,16 +1774,17 @@ exports.CSS_PROPERTIES = {
       "radio",
       "radio-container",
       "radio-label",
       "radiomenuitem",
       "range",
       "range-thumb",
       "resizer",
       "resizerpanel",
+      "revert",
       "scale-horizontal",
       "scale-vertical",
       "scalethumb-horizontal",
       "scalethumb-vertical",
       "scalethumbend",
       "scalethumbstart",
       "scalethumbtick",
       "scrollbar",
@@ -1755,87 +1840,93 @@ exports.CSS_PROPERTIES = {
     "subproperties": [
       "backface-visibility"
     ],
     "supports": [],
     "values": [
       "hidden",
       "inherit",
       "initial",
+      "revert",
       "unset",
       "visible"
     ]
   },
   "-webkit-background-clip": {
     "isInherited": false,
     "subproperties": [
       "background-clip"
     ],
     "supports": [],
     "values": [
       "border-box",
       "content-box",
       "inherit",
       "initial",
       "padding-box",
+      "revert",
       "text",
       "unset"
     ]
   },
   "-webkit-background-origin": {
     "isInherited": false,
     "subproperties": [
       "background-origin"
     ],
     "supports": [],
     "values": [
       "border-box",
       "content-box",
       "inherit",
       "initial",
       "padding-box",
+      "revert",
       "unset"
     ]
   },
   "-webkit-background-size": {
     "isInherited": false,
     "subproperties": [
       "background-size"
     ],
     "supports": [],
     "values": [
       "auto",
       "contain",
       "cover",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-webkit-border-bottom-left-radius": {
     "isInherited": false,
     "subproperties": [
       "border-bottom-left-radius"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-webkit-border-bottom-right-radius": {
     "isInherited": false,
     "subproperties": [
       "border-bottom-right-radius"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-webkit-border-image": {
     "isInherited": false,
     "subproperties": [
       "border-image-outset",
       "border-image-repeat",
@@ -1863,16 +1954,17 @@ exports.CSS_PROPERTIES = {
       "inherit",
       "initial",
       "linear-gradient",
       "none",
       "radial-gradient",
       "repeat",
       "repeating-linear-gradient",
       "repeating-radial-gradient",
+      "revert",
       "round",
       "space",
       "stretch",
       "unset",
       "url"
     ]
   },
   "-webkit-border-radius": {
@@ -1882,126 +1974,135 @@ exports.CSS_PROPERTIES = {
       "border-top-right-radius",
       "border-bottom-right-radius",
       "border-bottom-left-radius"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-webkit-border-top-left-radius": {
     "isInherited": false,
     "subproperties": [
       "border-top-left-radius"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-webkit-border-top-right-radius": {
     "isInherited": false,
     "subproperties": [
       "border-top-right-radius"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-webkit-box-align": {
     "isInherited": false,
     "subproperties": [
       "-moz-box-align"
     ],
     "supports": [],
     "values": [
       "baseline",
       "center",
       "end",
       "inherit",
       "initial",
+      "revert",
       "start",
       "stretch",
       "unset"
     ]
   },
   "-webkit-box-direction": {
     "isInherited": false,
     "subproperties": [
       "-moz-box-direction"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "normal",
       "reverse",
+      "revert",
       "unset"
     ]
   },
   "-webkit-box-flex": {
     "isInherited": false,
     "subproperties": [
       "-moz-box-flex"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-webkit-box-ordinal-group": {
     "isInherited": false,
     "subproperties": [
       "-moz-box-ordinal-group"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-webkit-box-orient": {
     "isInherited": false,
     "subproperties": [
       "-moz-box-orient"
     ],
     "supports": [],
     "values": [
       "block-axis",
       "horizontal",
       "inherit",
       "initial",
       "inline-axis",
+      "revert",
       "unset",
       "vertical"
     ]
   },
   "-webkit-box-pack": {
     "isInherited": false,
     "subproperties": [
       "-moz-box-pack"
     ],
     "supports": [],
     "values": [
       "center",
       "end",
       "inherit",
       "initial",
       "justify",
+      "revert",
       "start",
       "unset"
     ]
   },
   "-webkit-box-shadow": {
     "isInherited": false,
     "subproperties": [
       "box-shadow"
@@ -2013,16 +2114,17 @@ exports.CSS_PROPERTIES = {
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "none",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "-webkit-box-sizing": {
     "isInherited": false,
@@ -2030,16 +2132,17 @@ exports.CSS_PROPERTIES = {
       "box-sizing"
     ],
     "supports": [],
     "values": [
       "border-box",
       "content-box",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-webkit-filter": {
     "isInherited": false,
     "subproperties": [
       "filter"
     ],
@@ -2051,16 +2154,17 @@ exports.CSS_PROPERTIES = {
       "drop-shadow",
       "grayscale",
       "hue-rotate",
       "inherit",
       "initial",
       "invert",
       "none",
       "opacity",
+      "revert",
       "saturate",
       "sepia",
       "unset",
       "url"
     ]
   },
   "-webkit-flex": {
     "isInherited": false,
@@ -2076,16 +2180,17 @@ exports.CSS_PROPERTIES = {
       "-moz-max-content",
       "-moz-min-content",
       "auto",
       "content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
+      "revert",
       "unset"
     ]
   },
   "-webkit-flex-basis": {
     "isInherited": false,
     "subproperties": [
       "flex-basis"
     ],
@@ -2096,30 +2201,32 @@ exports.CSS_PROPERTIES = {
       "-moz-max-content",
       "-moz-min-content",
       "auto",
       "content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
+      "revert",
       "unset"
     ]
   },
   "-webkit-flex-direction": {
     "isInherited": false,
     "subproperties": [
       "flex-direction"
     ],
     "supports": [],
     "values": [
       "column",
       "column-reverse",
       "inherit",
       "initial",
+      "revert",
       "row",
       "row-reverse",
       "unset"
     ]
   },
   "-webkit-flex-flow": {
     "isInherited": false,
     "subproperties": [
@@ -2128,57 +2235,61 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "column",
       "column-reverse",
       "inherit",
       "initial",
       "nowrap",
+      "revert",
       "row",
       "row-reverse",
       "unset",
       "wrap",
       "wrap-reverse"
     ]
   },
   "-webkit-flex-grow": {
     "isInherited": false,
     "subproperties": [
       "flex-grow"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-webkit-flex-shrink": {
     "isInherited": false,
     "subproperties": [
       "flex-shrink"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-webkit-flex-wrap": {
     "isInherited": false,
     "subproperties": [
       "flex-wrap"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "nowrap",
+      "revert",
       "unset",
       "wrap",
       "wrap-reverse"
     ]
   },
   "-webkit-justify-content": {
     "isInherited": false,
     "subproperties": [
@@ -2189,16 +2300,17 @@ exports.CSS_PROPERTIES = {
       "center",
       "end",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "left",
       "normal",
+      "revert",
       "right",
       "safe",
       "space-around",
       "space-between",
       "space-evenly",
       "start",
       "stretch",
       "unsafe",
@@ -2256,16 +2368,17 @@ exports.CSS_PROPERTIES = {
       "none",
       "padding-box",
       "radial-gradient",
       "repeat",
       "repeat-x",
       "repeat-y",
       "repeating-linear-gradient",
       "repeating-radial-gradient",
+      "revert",
       "right",
       "round",
       "space",
       "stroke-box",
       "subtract",
       "top",
       "unset",
       "url",
@@ -2281,16 +2394,17 @@ exports.CSS_PROPERTIES = {
     "values": [
       "border-box",
       "content-box",
       "fill-box",
       "inherit",
       "initial",
       "no-clip",
       "padding-box",
+      "revert",
       "stroke-box",
       "unset",
       "view-box"
     ]
   },
   "-webkit-mask-composite": {
     "isInherited": false,
     "subproperties": [
@@ -2298,16 +2412,17 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "add",
       "exclude",
       "inherit",
       "initial",
       "intersect",
+      "revert",
       "subtract",
       "unset"
     ]
   },
   "-webkit-mask-image": {
     "isInherited": false,
     "subproperties": [
       "mask-image"
@@ -2329,16 +2444,17 @@ exports.CSS_PROPERTIES = {
       "-webkit-repeating-radial-gradient",
       "inherit",
       "initial",
       "linear-gradient",
       "none",
       "radial-gradient",
       "repeating-linear-gradient",
       "repeating-radial-gradient",
+      "revert",
       "unset",
       "url"
     ]
   },
   "-webkit-mask-origin": {
     "isInherited": false,
     "subproperties": [
       "mask-origin"
@@ -2346,16 +2462,17 @@ exports.CSS_PROPERTIES = {
     "supports": [],
     "values": [
       "border-box",
       "content-box",
       "fill-box",
       "inherit",
       "initial",
       "padding-box",
+      "revert",
       "stroke-box",
       "unset",
       "view-box"
     ]
   },
   "-webkit-mask-position": {
     "isInherited": false,
     "subproperties": [
@@ -2364,47 +2481,50 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
       "left",
+      "revert",
       "right",
       "top",
       "unset"
     ]
   },
   "-webkit-mask-position-x": {
     "isInherited": false,
     "subproperties": [
       "mask-position-x"
     ],
     "supports": [],
     "values": [
       "center",
       "inherit",
       "initial",
       "left",
+      "revert",
       "right",
       "unset"
     ]
   },
   "-webkit-mask-position-y": {
     "isInherited": false,
     "subproperties": [
       "mask-position-y"
     ],
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
+      "revert",
       "top",
       "unset"
     ]
   },
   "-webkit-mask-repeat": {
     "isInherited": false,
     "subproperties": [
       "mask-repeat"
@@ -2412,16 +2532,17 @@ exports.CSS_PROPERTIES = {
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "no-repeat",
       "repeat",
       "repeat-x",
       "repeat-y",
+      "revert",
       "round",
       "space",
       "unset"
     ]
   },
   "-webkit-mask-size": {
     "isInherited": false,
     "subproperties": [
@@ -2429,56 +2550,60 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "auto",
       "contain",
       "cover",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-webkit-order": {
     "isInherited": false,
     "subproperties": [
       "order"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-webkit-perspective": {
     "isInherited": false,
     "subproperties": [
       "perspective"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "-webkit-perspective-origin": {
     "isInherited": false,
     "subproperties": [
       "perspective-origin"
     ],
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
       "left",
+      "revert",
       "right",
       "top",
       "unset"
     ]
   },
   "-webkit-text-fill-color": {
     "isInherited": true,
     "subproperties": [
@@ -2489,16 +2614,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "-webkit-text-size-adjust": {
     "isInherited": true,
@@ -2506,16 +2632,17 @@ exports.CSS_PROPERTIES = {
       "-moz-text-size-adjust"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "-webkit-text-stroke": {
     "isInherited": true,
     "subproperties": [
       "-webkit-text-stroke-width",
       "-webkit-text-stroke-color"
@@ -2526,16 +2653,17 @@ exports.CSS_PROPERTIES = {
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "medium",
+      "revert",
       "rgb",
       "rgba",
       "thick",
       "thin",
       "transparent",
       "unset"
     ]
   },
@@ -2549,32 +2677,34 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "-webkit-text-stroke-width": {
     "isInherited": true,
     "subproperties": [
       "-webkit-text-stroke-width"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "medium",
+      "revert",
       "thick",
       "thin",
       "unset"
     ]
   },
   "-webkit-transform": {
     "isInherited": false,
     "subproperties": [
@@ -2585,16 +2715,17 @@ exports.CSS_PROPERTIES = {
       "accumulatematrix",
       "inherit",
       "initial",
       "interpolatematrix",
       "matrix",
       "matrix3d",
       "none",
       "perspective",
+      "revert",
       "rotate",
       "rotate3d",
       "rotateX",
       "rotateY",
       "rotateZ",
       "scale",
       "scale3d",
       "scaleX",
@@ -2618,32 +2749,34 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
       "left",
+      "revert",
       "right",
       "top",
       "unset"
     ]
   },
   "-webkit-transform-style": {
     "isInherited": false,
     "subproperties": [
       "transform-style"
     ],
     "supports": [],
     "values": [
       "flat",
       "inherit",
       "initial",
       "preserve-3d",
+      "revert",
       "unset"
     ]
   },
   "-webkit-transition": {
     "isInherited": false,
     "subproperties": [
       "transition-property",
       "transition-duration",
@@ -2659,57 +2792,61 @@ exports.CSS_PROPERTIES = {
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
       "inherit",
       "initial",
       "linear",
       "none",
+      "revert",
       "step-end",
       "step-start",
       "steps",
       "unset"
     ]
   },
   "-webkit-transition-delay": {
     "isInherited": false,
     "subproperties": [
       "transition-delay"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-webkit-transition-duration": {
     "isInherited": false,
     "subproperties": [
       "transition-duration"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "-webkit-transition-property": {
     "isInherited": false,
     "subproperties": [
       "transition-property"
     ],
     "supports": [],
     "values": [
       "all",
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "-webkit-transition-timing-function": {
     "isInherited": false,
     "subproperties": [
       "transition-timing-function"
     ],
@@ -2720,16 +2857,17 @@ exports.CSS_PROPERTIES = {
       "cubic-bezier",
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
       "inherit",
       "initial",
       "linear",
+      "revert",
       "step-end",
       "step-start",
       "steps",
       "unset"
     ]
   },
   "-webkit-user-select": {
     "isInherited": false,
@@ -2739,16 +2877,17 @@ exports.CSS_PROPERTIES = {
     "supports": [],
     "values": [
       "-moz-none",
       "all",
       "auto",
       "inherit",
       "initial",
       "none",
+      "revert",
       "text",
       "unset"
     ]
   },
   "align-content": {
     "isInherited": false,
     "subproperties": [
       "align-content"
@@ -2760,16 +2899,17 @@ exports.CSS_PROPERTIES = {
       "end",
       "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
       "normal",
+      "revert",
       "safe",
       "space-around",
       "space-between",
       "space-evenly",
       "start",
       "stretch",
       "unsafe",
       "unset"
@@ -2787,16 +2927,17 @@ exports.CSS_PROPERTIES = {
       "end",
       "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
       "normal",
+      "revert",
       "safe",
       "self-end",
       "self-start",
       "start",
       "stretch",
       "unsafe",
       "unset"
     ]
@@ -2814,16 +2955,17 @@ exports.CSS_PROPERTIES = {
       "end",
       "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
       "normal",
+      "revert",
       "safe",
       "self-end",
       "self-start",
       "start",
       "stretch",
       "unsafe",
       "unset"
     ]
@@ -3165,16 +3307,17 @@ exports.CSS_PROPERTIES = {
       "-moz-box-pack",
       "-moz-stack-sizing",
       "-moz-box-ordinal-group"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "animation": {
     "isInherited": false,
     "subproperties": [
       "animation-name",
       "animation-duration",
@@ -3202,115 +3345,123 @@ exports.CSS_PROPERTIES = {
       "infinite",
       "inherit",
       "initial",
       "linear",
       "none",
       "normal",
       "paused",
       "reverse",
+      "revert",
       "running",
       "step-end",
       "step-start",
       "steps",
       "unset"
     ]
   },
   "animation-delay": {
     "isInherited": false,
     "subproperties": [
       "animation-delay"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "animation-direction": {
     "isInherited": false,
     "subproperties": [
       "animation-direction"
     ],
     "supports": [],
     "values": [
       "alternate",
       "alternate-reverse",
       "inherit",
       "initial",
       "normal",
       "reverse",
+      "revert",
       "unset"
     ]
   },
   "animation-duration": {
     "isInherited": false,
     "subproperties": [
       "animation-duration"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "animation-fill-mode": {
     "isInherited": false,
     "subproperties": [
       "animation-fill-mode"
     ],
     "supports": [],
     "values": [
       "backwards",
       "both",
       "forwards",
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "animation-iteration-count": {
     "isInherited": false,
     "subproperties": [
       "animation-iteration-count"
     ],
     "supports": [],
     "values": [
       "infinite",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "animation-name": {
     "isInherited": false,
     "subproperties": [
       "animation-name"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "animation-play-state": {
     "isInherited": false,
     "subproperties": [
       "animation-play-state"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "paused",
+      "revert",
       "running",
       "unset"
     ]
   },
   "animation-timing-function": {
     "isInherited": false,
     "subproperties": [
       "animation-timing-function"
@@ -3322,32 +3473,34 @@ exports.CSS_PROPERTIES = {
       "cubic-bezier",
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
       "inherit",
       "initial",
       "linear",
+      "revert",
       "step-end",
       "step-start",
       "steps",
       "unset"
     ]
   },
   "backface-visibility": {
     "isInherited": false,
     "subproperties": [
       "backface-visibility"
     ],
     "supports": [],
     "values": [
       "hidden",
       "inherit",
       "initial",
+      "revert",
       "unset",
       "visible"
     ]
   },
   "background": {
     "isInherited": false,
     "subproperties": [
       "background-color",
@@ -3397,16 +3550,17 @@ exports.CSS_PROPERTIES = {
       "none",
       "padding-box",
       "radial-gradient",
       "repeat",
       "repeat-x",
       "repeat-y",
       "repeating-linear-gradient",
       "repeating-radial-gradient",
+      "revert",
       "rgb",
       "rgba",
       "right",
       "round",
       "scroll",
       "space",
       "text",
       "top",
@@ -3421,16 +3575,17 @@ exports.CSS_PROPERTIES = {
       "background-attachment"
     ],
     "supports": [],
     "values": [
       "fixed",
       "inherit",
       "initial",
       "local",
+      "revert",
       "scroll",
       "unset"
     ]
   },
   "background-blend-mode": {
     "isInherited": false,
     "subproperties": [
       "background-blend-mode"
@@ -3447,16 +3602,17 @@ exports.CSS_PROPERTIES = {
       "hue",
       "inherit",
       "initial",
       "lighten",
       "luminosity",
       "multiply",
       "normal",
       "overlay",
+      "revert",
       "saturation",
       "screen",
       "soft-light",
       "unset"
     ]
   },
   "background-clip": {
     "isInherited": false,
@@ -3465,16 +3621,17 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "border-box",
       "content-box",
       "inherit",
       "initial",
       "padding-box",
+      "revert",
       "text",
       "unset"
     ]
   },
   "background-color": {
     "isInherited": false,
     "subproperties": [
       "background-color"
@@ -3484,16 +3641,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "background-image": {
     "isInherited": false,
@@ -3517,79 +3675,84 @@ exports.CSS_PROPERTIES = {
       "-webkit-repeating-radial-gradient",
       "inherit",
       "initial",
       "linear-gradient",
       "none",
       "radial-gradient",
       "repeating-linear-gradient",
       "repeating-radial-gradient",
+      "revert",
       "unset",
       "url"
     ]
   },
   "background-origin": {
     "isInherited": false,
     "subproperties": [
       "background-origin"
     ],
     "supports": [],
     "values": [
       "border-box",
       "content-box",
       "inherit",
       "initial",
       "padding-box",
+      "revert",
       "unset"
     ]
   },
   "background-position": {
     "isInherited": false,
     "subproperties": [
       "background-position-x",
       "background-position-y"
     ],
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
       "left",
+      "revert",
       "right",
       "top",
       "unset"
     ]
   },
   "background-position-x": {
     "isInherited": false,
     "subproperties": [
       "background-position-x"
     ],
     "supports": [],
     "values": [
       "center",
       "inherit",
       "initial",
       "left",
+      "revert",
       "right",
       "unset"
     ]
   },
   "background-position-y": {
     "isInherited": false,
     "subproperties": [
       "background-position-y"
     ],
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
+      "revert",
       "top",
       "unset"
     ]
   },
   "background-repeat": {
     "isInherited": false,
     "subproperties": [
       "background-repeat"
@@ -3597,16 +3760,17 @@ exports.CSS_PROPERTIES = {
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "no-repeat",
       "repeat",
       "repeat-x",
       "repeat-y",
+      "revert",
       "round",
       "space",
       "unset"
     ]
   },
   "background-size": {
     "isInherited": false,
     "subproperties": [
@@ -3614,16 +3778,17 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "auto",
       "contain",
       "cover",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "block-size": {
     "isInherited": false,
     "subproperties": [
       "block-size"
     ],
@@ -3633,16 +3798,17 @@ exports.CSS_PROPERTIES = {
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "auto",
       "inherit",
       "initial",
       "max-content",
       "min-content",
+      "revert",
       "unset"
     ]
   },
   "border": {
     "isInherited": false,
     "subproperties": [
       "border-top-color",
       "border-top-style",
@@ -3676,16 +3842,17 @@ exports.CSS_PROPERTIES = {
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "medium",
       "none",
       "outset",
+      "revert",
       "rgb",
       "rgba",
       "ridge",
       "solid",
       "thick",
       "thin",
       "transparent",
       "unset"
@@ -3715,16 +3882,17 @@ exports.CSS_PROPERTIES = {
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "medium",
       "none",
       "outset",
+      "revert",
       "rgb",
       "rgba",
       "ridge",
       "solid",
       "thick",
       "thin",
       "transparent",
       "unset"
@@ -3741,16 +3909,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "border-block-end": {
     "isInherited": false,
@@ -3773,16 +3942,17 @@ exports.CSS_PROPERTIES = {
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "medium",
       "none",
       "outset",
+      "revert",
       "rgb",
       "rgba",
       "ridge",
       "solid",
       "thick",
       "thin",
       "transparent",
       "unset"
@@ -3798,16 +3968,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "border-block-end-style": {
     "isInherited": false,
@@ -3821,31 +3992,33 @@ exports.CSS_PROPERTIES = {
       "double",
       "groove",
       "hidden",
       "inherit",
       "initial",
       "inset",
       "none",
       "outset",
+      "revert",
       "ridge",
       "solid",
       "unset"
     ]
   },
   "border-block-end-width": {
     "isInherited": false,
     "subproperties": [
       "border-block-end-width"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "medium",
+      "revert",
       "thick",
       "thin",
       "unset"
     ]
   },
   "border-block-start": {
     "isInherited": false,
     "subproperties": [
@@ -3867,16 +4040,17 @@ exports.CSS_PROPERTIES = {
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "medium",
       "none",
       "outset",
+      "revert",
       "rgb",
       "rgba",
       "ridge",
       "solid",
       "thick",
       "thin",
       "transparent",
       "unset"
@@ -3892,16 +4066,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "border-block-start-style": {
     "isInherited": false,
@@ -3915,31 +4090,33 @@ exports.CSS_PROPERTIES = {
       "double",
       "groove",
       "hidden",
       "inherit",
       "initial",
       "inset",
       "none",
       "outset",
+      "revert",
       "ridge",
       "solid",
       "unset"
     ]
   },
   "border-block-start-width": {
     "isInherited": false,
     "subproperties": [
       "border-block-start-width"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "medium",
+      "revert",
       "thick",
       "thin",
       "unset"
     ]
   },
   "border-block-style": {
     "isInherited": false,
     "subproperties": [
@@ -3953,32 +4130,34 @@ exports.CSS_PROPERTIES = {
       "double",
       "groove",
       "hidden",
       "inherit",
       "initial",
       "inset",
       "none",
       "outset",
+      "revert",
       "ridge",
       "solid",
       "unset"
     ]
   },
   "border-block-width": {
     "isInherited": false,
     "subproperties": [
       "border-block-start-width",
       "border-block-end-width"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "medium",
+      "revert",
       "thick",
       "thin",
       "unset"
     ]
   },
   "border-bottom": {
     "isInherited": false,
     "subproperties": [
@@ -4000,16 +4179,17 @@ exports.CSS_PROPERTIES = {
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "medium",
       "none",
       "outset",
+      "revert",
       "rgb",
       "rgba",
       "ridge",
       "solid",
       "thick",
       "thin",
       "transparent",
       "unset"
@@ -4025,43 +4205,46 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "border-bottom-left-radius": {
     "isInherited": false,
     "subproperties": [
       "border-bottom-left-radius"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "border-bottom-right-radius": {
     "isInherited": false,
     "subproperties": [
       "border-bottom-right-radius"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "border-bottom-style": {
     "isInherited": false,
     "subproperties": [
       "border-bottom-style"
     ],
@@ -4072,46 +4255,49 @@ exports.CSS_PROPERTIES = {
       "double",
       "groove",
       "hidden",
       "inherit",
       "initial",
       "inset",
       "none",
       "outset",
+      "revert",
       "ridge",
       "solid",
       "unset"
     ]
   },
   "border-bottom-width": {
     "isInherited": false,
     "subproperties": [
       "border-bottom-width"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "medium",
+      "revert",
       "thick",
       "thin",
       "unset"
     ]
   },
   "border-collapse": {
     "isInherited": true,
     "subproperties": [
       "border-collapse"
     ],
     "supports": [],
     "values": [
       "collapse",
       "inherit",
       "initial",
+      "revert",
       "separate",
       "unset"
     ]
   },
   "border-color": {
     "isInherited": false,
     "subproperties": [
       "border-top-color",
@@ -4124,43 +4310,46 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "border-end-end-radius": {
     "isInherited": false,
     "subproperties": [
       "border-end-end-radius"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "border-end-start-radius": {
     "isInherited": false,
     "subproperties": [
       "border-end-start-radius"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "border-image": {
     "isInherited": false,
     "subproperties": [
       "border-image-outset",
       "border-image-repeat",
@@ -4188,61 +4377,65 @@ exports.CSS_PROPERTIES = {
       "inherit",
       "initial",
       "linear-gradient",
       "none",
       "radial-gradient",
       "repeat",
       "repeating-linear-gradient",
       "repeating-radial-gradient",
+      "revert",
       "round",
       "space",
       "stretch",
       "unset",
       "url"
     ]
   },
   "border-image-outset": {
     "isInherited": false,
     "subproperties": [
       "border-image-outset"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "border-image-repeat": {
     "isInherited": false,
     "subproperties": [
       "border-image-repeat"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "repeat",
+      "revert",
       "round",
       "space",
       "stretch",
       "unset"
     ]
   },
   "border-image-slice": {
     "isInherited": false,
     "subproperties": [
       "border-image-slice"
     ],
     "supports": [],
     "values": [
       "fill",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "border-image-source": {
     "isInherited": false,
     "subproperties": [
       "border-image-source"
     ],
@@ -4263,30 +4456,32 @@ exports.CSS_PROPERTIES = {
       "-webkit-repeating-radial-gradient",
       "inherit",
       "initial",
       "linear-gradient",
       "none",
       "radial-gradient",
       "repeating-linear-gradient",
       "repeating-radial-gradient",
+      "revert",
       "unset",
       "url"
     ]
   },
   "border-image-width": {
     "isInherited": false,
     "subproperties": [
       "border-image-width"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "border-inline": {
     "isInherited": false,
     "subproperties": [
       "border-inline-start-width",
       "border-inline-end-width",
@@ -4309,16 +4504,17 @@ exports.CSS_PROPERTIES = {
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "medium",
       "none",
       "outset",
+      "revert",
       "rgb",
       "rgba",
       "ridge",
       "solid",
       "thick",
       "thin",
       "transparent",
       "unset"
@@ -4335,16 +4531,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "border-inline-end": {
     "isInherited": false,
@@ -4367,16 +4564,17 @@ exports.CSS_PROPERTIES = {
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "medium",
       "none",
       "outset",
+      "revert",
       "rgb",
       "rgba",
       "ridge",
       "solid",
       "thick",
       "thin",
       "transparent",
       "unset"
@@ -4392,16 +4590,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "border-inline-end-style": {
     "isInherited": false,
@@ -4415,31 +4614,33 @@ exports.CSS_PROPERTIES = {
       "double",
       "groove",
       "hidden",
       "inherit",
       "initial",
       "inset",
       "none",
       "outset",
+      "revert",
       "ridge",
       "solid",
       "unset"
     ]
   },
   "border-inline-end-width": {
     "isInherited": false,
     "subproperties": [
       "border-inline-end-width"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "medium",
+      "revert",
       "thick",
       "thin",
       "unset"
     ]
   },
   "border-inline-start": {
     "isInherited": false,
     "subproperties": [
@@ -4461,16 +4662,17 @@ exports.CSS_PROPERTIES = {
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "medium",
       "none",
       "outset",
+      "revert",
       "rgb",
       "rgba",
       "ridge",
       "solid",
       "thick",
       "thin",
       "transparent",
       "unset"
@@ -4486,16 +4688,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "border-inline-start-style": {
     "isInherited": false,
@@ -4509,31 +4712,33 @@ exports.CSS_PROPERTIES = {
       "double",
       "groove",
       "hidden",
       "inherit",
       "initial",
       "inset",
       "none",
       "outset",
+      "revert",
       "ridge",
       "solid",
       "unset"
     ]
   },
   "border-inline-start-width": {
     "isInherited": false,
     "subproperties": [
       "border-inline-start-width"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "medium",
+      "revert",
       "thick",
       "thin",
       "unset"
     ]
   },
   "border-inline-style": {
     "isInherited": false,
     "subproperties": [
@@ -4547,32 +4752,34 @@ exports.CSS_PROPERTIES = {
       "double",
       "groove",
       "hidden",
       "inherit",
       "initial",
       "inset",
       "none",
       "outset",
+      "revert",
       "ridge",
       "solid",
       "unset"
     ]
   },
   "border-inline-width": {
     "isInherited": false,
     "subproperties": [
       "border-inline-start-width",
       "border-inline-end-width"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "medium",
+      "revert",
       "thick",
       "thin",
       "unset"
     ]
   },
   "border-left": {
     "isInherited": false,
     "subproperties": [
@@ -4594,16 +4801,17 @@ exports.CSS_PROPERTIES = {
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "medium",
       "none",
       "outset",
+      "revert",
       "rgb",
       "rgba",
       "ridge",
       "solid",
       "thick",
       "thin",
       "transparent",
       "unset"
@@ -4619,16 +4827,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "border-left-style": {
     "isInherited": false,
@@ -4642,31 +4851,33 @@ exports.CSS_PROPERTIES = {
       "double",
       "groove",
       "hidden",
       "inherit",
       "initial",
       "inset",
       "none",
       "outset",
+      "revert",
       "ridge",
       "solid",
       "unset"
     ]
   },
   "border-left-width": {
     "isInherited": false,
     "subproperties": [
       "border-left-width"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "medium",
+      "revert",
       "thick",
       "thin",
       "unset"
     ]
   },
   "border-radius": {
     "isInherited": false,
     "subproperties": [
@@ -4674,16 +4885,17 @@ exports.CSS_PROPERTIES = {
       "border-top-right-radius",
       "border-bottom-right-radius",
       "border-bottom-left-radius"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "border-right": {
     "isInherited": false,
     "subproperties": [
       "border-right-color",
       "border-right-style",
@@ -4703,16 +4915,17 @@ exports.CSS_PROPERTIES = {
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "medium",
       "none",
       "outset",
+      "revert",
       "rgb",
       "rgba",
       "ridge",
       "solid",
       "thick",
       "thin",
       "transparent",
       "unset"
@@ -4728,16 +4941,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "border-right-style": {
     "isInherited": false,
@@ -4751,69 +4965,74 @@ exports.CSS_PROPERTIES = {
       "double",
       "groove",
       "hidden",
       "inherit",
       "initial",
       "inset",
       "none",
       "outset",
+      "revert",
       "ridge",
       "solid",
       "unset"
     ]
   },
   "border-right-width": {
     "isInherited": false,
     "subproperties": [
       "border-right-width"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "medium",
+      "revert",
       "thick",
       "thin",
       "unset"
     ]
   },
   "border-spacing": {
     "isInherited": true,
     "subproperties": [
       "border-spacing"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "border-start-end-radius": {
     "isInherited": false,
     "subproperties": [
       "border-start-end-radius"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "border-start-start-radius": {
     "isInherited": false,
     "subproperties": [
       "border-start-start-radius"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "border-style": {
     "isInherited": false,
     "subproperties": [
       "border-top-style",
       "border-right-style",
@@ -4827,16 +5046,17 @@ exports.CSS_PROPERTIES = {
       "double",
       "groove",
       "hidden",
       "inherit",
       "initial",
       "inset",
       "none",
       "outset",
+      "revert",
       "ridge",
       "solid",
       "unset"
     ]
   },
   "border-top": {
     "isInherited": false,
     "subproperties": [
@@ -4858,16 +5078,17 @@ exports.CSS_PROPERTIES = {
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "medium",
       "none",
       "outset",
+      "revert",
       "rgb",
       "rgba",
       "ridge",
       "solid",
       "thick",
       "thin",
       "transparent",
       "unset"
@@ -4883,43 +5104,46 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "border-top-left-radius": {
     "isInherited": false,
     "subproperties": [
       "border-top-left-radius"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "border-top-right-radius": {
     "isInherited": false,
     "subproperties": [
       "border-top-right-radius"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "border-top-style": {
     "isInherited": false,
     "subproperties": [
       "border-top-style"
     ],
@@ -4930,31 +5154,33 @@ exports.CSS_PROPERTIES = {
       "double",
       "groove",
       "hidden",
       "inherit",
       "initial",
       "inset",
       "none",
       "outset",
+      "revert",
       "ridge",
       "solid",
       "unset"
     ]
   },
   "border-top-width": {
     "isInherited": false,
     "subproperties": [
       "border-top-width"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "medium",
+      "revert",
       "thick",
       "thin",
       "unset"
     ]
   },
   "border-width": {
     "isInherited": false,
     "subproperties": [
@@ -4963,44 +5189,47 @@ exports.CSS_PROPERTIES = {
       "border-bottom-width",
       "border-left-width"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "medium",
+      "revert",
       "thick",
       "thin",
       "unset"
     ]
   },
   "bottom": {
     "isInherited": false,
     "subproperties": [
       "bottom"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "box-decoration-break": {
     "isInherited": false,
     "subproperties": [
       "box-decoration-break"
     ],
     "supports": [],
     "values": [
       "clone",
       "inherit",
       "initial",
+      "revert",
       "slice",
       "unset"
     ]
   },
   "box-shadow": {
     "isInherited": false,
     "subproperties": [
       "box-shadow"
@@ -5012,16 +5241,17 @@ exports.CSS_PROPERTIES = {
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "none",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "box-sizing": {
     "isInherited": false,
@@ -5029,16 +5259,17 @@ exports.CSS_PROPERTIES = {
       "box-sizing"
     ],
     "supports": [],
     "values": [
       "border-box",
       "content-box",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "break-after": {
     "isInherited": false,
     "subproperties": [
       "break-after"
     ],
@@ -5046,16 +5277,17 @@ exports.CSS_PROPERTIES = {
     "values": [
       "always",
       "auto",
       "avoid",
       "inherit",
       "initial",
       "left",
       "page",
+      "revert",
       "right",
       "unset"
     ]
   },
   "break-before": {
     "isInherited": false,
     "subproperties": [
       "break-before"
@@ -5064,46 +5296,49 @@ exports.CSS_PROPERTIES = {
     "values": [
       "always",
       "auto",
       "avoid",
       "inherit",
       "initial",
       "left",
       "page",
+      "revert",
       "right",
       "unset"
     ]
   },
   "break-inside": {
     "isInherited": false,
     "subproperties": [
       "break-inside"
     ],
     "supports": [],
     "values": [
       "auto",
       "avoid",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "caption-side": {
     "isInherited": true,
     "subproperties": [
       "caption-side"
     ],
     "supports": [],
     "values": [
       "bottom",
       "bottom-outside",
       "inherit",
       "initial",
       "left",
+      "revert",
       "right",
       "top",
       "top-outside",
       "unset"
     ]
   },
   "caret-color": {
     "isInherited": true,
@@ -5116,16 +5351,17 @@ exports.CSS_PROPERTIES = {
     "values": [
       "COLOR",
       "auto",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "clear": {
     "isInherited": false,
@@ -5136,31 +5372,33 @@ exports.CSS_PROPERTIES = {
     "values": [
       "both",
       "inherit",
       "initial",
       "inline-end",
       "inline-start",
       "left",
       "none",
+      "revert",
       "right",
       "unset"
     ]
   },
   "clip": {
     "isInherited": false,
     "subproperties": [
       "clip"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
       "rect",
+      "revert",
       "unset"
     ]
   },
   "clip-path": {
     "isInherited": false,
     "subproperties": [
       "clip-path"
     ],
@@ -5174,16 +5412,17 @@ exports.CSS_PROPERTIES = {
       "inherit",
       "initial",
       "inset",
       "margin-box",
       "none",
       "padding-box",
       "path",
       "polygon",
+      "revert",
       "stroke-box",
       "unset",
       "url",
       "view-box"
     ]
   },
   "clip-rule": {
     "isInherited": true,
@@ -5191,16 +5430,17 @@ exports.CSS_PROPERTIES = {
       "clip-rule"
     ],
     "supports": [],
     "values": [
       "evenodd",
       "inherit",
       "initial",
       "nonzero",
+      "revert",
       "unset"
     ]
   },
   "color": {
     "isInherited": true,
     "subproperties": [
       "color"
     ],
@@ -5209,16 +5449,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "color-adjust": {
     "isInherited": true,
@@ -5226,86 +5467,92 @@ exports.CSS_PROPERTIES = {
       "color-adjust"
     ],
     "supports": [],
     "values": [
       "economy",
       "exact",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "color-interpolation": {
     "isInherited": true,
     "subproperties": [
       "color-interpolation"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
       "linearrgb",
+      "revert",
       "srgb",
       "unset"
     ]
   },
   "color-interpolation-filters": {
     "isInherited": true,
     "subproperties": [
       "color-interpolation-filters"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
       "linearrgb",
+      "revert",
       "srgb",
       "unset"
     ]
   },
   "column-count": {
     "isInherited": false,
     "subproperties": [
       "column-count"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "column-fill": {
     "isInherited": false,
     "subproperties": [
       "column-fill"
     ],
     "supports": [],
     "values": [
       "auto",
       "balance",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "column-gap": {
     "isInherited": false,
     "subproperties": [
       "column-gap"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "column-rule": {
     "isInherited": false,
     "subproperties": [
       "column-rule-width",
       "column-rule-style",
@@ -5325,16 +5572,17 @@ exports.CSS_PROPERTIES = {
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "medium",
       "none",
       "outset",
+      "revert",
       "rgb",
       "rgba",
       "ridge",
       "solid",
       "thick",
       "thin",
       "transparent",
       "unset"
@@ -5350,16 +5598,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "column-rule-style": {
     "isInherited": false,
@@ -5373,60 +5622,64 @@ exports.CSS_PROPERTIES = {
       "double",
       "groove",
       "hidden",
       "inherit",
       "initial",
       "inset",
       "none",
       "outset",
+      "revert",
       "ridge",
       "solid",
       "unset"
     ]
   },
   "column-rule-width": {
     "isInherited": false,
     "subproperties": [
       "column-rule-width"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "medium",
+      "revert",
       "thick",
       "thin",
       "unset"
     ]
   },
   "column-width": {
     "isInherited": false,
     "subproperties": [
       "column-width"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "columns": {
     "isInherited": false,
     "subproperties": [
       "column-width",
       "column-count"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "content": {
     "isInherited": false,
     "subproperties": [
       "content"
     ],
@@ -5439,43 +5692,46 @@ exports.CSS_PROPERTIES = {
       "counters",
       "inherit",
       "initial",
       "no-close-quote",
       "no-open-quote",
       "none",
       "normal",
       "open-quote",
+      "revert",
       "unset",
       "url"
     ]
   },
   "counter-increment": {
     "isInherited": false,
     "subproperties": [
       "counter-increment"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "counter-reset": {
     "isInherited": false,
     "subproperties": [
       "counter-reset"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "cursor": {
     "isInherited": true,
     "subproperties": [
       "cursor"
     ],
@@ -5508,16 +5764,17 @@ exports.CSS_PROPERTIES = {
       "no-drop",
       "none",
       "not-allowed",
       "ns-resize",
       "nw-resize",
       "nwse-resize",
       "pointer",
       "progress",
+      "revert",
       "row-resize",
       "s-resize",
       "se-resize",
       "sw-resize",
       "text",
       "unset",
       "url",
       "vertical-text",
@@ -5532,16 +5789,17 @@ exports.CSS_PROPERTIES = {
     "subproperties": [
       "direction"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "ltr",
+      "revert",
       "rtl",
       "unset"
     ]
   },
   "display": {
     "isInherited": false,
     "subproperties": [
       "display"
@@ -5572,16 +5830,17 @@ exports.CSS_PROPERTIES = {
       "initial",
       "inline",
       "inline-block",
       "inline-flex",
       "inline-grid",
       "inline-table",
       "list-item",
       "none",
+      "revert",
       "ruby",
       "ruby-base",
       "ruby-base-container",
       "ruby-text",
       "ruby-text-container",
       "table",
       "table-caption",
       "table-cell",
@@ -5607,32 +5866,34 @@ exports.CSS_PROPERTIES = {
       "hanging",
       "ideographic",
       "inherit",
       "initial",
       "mathematical",
       "middle",
       "no-change",
       "reset-size",
+      "revert",
       "text-after-edge",
       "text-before-edge",
       "unset",
       "use-script"
     ]
   },
   "empty-cells": {
     "isInherited": true,
     "subproperties": [
       "empty-cells"
     ],
     "supports": [],
     "values": [
       "hide",
       "inherit",
       "initial",
+      "revert",
       "show",
       "unset"
     ]
   },
   "fill": {
     "isInherited": true,
     "subproperties": [
       "fill"
@@ -5645,16 +5906,17 @@ exports.CSS_PROPERTIES = {
       "context-fill",
       "context-stroke",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "none",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset",
       "url"
     ]
   },
   "fill-opacity": {
@@ -5663,30 +5925,32 @@ exports.CSS_PROPERTIES = {
       "fill-opacity"
     ],
     "supports": [],
     "values": [
       "context-fill-opacity",
       "context-stroke-opacity",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "fill-rule": {
     "isInherited": true,
     "subproperties": [
       "fill-rule"
     ],
     "supports": [],
     "values": [
       "evenodd",
       "inherit",
       "initial",
       "nonzero",
+      "revert",
       "unset"
     ]
   },
   "filter": {
     "isInherited": false,
     "subproperties": [
       "filter"
     ],
@@ -5698,16 +5962,17 @@ exports.CSS_PROPERTIES = {
       "drop-shadow",
       "grayscale",
       "hue-rotate",
       "inherit",
       "initial",
       "invert",
       "none",
       "opacity",
+      "revert",
       "saturate",
       "sepia",
       "unset",
       "url"
     ]
   },
   "flex": {
     "isInherited": false,
@@ -5723,16 +5988,17 @@ exports.CSS_PROPERTIES = {
       "-moz-max-content",
       "-moz-min-content",
       "auto",
       "content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
+      "revert",
       "unset"
     ]
   },
   "flex-basis": {
     "isInherited": false,
     "subproperties": [
       "flex-basis"
     ],
@@ -5743,30 +6009,32 @@ exports.CSS_PROPERTIES = {
       "-moz-max-content",
       "-moz-min-content",
       "auto",
       "content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
+      "revert",
       "unset"
     ]
   },
   "flex-direction": {
     "isInherited": false,
     "subproperties": [
       "flex-direction"
     ],
     "supports": [],
     "values": [
       "column",
       "column-reverse",
       "inherit",
       "initial",
+      "revert",
       "row",
       "row-reverse",
       "unset"
     ]
   },
   "flex-flow": {
     "isInherited": false,
     "subproperties": [
@@ -5775,57 +6043,61 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "column",
       "column-reverse",
       "inherit",
       "initial",
       "nowrap",
+      "revert",
       "row",
       "row-reverse",
       "unset",
       "wrap",
       "wrap-reverse"
     ]
   },
   "flex-grow": {
     "isInherited": false,
     "subproperties": [
       "flex-grow"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "flex-shrink": {
     "isInherited": false,
     "subproperties": [
       "flex-shrink"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "flex-wrap": {
     "isInherited": false,
     "subproperties": [
       "flex-wrap"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "nowrap",
+      "revert",
       "unset",
       "wrap",
       "wrap-reverse"
     ]
   },
   "float": {
     "isInherited": false,
     "subproperties": [
@@ -5834,16 +6106,17 @@ exports.CSS_PROPERTIES = {
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "inline-end",
       "inline-start",
       "left",
       "none",
+      "revert",
       "right",
       "unset"
     ]
   },
   "flood-color": {
     "isInherited": false,
     "subproperties": [
       "flood-color"
@@ -5853,31 +6126,33 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "flood-opacity": {
     "isInherited": false,
     "subproperties": [
       "flood-opacity"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "font": {
     "isInherited": true,
     "subproperties": [
       "font-style",
       "font-variant-caps",
@@ -5927,16 +6202,17 @@ exports.CSS_PROPERTIES = {
       "larger",
       "lighter",
       "medium",
       "menu",
       "message-box",
       "normal",
       "oblique",
       "petite-caps",
+      "revert",
       "semi-condensed",
       "semi-expanded",
       "small",
       "small-caps",
       "small-caption",
       "smaller",
       "status-bar",
       "titling-caps",
@@ -5954,86 +6230,92 @@ exports.CSS_PROPERTIES = {
     "isInherited": true,
     "subproperties": [
       "font-family"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "font-feature-settings": {
     "isInherited": true,
     "subproperties": [
       "font-feature-settings"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "font-kerning": {
     "isInherited": true,
     "subproperties": [
       "font-kerning"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
       "none",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "font-language-override": {
     "isInherited": true,
     "subproperties": [
       "font-language-override"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "font-optical-sizing": {
     "isInherited": true,
     "subproperties": [
       "font-optical-sizing"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "font-size": {
     "isInherited": true,
     "subproperties": [
       "font-size"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "large",
       "larger",
       "medium",
+      "revert",
       "small",
       "smaller",
       "unset",
       "x-large",
       "x-small",
       "xx-large",
       "xx-small"
     ]
@@ -6043,16 +6325,17 @@ exports.CSS_PROPERTIES = {
     "subproperties": [
       "font-size-adjust"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "font-stretch": {
     "isInherited": true,
     "subproperties": [
       "font-stretch"
     ],
@@ -6060,16 +6343,17 @@ exports.CSS_PROPERTIES = {
     "values": [
       "condensed",
       "expanded",
       "extra-condensed",
       "extra-expanded",
       "inherit",
       "initial",
       "normal",
+      "revert",
       "semi-condensed",
       "semi-expanded",
       "ultra-condensed",
       "ultra-expanded",
       "unset"
     ]
   },
   "font-style": {
@@ -6079,28 +6363,30 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "italic",
       "normal",
       "oblique",
+      "revert",
       "unset"
     ]
   },
   "font-synthesis": {
     "isInherited": true,
     "subproperties": [
       "font-synthesis"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "style",
       "unset",
       "weight"
     ]
   },
   "font-variant": {
     "isInherited": true,
     "subproperties": [
@@ -6138,16 +6424,17 @@ exports.CSS_PROPERTIES = {
       "none",
       "normal",
       "oldstyle-nums",
       "ordinal",
       "ornaments",
       "petite-caps",
       "proportional-nums",
       "proportional-width",
+      "revert",
       "ruby",
       "simplified",
       "slashed-zero",
       "small-caps",
       "stacked-fractions",
       "styleset",
       "stylistic",
       "sub",
@@ -6169,16 +6456,17 @@ exports.CSS_PROPERTIES = {
     "values": [
       "annotation",
       "character-variant",
       "historical-forms",
       "inherit",
       "initial",
       "normal",
       "ornaments",
+      "revert",
       "styleset",
       "stylistic",
       "swash",
       "unset"
     ]
   },
   "font-variant-caps": {
     "isInherited": true,
@@ -6188,16 +6476,17 @@ exports.CSS_PROPERTIES = {
     "supports": [],
     "values": [
       "all-petite-caps",
       "all-small-caps",
       "inherit",
       "initial",
       "normal",
       "petite-caps",
+      "revert",
       "small-caps",
       "titling-caps",
       "unicase",
       "unset"
     ]
   },
   "font-variant-east-asian": {
     "isInherited": true,
@@ -6210,16 +6499,17 @@ exports.CSS_PROPERTIES = {
       "inherit",
       "initial",
       "jis04",
       "jis78",
       "jis83",
       "jis90",
       "normal",
       "proportional-width",
+      "revert",
       "ruby",
       "simplified",
       "traditional",
       "unset"
     ]
   },
   "font-variant-ligatures": {
     "isInherited": true,
@@ -6235,16 +6525,17 @@ exports.CSS_PROPERTIES = {
       "inherit",
       "initial",
       "no-common-ligatures",
       "no-contextual",
       "no-discretionary-ligatures",
       "no-historical-ligatures",
       "none",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "font-variant-numeric": {
     "isInherited": true,
     "subproperties": [
       "font-variant-numeric"
     ],
@@ -6253,77 +6544,82 @@ exports.CSS_PROPERTIES = {
       "diagonal-fractions",
       "inherit",
       "initial",
       "lining-nums",
       "normal",
       "oldstyle-nums",
       "ordinal",
       "proportional-nums",
+      "revert",
       "slashed-zero",
       "stacked-fractions",
       "tabular-nums",
       "unset"
     ]
   },
   "font-variant-position": {
     "isInherited": true,
     "subproperties": [
       "font-variant-position"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "normal",
+      "revert",
       "sub",
       "super",
       "unset"
     ]
   },
   "font-variation-settings": {
     "isInherited": true,
     "subproperties": [
       "font-variation-settings"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "font-weight": {
     "isInherited": true,
     "subproperties": [
       "font-weight"
     ],
     "supports": [],
     "values": [
       "bold",
       "bolder",
       "inherit",
       "initial",
       "lighter",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "gap": {
     "isInherited": false,
     "subproperties": [
       "row-gap",
       "column-gap"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "grid": {
     "isInherited": false,
     "subproperties": [
       "grid-template-rows",
       "grid-template-columns",
@@ -6340,32 +6636,34 @@ exports.CSS_PROPERTIES = {
       "fit-content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
       "minmax",
       "none",
       "repeat",
+      "revert",
       "row",
       "unset"
     ]
   },
   "grid-area": {
     "isInherited": false,
     "subproperties": [
       "grid-row-start",
       "grid-row-end",
       "grid-column-start",
       "grid-column-end"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "grid-auto-columns": {
     "isInherited": false,
     "subproperties": [
       "grid-auto-columns"
     ],
@@ -6373,30 +6671,32 @@ exports.CSS_PROPERTIES = {
     "values": [
       "auto",
       "fit-content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
       "minmax",
+      "revert",
       "unset"
     ]
   },
   "grid-auto-flow": {
     "isInherited": false,
     "subproperties": [
       "grid-auto-flow"
     ],
     "supports": [],
     "values": [
       "column",
       "dense",
       "inherit",
       "initial",
+      "revert",
       "row",
       "unset"
     ]
   },
   "grid-auto-rows": {
     "isInherited": false,
     "subproperties": [
       "grid-auto-rows"
@@ -6405,130 +6705,140 @@ exports.CSS_PROPERTIES = {
     "values": [
       "auto",
       "fit-content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
       "minmax",
+      "revert",
       "unset"
     ]
   },
   "grid-column": {
     "isInherited": false,
     "subproperties": [
       "grid-column-start",
       "grid-column-end"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "grid-column-end": {
     "isInherited": false,
     "subproperties": [
       "grid-column-end"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "grid-column-gap": {
     "isInherited": false,
     "subproperties": [
       "column-gap"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "grid-column-start": {
     "isInherited": false,
     "subproperties": [
       "grid-column-start"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "grid-gap": {
     "isInherited": false,
     "subproperties": [
       "row-gap",
       "column-gap"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "grid-row": {
     "isInherited": false,
     "subproperties": [
       "grid-row-start",
       "grid-row-end"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "grid-row-end": {
     "isInherited": false,
     "subproperties": [
       "grid-row-end"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "grid-row-gap": {
     "isInherited": false,
     "subproperties": [
       "row-gap"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "grid-row-start": {
     "isInherited": false,
     "subproperties": [
       "grid-row-start"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "grid-template": {
     "isInherited": false,
     "subproperties": [
       "grid-template-rows",
       "grid-template-columns",
@@ -6540,29 +6850,31 @@ exports.CSS_PROPERTIES = {
       "fit-content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
       "minmax",
       "none",
       "repeat",
+      "revert",
       "unset"
     ]
   },
   "grid-template-areas": {
     "isInherited": false,
     "subproperties": [
       "grid-template-areas"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "grid-template-columns": {
     "isInherited": false,
     "subproperties": [
       "grid-template-columns"
     ],
@@ -6572,16 +6884,17 @@ exports.CSS_PROPERTIES = {
       "fit-content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
       "minmax",
       "none",
       "repeat",
+      "revert",
       "unset"
     ]
   },
   "grid-template-rows": {
     "isInherited": false,
     "subproperties": [
       "grid-template-rows"
     ],
@@ -6591,16 +6904,17 @@ exports.CSS_PROPERTIES = {
       "fit-content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
       "minmax",
       "none",
       "repeat",
+      "revert",
       "unset"
     ]
   },
   "height": {
     "isInherited": false,
     "subproperties": [
       "height"
     ],
@@ -6610,45 +6924,48 @@ exports.CSS_PROPERTIES = {
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "auto",
       "inherit",
       "initial",
       "max-content",
       "min-content",
+      "revert",
       "unset"
     ]
   },
   "hyphens": {
     "isInherited": true,
     "subproperties": [
       "hyphens"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
       "manual",
       "none",
+      "revert",
       "unset"
     ]
   },
   "image-orientation": {
     "isInherited": true,
     "subproperties": [
       "image-orientation"
     ],
     "supports": [],
     "values": [
       "from-image",
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "image-rendering": {
     "isInherited": true,
     "subproperties": [
       "image-rendering"
     ],
@@ -6656,16 +6973,17 @@ exports.CSS_PROPERTIES = {
     "values": [
       "-moz-crisp-edges",
       "auto",
       "crisp-edges",
       "inherit",
       "initial",
       "optimizequality",
       "optimizespeed",
+      "revert",
       "unset"
     ]
   },
   "ime-mode": {
     "isInherited": false,
     "subproperties": [
       "ime-mode"
     ],
@@ -6673,16 +6991,17 @@ exports.CSS_PROPERTIES = {
     "values": [
       "active",
       "auto",
       "disabled",
       "inactive",
       "inherit",
       "initial",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "inline-size": {
     "isInherited": false,
     "subproperties": [
       "inline-size"
     ],
@@ -6692,126 +7011,135 @@ exports.CSS_PROPERTIES = {
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "auto",
       "inherit",
       "initial",
       "max-content",
       "min-content",
+      "revert",
       "unset"
     ]
   },
   "inset": {
     "isInherited": false,
     "subproperties": [
       "top",
       "right",
       "bottom",
       "left"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "inset-block": {
     "isInherited": false,
     "subproperties": [
       "inset-block-start",
       "inset-block-end"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "inset-block-end": {
     "isInherited": false,
     "subproperties": [
       "inset-block-end"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "inset-block-start": {
     "isInherited": false,
     "subproperties": [
       "inset-block-start"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "inset-inline": {
     "isInherited": false,
     "subproperties": [
       "inset-inline-start",
       "inset-inline-end"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "inset-inline-end": {
     "isInherited": false,
     "subproperties": [
       "inset-inline-end"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "inset-inline-start": {
     "isInherited": false,
     "subproperties": [
       "inset-inline-start"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "isolation": {
     "isInherited": false,
     "subproperties": [
       "isolation"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
       "isolate",
+      "revert",
       "unset"
     ]
   },
   "justify-content": {
     "isInherited": false,
     "subproperties": [
       "justify-content"
     ],
@@ -6820,16 +7148,17 @@ exports.CSS_PROPERTIES = {
       "center",
       "end",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "left",
       "normal",
+      "revert",
       "right",
       "safe",
       "space-around",
       "space-between",
       "space-evenly",
       "start",
       "stretch",
       "unsafe",
@@ -6850,16 +7179,17 @@ exports.CSS_PROPERTIES = {
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
       "left",
       "legacy",
       "normal",
+      "revert",
       "right",
       "safe",
       "self-end",
       "self-start",
       "start",
       "stretch",
       "unsafe",
       "unset"
@@ -6879,16 +7209,17 @@ exports.CSS_PROPERTIES = {
       "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
       "left",
       "normal",
+      "revert",
       "right",
       "safe",
       "self-end",
       "self-start",
       "start",
       "stretch",
       "unsafe",
       "unset"
@@ -6899,29 +7230,31 @@ exports.CSS_PROPERTIES = {
     "subproperties": [
       "left"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "letter-spacing": {
     "isInherited": true,
     "subproperties": [
       "letter-spacing"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "lighting-color": {
     "isInherited": false,
     "subproperties": [
       "lighting-color"
     ],
@@ -6930,16 +7263,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "line-height": {
     "isInherited": true,
@@ -6947,16 +7281,17 @@ exports.CSS_PROPERTIES = {
       "line-height"
     ],
     "supports": [],
     "values": [
       "-moz-block-height",
       "inherit",
       "initial",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "list-style": {
     "isInherited": true,
     "subproperties": [
       "list-style-position",
       "list-style-image",
@@ -7006,16 +7341,17 @@ exports.CSS_PROPERTIES = {
       "lower-roman",
       "malayalam",
       "mongolian",
       "myanmar",
       "none",
       "oriya",
       "outside",
       "persian",
+      "revert",
       "simp-chinese-formal",
       "simp-chinese-informal",
       "square",
       "symbols",
       "tamil",
       "telugu",
       "thai",
       "tibetan",
@@ -7034,31 +7370,33 @@ exports.CSS_PROPERTIES = {
     "subproperties": [
       "list-style-image"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset",
       "url"
     ]
   },
   "list-style-position": {
     "isInherited": true,
     "subproperties": [
       "list-style-position"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "inside",
       "outside",
+      "revert",
       "unset"
     ]
   },
   "list-style-type": {
     "isInherited": true,
     "subproperties": [
       "list-style-type"
     ],
@@ -7104,16 +7442,17 @@ exports.CSS_PROPERTIES = {
       "lower-latin",
       "lower-roman",
       "malayalam",
       "mongolian",
       "myanmar",
       "none",
       "oriya",
       "persian",
+      "revert",
       "simp-chinese-formal",
       "simp-chinese-informal",
       "square",
       "symbols",
       "tamil",
       "telugu",
       "thai",
       "tibetan",
@@ -7134,205 +7473,220 @@ exports.CSS_PROPERTIES = {
       "margin-bottom",
       "margin-left"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "margin-block": {
     "isInherited": false,
     "subproperties": [
       "margin-block-start",
       "margin-block-end"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "margin-block-end": {
     "isInherited": false,
     "subproperties": [
       "margin-block-end"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "margin-block-start": {
     "isInherited": false,
     "subproperties": [
       "margin-block-start"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "margin-bottom": {
     "isInherited": false,
     "subproperties": [
       "margin-bottom"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "margin-inline": {
     "isInherited": false,
     "subproperties": [
       "margin-inline-start",
       "margin-inline-end"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "margin-inline-end": {
     "isInherited": false,
     "subproperties": [
       "margin-inline-end"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "margin-inline-start": {
     "isInherited": false,
     "subproperties": [
       "margin-inline-start"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "margin-left": {
     "isInherited": false,
     "subproperties": [
       "margin-left"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "margin-right": {
     "isInherited": false,
     "subproperties": [
       "margin-right"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "margin-top": {
     "isInherited": false,
     "subproperties": [
       "margin-top"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "marker": {
     "isInherited": true,
     "subproperties": [
       "marker-start",
       "marker-end",
       "marker-mid"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset",
       "url"
     ]
   },
   "marker-end": {
     "isInherited": true,
     "subproperties": [
       "marker-end"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset",
       "url"
     ]
   },
   "marker-mid": {
     "isInherited": true,
     "subproperties": [
       "marker-mid"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset",
       "url"
     ]
   },
   "marker-start": {
     "isInherited": true,
     "subproperties": [
       "marker-start"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset",
       "url"
     ]
   },
   "mask": {
     "isInherited": false,
     "subproperties": [
       "mask-mode",
@@ -7383,16 +7737,17 @@ exports.CSS_PROPERTIES = {
       "none",
       "padding-box",
       "radial-gradient",
       "repeat",
       "repeat-x",
       "repeat-y",
       "repeating-linear-gradient",
       "repeating-radial-gradient",
+      "revert",
       "right",
       "round",
       "space",
       "stroke-box",
       "subtract",
       "top",
       "unset",
       "url",
@@ -7408,16 +7763,17 @@ exports.CSS_PROPERTIES = {
     "values": [
       "border-box",
       "content-box",
       "fill-box",
       "inherit",
       "initial",
       "no-clip",
       "padding-box",
+      "revert",
       "stroke-box",
       "unset",
       "view-box"
     ]
   },
   "mask-composite": {
     "isInherited": false,
     "subproperties": [
@@ -7425,16 +7781,17 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "add",
       "exclude",
       "inherit",
       "initial",
       "intersect",
+      "revert",
       "subtract",
       "unset"
     ]
   },
   "mask-image": {
     "isInherited": false,
     "subproperties": [
       "mask-image"
@@ -7456,48 +7813,51 @@ exports.CSS_PROPERTIES = {
       "-webkit-repeating-radial-gradient",
       "inherit",
       "initial",
       "linear-gradient",
       "none",
       "radial-gradient",
       "repeating-linear-gradient",
       "repeating-radial-gradient",
+      "revert",
       "unset",
       "url"
     ]
   },
   "mask-mode": {
     "isInherited": false,
     "subproperties": [
       "mask-mode"
     ],
     "supports": [],
     "values": [
       "alpha",
       "inherit",
       "initial",
       "luminance",
       "match-source",
+      "revert",
       "unset"
     ]
   },
   "mask-origin": {
     "isInherited": false,
     "subproperties": [
       "mask-origin"
     ],
     "supports": [],
     "values": [
       "border-box",
       "content-box",
       "fill-box",
       "inherit",
       "initial",
       "padding-box",
+      "revert",
       "stroke-box",
       "unset",
       "view-box"
     ]
   },
   "mask-position": {
     "isInherited": false,
     "subproperties": [
@@ -7506,47 +7866,50 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
       "left",
+      "revert",
       "right",
       "top",
       "unset"
     ]
   },
   "mask-position-x": {
     "isInherited": false,
     "subproperties": [
       "mask-position-x"
     ],
     "supports": [],
     "values": [
       "center",
       "inherit",
       "initial",
       "left",
+      "revert",
       "right",
       "unset"
     ]
   },
   "mask-position-y": {
     "isInherited": false,
     "subproperties": [
       "mask-position-y"
     ],
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
+      "revert",
       "top",
       "unset"
     ]
   },
   "mask-repeat": {
     "isInherited": false,
     "subproperties": [
       "mask-repeat"
@@ -7554,16 +7917,17 @@ exports.CSS_PROPERTIES = {
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "no-repeat",
       "repeat",
       "repeat-x",
       "repeat-y",
+      "revert",
       "round",
       "space",
       "unset"
     ]
   },
   "mask-size": {
     "isInherited": false,
     "subproperties": [
@@ -7571,30 +7935,32 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "auto",
       "contain",
       "cover",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "mask-type": {
     "isInherited": false,
     "subproperties": [
       "mask-type"
     ],
     "supports": [],
     "values": [
       "alpha",
       "inherit",
       "initial",
       "luminance",
+      "revert",
       "unset"
     ]
   },
   "max-block-size": {
     "isInherited": false,
     "subproperties": [
       "max-block-size"
     ],
@@ -7604,16 +7970,17 @@ exports.CSS_PROPERTIES = {
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
       "none",
+      "revert",
       "unset"
     ]
   },
   "max-height": {
     "isInherited": false,
     "subproperties": [
       "max-height"
     ],
@@ -7623,16 +7990,17 @@ exports.CSS_PROPERTIES = {
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
       "none",
+      "revert",
       "unset"
     ]
   },
   "max-inline-size": {
     "isInherited": false,
     "subproperties": [
       "max-inline-size"
     ],
@@ -7642,16 +8010,17 @@ exports.CSS_PROPERTIES = {
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
       "none",
+      "revert",
       "unset"
     ]
   },
   "max-width": {
     "isInherited": false,
     "subproperties": [
       "max-width"
     ],
@@ -7661,16 +8030,17 @@ exports.CSS_PROPERTIES = {
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
       "none",
+      "revert",
       "unset"
     ]
   },
   "min-block-size": {
     "isInherited": false,
     "subproperties": [
       "min-block-size"
     ],
@@ -7680,16 +8050,17 @@ exports.CSS_PROPERTIES = {
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "auto",
       "inherit",
       "initial",
       "max-content",
       "min-content",
+      "revert",
       "unset"
     ]
   },
   "min-height": {
     "isInherited": false,
     "subproperties": [
       "min-height"
     ],
@@ -7699,16 +8070,17 @@ exports.CSS_PROPERTIES = {
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "auto",
       "inherit",
       "initial",
       "max-content",
       "min-content",
+      "revert",
       "unset"
     ]
   },
   "min-inline-size": {
     "isInherited": false,
     "subproperties": [
       "min-inline-size"
     ],
@@ -7718,16 +8090,17 @@ exports.CSS_PROPERTIES = {
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "auto",
       "inherit",
       "initial",
       "max-content",
       "min-content",
+      "revert",
       "unset"
     ]
   },
   "min-width": {
     "isInherited": false,
     "subproperties": [
       "min-width"
     ],
@@ -7737,16 +8110,17 @@ exports.CSS_PROPERTIES = {
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "auto",
       "inherit",
       "initial",
       "max-content",
       "min-content",
+      "revert",
       "unset"
     ]
   },
   "mix-blend-mode": {
     "isInherited": false,
     "subproperties": [
       "mix-blend-mode"
     ],
@@ -7762,16 +8136,17 @@ exports.CSS_PROPERTIES = {
       "hue",
       "inherit",
       "initial",
       "lighten",
       "luminosity",
       "multiply",
       "normal",
       "overlay",
+      "revert",
       "saturation",
       "screen",
       "soft-light",
       "unset"
     ]
   },
   "object-fit": {
     "isInherited": false,
@@ -7781,72 +8156,77 @@ exports.CSS_PROPERTIES = {
     "supports": [],
     "values": [
       "contain",
       "cover",
       "fill",
       "inherit",
       "initial",
       "none",
+      "revert",
       "scale-down",
       "unset"
     ]
   },
   "object-position": {
     "isInherited": false,
     "subproperties": [
       "object-position"
     ],
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
       "left",
+      "revert",
       "right",
       "top",
       "unset"
     ]
   },
   "offset-path": {
     "isInherited": false,
     "subproperties": [
       "offset-path"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
       "path",
+      "revert",
       "unset"
     ]
   },
   "opacity": {
     "isInherited": false,
     "subproperties": [
       "opacity"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "order": {
     "isInherited": false,
     "subproperties": [
       "order"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "outline": {
     "isInherited": false,
     "subproperties": [
       "outline-color",
       "outline-style",
@@ -7867,16 +8247,17 @@ exports.CSS_PROPERTIES = {
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "medium",
       "none",
       "outset",
+      "revert",
       "rgb",
       "rgba",
       "ridge",
       "solid",
       "thick",
       "thin",
       "transparent",
       "unset"
@@ -7892,31 +8273,33 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "outline-offset": {
     "isInherited": false,
     "subproperties": [
       "outline-offset"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "outline-style": {
     "isInherited": false,
     "subproperties": [
       "outline-style"
     ],
@@ -7928,31 +8311,33 @@ exports.CSS_PROPERTIES = {
       "double",
       "groove",
       "hidden",
       "inherit",
       "initial",
       "inset",
       "none",
       "outset",
+      "revert",
       "ridge",
       "solid",
       "unset"
     ]
   },
   "outline-width": {
     "isInherited": false,
     "subproperties": [
       "outline-width"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "medium",
+      "revert",
       "thick",
       "thin",
       "unset"
     ]
   },
   "overflow": {
     "isInherited": false,
     "subproperties": [
@@ -7961,62 +8346,66 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "-moz-hidden-unscrollable",
       "auto",
       "hidden",
       "inherit",
       "initial",
+      "revert",
       "scroll",
       "unset",
       "visible"
     ]
   },
   "overflow-anchor": {
     "isInherited": false,
     "subproperties": [
       "overflow-anchor"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "overflow-wrap": {
     "isInherited": true,
     "subproperties": [
       "overflow-wrap"
     ],
     "supports": [],
     "values": [
       "anywhere",
       "break-word",
       "inherit",
       "initial",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "overflow-x": {
     "isInherited": false,
     "subproperties": [
       "overflow-x"
     ],
     "supports": [],
     "values": [
       "-moz-hidden-unscrollable",
       "auto",
       "hidden",
       "inherit",
       "initial",
+      "revert",
       "scroll",
       "unset",
       "visible"
     ]
   },
   "overflow-y": {
     "isInherited": false,
     "subproperties": [
@@ -8024,16 +8413,17 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "-moz-hidden-unscrollable",
       "auto",
       "hidden",
       "inherit",
       "initial",
+      "revert",
       "scroll",
       "unset",
       "visible"
     ]
   },
   "overscroll-behavior": {
     "isInherited": false,
     "subproperties": [
@@ -8042,183 +8432,197 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "auto",
       "contain",
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "overscroll-behavior-x": {
     "isInherited": false,
     "subproperties": [
       "overscroll-behavior-x"
     ],
     "supports": [],
     "values": [
       "auto",
       "contain",
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "overscroll-behavior-y": {
     "isInherited": false,
     "subproperties": [
       "overscroll-behavior-y"
     ],
     "supports": [],
     "values": [
       "auto",
       "contain",
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "padding": {
     "isInherited": false,
     "subproperties": [
       "padding-top",
       "padding-right",
       "padding-bottom",
       "padding-left"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "padding-block": {
     "isInherited": false,
     "subproperties": [
       "padding-block-start",
       "padding-block-end"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "padding-block-end": {
     "isInherited": false,
     "subproperties": [
       "padding-block-end"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "padding-block-start": {
     "isInherited": false,
     "subproperties": [
       "padding-block-start"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "padding-bottom": {
     "isInherited": false,
     "subproperties": [
       "padding-bottom"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "padding-inline": {
     "isInherited": false,
     "subproperties": [
       "padding-inline-start",
       "padding-inline-end"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "padding-inline-end": {
     "isInherited": false,
     "subproperties": [
       "padding-inline-end"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "padding-inline-start": {
     "isInherited": false,
     "subproperties": [
       "padding-inline-start"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "padding-left": {
     "isInherited": false,
     "subproperties": [
       "padding-left"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "padding-right": {
     "isInherited": false,
     "subproperties": [
       "padding-right"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "padding-top": {
     "isInherited": false,
     "subproperties": [
       "padding-top"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "page-break-after": {
     "isInherited": false,
     "subproperties": [
       "break-after"
     ],
@@ -8226,16 +8630,17 @@ exports.CSS_PROPERTIES = {
     "values": [
       "always",
       "auto",
       "avoid",
       "inherit",
       "initial",
       "left",
       "page",
+      "revert",
       "right",
       "unset"
     ]
   },
   "page-break-before": {
     "isInherited": false,
     "subproperties": [
       "break-before"
@@ -8244,71 +8649,76 @@ exports.CSS_PROPERTIES = {
     "values": [
       "always",
       "auto",
       "avoid",
       "inherit",
       "initial",
       "left",
       "page",
+      "revert",
       "right",
       "unset"
     ]
   },
   "page-break-inside": {
     "isInherited": false,
     "subproperties": [
       "break-inside"
     ],
     "supports": [],
     "values": [
       "auto",
       "avoid",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "paint-order": {
     "isInherited": true,
     "subproperties": [
       "paint-order"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "perspective": {
     "isInherited": false,
     "subproperties": [
       "perspective"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "perspective-origin": {
     "isInherited": false,
     "subproperties": [
       "perspective-origin"
     ],
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
       "left",
+      "revert",
       "right",
       "top",
       "unset"
     ]
   },
   "place-content": {
     "isInherited": false,
     "subproperties": [
@@ -8323,16 +8733,17 @@ exports.CSS_PROPERTIES = {
       "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
       "left",
       "normal",
+      "revert",
       "right",
       "safe",
       "space-around",
       "space-between",
       "space-evenly",
       "start",
       "stretch",
       "unsafe",
@@ -8354,16 +8765,17 @@ exports.CSS_PROPERTIES = {
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
       "left",
       "legacy",
       "normal",
+      "revert",
       "right",
       "safe",
       "self-end",
       "self-start",
       "start",
       "stretch",
       "unsafe",
       "unset"
@@ -8384,16 +8796,17 @@ exports.CSS_PROPERTIES = {
       "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
       "left",
       "normal",
+      "revert",
       "right",
       "safe",
       "self-end",
       "self-start",
       "start",
       "stretch",
       "unsafe",
       "unset"
@@ -8408,16 +8821,17 @@ exports.CSS_PROPERTIES = {
     "values": [
       "all",
       "auto",
       "fill",
       "inherit",
       "initial",
       "none",
       "painted",
+      "revert",
       "stroke",
       "unset",
       "visible",
       "visiblefill",
       "visiblepainted",
       "visiblestroke"
     ]
   },
@@ -8428,31 +8842,33 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "absolute",
       "fixed",
       "inherit",
       "initial",
       "relative",
+      "revert",
       "static",
       "sticky",
       "unset"
     ]
   },
   "quotes": {
     "isInherited": true,
     "subproperties": [
       "quotes"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "resize": {
     "isInherited": false,
     "subproperties": [
       "resize"
     ],
@@ -8460,86 +8876,92 @@ exports.CSS_PROPERTIES = {
     "values": [
       "block",
       "both",
       "horizontal",
       "inherit",
       "initial",
       "inline",
       "none",
+      "revert",
       "unset",
       "vertical"
     ]
   },
   "right": {
     "isInherited": false,
     "subproperties": [
       "right"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "row-gap": {
     "isInherited": false,
     "subproperties": [
       "row-gap"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "ruby-align": {
     "isInherited": true,
     "subproperties": [
       "ruby-align"
     ],
     "supports": [],
     "values": [
       "center",
       "inherit",
       "initial",
+      "revert",
       "space-around",
       "space-between",
       "start",
       "unset"
     ]
   },
   "ruby-position": {
     "isInherited": true,
     "subproperties": [
       "ruby-position"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "over",
+      "revert",
       "under",
       "unset"
     ]
   },
   "scroll-behavior": {
     "isInherited": false,
     "subproperties": [
       "scroll-behavior"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "smooth",
       "unset"
     ]
   },
   "scroll-snap-coordinate": {
     "isInherited": false,
     "subproperties": [
       "scroll-snap-coordinate"
@@ -8547,16 +8969,17 @@ exports.CSS_PROPERTIES = {
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
       "left",
       "none",
+      "revert",
       "right",
       "top",
       "unset"
     ]
   },
   "scroll-snap-destination": {
     "isInherited": false,
     "subproperties": [
@@ -8564,92 +8987,98 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
       "left",
+      "revert",
       "right",
       "top",
       "unset"
     ]
   },
   "scroll-snap-points-x": {
     "isInherited": false,
     "subproperties": [
       "scroll-snap-points-x"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
       "repeat",
+      "revert",
       "unset"
     ]
   },
   "scroll-snap-points-y": {
     "isInherited": false,
     "subproperties": [
       "scroll-snap-points-y"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "none",
       "repeat",
+      "revert",
       "unset"
     ]
   },
   "scroll-snap-type": {
     "isInherited": false,
     "subproperties": [
       "scroll-snap-type-x",
       "scroll-snap-type-y"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "mandatory",
       "none",
       "proximity",
+      "revert",
       "unset"
     ]
   },
   "scroll-snap-type-x": {
     "isInherited": false,
     "subproperties": [
       "scroll-snap-type-x"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "mandatory",
       "none",
       "proximity",
+      "revert",
       "unset"
     ]
   },
   "scroll-snap-type-y": {
     "isInherited": false,
     "subproperties": [
       "scroll-snap-type-y"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "mandatory",
       "none",
       "proximity",
+      "revert",
       "unset"
     ]
   },
   "scrollbar-color": {
     "isInherited": true,
     "subproperties": [
       "scrollbar-color"
     ],
@@ -8659,16 +9088,17 @@ exports.CSS_PROPERTIES = {
     "values": [
       "COLOR",
       "auto",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "scrollbar-width": {
     "isInherited": false,
@@ -8676,41 +9106,44 @@ exports.CSS_PROPERTIES = {
       "scrollbar-width"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
       "none",
+      "revert",
       "thin",
       "unset"
     ]
   },
   "shape-image-threshold": {
     "isInherited": false,
     "subproperties": [
       "shape-image-threshold"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "shape-margin": {
     "isInherited": false,
     "subproperties": [
       "shape-margin"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "shape-outside": {
     "isInherited": false,
     "subproperties": [
       "shape-outside"
     ],
@@ -8740,16 +9173,17 @@ exports.CSS_PROPERTIES = {
       "margin-box",
       "none",
       "padding-box",
       "path",
       "polygon",
       "radial-gradient",
       "repeating-linear-gradient",
       "repeating-radial-gradient",
+      "revert",
       "unset",
       "url"
     ]
   },
   "shape-rendering": {
     "isInherited": true,
     "subproperties": [
       "shape-rendering"
@@ -8757,16 +9191,17 @@ exports.CSS_PROPERTIES = {
     "supports": [],
     "values": [
       "auto",
       "crispedges",
       "geometricprecision",
       "inherit",
       "initial",
       "optimizespeed",
+      "revert",
       "unset"
     ]
   },
   "stop-color": {
     "isInherited": false,
     "subproperties": [
       "stop-color"
     ],
@@ -8775,31 +9210,33 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "stop-opacity": {
     "isInherited": false,
     "subproperties": [
       "stop-opacity"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "stroke": {
     "isInherited": true,
     "subproperties": [
       "stroke"
     ],
@@ -8811,16 +9248,17 @@ exports.CSS_PROPERTIES = {
       "context-fill",
       "context-stroke",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "none",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset",
       "url"
     ]
   },
   "stroke-dasharray": {
@@ -8829,112 +9267,120 @@ exports.CSS_PROPERTIES = {
       "stroke-dasharray"
     ],
     "supports": [],
     "values": [
       "context-value",
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "stroke-dashoffset": {
     "isInherited": true,
     "subproperties": [
       "stroke-dashoffset"
     ],
     "supports": [],
     "values": [
       "context-value",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "stroke-linecap": {
     "isInherited": true,
     "subproperties": [
       "stroke-linecap"
     ],
     "supports": [],
     "values": [
       "butt",
       "inherit",
       "initial",
+      "revert",
       "round",
       "square",
       "unset"
     ]
   },
   "stroke-linejoin": {
     "isInherited": true,
     "subproperties": [
       "stroke-linejoin"
     ],
     "supports": [],
     "values": [
       "bevel",
       "inherit",
       "initial",
       "miter",
+      "revert",
       "round",
       "unset"
     ]
   },
   "stroke-miterlimit": {
     "isInherited": true,
     "subproperties": [
       "stroke-miterlimit"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "stroke-opacity": {
     "isInherited": true,
     "subproperties": [
       "stroke-opacity"
     ],
     "supports": [],
     "values": [
       "context-fill-opacity",
       "context-stroke-opacity",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "stroke-width": {
     "isInherited": true,
     "subproperties": [
       "stroke-width"
     ],
     "supports": [],
     "values": [
       "context-value",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "table-layout": {
     "isInherited": false,
     "subproperties": [
       "table-layout"
     ],
     "supports": [],
     "values": [
       "auto",
       "fixed",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "text-align": {
     "isInherited": true,
     "subproperties": [
       "text-align"
     ],
@@ -8945,16 +9391,17 @@ exports.CSS_PROPERTIES = {
       "-moz-right",
       "center",
       "end",
       "inherit",
       "initial",
       "justify",
       "left",
       "match-parent",
+      "revert",
       "right",
       "start",
       "unset"
     ]
   },
   "text-align-last": {
     "isInherited": true,
     "subproperties": [
@@ -8964,47 +9411,50 @@ exports.CSS_PROPERTIES = {
     "values": [
       "auto",
       "center",
       "end",
       "inherit",
       "initial",
       "justify",
       "left",
+      "revert",
       "right",
       "start",
       "unset"
     ]
   },
   "text-anchor": {
     "isInherited": true,
     "subproperties": [
       "text-anchor"
     ],
     "supports": [],
     "values": [
       "end",
       "inherit",
       "initial",
       "middle",
+      "revert",
       "start",
       "unset"
     ]
   },
   "text-combine-upright": {
     "isInherited": true,
     "subproperties": [
       "text-combine-upright"
     ],
     "supports": [],
     "values": [
       "all",
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "text-decoration": {
     "isInherited": false,
     "subproperties": [
       "text-decoration-line",
       "text-decoration-style",
@@ -9023,16 +9473,17 @@ exports.CSS_PROPERTIES = {
       "double",
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "line-through",
       "none",
       "overline",
+      "revert",
       "rgb",
       "rgba",
       "solid",
       "transparent",
       "underline",
       "unset",
       "wavy"
     ]
@@ -9047,16 +9498,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "text-decoration-line": {
     "isInherited": false,
@@ -9066,16 +9518,17 @@ exports.CSS_PROPERTIES = {
     "supports": [],
     "values": [
       "blink",
       "inherit",
       "initial",
       "line-through",
       "none",
       "overline",
+      "revert",
       "underline",
       "unset"
     ]
   },
   "text-decoration-style": {
     "isInherited": false,
     "subproperties": [
       "text-decoration-style"
@@ -9083,16 +9536,17 @@ exports.CSS_PROPERTIES = {
     "supports": [],
     "values": [
       "-moz-none",
       "dashed",
       "dotted",
       "double",
       "inherit",
       "initial",
+      "revert",
       "solid",
       "unset",
       "wavy"
     ]
   },
   "text-emphasis": {
     "isInherited": true,
     "subproperties": [
@@ -9110,16 +9564,17 @@ exports.CSS_PROPERTIES = {
       "double-circle",
       "filled",
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "none",
       "open",
+      "revert",
       "rgb",
       "rgba",
       "sesame",
       "transparent",
       "triangle",
       "unset"
     ]
   },
@@ -9133,16 +9588,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "text-emphasis-position": {
     "isInherited": true,
@@ -9150,16 +9606,17 @@ exports.CSS_PROPERTIES = {
       "text-emphasis-position"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "left",
       "over",
+      "revert",
       "right",
       "under",
       "unset"
     ]
   },
   "text-emphasis-style": {
     "isInherited": true,
     "subproperties": [
@@ -9170,30 +9627,32 @@ exports.CSS_PROPERTIES = {
       "circle",
       "dot",
       "double-circle",
       "filled",
       "inherit",
       "initial",
       "none",
       "open",
+      "revert",
       "sesame",
       "triangle",
       "unset"
     ]
   },
   "text-indent": {
     "isInherited": true,
     "subproperties": [
       "text-indent"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "text-justify": {
     "isInherited": true,
     "subproperties": [
       "text-justify"
     ],
@@ -9201,29 +9660,31 @@ exports.CSS_PROPERTIES = {
     "values": [
       "auto",
       "distribute",
       "inherit",
       "initial",
       "inter-character",
       "inter-word",
       "none",
+      "revert",
       "unset"
     ]
   },
   "text-orientation": {
     "isInherited": true,
     "subproperties": [
       "text-orientation"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "mixed",
+      "revert",
       "sideways",
       "sideways-right",
       "unset",
       "upright"
     ]
   },
   "text-overflow": {
     "isInherited": false,
@@ -9231,32 +9692,34 @@ exports.CSS_PROPERTIES = {
       "text-overflow"
     ],
     "supports": [],
     "values": [
       "clip",
       "ellipsis",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "text-rendering": {
     "isInherited": true,
     "subproperties": [
       "text-rendering"
     ],
     "supports": [],
     "values": [
       "auto",
       "geometricprecision",
       "inherit",
       "initial",
       "optimizelegibility",
       "optimizespeed",
+      "revert",
       "unset"
     ]
   },
   "text-shadow": {
     "isInherited": true,
     "subproperties": [
       "text-shadow"
     ],
@@ -9266,16 +9729,17 @@ exports.CSS_PROPERTIES = {
     "values": [
       "COLOR",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "none",
+      "revert",
       "rgb",
       "rgba",
       "transparent",
       "unset"
     ]
   },
   "text-transform": {
     "isInherited": true,
@@ -9286,30 +9750,32 @@ exports.CSS_PROPERTIES = {
     "values": [
       "capitalize",
       "full-size-kana",
       "full-width",
       "inherit",
       "initial",
       "lowercase",
       "none",
+      "revert",
       "unset",
       "uppercase"
     ]
   },
   "top": {
     "isInherited": false,
     "subproperties": [
       "top"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "touch-action": {
     "isInherited": false,
     "subproperties": [
       "touch-action"
     ],
@@ -9317,16 +9783,17 @@ exports.CSS_PROPERTIES = {
     "values": [
       "auto",
       "inherit",
       "initial",
       "manipulation",
       "none",
       "pan-x",
       "pan-y",
+      "revert",
       "unset"
     ]
   },
   "transform": {
     "isInherited": false,
     "subproperties": [
       "transform"
     ],
@@ -9335,16 +9802,17 @@ exports.CSS_PROPERTIES = {
       "accumulatematrix",
       "inherit",
       "initial",
       "interpolatematrix",
       "matrix",
       "matrix3d",
       "none",
       "perspective",
+      "revert",
       "rotate",
       "rotate3d",
       "rotateX",
       "rotateY",
       "rotateZ",
       "scale",
       "scale3d",
       "scaleX",
@@ -9367,48 +9835,51 @@ exports.CSS_PROPERTIES = {
       "transform-box"
     ],
     "supports": [],
     "values": [
       "border-box",
       "fill-box",
       "inherit",
       "initial",
+      "revert",
       "unset",
       "view-box"
     ]
   },
   "transform-origin": {
     "isInherited": false,
     "subproperties": [
       "transform-origin"
     ],
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
       "left",
+      "revert",
       "right",
       "top",
       "unset"
     ]
   },
   "transform-style": {
     "isInherited": false,
     "subproperties": [
       "transform-style"
     ],
     "supports": [],
     "values": [
       "flat",
       "inherit",
       "initial",
       "preserve-3d",
+      "revert",
       "unset"
     ]
   },
   "transition": {
     "isInherited": false,
     "subproperties": [
       "transition-property",
       "transition-duration",
@@ -9424,57 +9895,61 @@ exports.CSS_PROPERTIES = {
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
       "inherit",
       "initial",
       "linear",
       "none",
+      "revert",
       "step-end",
       "step-start",
       "steps",
       "unset"
     ]
   },
   "transition-delay": {
     "isInherited": false,
     "subproperties": [
       "transition-delay"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "transition-duration": {
     "isInherited": false,
     "subproperties": [
       "transition-duration"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "transition-property": {
     "isInherited": false,
     "subproperties": [
       "transition-property"
     ],
     "supports": [],
     "values": [
       "all",
       "inherit",
       "initial",
       "none",
+      "revert",
       "unset"
     ]
   },
   "transition-timing-function": {
     "isInherited": false,
     "subproperties": [
       "transition-timing-function"
     ],
@@ -9485,16 +9960,17 @@ exports.CSS_PROPERTIES = {
       "cubic-bezier",
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
       "inherit",
       "initial",
       "linear",
+      "revert",
       "step-end",
       "step-start",
       "steps",
       "unset"
     ]
   },
   "unicode-bidi": {
     "isInherited": false,
@@ -9506,46 +9982,49 @@ exports.CSS_PROPERTIES = {
       "bidi-override",
       "embed",
       "inherit",
       "initial",
       "isolate",
       "isolate-override",
       "normal",
       "plaintext",
+      "revert",
       "unset"
     ]
   },
   "vector-effect": {
     "isInherited": false,
     "subproperties": [
       "vector-effect"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "non-scaling-stroke",
       "none",
+      "revert",
       "unset"
     ]
   },
   "vertical-align": {
     "isInherited": false,
     "subproperties": [
       "vertical-align"
     ],
     "supports": [],
     "values": [
       "-moz-middle-with-baseline",
       "baseline",
       "bottom",
       "inherit",
       "initial",
       "middle",
+      "revert",
       "sub",
       "super",
       "text-bottom",
       "text-top",
       "top",
       "unset"
     ]
   },
@@ -9555,16 +10034,17 @@ exports.CSS_PROPERTIES = {
       "visibility"
     ],
     "supports": [],
     "values": [
       "collapse",
       "hidden",
       "inherit",
       "initial",
+      "revert",
       "unset",
       "visible"
     ]
   },
   "white-space": {
     "isInherited": true,
     "subproperties": [
       "white-space"
@@ -9574,16 +10054,17 @@ exports.CSS_PROPERTIES = {
       "-moz-pre-space",
       "inherit",
       "initial",
       "normal",
       "nowrap",
       "pre",
       "pre-line",
       "pre-wrap",
+      "revert",
       "unset"
     ]
   },
   "width": {
     "isInherited": false,
     "subproperties": [
       "width"
     ],
@@ -9593,88 +10074,94 @@ exports.CSS_PROPERTIES = {
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "auto",
       "inherit",
       "initial",
       "max-content",
       "min-content",
+      "revert",
       "unset"
     ]
   },
   "will-change": {
     "isInherited": false,
     "subproperties": [
       "will-change"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   },
   "word-break": {
     "isInherited": true,
     "subproperties": [
       "word-break"
     ],
     "supports": [],
     "values": [
       "break-all",
       "break-word",
       "inherit",
       "initial",
       "keep-all",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "word-spacing": {
     "isInherited": true,
     "subproperties": [
       "word-spacing"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "word-wrap": {
     "isInherited": true,
     "subproperties": [
       "overflow-wrap"
     ],
     "supports": [],
     "values": [
       "anywhere",
       "break-word",
       "inherit",
       "initial",
       "normal",
+      "revert",
       "unset"
     ]
   },
   "writing-mode": {
     "isInherited": true,
     "subproperties": [
       "writing-mode"
     ],
     "supports": [],
     "values": [
       "horizontal-tb",
       "inherit",
       "initial",
       "lr",
       "lr-tb",
+      "revert",
       "rl",
       "rl-tb",
       "sideways-lr",
       "sideways-rl",
       "tb",
       "tb-rl",
       "unset",
       "vertical-lr",
@@ -9686,16 +10173,17 @@ exports.CSS_PROPERTIES = {
     "subproperties": [
       "z-index"
     ],
     "supports": [],
     "values": [
       "auto",
       "inherit",
       "initial",
+      "revert",
       "unset"
     ]
   }
 };
 
 /**
  * A list of the pseudo elements.
  */
--- a/layout/inspector/tests/test_bug877690.html
+++ b/layout/inspector/tests/test_bug877690.html
@@ -47,168 +47,168 @@ function do_test() {
     "-webkit-repeating-radial-gradient",
     "-moz-repeating-radial-gradient",
     "-webkit-gradient",
   ];
 
   // test a property with keywords and colors
   var prop = "color";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "initial", "inherit", "unset", ...allColors ];
+  var expected = [ "initial", "inherit", "unset", "revert", ...allColors ];
   ok(testValues(values, expected), "property color's values.");
 
   // test a shorthand property
   var prop = "background";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "auto", "initial", "inherit", "unset", ...allColors, "no-repeat", "repeat",
+  var expected = [ "auto", "initial", "inherit", "unset", "revert", ...allColors, "no-repeat", "repeat",
       "repeat-x", "repeat-y", "space", "round", "fixed", "scroll", "local", "center", "top", "bottom", "left", "right",
       "border-box", "padding-box", "content-box", "text", "contain",
       "cover", "none", "-moz-element", "-moz-image-rect", "url", ...allGradients ];
   ok(testValues(values, expected), "property background values.");
 
   var prop = "border";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "initial", "unset", "dashed", "dotted", "double",
+  var expected = [ "initial", "unset", "revert", "dashed", "dotted", "double",
       "groove", "hidden", "inherit", "inset", "medium", "none", "outset", "ridge",
       "solid", "thick", "thin", ...allColors ]
   ok(testValues(values, expected), "property border values.");
 
   // test keywords only
   var prop = "border-top";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "initial", "inherit", "unset", "thin", "medium", "thick", "none", "hidden", "dotted",
+  var expected = [ "initial", "inherit", "revert", "unset", "thin", "medium", "thick", "none", "hidden", "dotted",
       "dashed", "solid", "double", "groove", "ridge", "inset", "outset", ...allColors ];
   ok(testValues(values, expected), "property border-top's values.");
 
   // tests no keywords or colors
   var prop = "padding-bottom";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "initial", "inherit", "unset" ];
+  var expected = [ "initial", "inherit", "unset", "revert" ];
   ok(testValues(values, expected), "property padding-bottom's values.");
 
   // test proprety
   var prop = "display";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "initial", "inherit", "unset", "none", "inline", "block", "inline-block", "list-item",
+  var expected = [ "initial", "inherit", "unset", "revert", "none", "inline", "block", "inline-block", "list-item",
       "table", "inline-table", "table-row-group", "table-header-group", "table-footer-group", "table-row",
       "table-column-group", "table-column", "table-cell", "table-caption", "-moz-box", "-moz-inline-box",
       "-moz-grid", "-moz-inline-grid", "-moz-grid-group", "-moz-grid-line", "-moz-stack", "-moz-inline-stack",
       "-moz-deck", "-moz-popup", "-moz-groupbox",
       "flex", "inline-flex", "-webkit-box", "-webkit-inline-box",
       "-webkit-flex", "-webkit-inline-flex",
       "grid", "inline-grid",
       "ruby", "ruby-base", "ruby-base-container", "ruby-text", "ruby-text-container",
       "contents", "flow-root" ];
   ok(testValues(values, expected), "property display's values.");
 
   // test property
   var prop = "float";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "initial", "inherit", "unset", "none", "left", "right", "inline-start", "inline-end" ];
+  var expected = [ "initial", "inherit", "unset", "revert", "none", "left", "right", "inline-start", "inline-end" ];
   ok(testValues(values, expected), "property float's values.");
 
   // Test property with "auto"
   var prop = "margin";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "initial", "unset", "auto", "inherit" ];
+  var expected = [ "initial", "unset", "auto", "inherit", "revert" ];
   ok(testValues(values, expected), "property margin's values.");
 
   // Test property with "normal"
   var prop = "font-style";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "initial", "inherit", "unset", "italic", "normal", "oblique" ];
+  var expected = [ "initial", "inherit", "unset", "revert", "italic", "normal", "oblique" ];
   ok(testValues(values, expected), "property font-style's values.");
 
   // Test property with "cubic-bezier" and "step".
   var prop = "-moz-transition";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
   var expected = [ "initial", "all", "unset", "cubic-bezier", "ease", "ease-in", "ease-in-out",
-                   "ease-out", "inherit", "linear", "none", "step-end", "step-start",
+                   "ease-out", "inherit", "revert", "linear", "none", "step-end", "step-start",
                    "steps" ];
   ok(testValues(values, expected), "property -moz-transition's values.");
 
   // test invalid property
   var prop = "invalidProperty";
   try {
     InspectorUtils.getCSSValuesForProperty(prop);
     ok(false, "invalid property should throw an exception");
   }
   catch(e) {
     // test passed
   }
 
   // test border-image property, for bug 973345
   var prop = "border-image";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "auto", "inherit", "initial", "unset", "repeat", "stretch",
+  var expected = [ "auto", "inherit", "revert", "initial", "unset", "repeat", "stretch",
                    "-moz-element", "-moz-image-rect", "url", ...allGradients,
                    "fill", "none", "round", "space" ];
   ok(testValues(values, expected), "property border-image's values.");
 
   var prop = "background-size"
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "auto", "inherit", "initial", "unset", "contain", "cover" ];
+  var expected = [ "auto", "inherit", "revert", "initial", "unset", "contain", "cover" ];
   ok(testValues(values, expected), "property background-size's values.");
 
   // Regression test for bug 1255401.
   var prop = "all"
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "inherit", "initial", "unset" ];
+  var expected = [ "inherit", "initial", "unset", "revert" ];
   ok(testValues(values, expected), "property all's values.");
 
   var prop = "quotes"
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "inherit", "initial", "unset", "none" ];
+  var expected = [ "inherit", "initial", "unset", "none", "revert" ];
   ok(testValues(values, expected), "property quotes's values.");
 
   // Regression test for bug 1255384.
   for (prop of ["counter-increment", "counter-reset"]) {
     var values = InspectorUtils.getCSSValuesForProperty(prop);
-    var expected = [ "inherit", "initial", "unset", "none" ];
+    var expected = [ "inherit", "initial", "unset", "none", "revert" ];
     ok(testValues(values, expected), "property " + prop + "'s values.");
   }
 
   // Regression test for bug 1430616
   var prop = "text-align";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
   ok(values.includes("match-parent"), "property text-align includes match-parent");
 
   // Regression test for bug 1255402.
-  var expected = [ "inherit", "initial", "unset", "left", "right",
+  var expected = [ "inherit", "initial", "unset", "revert", "left", "right",
                    "top", "center", "bottom" ];
   for (prop of ["object-position", "perspective-origin"]) {
     var values = InspectorUtils.getCSSValuesForProperty(prop);
     ok(testValues(values, expected), "property " + prop + "'s values");
   }
 
   // Regression test for bug 1255378.
-  var expected = [ "inherit", "initial", "unset", "none", ...allColors ];
+  var expected = [ "inherit", "initial", "unset", "revert", "none", ...allColors ];
   var values = InspectorUtils.getCSSValuesForProperty("text-shadow");
   ok(testValues(values, expected), "property text-shadow's values");
 
-  var expected = [ "inherit", "initial", "unset", "inset", "none", ...allColors ];
+  var expected = [ "inherit", "initial", "unset", "revert", "inset", "none", ...allColors ];
   var values = InspectorUtils.getCSSValuesForProperty("box-shadow");
   ok(testValues(values, expected), "property box-shadow's values");
 
   // Regression test for bug 1255379.
-  var expected = [ "inherit", "initial", "unset", "none", "url",
+  var expected = [ "inherit", "initial", "unset", "revert", "none", "url",
                    "polygon", "circle", "ellipse", "inset", "path",
                    "fill-box", "stroke-box", "view-box", "margin-box",
                    "border-box", "padding-box", "content-box" ];
   var values = InspectorUtils.getCSSValuesForProperty("clip-path");
   ok(testValues(values, expected), "property clip-path's values");
 
-  var expected = [ "inherit", "initial", "unset", "auto", "rect" ];
+  var expected = [ "inherit", "initial", "unset", "revert", "auto", "rect" ];
   var values = InspectorUtils.getCSSValuesForProperty("clip");
   ok(testValues(values, expected), "property clip's values");
 
   // Regression test for bug 1255380.
   var expected = [ "normal", "none", "url", "counter", "counters",
                    "attr", "open-quote", "close-quote", "no-open-quote",
-                   "no-close-quote", "inherit", "initial", "unset",
+                   "no-close-quote", "inherit", "initial", "unset", "revert",
                    "-moz-alt-content" ];
   var values = InspectorUtils.getCSSValuesForProperty("content");
   ok(testValues(values, expected), "property counter's values");
 
   // Regression test for bug 1255369.
   var expected = ["none", "decimal", "decimal-leading-zero", "arabic-indic", "armenian",
                   "upper-armenian", "lower-armenian", "bengali", "cambodian", "khmer",
                   "cjk-decimal", "devanagari", "georgian", "gujarati", "gurmukhi", "hebrew",
@@ -217,17 +217,17 @@ function do_test() {
                   "lower-alpha", "lower-latin", "upper-alpha", "upper-latin",
                   "cjk-earthly-branch", "cjk-heavenly-stem", "lower-greek",
                   "hiragana", "hiragana-iroha", "katakana", "katakana-iroha",
                   "disc", "circle", "square", "disclosure-open", "disclosure-closed",
                   "japanese-informal", "japanese-formal",
                   "korean-hangul-formal", "korean-hanja-informal", "korean-hanja-formal",
                   "simp-chinese-informal", "simp-chinese-formal",
                   "trad-chinese-informal", "trad-chinese-formal", "cjk-ideographic",
-                  "ethiopic-numeric", "symbols", "inherit", "initial", "unset" ];
+                  "ethiopic-numeric", "symbols", "inherit", "initial", "unset", "revert" ];
   var values = InspectorUtils.getCSSValuesForProperty("list-style-type");
   ok(testValues(values, expected), "property list-style-type's values");
 
   SimpleTest.finish();
 }
 
 SimpleTest.waitForExplicitFinish();
 addLoadEvent(do_test);
--- a/layout/style/test/mochitest.ini
+++ b/layout/style/test/mochitest.ini
@@ -344,16 +344,17 @@ skip-if = (toolkit == 'android') # bug 7
 support-files = file_transitions_with_disabled_properties.html
 [test_unclosed_parentheses.html]
 [test_unicode_range_loading.html]
 support-files = ../../reftests/fonts/markA.woff ../../reftests/fonts/markB.woff ../../reftests/fonts/markC.woff ../../reftests/fonts/markD.woff
 [test_units_angle.html]
 [test_units_frequency.html]
 [test_units_length.html]
 [test_units_time.html]
+[test_revert.html]
 [test_value_cloning.html]
 skip-if = toolkit == 'android' # bug 775227 for android
 [test_value_computation.html]
 skip-if = toolkit == 'android'
 [test_value_storage.html]
 skip-if = toolkit == 'android' && debug # bug 1397615
 [test_variable_serialization_computed.html]
 [test_variable_serialization_specified.html]
new file mode 100644
--- /dev/null
+++ b/layout/style/test/test_revert.html
@@ -0,0 +1,103 @@
+<!DOCTYPE HTML>
+<title>Test for computation of CSS 'revert' on all properties</title>
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script src="property_database.js"></script>
+<style id="stylesheet"></style>
+<link rel="stylesheet" href="/tests/SimpleTest/test.css" />
+<div id="inheritanceParent">
+  <div id="inherited"></div>
+</div>
+<div id="nonInherited"></div>
+<div id="noAuthorStyleApplied"></div>
+<pre id="test">
+<script class="testbody">
+
+const kSheet = document.getElementById("stylesheet").sheet;
+const kAllDifferentFromInitialRule = kSheet.cssRules[kSheet.insertRule("#inheritanceParent {}", kSheet.cssRules.length)];
+const kPrerequisites = kSheet.cssRules[kSheet.insertRule("#inherited, #inheritanceParent, #nonInherited, #noAuthorStyleApplied {}", kSheet.cssRules.length)];
+const kResetPropRule = kSheet.cssRules[kSheet.insertRule("#nonInherited {}", kSheet.cssRules.length)];
+
+const kInheritedDiv = document.getElementById("inherited");
+const kResetDiv = document.getElementById("nonInherited");
+const kNoAuthorStylesDiv = document.getElementById("noAuthorStyleApplied");
+
+function computedValue(node, property) {
+  return get_computed_value(getComputedStyle(node), property);
+}
+
+function getInitialValue(node, property) {
+  node.style.setProperty(property, "initial");
+  const initial = computedValue(node, property);
+  node.style.removeProperty(property);
+  return initial;
+}
+
+function testResetProperty(property, info) {
+  kResetPropRule.style.setProperty(property, info.other_values[0]);
+
+  const div = kResetDiv;
+  const initial = getInitialValue(div, property);
+  const computed = computedValue(div, property);
+
+  isnot(computed, initial, `${property}: Should get something non-initial to begin with`);
+
+  const defaultValue = computedValue(kNoAuthorStylesDiv, property);
+
+  div.style.setProperty(property, "revert");
+  const reverted = computedValue(div, property);
+  is(reverted, defaultValue, `${property}: Should behave as if there was no author style`);
+  div.style.removeProperty(property);
+  kResetPropRule.style.removeProperty(property);
+}
+
+function testInheritedProperty(property, info) {
+  // Given how line-height works, and that it always returns the used value, we
+  // cannot test it. The prerequisites for line-height makes getComputedStyle
+  // and getDefaultComputedStyle return the same, even though the computed value
+  // is different (normal vs. 19px).
+  if (property == "line-height")
+    return;
+
+  const div = kInheritedDiv;
+  const initial = getInitialValue(div, property);
+  const parentValue = computedValue(div.parentNode, property);
+
+  isnot(parentValue, initial, `${property}: Should inherit something non-initial to begin with`);
+
+  const inheritedValue = computedValue(div, property);
+  const hasUARule = inheritedValue != parentValue;
+
+  const defaultValue = computedValue(kNoAuthorStylesDiv, property);
+  (hasUARule ? is : isnot)(defaultValue, inheritedValue, `${property}: Should get the non-inherited value from somewhere (expected ${hasUARule ? "UA Rule" : "inheritance"} - inherited: ${inheritedValue} - parent: ${parentValue} - default: ${defaultValue})`);
+
+  div.style.setProperty(property, "revert");
+  const reverted = computedValue(div, property);
+  if (hasUARule)
+    is(reverted, defaultValue, `${property}: Should behave as if there was no author style`);
+  else
+    is(reverted, inheritedValue, `${property}: Should behave as if there was no author style`);
+  div.style.removeProperty(property);
+}
+
+function testProperty(property, info) {
+  if (info.prerequisites)
+    for (const prereq in info.prerequisites)
+      kPrerequisites.style.setProperty(prereq, info.prerequisites[prereq]);
+  if (info.inherited)
+    testInheritedProperty(property, info);
+  else
+    testResetProperty(property, info);
+  kPrerequisites.style = "";
+}
+
+for (const prop in gCSSProperties) {
+  const info = gCSSProperties[prop];
+  if (info.type != CSS_TYPE_LONGHAND)
+    continue;
+  kAllDifferentFromInitialRule.style.setProperty(prop, info.other_values[0]);
+}
+
+for (const prop in gCSSProperties)
+  testProperty(prop, gCSSProperties[prop]);
+</script>
+</pre>
--- a/servo/components/style/custom_properties.rs
+++ b/servo/components/style/custom_properties.rs
@@ -2,18 +2,19 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
 
 //! Support for [custom properties for cascading variables][custom].
 //!
 //! [custom]: https://drafts.csswg.org/css-variables/
 
 use crate::hash::map::Entry;
-use crate::properties::{CSSWideKeyword, CustomDeclarationValue};
+use crate::properties::{CSSWideKeyword, CustomDeclaration, CustomDeclarationValue};
 use crate::selector_map::{PrecomputedHashMap, PrecomputedHashSet, PrecomputedHasher};
+use crate::stylesheets::{Origin, PerOrigin};
 use crate::Atom;
 use cssparser::{Delimiter, Parser, ParserInput, SourcePosition, Token, TokenSerializationType};
 use indexmap::IndexMap;
 use selectors::parser::SelectorParseErrorKind;
 use servo_arc::Arc;
 use smallvec::SmallVec;
 use std::borrow::Cow;
 use std::cmp;
@@ -485,57 +486,72 @@ fn parse_env_function<'i, 't>(
     }
     Ok(())
 }
 
 /// A struct that takes care of encapsulating the cascade process for custom
 /// properties.
 pub struct CustomPropertiesBuilder<'a> {
     seen: PrecomputedHashSet<&'a Name>,
+    reverted: PerOrigin<PrecomputedHashSet<&'a Name>>,
     may_have_cycles: bool,
     custom_properties: Option<CustomPropertiesMap>,
     inherited: Option<&'a Arc<CustomPropertiesMap>>,
     environment: &'a CssEnvironment,
 }
 
 impl<'a> CustomPropertiesBuilder<'a> {
     /// Create a new builder, inheriting from a given custom properties map.
     pub fn new(
         inherited: Option<&'a Arc<CustomPropertiesMap>>,
         environment: &'a CssEnvironment,
     ) -> Self {
         Self {
             seen: PrecomputedHashSet::default(),
+            reverted: Default::default(),
             may_have_cycles: false,
             custom_properties: None,
             inherited,
             environment,
         }
     }
 
     /// Cascade a given custom property declaration.
-    pub fn cascade(&mut self, name: &'a Name, specified_value: &CustomDeclarationValue) {
+    pub fn cascade(
+        &mut self,
+        declaration: &'a CustomDeclaration,
+        origin: Origin,
+    ) {
+        let CustomDeclaration {
+            ref name,
+            ref value,
+        } = *declaration;
+
+        if self.reverted.borrow_for_origin(&origin).contains(&name) {
+            return;
+        }
+
         let was_already_present = !self.seen.insert(name);
         if was_already_present {
             return;
         }
 
-        if !self.value_may_affect_style(name, specified_value) {
+        if !self.value_may_affect_style(name, value) {
             return;
         }
 
         if self.custom_properties.is_none() {
             self.custom_properties = Some(match self.inherited {
                 Some(inherited) => (**inherited).clone(),
                 None => CustomPropertiesMap::default(),
             });
         }
 
         let map = self.custom_properties.as_mut().unwrap();
-        match *specified_value {
+        match *value {
             CustomDeclarationValue::Value(ref unparsed_value) => {
                 let has_references = !unparsed_value.references.is_empty();
                 self.may_have_cycles |= has_references;
 
                 // If the variable value has no references and it has an
                 // environment variable here, perform substitution here instead
                 // of forcing a full traversal in `substitute_all` afterwards.
                 let value = if !has_references && unparsed_value.references_environment {
@@ -549,16 +565,22 @@ impl<'a> CustomPropertiesBuilder<'a> {
                         },
                     }
                 } else {
                     (*unparsed_value).clone()
                 };
                 map.insert(name.clone(), value);
             },
             CustomDeclarationValue::CSSWideKeyword(keyword) => match keyword {
+                CSSWideKeyword::Revert => {
+                    self.seen.remove(name);
+                    for origin in origin.following_including() {
+                        self.reverted.borrow_mut_for_origin(&origin).insert(name);
+                    }
+                },
                 CSSWideKeyword::Initial => {
                     map.remove(name);
                 },
                 // handled in value_may_affect_style
                 CSSWideKeyword::Unset | CSSWideKeyword::Inherit => unreachable!(),
             },
         }
     }
@@ -582,20 +604,20 @@ impl<'a> CustomPropertiesBuilder<'a> {
             .or_else(|| self.inherited.and_then(|m| m.get(name)));
 
         match (existing_value, value) {
             (None, &CustomDeclarationValue::CSSWideKeyword(CSSWideKeyword::Initial)) => {
                 // The initial value of a custom property is the same as it
                 // not existing in the map.
                 return false;
             },
-            (Some(existing_value), &CustomDeclarationValue::Value(ref specified_value)) => {
+            (Some(existing_value), &CustomDeclarationValue::Value(ref value)) => {
                 // Don't bother overwriting an existing inherited value with
                 // the same specified value.
-                if existing_value == specified_value {
+                if existing_value == value {
                     return false;
                 }
             },
             _ => {},
         }
 
         true
     }
--- a/servo/components/style/properties/cascade.rs
+++ b/servo/components/style/properties/cascade.rs
@@ -12,16 +12,17 @@ use crate::logical_geometry::WritingMode
 use crate::media_queries::Device;
 use crate::properties::{ComputedValues, StyleBuilder};
 use crate::properties::{LonghandId, LonghandIdSet};
 use crate::properties::{PropertyDeclaration, PropertyDeclarationId, DeclarationImportanceIterator};
 use crate::properties::CASCADE_PROPERTY;
 use crate::rule_cache::{RuleCache, RuleCacheConditions};
 use crate::rule_tree::{CascadeLevel, StrongRuleNode};
 use crate::selector_parser::PseudoElement;
+use crate::stylesheets::{Origin, PerOrigin};
 use servo_arc::Arc;
 use crate::shared_lock::StylesheetGuards;
 use smallbitvec::SmallBitVec;
 use smallvec::SmallVec;
 use std::borrow::Cow;
 use std::cell::RefCell;
 use crate::style_adjuster::StyleAdjuster;
 use crate::values::computed;
@@ -246,17 +247,17 @@ where
         let mut builder = CustomPropertiesBuilder::new(
             inherited_style.custom_properties(),
             device.environment(),
         );
 
         for (declaration, cascade_level) in iter_declarations() {
             declarations.push((declaration, cascade_level));
             if let PropertyDeclaration::Custom(ref declaration) = *declaration {
-                builder.cascade(&declaration.name, &declaration.value);
+                builder.cascade(declaration, cascade_level.origin());
             }
         }
 
         builder.build()
     };
 
     let mut context = computed::Context {
         is_root_element: pseudo.is_none() && element.map_or(false, |e| e.is_root()),
@@ -334,24 +335,18 @@ fn should_ignore_declaration_when_ignori
     cascade_level: CascadeLevel,
     pseudo: Option<&PseudoElement>,
     declaration: &mut Cow<PropertyDeclaration>,
 ) -> bool {
     if !longhand_id.ignored_when_document_colors_disabled() {
         return false;
     }
 
-    let is_ua_or_user_rule = matches!(
-        cascade_level,
-        CascadeLevel::UANormal |
-            CascadeLevel::UserNormal |
-            CascadeLevel::UserImportant |
-            CascadeLevel::UAImportant
-    );
-
+    let is_ua_or_user_rule =
+        matches!(cascade_level.origin(), Origin::User | Origin::UserAgent);
     if is_ua_or_user_rule {
         return false;
     }
 
     let is_style_attribute = matches!(
         cascade_level,
         CascadeLevel::StyleAttributeNormal | CascadeLevel::StyleAttributeImportant
     );
@@ -383,26 +378,28 @@ fn should_ignore_declaration_when_ignori
 
     false
 }
 
 struct Cascade<'a, 'b: 'a> {
     context: &'a mut computed::Context<'b>,
     cascade_mode: CascadeMode<'a>,
     seen: LonghandIdSet,
+    reverted: PerOrigin<LonghandIdSet>,
     saved_font_size: Option<PropertyDeclaration>,
     saved_font_family: Option<PropertyDeclaration>,
 }
 
 impl<'a, 'b: 'a> Cascade<'a, 'b> {
     fn new(context: &'a mut computed::Context<'b>, cascade_mode: CascadeMode<'a>) -> Self {
         Self {
             context,
             cascade_mode,
             seen: LonghandIdSet::default(),
+            reverted: Default::default(),
             saved_font_size: None,
             saved_font_family: None,
         }
     }
 
     fn substitute_variables_if_needed<'decl>(
         &mut self,
         declaration: &'decl PropertyDeclaration,
@@ -483,16 +480,17 @@ impl<'a, 'b: 'a> Cascade<'a, 'b> {
              need to know font-size / writing-mode to decide whether to use the \
              cached reset properties"
         );
 
         let ignore_colors = !self.context.builder.device.use_document_colors();
 
         for (declaration, cascade_level) in declarations {
             let declaration_id = declaration.id();
+            let origin = cascade_level.origin();
             let longhand_id = match declaration_id {
                 PropertyDeclarationId::Longhand(id) => id,
                 PropertyDeclarationId::Custom(..) => continue,
             };
 
             let inherited = longhand_id.inherited();
             if !apply_reset && !inherited {
                 continue;
@@ -508,16 +506,20 @@ impl<'a, 'b: 'a> Cascade<'a, 'b> {
             } else {
                 longhand_id.to_physical(self.context.builder.writing_mode)
             };
 
             if self.seen.contains(physical_longhand_id) {
                 continue;
             }
 
+            if self.reverted.borrow_for_origin(&origin).contains(physical_longhand_id) {
+                continue;
+            }
+
             // Only a few properties are allowed to depend on the visited state
             // of links.  When cascading visited styles, we can save time by
             // only processing these properties.
             if matches!(self.cascade_mode, CascadeMode::Visited { .. }) &&
                 !physical_longhand_id.is_visited_dependent()
             {
                 continue;
             }
@@ -535,16 +537,25 @@ impl<'a, 'b: 'a> Cascade<'a, 'b> {
                     self.context.builder.pseudo,
                     &mut declaration,
                 );
                 if should_ignore {
                     continue;
                 }
             }
 
+            if declaration.is_revert() {
+                for origin in origin.following_including() {
+                    self.reverted
+                        .borrow_mut_for_origin(&origin)
+                        .insert(physical_longhand_id);
+                }
+                continue;
+            }
+
             self.seen.insert(physical_longhand_id);
 
             // FIXME(emilio): We should avoid generating code for logical
             // longhands and just use the physical ones, then rename
             // physical_longhand_id to just longhand_id.
             self.apply_declaration::<Phase>(longhand_id, &*declaration);
         }
 
--- a/servo/components/style/properties/declaration_block.rs
+++ b/servo/components/style/properties/declaration_block.rs
@@ -844,17 +844,17 @@ impl PropertyDeclarationBlock {
     ) -> Option<Arc<crate::custom_properties::CustomPropertiesMap>> {
         let mut builder = CustomPropertiesBuilder::new(
             inherited_custom_properties,
             environment,
         );
 
         for declaration in self.normal_declaration_iter() {
             if let PropertyDeclaration::Custom(ref declaration) = *declaration {
-                builder.cascade(&declaration.name, &declaration.value);
+                builder.cascade(declaration, Origin::Author);
             }
         }
 
         builder.build()
     }
 
     /// Like the method on ToCss, but without the type parameter to avoid
     /// accidentally monomorphizing this large function multiple times for
--- a/servo/components/style/properties/helpers.mako.rs
+++ b/servo/components/style/properties/helpers.mako.rs
@@ -344,16 +344,17 @@
                                 context.rule_cache_conditions.borrow_mut().set_uncacheable();
                             % endif
                             % if property.ident == "font_size":
                                 computed::FontSize::cascade_inherit_font_size(context);
                             % else:
                                 context.builder.inherit_${property.ident}();
                             % endif
                         }
+                        CSSWideKeyword::Revert => unreachable!("Should never get here"),
                     }
                     return;
                 }
                 PropertyDeclaration::WithVariables(..) => {
                     panic!("variables should already have been substituted")
                 }
                 _ => panic!("entered the wrong cascade_property() implementation"),
             };
--- a/servo/components/style/properties/helpers/animated_properties.mako.rs
+++ b/servo/components/style/properties/helpers/animated_properties.mako.rs
@@ -447,24 +447,33 @@ impl AnimationValue {
             % endfor
             PropertyDeclaration::CSSWideKeyword(ref declaration) => {
                 match declaration.id {
                     // We put all the animatable properties first in the hopes
                     // that it might increase match locality.
                     % for prop in data.longhands:
                     % if prop.animatable:
                     LonghandId::${prop.camel_case} => {
+                        // FIXME(emilio, bug 1533327): I think
+                        // CSSWideKeyword::Revert handling is not fine here, but
+                        // what to do instead?
+                        //
+                        // Seems we'd need the computed value as if it was
+                        // revert, somehow. Treating it as `unset` seems fine
+                        // for now...
                         let style_struct = match declaration.keyword {
                             % if not prop.style_struct.inherited:
+                            CSSWideKeyword::Revert |
                             CSSWideKeyword::Unset |
                             % endif
                             CSSWideKeyword::Initial => {
                                 initial.get_${prop.style_struct.name_lower}()
                             },
                             % if prop.style_struct.inherited:
+                            CSSWideKeyword::Revert |
                             CSSWideKeyword::Unset |
                             % endif
                             CSSWideKeyword::Inherit => {
                                 context.builder
                                        .get_parent_${prop.style_struct.name_lower}()
                             },
                         };
                         let computed = style_struct
--- a/servo/components/style/properties/properties.mako.rs
+++ b/servo/components/style/properties/properties.mako.rs
@@ -895,37 +895,41 @@ impl LonghandIdSet {
          ToCss)]
 pub enum CSSWideKeyword {
     /// The `initial` keyword.
     Initial,
     /// The `inherit` keyword.
     Inherit,
     /// The `unset` keyword.
     Unset,
+    /// The `revert` keyword.
+    Revert,
 }
 
 impl CSSWideKeyword {
     fn to_str(&self) -> &'static str {
         match *self {
             CSSWideKeyword::Initial => "initial",
             CSSWideKeyword::Inherit => "inherit",
             CSSWideKeyword::Unset => "unset",
+            CSSWideKeyword::Revert => "revert",
         }
     }
 }
 
 impl CSSWideKeyword {
     fn parse(input: &mut Parser) -> Result<Self, ()> {
         let keyword = {
             let ident = input.expect_ident().map_err(|_| ())?;
             match_ignore_ascii_case! { ident,
                 // If modifying this set of keyword, also update values::CustomIdent::from_ident
                 "initial" => CSSWideKeyword::Initial,
                 "inherit" => CSSWideKeyword::Inherit,
                 "unset" => CSSWideKeyword::Unset,
+                "revert" => CSSWideKeyword::Revert,
                 _ => return Err(()),
             }
         };
         input.expect_exhausted().map_err(|_| ())?;
         Ok(keyword)
     }
 }
 
@@ -2098,25 +2102,32 @@ impl PropertyDeclaration {
                 }
                 Some(&*declaration.value.css)
             },
             _ => None,
         }
     }
 
     /// Returns a CSS-wide keyword if the declaration's value is one.
+    #[inline]
     pub fn get_css_wide_keyword(&self) -> Option<CSSWideKeyword> {
         match *self {
             PropertyDeclaration::CSSWideKeyword(ref declaration) => {
                 Some(declaration.keyword)
             },
             _ => None,
         }
     }
 
+    /// Whether this declaration is the `revert` keyword.
+    #[inline]
+    pub fn is_revert(&self) -> bool {
+        self.get_css_wide_keyword().map_or(false, |kw| kw == CSSWideKeyword::Revert)
+    }
+
     /// Returns whether or not the property is set by a system font
     pub fn get_system(&self) -> Option<SystemFont> {
         match *self {
             % if product == "gecko":
             % for prop in SYSTEM_FONT_LONGHANDS:
                 PropertyDeclaration::${to_camel_case(prop)}(ref prop) => {
                     prop.get_system()
                 }
--- a/servo/components/style/rule_tree/mod.rs
+++ b/servo/components/style/rule_tree/mod.rs
@@ -6,17 +6,17 @@
 
 //! The rule tree.
 
 use crate::applicable_declarations::ApplicableDeclarationList;
 #[cfg(feature = "gecko")]
 use crate::gecko::selector_parser::PseudoElement;
 use crate::properties::{Importance, LonghandIdSet, PropertyDeclarationBlock};
 use crate::shared_lock::{Locked, SharedRwLockReadGuard, StylesheetGuards};
-use crate::stylesheets::StyleRule;
+use crate::stylesheets::{StyleRule, Origin};
 use crate::thread_state;
 #[cfg(feature = "gecko")]
 use malloc_size_of::{MallocSizeOf, MallocSizeOfOps};
 use servo_arc::{Arc, ArcBorrow, ArcUnion, ArcUnionBorrow};
 use smallvec::SmallVec;
 use std::io::{self, Write};
 use std::mem;
 use std::ptr;
@@ -654,16 +654,37 @@ impl CascadeLevel {
     pub fn importance(&self) -> Importance {
         if self.is_important() {
             Importance::Important
         } else {
             Importance::Normal
         }
     }
 
+    /// Returns the cascade origin of the rule.
+    #[inline]
+    pub fn origin(&self) -> Origin {
+        match *self {
+            CascadeLevel::UAImportant |
+            CascadeLevel::UANormal => Origin::UserAgent,
+            CascadeLevel::UserImportant |
+            CascadeLevel::UserNormal => Origin::User,
+            CascadeLevel::PresHints |
+            CascadeLevel::InnerShadowNormal |
+            CascadeLevel::SameTreeAuthorNormal |
+            CascadeLevel::StyleAttributeNormal |
+            CascadeLevel::SMILOverride |
+            CascadeLevel::Animations |
+            CascadeLevel::SameTreeAuthorImportant |
+            CascadeLevel::StyleAttributeImportant |
+            CascadeLevel::InnerShadowImportant |
+            CascadeLevel::Transitions => Origin::Author,
+        }
+    }
+
     /// Returns whether this cascade level represents an animation rules.
     #[inline]
     pub fn is_animation(&self) -> bool {
         match *self {
             CascadeLevel::SMILOverride | CascadeLevel::Animations | CascadeLevel::Transitions => {
                 true
             },
             _ => false,
--- a/servo/components/style/stylesheets/origin.rs
+++ b/servo/components/style/stylesheets/origin.rs
@@ -31,16 +31,35 @@ impl Origin {
     fn from_index(index: i8) -> Option<Self> {
         Some(match index {
             0 => Origin::Author,
             1 => Origin::User,
             2 => Origin::UserAgent,
             _ => return None,
         })
     }
+
+    fn to_index(self) -> i8 {
+        match self {
+            Origin::Author => 0,
+            Origin::User => 1,
+            Origin::UserAgent => 2,
+        }
+    }
+
+    /// Returns an iterator from this origin, towards all the less specific
+    /// origins. So for `UserAgent`, it'd iterate through all origins.
+    #[inline]
+    pub fn following_including(self) -> OriginSetIterator {
+        OriginSetIterator {
+            set: OriginSet::ORIGIN_USER | OriginSet::ORIGIN_AUTHOR | OriginSet::ORIGIN_USER_AGENT,
+            cur: self.to_index(),
+            rev: true,
+        }
+    }
 }
 
 bitflags! {
     /// A set of origins. This is equivalent to Gecko's OriginFlags.
     #[cfg_attr(feature = "servo", derive(MallocSizeOf))]
     pub struct OriginSet: u8 {
         /// <https://drafts.csswg.org/css-cascade/#cascade-origin-user-agent>
         const ORIGIN_USER_AGENT = Origin::UserAgent as u8;
@@ -52,17 +71,17 @@ bitflags! {
 }
 
 impl OriginSet {
     /// Returns an iterator over the origins present in this `OriginSet`.
     ///
     /// See the `OriginSet` documentation for information about the order
     /// origins are iterated.
     pub fn iter(&self) -> OriginSetIterator {
-        OriginSetIterator { set: *self, cur: 0 }
+        OriginSetIterator { set: *self, cur: 0, rev: false }
     }
 }
 
 impl From<Origin> for OriginSet {
     fn from(origin: Origin) -> Self {
         Self::from_bits_truncate(origin as u8)
     }
 }
@@ -74,26 +93,31 @@ impl BitOrAssign<Origin> for OriginSet {
 }
 
 /// Iterates over the origins present in an `OriginSet`, in order from
 /// highest priority (author) to lower (user agent).
 #[derive(Clone)]
 pub struct OriginSetIterator {
     set: OriginSet,
     cur: i8,
+    rev: bool,
 }
 
 impl Iterator for OriginSetIterator {
     type Item = Origin;
 
     fn next(&mut self) -> Option<Origin> {
         loop {
             let origin = Origin::from_index(self.cur)?;
 
-            self.cur += 1;
+            if self.rev {
+                self.cur -= 1;
+            } else {
+                self.cur += 1;
+            }
 
             if self.set.contains(origin.into()) {
                 return Some(origin);
             }
         }
     }
 }
 
--- a/servo/components/style/values/mod.rs
+++ b/servo/components/style/values/mod.rs
@@ -155,17 +155,17 @@ pub struct CustomIdent(pub Atom);
 impl CustomIdent {
     /// Parse an already-tokenizer identifier
     pub fn from_ident<'i>(
         location: SourceLocation,
         ident: &CowRcStr<'i>,
         excluding: &[&str],
     ) -> Result<Self, ParseError<'i>> {
         let valid = match_ignore_ascii_case! { ident,
-            "initial" | "inherit" | "unset" | "default" => false,
+            "initial" | "inherit" | "unset" | "default" | "revert" => false,
             _ => true
         };
         if !valid {
             return Err(
                 location.new_custom_error(SelectorParseErrorKind::UnexpectedIdent(ident.clone()))
             );
         }
         if excluding.iter().any(|s| ident.eq_ignore_ascii_case(s)) {
deleted file mode 100644
--- a/testing/web-platform/meta/css/css-cascade/revert-val-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[revert-val-001.html]
-  expected: FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-cascade/revert-val-002.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Cascade: 'revert' keyword interaction with !important</title>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://drafts.csswg.org/css-cascade/#default">
+<link rel="match" href="reference/ref-filled-green-100px-square.xht">
+<style>
+#outer {
+  background-color: red;
+  width: 100px;
+  height: 100px;
+  overflow: hidden;
+}
+#inner {
+  /* This should win over `revert` */
+  display: block !important;
+}
+#inner {
+  color: green;
+  background-color: green;
+  display: revert;
+}
+</style>
+</head>
+<body>
+  <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+  <div id="outer">
+    <span id="inner">
+      This<br>
+      is<br>
+      filler<br>
+      text.<br>
+      This<br>
+      is<br>
+      filler<br>
+      text.
+    </span>
+  </div>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-cascade/revert-val-003.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Cascade: 'revert' keyword in transition</title>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://drafts.csswg.org/css-cascade/#default">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+html, body { margin: 0 }
+h1 {
+  margin: 0;
+  transition: margin 10s;
+  transition-delay: -5s; /* So we can expect it to be half-way the transition when toggling the property */
+}
+</style>
+<h1>This is a header that should get some margin</h1>
+<script>
+test(function() {
+  const el = document.querySelector("h1");
+  const cs = getComputedStyle(el);
+  assert_equals(cs.marginTop, "0px", "Margin before transition");
+  el.style.margin = "revert";
+  const midTransition = cs.marginTop;
+  assert_not_equals(midTransition, "0px", "Margin mid transition");
+  el.style.transition = "none";
+  assert_not_equals(cs.marginTop, midTransition, "Default margin");
+}, "revert works with transitions");
+</script>
--- a/testing/web-platform/tests/css/css-variables/variable-definition-keywords.html
+++ b/testing/web-platform/tests/css/css-variables/variable-definition-keywords.html
@@ -28,29 +28,35 @@
     <div id="initialParent" style="--var: 20px;">
         <div id="initialTest" style="--var: initial;"></div>
     </div>
 
     <div id="unsetParent" style="--var: 20px;">
         <div id="unsetTest" style="--var: unset;"></div>
     </div>
 
+    <div id="revertParent" style="--var: 20px;">
+        <div id="revertTest" style="--var: revert;"></div>
+    </div>
+
     <script type="text/javascript">
         "use strict";
 
         let computedStyle = [
             { elementId: "inheritTest", property: "--var", expectedValue: "20px", testName: "computed style inherit" },
             { elementId: "initialTest", property: "--var", expectedValue: "", testName: "computed style initial" },
-            { elementId: "unsetTest", property: "--var", expectedValue: "20px", testName: "computed style unset" }
+            { elementId: "unsetTest", property: "--var", expectedValue: "20px", testName: "computed style unset" },
+            { elementId: "revertTest", property: "--var", expectedValue: "20px", testName: "computed style revert" }
         ];
 
         let specifiedStyle = [
             { elementId: "inheritTest", property: "--var", expectedValue: "inherit", testName: "specified style inherit" },
             { elementId: "initialTest", property: "--var", expectedValue: "initial", testName: "specified style initial" },
-            { elementId: "unsetTest", property: "--var", expectedValue: "unset", testName: "specified style unset" }
+            { elementId: "unsetTest", property: "--var", expectedValue: "unset", testName: "specified style unset" },
+            { elementId: "revertTest", property: "--var", expectedValue: "revert", testName: "specified style revert" }
         ];
 
         computedStyle.forEach(function (csTest) {
             test( function () {
                 var elem = document.getElementById(csTest.elementId);
                 var actualValue = window.getComputedStyle(elem).getPropertyValue(csTest.property).trim();
                 assert_equals(csTest.expectedValue, actualValue);
             }, csTest.testName);