summaryrefslogtreecommitdiffstats
path: root/layout/style/res
diff options
context:
space:
mode:
Diffstat (limited to 'layout/style/res')
-rw-r--r--layout/style/res/Mozilla_Bullet.bf139
-rw-r--r--layout/style/res/Mozilla_Bullet.ttf0
-rw-r--r--layout/style/res/Mozilla_Bullet.woff20
-rw-r--r--layout/style/res/accessiblecaret-normal.svg10
-rw-r--r--layout/style/res/accessiblecaret-normal@1.5x.pngbin0 -> 1453 bytes
-rw-r--r--layout/style/res/accessiblecaret-normal@1x.pngbin0 -> 999 bytes
-rw-r--r--layout/style/res/accessiblecaret-normal@2.25x.pngbin0 -> 2053 bytes
-rw-r--r--layout/style/res/accessiblecaret-normal@2x.pngbin0 -> 2118 bytes
-rw-r--r--layout/style/res/accessiblecaret-tilt-left.svg10
-rw-r--r--layout/style/res/accessiblecaret-tilt-left@1.5x.pngbin0 -> 1443 bytes
-rw-r--r--layout/style/res/accessiblecaret-tilt-left@1x.pngbin0 -> 993 bytes
-rw-r--r--layout/style/res/accessiblecaret-tilt-left@2.25x.pngbin0 -> 2092 bytes
-rw-r--r--layout/style/res/accessiblecaret-tilt-left@2x.pngbin0 -> 1775 bytes
-rw-r--r--layout/style/res/accessiblecaret-tilt-right.svg10
-rw-r--r--layout/style/res/accessiblecaret-tilt-right@1.5x.pngbin0 -> 1440 bytes
-rw-r--r--layout/style/res/accessiblecaret-tilt-right@1x.pngbin0 -> 982 bytes
-rw-r--r--layout/style/res/accessiblecaret-tilt-right@2.25x.pngbin0 -> 2075 bytes
-rw-r--r--layout/style/res/accessiblecaret-tilt-right@2x.pngbin0 -> 1766 bytes
-rw-r--r--layout/style/res/accessiblecaret.css108
-rw-r--r--layout/style/res/counterstyles.css365
-rw-r--r--layout/style/res/details.css21
-rw-r--r--layout/style/res/forms.css932
-rw-r--r--layout/style/res/html.css927
-rw-r--r--layout/style/res/noframes.css13
-rw-r--r--layout/style/res/password-hide.svg7
-rw-r--r--layout/style/res/password.svg7
-rw-r--r--layout/style/res/plaintext.css36
-rw-r--r--layout/style/res/quirk.css105
-rw-r--r--layout/style/res/scrollbars.css234
-rw-r--r--layout/style/res/searchfield-cancel.svg20
-rw-r--r--layout/style/res/ua.css455
-rw-r--r--layout/style/res/viewsource.css116
32 files changed, 3515 insertions, 0 deletions
diff --git a/layout/style/res/Mozilla_Bullet.bf b/layout/style/res/Mozilla_Bullet.bf
new file mode 100644
index 0000000000..de8a7e2c29
--- /dev/null
+++ b/layout/style/res/Mozilla_Bullet.bf
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<font>
+<format>2.2</format>
+
+<postscript_name>Mozilla Bullet</postscript_name>
+<name>Bullet</name>
+<subfamily>Regular</subfamily>
+<bold>false</bold>
+<italic>false</italic>
+<full_name>Mozilla Bullet</full_name>
+<unique_identifier>Mozilla Bullet</unique_identifier>
+<version>Version 1.0</version>
+<description></description>
+<copyright></copyright>
+<license></license>
+<license_url></license_url>
+<weight>400</weight>
+<units_per_em>1024</units_per_em>
+<trademark></trademark>
+<manufacturer>Mozilla</manufacturer>
+<designer>Mats Palmgren</designer>
+<vendor_url></vendor_url>
+<designer_url></designer_url>
+
+<horizontal>
+ <top_limit>84.0000000000</top_limit>
+ <top_position>66.0000000000</top_position>
+ <x-height>62.0000000000</x-height>
+ <base_line>4.0000000000</base_line>
+ <bottom_position>0.0000000000</bottom_position>
+ <bottom_limit>0.0000000000</bottom_limit>
+ <custom_guide label="center">130.5577907913</custom_guide>
+ <custom_guide label="middle">34.0000000000</custom_guide>
+</horizontal>
+
+<grid width="1.0000"/>
+<grid width="2.0000"/>
+<grid width="4.0000"/>
+<grid width="1.0000"/>
+<grid width="1.0000"/>
+<grid width="2.0000"/>
+<grid width="4.0000"/>
+<grid width="1.0000"/>
+<grid width="2.0000"/>
+<grid width="1.0000"/>
+<grid width="2.0000"/>
+<grid width="4.0000"/>
+<grid width="1.0000"/>
+<grid width="2.0000"/>
+<grid width="4.0000"/>
+<grid width="1.0000"/>
+<grid width="2.0000"/>
+<grid width="4.0000"/>
+<grid width="1.0000"/>
+<grid width="1.0000"/>
+<grid width="2.0000"/>
+<grid width="4.0000"/>
+<grid width="1.0000"/>
+<grid width="2.0000"/>
+<grid width="1.0000"/>
+<grid width="2.0000"/>
+<grid width="4.0000"/>
+<grid width="1.0000"/>
+<grid width="2.0000"/>
+<grid width="4.0000"/>
+<background scale="1" />
+
+<collection unicode="U+20">
+ <selected id="0"/>
+ <glyph id="0" left="0" right="40">
+ </glyph>
+</collection>
+
+<collection unicode="U+2022">
+ <selected id="1"/>
+ <glyph id="1" left="0" right="56.054687999999999">
+ <layer name= "Layer" visible="true">
+ <path data="S 39.8340571477,21.8512253642 Q 37.5859284387,19.6030966550 34.3912193480,18.3015483276 Q 31.1965114690,17.0000000000 28.0018023784,17.0000000000 Q 24.8070932877,17.0000000000 21.6123841971,18.3015483276 Q 18.4176751064,19.6030966550 16.1695476089,21.8512253642 Q 13.8030966551,24.0993528616 12.5015483276,27.2940619523 Q 11.2000000000,30.4887710429 11.2000000000,33.6834789219 Q 11.2000000000,36.8781880126 12.5015483276,40.0728971032 Q 13.8030966551,43.2676061939 16.1695476089,45.5157349029 Q 18.4176751064,47.7638624004 21.6123841971,49.1837329728 Q 24.8070932877,50.4852813003 28.0018023784,50.4852813003 Q 31.1965114690,50.4852813003 34.3912193480,49.1837329728 Q 37.5859284387,47.7638624004 39.8340571477,45.5157349029 Q 42.0821846453,43.2676061939 43.3837329728,40.0728971032 Q 44.6852813003,36.8781880126 44.6852813003,33.6834789219 Q 44.6852813003,30.4887710429 43.3837329728,27.2940619523 Q 42.0821846453,24.0993528616 39.8340571477,21.8512253642" />
+ </layer>
+ </glyph>
+</collection>
+
+<collection unicode="U+25aa">
+ <selected id="1"/>
+ <glyph id="1" left="0" right="56.054687999999999">
+ <layer name= "Layer" visible="true">
+ <path data="B 12.0000000000,49.8262327578 M 43.9762327578,49.8262327578 M 43.9762327578,17.8500000000 M 12.0000000000,17.8500000000 M 12.0000000000,49.8262327578" />
+ </layer>
+ </glyph>
+</collection>
+
+<collection unicode="U+25b8">
+ <selected id="0"/>
+ <glyph id="0" left="-24" right="24">
+ <layer name= "Layer" visible="true">
+ <path data="S -22.3181299324,34.0373543359 L -22.3181299324,57.9301041570 L 25.4673697100,34.0373543359 L -22.3181299324,10.1446045147 L -22.3181299324,34.0373543359" />
+ </layer>
+ </glyph>
+</collection>
+
+<collection unicode="U+25be">
+ <selected id="1"/>
+ <glyph id="0" left="-28" right="28">
+ <layer name= "Layer" visible="true">
+ </layer>
+ </glyph>
+ <glyph id="1" left="-24" right="24">
+ <layer name= "Layer" visible="true">
+ <path data="S -0.0072501788,57.9301041570 L 23.8854996423,57.9301041570 L -0.0072501788,10.1446045146 L -23.9000000000,57.9301041570 L -0.0072501788,57.9301041570" />
+ </layer>
+ </glyph>
+</collection>
+
+<collection unicode="U+25c2">
+ <selected id="1"/>
+ <glyph id="0" left="-28" right="28">
+ <layer name= "Layer" visible="true">
+ </layer>
+ </glyph>
+ <glyph id="1" left="-24" right="24">
+ <layer name= "Layer" visible="true">
+ <path data="S 22.1854996424,34.0373543358 L 22.1854996424,10.1446045147 L -25.6000000000,34.0373543358 L 22.1854996424,57.9301041570 L 22.1854996424,34.0373543358" />
+ </layer>
+ </glyph>
+</collection>
+
+<collection unicode="U+25e6">
+ <selected id="0"/>
+ <glyph id="0" left="0" right="56.054687999999999">
+ <layer name= "Layer" visible="true">
+ <path stroke="2.3999999999999999" data="B 40.0833461228,23.2212841662 C 37.0522303130,20.1901683563 32.4889602320,18.3000000000 28.2023151445,18.3000000000 T C 23.9156700571,18.3000000000 19.3523999761,20.1901683563 16.3212841662,23.2212841662 T C 13.2901683563,26.2523999761 11.4000000000,30.8156700570 11.4000000000,35.1023151445 T C 11.4000000000,39.3889602320 13.2901683564,43.9522303130 16.3212841662,46.9833461228 T C 19.3523999761,50.0144619327 23.9156700571,51.9046302890 28.2023151445,51.9046302890 T C 32.4889602320,51.9046302890 37.0522303129,50.0144619326 40.0833461228,46.9833461228 T C 43.1144619327,43.9522303130 45.0046302890,39.3889602320 45.0046302890,35.1023151445 T C 45.0046302890,30.8156700570 43.1144619327,26.2523999760 40.0833461228,23.2212841662 T" />
+ </layer>
+ </glyph>
+</collection>
+
+
+
+
+</font>
diff --git a/layout/style/res/Mozilla_Bullet.ttf b/layout/style/res/Mozilla_Bullet.ttf
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/layout/style/res/Mozilla_Bullet.ttf
diff --git a/layout/style/res/Mozilla_Bullet.woff2 b/layout/style/res/Mozilla_Bullet.woff2
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/layout/style/res/Mozilla_Bullet.woff2
diff --git a/layout/style/res/accessiblecaret-normal.svg b/layout/style/res/accessiblecaret-normal.svg
new file mode 100644
index 0000000000..add588ead1
--- /dev/null
+++ b/layout/style/res/accessiblecaret-normal.svg
@@ -0,0 +1,10 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg width="66px" height="80px" viewBox="0 0 66 80" xmlns="http://www.w3.org/2000/svg">
+ <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g transform="translate(-332.000000, -1230.000000)" fill="AccentColor" opacity="0.95">
+ <path d="M342,1253 L365,1230 L388,1253 C401.220659,1266.37181 401.223493,1287.34993 388,1300 C375.446886,1313.2341 354.555948,1313.23694 342,1300 C328.779341,1287.35277 328.776507,1266.37465 342,1253 Z"></path>
+ </g>
+ </g>
+</svg>
diff --git a/layout/style/res/accessiblecaret-normal@1.5x.png b/layout/style/res/accessiblecaret-normal@1.5x.png
new file mode 100644
index 0000000000..6e2eb80dd3
--- /dev/null
+++ b/layout/style/res/accessiblecaret-normal@1.5x.png
Binary files differ
diff --git a/layout/style/res/accessiblecaret-normal@1x.png b/layout/style/res/accessiblecaret-normal@1x.png
new file mode 100644
index 0000000000..7410946c66
--- /dev/null
+++ b/layout/style/res/accessiblecaret-normal@1x.png
Binary files differ
diff --git a/layout/style/res/accessiblecaret-normal@2.25x.png b/layout/style/res/accessiblecaret-normal@2.25x.png
new file mode 100644
index 0000000000..cbe570c2ed
--- /dev/null
+++ b/layout/style/res/accessiblecaret-normal@2.25x.png
Binary files differ
diff --git a/layout/style/res/accessiblecaret-normal@2x.png b/layout/style/res/accessiblecaret-normal@2x.png
new file mode 100644
index 0000000000..fd5034b880
--- /dev/null
+++ b/layout/style/res/accessiblecaret-normal@2x.png
Binary files differ
diff --git a/layout/style/res/accessiblecaret-tilt-left.svg b/layout/style/res/accessiblecaret-tilt-left.svg
new file mode 100644
index 0000000000..f5d238dc09
--- /dev/null
+++ b/layout/style/res/accessiblecaret-tilt-left.svg
@@ -0,0 +1,10 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg width="66px" height="66px" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
+ <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g transform="translate(-564.000000, -1723.000000)" fill="AccentColor" opacity="0.95">
+ <path d="M564,1756 C564,1737.7746 578.770596,1723 597,1723 L630,1723 L630,1756 C630,1774.2254 615.229404,1789 597,1789 C578.774603,1789 564,1774.2294 564,1756 L564,1756 Z"></path>
+ </g>
+ </g>
+</svg>
diff --git a/layout/style/res/accessiblecaret-tilt-left@1.5x.png b/layout/style/res/accessiblecaret-tilt-left@1.5x.png
new file mode 100644
index 0000000000..7176191193
--- /dev/null
+++ b/layout/style/res/accessiblecaret-tilt-left@1.5x.png
Binary files differ
diff --git a/layout/style/res/accessiblecaret-tilt-left@1x.png b/layout/style/res/accessiblecaret-tilt-left@1x.png
new file mode 100644
index 0000000000..09fdb0286d
--- /dev/null
+++ b/layout/style/res/accessiblecaret-tilt-left@1x.png
Binary files differ
diff --git a/layout/style/res/accessiblecaret-tilt-left@2.25x.png b/layout/style/res/accessiblecaret-tilt-left@2.25x.png
new file mode 100644
index 0000000000..4b66547c2b
--- /dev/null
+++ b/layout/style/res/accessiblecaret-tilt-left@2.25x.png
Binary files differ
diff --git a/layout/style/res/accessiblecaret-tilt-left@2x.png b/layout/style/res/accessiblecaret-tilt-left@2x.png
new file mode 100644
index 0000000000..d32fed2173
--- /dev/null
+++ b/layout/style/res/accessiblecaret-tilt-left@2x.png
Binary files differ
diff --git a/layout/style/res/accessiblecaret-tilt-right.svg b/layout/style/res/accessiblecaret-tilt-right.svg
new file mode 100644
index 0000000000..72f5b41cf9
--- /dev/null
+++ b/layout/style/res/accessiblecaret-tilt-right.svg
@@ -0,0 +1,10 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg width="66px" height="66px" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
+ <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g transform="translate(-690.000000, -1723.000000)" fill="AccentColor" opacity="0.95">
+ <path d="M723,1723 C741.225397,1723 756,1737.7706 756,1756 C756,1774.2254 741.229404,1789 723,1789 C704.774603,1789 690,1774.2294 690,1756 L690,1723 L723,1723 Z"></path>
+ </g>
+ </g>
+</svg>
diff --git a/layout/style/res/accessiblecaret-tilt-right@1.5x.png b/layout/style/res/accessiblecaret-tilt-right@1.5x.png
new file mode 100644
index 0000000000..cc7524ec8d
--- /dev/null
+++ b/layout/style/res/accessiblecaret-tilt-right@1.5x.png
Binary files differ
diff --git a/layout/style/res/accessiblecaret-tilt-right@1x.png b/layout/style/res/accessiblecaret-tilt-right@1x.png
new file mode 100644
index 0000000000..2712284d1e
--- /dev/null
+++ b/layout/style/res/accessiblecaret-tilt-right@1x.png
Binary files differ
diff --git a/layout/style/res/accessiblecaret-tilt-right@2.25x.png b/layout/style/res/accessiblecaret-tilt-right@2.25x.png
new file mode 100644
index 0000000000..c50c1b5e2f
--- /dev/null
+++ b/layout/style/res/accessiblecaret-tilt-right@2.25x.png
Binary files differ
diff --git a/layout/style/res/accessiblecaret-tilt-right@2x.png b/layout/style/res/accessiblecaret-tilt-right@2x.png
new file mode 100644
index 0000000000..d4a4138071
--- /dev/null
+++ b/layout/style/res/accessiblecaret-tilt-right@2x.png
Binary files differ
diff --git a/layout/style/res/accessiblecaret.css b/layout/style/res/accessiblecaret.css
new file mode 100644
index 0000000000..a994910a56
--- /dev/null
+++ b/layout/style/res/accessiblecaret.css
@@ -0,0 +1,108 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+:host {
+ /* Add transition effect to make caret size changing smoother. */
+ transition-property: width, height, margin-left;
+
+ position: absolute;
+ z-index: 2147483647;
+}
+
+#image,
+#text-overlay {
+ width: 100%;
+
+ /* Override this property in moz-custom-content-container to make dummy touch
+ * listener work. */
+ pointer-events: auto;
+}
+
+#image {
+ background-position: center top;
+ background-size: 100%;
+ background-repeat: no-repeat;
+ background-origin: content-box;
+}
+
+:host(.normal) #image {
+ background-image: image-set(
+ url("resource://gre-resources/accessiblecaret-normal@1x.png"),
+ url("resource://gre-resources/accessiblecaret-normal@1.5x.png") 1.5x,
+ url("resource://gre-resources/accessiblecaret-normal@2x.png") 2x,
+ url("resource://gre-resources/accessiblecaret-normal@2.25x.png") 2.25x
+ );
+}
+
+:host(.left) #image,
+:host(.left) #text-overlay {
+ margin-left: -39%;
+}
+
+:host(.left) > #image {
+ background-image: image-set(
+ url("resource://gre-resources/accessiblecaret-tilt-left@1x.png"),
+ url("resource://gre-resources/accessiblecaret-tilt-left@1.5x.png") 1.5x,
+ url("resource://gre-resources/accessiblecaret-tilt-left@2x.png") 2x,
+ url("resource://gre-resources/accessiblecaret-tilt-left@2.25x.png") 2.25x
+ );
+}
+
+:host(.right) #image,
+:host(.right) #text-overlay {
+ margin-left: 41%;
+}
+
+:host(.right) #image {
+ background-image: image-set(
+ url("resource://gre-resources/accessiblecaret-tilt-right@1x.png"),
+ url("resource://gre-resources/accessiblecaret-tilt-right@1.5x.png") 1.5x,
+ url("resource://gre-resources/accessiblecaret-tilt-right@2x.png") 2x,
+ url("resource://gre-resources/accessiblecaret-tilt-right@2.25x.png") 2.25x
+ );
+}
+
+:host(.none) {
+ display: none;
+}
+
+:host(.hidden) {
+ visibility: hidden;
+}
+
+@media (-moz-platform: android) {
+ #image,
+ #text-overlay {
+ /* border: 0.1px solid red; */ /* Uncomment border to see the touch target. */
+ padding-left: 59%; /* Enlarge the touch area. ((48-22)/2)px / 22px ~= 59% */
+ padding-right: 59%; /* Enlarge the touch area. */
+ margin-left: -59%;
+ }
+
+ #image {
+ padding-bottom: 59%; /* Enlarge the touch area. */
+ }
+
+ :host(.normal) #image {
+ background-image: url("resource://gre-resources/accessiblecaret-normal.svg");
+ }
+
+ :host(.left) #image,
+ :host(.left) #text-overlay {
+ margin-left: -109%;
+ }
+
+ :host(.left) #image {
+ background-image: url("resource://gre-resources/accessiblecaret-tilt-left.svg");
+ }
+
+ :host(.right) #image,
+ :host(.right) #text-overlay {
+ margin-left: -12%;
+ }
+
+ :host(.right) #image {
+ background-image: url("resource://gre-resources/accessiblecaret-tilt-right.svg");
+ }
+}
diff --git a/layout/style/res/counterstyles.css b/layout/style/res/counterstyles.css
new file mode 100644
index 0000000000..982ff0e185
--- /dev/null
+++ b/layout/style/res/counterstyles.css
@@ -0,0 +1,365 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* Defined in CSS Counter Styles Level 3 */
+
+/* 6 Simple Predefined Counter Styles */
+
+/* 6.1 Numeric */
+
+@counter-style decimal-leading-zero {
+ system: extends decimal;
+ pad: 2 '0';
+}
+
+@counter-style arabic-indic {
+ system: numeric;
+ symbols: '\660' '\661' '\662' '\663' '\664' '\665' '\666' '\667' '\668' '\669';
+}
+
+@counter-style armenian {
+ system: additive;
+ range: 1 9999;
+ additive-symbols: 9000 '\554', 8000 '\553', 7000 '\552', 6000 '\551', 5000 '\550', 4000 '\54F', 3000 '\54E', 2000 '\54D', 1000 '\54C', 900 '\54B', 800 '\54A', 700 '\549', 600 '\548', 500 '\547', 400 '\546', 300 '\545', 200 '\544', 100 '\543', 90 '\542', 80 '\541', 70 '\540', 60 '\53F', 50 '\53E', 40 '\53D', 30 '\53C', 20 '\53B', 10 '\53A', 9 '\539', 8 '\538', 7 '\537', 6 '\536', 5 '\535', 4 '\534', 3 '\533', 2 '\532', 1 '\531';
+}
+
+@counter-style upper-armenian {
+ system: additive;
+ range: 1 9999;
+ additive-symbols: 9000 '\554', 8000 '\553', 7000 '\552', 6000 '\551', 5000 '\550', 4000 '\54F', 3000 '\54E', 2000 '\54D', 1000 '\54C', 900 '\54B', 800 '\54A', 700 '\549', 600 '\548', 500 '\547', 400 '\546', 300 '\545', 200 '\544', 100 '\543', 90 '\542', 80 '\541', 70 '\540', 60 '\53F', 50 '\53E', 40 '\53D', 30 '\53C', 20 '\53B', 10 '\53A', 9 '\539', 8 '\538', 7 '\537', 6 '\536', 5 '\535', 4 '\534', 3 '\533', 2 '\532', 1 '\531';
+}
+
+@counter-style lower-armenian {
+ system: additive;
+ range: 1 9999;
+ additive-symbols: 9000 '\584', 8000 '\583', 7000 '\582', 6000 '\581', 5000 '\580', 4000 '\57F', 3000 '\57E', 2000 '\57D', 1000 '\57C', 900 '\57B', 800 '\57A', 700 '\579', 600 '\578', 500 '\577', 400 '\576', 300 '\575', 200 '\574', 100 '\573', 90 '\572', 80 '\571', 70 '\570', 60 '\56F', 50 '\56E', 40 '\56D', 30 '\56C', 20 '\56B', 10 '\56A', 9 '\569', 8 '\568', 7 '\567', 6 '\566', 5 '\565', 4 '\564', 3 '\563', 2 '\562', 1 '\561';
+}
+
+@counter-style bengali {
+ system: numeric;
+ symbols: '\9E6' '\9E7' '\9E8' '\9E9' '\9EA' '\9EB' '\9EC' '\9ED' '\9EE' '\9EF';
+}
+
+@counter-style cambodian {
+ system: extends khmer;
+}
+
+@counter-style khmer {
+ system: numeric;
+ symbols: '\17E0' '\17E1' '\17E2' '\17E3' '\17E4' '\17E5' '\17E6' '\17E7' '\17E8' '\17E9';
+}
+
+@counter-style cjk-decimal {
+ system: numeric;
+ range: 0 infinite;
+ symbols: '\3007' '\4E00' '\4E8C' '\4E09' '\56DB' '\4E94' '\516D' '\4E03' '\516B' '\4E5D';
+ suffix: '\3001';
+}
+
+@counter-style devanagari {
+ system: numeric;
+ symbols: '\966' '\967' '\968' '\969' '\96A' '\96B' '\96C' '\96D' '\96E' '\96F';
+}
+
+@counter-style georgian {
+ system: additive;
+ range: 1 19999;
+ additive-symbols: 10000 '\10F5', 9000 '\10F0', 8000 '\10EF', 7000 '\10F4', 6000 '\10EE', 5000 '\10ED', 4000 '\10EC', 3000 '\10EB', 2000 '\10EA', 1000 '\10E9', 900 '\10E8', 800 '\10E7', 700 '\10E6', 600 '\10E5', 500 '\10E4', 400 '\10F3', 300 '\10E2', 200 '\10E1', 100 '\10E0', 90 '\10DF', 80 '\10DE', 70 '\10DD', 60 '\10F2', 50 '\10DC', 40 '\10DB', 30 '\10DA', 20 '\10D9', 10 '\10D8', 9 '\10D7', 8 '\10F1', 7 '\10D6', 6 '\10D5', 5 '\10D4', 4 '\10D3', 3 '\10D2', 2 '\10D1', 1 '\10D0';
+}
+
+@counter-style gujarati {
+ system: numeric;
+ symbols: '\AE6' '\AE7' '\AE8' '\AE9' '\AEA' '\AEB' '\AEC' '\AED' '\AEE' '\AEF';
+}
+
+@counter-style gurmukhi {
+ system: numeric;
+ symbols: '\A66' '\A67' '\A68' '\A69' '\A6A' '\A6B' '\A6C' '\A6D' '\A6E' '\A6F';
+}
+
+/* hebrew is not included because our builtin algorithm can generate a wider
+ * range of number in this style than what the spec defines. */
+
+@counter-style kannada {
+ system: numeric;
+ symbols: '\CE6' '\CE7' '\CE8' '\CE9' '\CEA' '\CEB' '\CEC' '\CED' '\CEE' '\CEF';
+}
+
+@counter-style lao {
+ system: numeric;
+ symbols: '\ED0' '\ED1' '\ED2' '\ED3' '\ED4' '\ED5' '\ED6' '\ED7' '\ED8' '\ED9';
+}
+
+@counter-style malayalam {
+ system: numeric;
+ symbols: '\D66' '\D67' '\D68' '\D69' '\D6A' '\D6B' '\D6C' '\D6D' '\D6E' '\D6F';
+}
+
+@counter-style mongolian {
+ system: numeric;
+ symbols: '\1810' '\1811' '\1812' '\1813' '\1814' '\1815' '\1816' '\1817' '\1818' '\1819';
+}
+
+@counter-style myanmar {
+ system: numeric;
+ symbols: '\1040' '\1041' '\1042' '\1043' '\1044' '\1045' '\1046' '\1047' '\1048' '\1049';
+}
+
+@counter-style oriya {
+ system: numeric;
+ symbols: '\B66' '\B67' '\B68' '\B69' '\B6A' '\B6B' '\B6C' '\B6D' '\B6E' '\B6F';
+}
+
+@counter-style persian {
+ system: numeric;
+ symbols: '\6F0' '\6F1' '\6F2' '\6F3' '\6F4' '\6F5' '\6F6' '\6F7' '\6F8' '\6F9';
+}
+
+@counter-style lower-roman {
+ system: additive;
+ range: 1 3999;
+ additive-symbols: 1000 'm', 900 'cm', 500 'd', 400 'cd', 100 'c', 90 'xc', 50 'l', 40 'xl', 10 'x', 9 'ix', 5 'v', 4 'iv', 1 'i';
+}
+
+@counter-style upper-roman {
+ system: additive;
+ range: 1 3999;
+ additive-symbols: 1000 'M', 900 'CM', 500 'D', 400 'CD', 100 'C', 90 'XC', 50 'L', 40 'XL', 10 'X', 9 'IX', 5 'V', 4 'IV', 1 'I';
+}
+
+@counter-style tamil {
+ system: numeric;
+ symbols: '\BE6' '\BE7' '\BE8' '\BE9' '\BEA' '\BEB' '\BEC' '\BED' '\BEE' '\BEF';
+}
+
+@counter-style telugu {
+ system: numeric;
+ symbols: '\C66' '\C67' '\C68' '\C69' '\C6A' '\C6B' '\C6C' '\C6D' '\C6E' '\C6F';
+}
+
+@counter-style thai {
+ system: numeric;
+ symbols: '\E50' '\E51' '\E52' '\E53' '\E54' '\E55' '\E56' '\E57' '\E58' '\E59';
+}
+
+@counter-style tibetan {
+ system: numeric;
+ symbols: '\F20' '\F21' '\F22' '\F23' '\F24' '\F25' '\F26' '\F27' '\F28' '\F29';
+}
+
+/* 6.2 Alphabetic */
+
+@counter-style lower-alpha {
+ system: alphabetic;
+ symbols: 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z';
+}
+
+@counter-style lower-latin {
+ system: extends lower-alpha;
+}
+
+@counter-style upper-alpha {
+ system: alphabetic;
+ symbols: 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z';
+}
+
+@counter-style upper-latin {
+ system: extends upper-alpha;
+}
+
+@counter-style cjk-heavenly-stem {
+ system: fixed;
+ symbols: '\7532' '\4E59' '\4E19' '\4E01' '\620A' '\5DF1' '\5E9A' '\8F9B' '\58EC' '\7678';
+ fallback: cjk-decimal;
+ suffix: '\3001';
+}
+
+@counter-style cjk-earthly-branch {
+ system: fixed;
+ symbols: '\5B50' '\4E11' '\5BC5' '\536F' '\8FB0' '\5DF3' '\5348' '\672A' '\7533' '\9149' '\620C' '\4EA5';
+ fallback: cjk-decimal;
+ suffix: '\3001';
+}
+
+@counter-style lower-greek {
+ system: alphabetic;
+ symbols: '\3B1' '\3B2' '\3B3' '\3B4' '\3B5' '\3B6' '\3B7' '\3B8' '\3B9' '\3BA' '\3BB' '\3BC' '\3BD' '\3BE' '\3BF' '\3C0' '\3C1' '\3C3' '\3C4' '\3C5' '\3C6' '\3C7' '\3C8' '\3C9';
+}
+
+@counter-style hiragana {
+ system: alphabetic;
+ symbols: '\3042' '\3044' '\3046' '\3048' '\304A' '\304B' '\304D' '\304F' '\3051' '\3053' '\3055' '\3057' '\3059' '\305B' '\305D' '\305F' '\3061' '\3064' '\3066' '\3068' '\306A' '\306B' '\306C' '\306D' '\306E' '\306F' '\3072' '\3075' '\3078' '\307B' '\307E' '\307F' '\3080' '\3081' '\3082' '\3084' '\3086' '\3088' '\3089' '\308A' '\308B' '\308C' '\308D' '\308F' '\3090' '\3091' '\3092' '\3093';
+ suffix: '\3001';
+}
+
+@counter-style hiragana-iroha {
+ system: alphabetic;
+ symbols: '\3044' '\308D' '\306F' '\306B' '\307B' '\3078' '\3068' '\3061' '\308A' '\306C' '\308B' '\3092' '\308F' '\304B' '\3088' '\305F' '\308C' '\305D' '\3064' '\306D' '\306A' '\3089' '\3080' '\3046' '\3090' '\306E' '\304A' '\304F' '\3084' '\307E' '\3051' '\3075' '\3053' '\3048' '\3066' '\3042' '\3055' '\304D' '\3086' '\3081' '\307F' '\3057' '\3091' '\3072' '\3082' '\305B' '\3059';
+ suffix: '\3001';
+}
+
+@counter-style katakana {
+ system: alphabetic;
+ symbols: '\30A2' '\30A4' '\30A6' '\30A8' '\30AA' '\30AB' '\30AD' '\30AF' '\30B1' '\30B3' '\30B5' '\30B7' '\30B9' '\30BB' '\30BD' '\30BF' '\30C1' '\30C4' '\30C6' '\30C8' '\30CA' '\30CB' '\30CC' '\30CD' '\30CE' '\30CF' '\30D2' '\30D5' '\30D8' '\30DB' '\30DE' '\30DF' '\30E0' '\30E1' '\30E2' '\30E4' '\30E6' '\30E8' '\30E9' '\30EA' '\30EB' '\30EC' '\30ED' '\30EF' '\30F0' '\30F1' '\30F2' '\30F3';
+ suffix: '\3001';
+}
+
+@counter-style katakana-iroha {
+ system: alphabetic;
+ symbols: '\30A4' '\30ED' '\30CF' '\30CB' '\30DB' '\30D8' '\30C8' '\30C1' '\30EA' '\30CC' '\30EB' '\30F2' '\30EF' '\30AB' '\30E8' '\30BF' '\30EC' '\30BD' '\30C4' '\30CD' '\30CA' '\30E9' '\30E0' '\30A6' '\30F0' '\30CE' '\30AA' '\30AF' '\30E4' '\30DE' '\30B1' '\30D5' '\30B3' '\30A8' '\30C6' '\30A2' '\30B5' '\30AD' '\30E6' '\30E1' '\30DF' '\30B7' '\30F1' '\30D2' '\30E2' '\30BB' '\30B9';
+ suffix: '\3001';
+}
+
+/* 6.3 Symbolic */
+
+/* symbolic counter styles are not included because they will be drew directly
+ * by the program instead of use alternative symbols defined in the spec */
+
+/* 7 Complex Predefined Counter Styles */
+
+/* only alias is included as other complex counter styles will be generated by
+ * specific algorithms to support the extended range. */
+
+@counter-style cjk-ideographic {
+ system: extends trad-chinese-informal;
+}
+
+/* Mozilla-specific counter styles */
+
+/* Numeric */
+
+@counter-style -moz-arabic-indic {
+ system: extends arabic-indic;
+}
+
+@counter-style -moz-persian {
+ system: extends persian;
+}
+
+@counter-style -moz-urdu {
+ system: extends persian;
+}
+
+@counter-style -moz-devanagari {
+ system: extends devanagari;
+}
+
+@counter-style -moz-bengali {
+ system: extends bengali;
+}
+
+@counter-style -moz-gurmukhi {
+ system: extends gurmukhi;
+}
+
+@counter-style -moz-gujarati {
+ system: extends gujarati;
+}
+
+@counter-style -moz-oriya {
+ system: extends oriya;
+}
+
+@counter-style -moz-tamil {
+ system: extends tamil;
+}
+
+@counter-style -moz-telugu {
+ system: extends telugu;
+}
+
+@counter-style -moz-kannada {
+ system: extends kannada;
+}
+
+@counter-style -moz-malayalam {
+ system: extends malayalam;
+}
+
+@counter-style -moz-thai {
+ system: extends thai;
+}
+
+@counter-style -moz-lao {
+ system: extends lao;
+}
+
+@counter-style -moz-myanmar {
+ system: extends myanmar;
+}
+
+@counter-style -moz-khmer {
+ system: extends khmer;
+}
+
+/* Alphabetic */
+
+@counter-style -moz-cjk-heavenly-stem {
+ system: extends cjk-heavenly-stem;
+}
+@counter-style -moz-cjk-earthly-branch {
+ system: extends cjk-earthly-branch;
+}
+
+@counter-style -moz-hangul {
+ system: alphabetic;
+ symbols: '\AC00' '\B098' '\B2E4' '\B77C' '\B9C8' '\BC14' '\C0AC' '\C544' '\C790' '\CC28' '\CE74' '\D0C0' '\D30C' '\D558';
+ suffix: ',';
+}
+@counter-style -moz-hangul-consonant {
+ system: alphabetic;
+ symbols: '\3131' '\3134' '\3137' '\3139' '\3141' '\3142' '\3145' '\3147' '\3148' '\314A' '\314B' '\314C' '\314D' '\314E';
+ suffix: ',';
+}
+
+/* Ge'ez set of Ethiopic ordered list. There are other locale-dependent sets.
+ * For the time being, let's implement two Ge'ez sets only
+ * per Momoi san's suggestion in bug 102252.
+ * For details, refer to http://www.ethiopic.org/Collation/OrderedLists.html. */
+@counter-style -moz-ethiopic-halehame {
+ system: alphabetic;
+ symbols: '\1200' '\1208' '\1210' '\1218' '\1220' '\1228' '\1230' '\1240' '\1260' '\1270' '\1280' '\1290' '\12A0' '\12A8' '\12C8' '\12D0' '\12D8' '\12E8' '\12F0' '\1308' '\1320' '\1330' '\1338' '\1340' '\1348' '\1350';
+}
+@counter-style -moz-ethiopic-halehame-am {
+ system: alphabetic;
+ symbols: '\1200' '\1208' '\1210' '\1218' '\1220' '\1228' '\1230' '\1238' '\1240' '\1260' '\1270' '\1278' '\1280' '\1290' '\1298' '\12A0' '\12A8' '\12B8' '\12C8' '\12D0' '\12D8' '\12E0' '\12E8' '\12F0' '\1300' '\1308' '\1320' '\1328' '\1330' '\1338' '\1340' '\1348' '\1350';
+}
+@counter-style -moz-ethiopic-halehame-ti-er {
+ system: alphabetic;
+ symbols: '\1200' '\1208' '\1210' '\1218' '\1228' '\1230' '\1238' '\1240' '\1250' '\1260' '\1270' '\1278' '\1290' '\1298' '\12A0' '\12A8' '\12B8' '\12C8' '\12D0' '\12D8' '\12E0' '\12E8' '\12F0' '\1300' '\1308' '\1320' '\1328' '\1330' '\1338' '\1348' '\1350';
+}
+@counter-style -moz-ethiopic-halehame-ti-et {
+ system: alphabetic;
+ symbols: '\1200' '\1208' '\1210' '\1218' '\1220' '\1228' '\1230' '\1238' '\1240' '\1250' '\1260' '\1270' '\1278' '\1280' '\1290' '\1298' '\12A0' '\12A8' '\12B8' '\12C8' '\12D0' '\12D8' '\12E0' '\12E8' '\12F0' '\1300' '\1308' '\1320' '\1328' '\1330' '\1338' '\1340' '\1348' '\1350';
+}
+
+/* Alias */
+
+@counter-style -moz-trad-chinese-informal {
+ system: extends trad-chinese-informal;
+}
+
+@counter-style -moz-trad-chinese-formal {
+ system: extends trad-chinese-formal;
+}
+
+@counter-style -moz-simp-chinese-informal {
+ system: extends simp-chinese-informal;
+}
+
+@counter-style -moz-simp-chinese-formal {
+ system: extends simp-chinese-formal;
+}
+
+@counter-style -moz-japanese-informal {
+ system: extends japanese-informal;
+}
+
+@counter-style -moz-japanese-formal {
+ system: extends japanese-formal;
+}
+
+@counter-style -moz-ethiopic-numeric {
+ system: extends ethiopic-numeric;
+}
diff --git a/layout/style/res/details.css b/layout/style/res/details.css
new file mode 100644
index 0000000000..593e03d9d3
--- /dev/null
+++ b/layout/style/res/details.css
@@ -0,0 +1,21 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+slot:not([name]) {
+ display: none;
+}
+:host([open]) slot:not([name]) {
+ display: revert;
+}
+
+/* See the comment around the summary styles in html.css, these rules should
+ * match */
+summary {
+ display: list-item;
+ counter-increment: list-item 0;
+ list-style: disclosure-closed inside;
+}
+:host([open]) summary {
+ list-style-type: disclosure-open;
+}
diff --git a/layout/style/res/forms.css b/layout/style/res/forms.css
new file mode 100644
index 0000000000..9fb833aa74
--- /dev/null
+++ b/layout/style/res/forms.css
@@ -0,0 +1,932 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/**
+ Styles for old GFX form widgets
+ **/
+
+
+@namespace url(http://www.w3.org/1999/xhtml); /* set default namespace to HTML */
+
+*|*::-moz-fieldset-content {
+ display: block; /* StyleAdjuster::adjust_for_fieldset_content overrides this in some cases */
+ unicode-bidi: inherit;
+ text-overflow: inherit;
+ overflow: inherit;
+ overflow-clip-box: inherit;
+ resize: inherit;
+ /* Need to inherit border-radius too, so when the fieldset has rounded
+ borders we don't leak out the corners for hit-testing purposes. */
+ border-radius: inherit;
+ padding: inherit;
+ box-decoration-break: inherit;
+ block-size: 100%; /* Need this so percentage block-sizes of kids work right */
+ /* Please keep the declarations below in sync with ::-moz-scrolled-content in
+ ua.css and ::-moz-button-content below. */
+ content: inherit;
+ /* Multicol container */
+ column-count: inherit;
+ column-width: inherit;
+ column-gap: inherit;
+ column-rule: inherit;
+ column-fill: inherit;
+ /* Flex container */
+ flex-direction: inherit;
+ flex-wrap: inherit;
+ /* -webkit-box container (aliased from -webkit versions to -moz versions) */
+ -moz-box-orient: inherit;
+ -moz-box-direction: inherit;
+ -moz-box-pack: inherit;
+ -moz-box-align: inherit;
+ /* Grid container */
+ grid-auto-columns: inherit;
+ grid-auto-rows: inherit;
+ grid-auto-flow: inherit;
+ grid-column-gap: inherit;
+ grid-row-gap: inherit;
+ grid-template-areas: inherit;
+ grid-template-columns: inherit;
+ grid-template-rows: inherit;
+ /* CSS Align */
+ align-content: inherit;
+ align-items: inherit;
+ justify-content: inherit;
+ justify-items: inherit;
+}
+
+/* Miscellaneous form elements */
+
+legend {
+ display: block;
+ padding-inline: 2px;
+}
+
+fieldset {
+ display: block;
+ margin-inline: 2px;
+ padding-block: 0.35em 0.625em;
+ padding-inline: 0.75em;
+ border: 2px groove ThreeDFace;
+ min-inline-size: min-content;
+}
+
+label {
+ cursor: default;
+}
+
+/* Default inputs, text inputs, and selects */
+
+/* Note: Values in nsNativeTheme IsWidgetStyled function
+ need to match textfield background/border values here */
+
+input {
+ display: inline-block;
+ appearance: auto;
+ -moz-default-appearance: textfield;
+ /* The sum of border and padding on block-start and block-end
+ must be the same here, for buttons, and for <select> */
+ padding-block: 1px;
+ padding-inline: 2px;
+ border: 2px inset ButtonBorder;
+ background-color: Field;
+ color: FieldText;
+ font: -moz-field;
+ text-rendering: optimizeLegibility;
+ cursor: text;
+ overflow-clip-box: padding-box content-box;
+}
+
+textarea {
+ display: inline-block;
+ appearance: auto;
+ -moz-default-appearance: textarea;
+ margin-block: 1px;
+ border: 2px inset ButtonBorder;
+ padding: 2px;
+ background-color: Field;
+ color: FieldText;
+ font: medium -moz-fixed;
+ text-rendering: optimizeLegibility;
+ vertical-align: text-bottom;
+ cursor: text;
+ resize: both;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+/* A few properties that we don't want to inherit by default: */
+input, textarea, select, button, ::file-selector-button {
+ text-align: initial;
+ text-indent: initial;
+ text-shadow: initial;
+ text-transform: initial;
+ word-spacing: initial;
+ letter-spacing: initial;
+ /* Note that line-height is also reset for all these, via the font shorthand */
+}
+
+::placeholder,
+::-moz-text-control-editing-root,
+::-moz-text-control-preview {
+ overflow: auto;
+ border: 0;
+ /* This is necessary to make overflow-clip-box work */
+ padding: inherit;
+ margin: 0;
+ text-decoration: inherit;
+ display: inline-block;
+ ime-mode: inherit;
+ resize: inherit;
+ scrollbar-width: inherit;
+ -moz-control-character-visibility: visible;
+ overflow-clip-box: inherit;
+ visibility: hidden;
+}
+
+::placeholder,
+::-moz-text-control-preview {
+ /*
+ * Changing display to inline can leads to broken behaviour and will assert.
+ */
+ display: inline-block;
+
+ /*
+ * Changing resize would display a broken behaviour and will assert.
+ */
+ resize: none;
+
+ overflow: hidden;
+
+ /*
+ * The placeholder or preview should be ignored by pointer / selection / etc.
+ * Otherwise, we might have some unexpected behavior like the resize handle
+ * not being selectable.
+ */
+ pointer-events: none;
+ user-select: none;
+}
+
+::-moz-text-control-preview {
+ font-family: system-ui;
+}
+
+::placeholder {
+ opacity: 0.54;
+}
+
+:not(:-moz-autofill-preview)::-moz-text-control-editing-root,
+:placeholder-shown:not(:autofill)::placeholder,
+:autofill::-moz-text-control-preview {
+ visibility: inherit;
+}
+
+input::placeholder,
+input::-moz-text-control-editing-root,
+input::-moz-text-control-preview {
+ word-wrap: normal;
+ white-space: pre;
+ /* Make the line-height equal to the available height */
+ line-height: -moz-block-height !important;
+}
+
+input[type=password]::-moz-text-control-editing-root,
+input[type=password]::-moz-text-control-preview {
+ /*
+ * In password fields, any character should be put same direction. Otherwise,
+ * caret position at typing tells everybody whether the character is an RTL
+ * or an LTR character. Unfortunately, this makes odd rendering when bidi
+ * text is unmasked.
+ */
+ unicode-bidi: bidi-override;
+}
+
+textarea::-moz-text-control-editing-root {
+ scroll-behavior: inherit;
+ overscroll-behavior: inherit;
+ /* StyleAdjuster makes sure that the overflow value ends up being scrollable */
+ overflow: inherit;
+}
+
+input:read-write,
+textarea:read-write {
+ -moz-user-modify: read-write !important;
+}
+
+select {
+ margin: 0;
+ border-color: ButtonBorder;
+ font: -moz-list;
+ white-space: nowrap !important;
+ word-wrap: normal !important;
+ cursor: default;
+ box-sizing: border-box;
+ user-select: none;
+ border-width: 2px;
+ border-style: inset;
+ overflow: clip;
+ /* No text-decoration reaching inside, by default */
+ display: inline-block;
+ page-break-inside: avoid;
+ overflow-clip-box: padding-box !important; /* bug 992447 */
+ padding-block: 1px;
+
+ /* Set some styles for drop down selects. These are overridden below for
+ * list box selects. */
+ padding-inline: 4px;
+ background-color: -moz-Combobox;
+ color: -moz-ComboboxText;
+ vertical-align: baseline;
+ appearance: auto;
+ -moz-default-appearance: menulist;
+}
+
+select:-moz-select-list-box {
+ overflow-inline: hidden;
+ overflow-block: scroll;
+ padding-inline: 0;
+ background-color: Field;
+ color: FieldText;
+ vertical-align: text-bottom;
+ appearance: auto;
+ -moz-default-appearance: listbox;
+}
+
+@media (-moz-platform: macos) {
+ select:-moz-select-list-box {
+ scrollbar-width: thin;
+ }
+}
+
+select > button {
+ inline-size: 12px;
+ white-space: nowrap;
+ position: static;
+ appearance: auto;
+ -moz-default-appearance: -moz-menulist-arrow-button;
+
+ /* Make sure to size correctly if the combobox has a non-auto height. */
+ block-size: 100%;
+ box-sizing: border-box;
+
+ /* Draw the arrow in the select's color */
+ color: inherit;
+
+ /*
+ Make sure to align properly with the display frame. Note that we
+ want the baseline of the combobox to match the baseline of the
+ display frame, so the dropmarker is what gets the vertical-align.
+ */
+ vertical-align: top;
+}
+
+*|*::-moz-display-comboboxcontrol-frame {
+ content: inherit;
+ overflow: clip;
+ color: unset;
+ white-space: nowrap;
+ text-align: unset;
+ user-select: none;
+ /* Make sure to size correctly if the combobox has a non-auto block-size. */
+ block-size: 100%;
+ /* Try to always display our own text */
+ min-inline-size: max-content;
+ box-sizing: border-box;
+ line-height: -moz-block-height;
+}
+
+option[label]::before {
+ content: attr(label);
+}
+
+select:-moz-select-list-box option,
+select:-moz-select-list-box optgroup {
+ line-height: normal !important;
+}
+
+option {
+ display: block;
+ float: none !important;
+ position: static !important;
+ /* This makes sure that it is a containing block for positioned descendants. */
+ will-change: -moz-fixed-pos-containing-block !important;
+
+ min-block-size: 1em;
+ padding-block: 2px;
+ user-select: none;
+ /*
+ * Note that the "UA !important" tests in
+ * layout/style/test/test_animations.html depend on this rule, because
+ * they need some UA !important rule to test. If this changes, use a
+ * different one there.
+ */
+ white-space: nowrap !important;
+ word-wrap: normal !important;
+}
+
+select > option {
+ padding-inline: 4px;
+}
+
+option:checked {
+ background-color: -moz-cellhighlight;
+ color: -moz-cellhighlighttext;
+}
+
+select:-moz-select-list-box:focus option:checked {
+ background-color: SelectedItem !important;
+ color: SelectedItemText !important;
+}
+
+optgroup {
+ display: block;
+ float: none !important;
+ position: static !important;
+ font-style: italic;
+ font-weight: bold;
+ font-size: unset;
+ user-select: none;
+ white-space: nowrap !important;
+ word-wrap: normal !important;
+}
+
+optgroup > option {
+ padding-inline-start: 20px;
+ font-style: normal;
+ font-weight: normal;
+}
+
+optgroup:before {
+ display: block;
+ content: "\200b" attr(label);
+}
+
+@media (-moz-platform: android) {
+ /* These elements are handled by the prompt module. */
+ select option,
+ select optgroup {
+ pointer-events: none;
+ }
+}
+
+*|*::-moz-dropdown-list {
+ content: inherit;
+ z-index: 2147483647;
+ background-color: inherit;
+ user-select: none;
+ position: static !important;
+ float: none !important;
+
+ /*
+ * We can't change the padding here, because that would affect our
+ * intrinsic inline-size, since we scroll. But at the same time, we want
+ * to make sure that our inline-start border+padding matches the inline-start
+ * border+padding of a combobox so that our scrollbar will line up
+ * with the dropmarker. So set our inline-start border to 2px.
+ */
+ border: 1px outset black !important;
+ border-inline-start-width: 2px !important;
+}
+
+input:disabled,
+textarea:disabled,
+option:disabled,
+optgroup:disabled,
+select:disabled {
+ color: GrayText;
+ background-color: -moz-DisabledField;
+ cursor: unset;
+}
+
+input:disabled,
+textarea:disabled {
+ cursor: default;
+}
+
+option:disabled,
+optgroup:disabled {
+ background-color: transparent;
+}
+
+/* hidden inputs */
+input[type=hidden] {
+ appearance: none;
+ -moz-default-appearance: none;
+ display: none !important;
+ padding: unset;
+ border: 0;
+ cursor: auto;
+ -moz-user-focus: ignore;
+}
+
+/* image buttons */
+input[type=image] {
+ appearance: none;
+ -moz-default-appearance: none;
+ padding: unset;
+ border: none;
+ background-color: transparent;
+ font-family: sans-serif;
+ font-size: small;
+ cursor: pointer;
+}
+
+input[type=image]:disabled {
+ cursor: unset;
+}
+
+/* colored part of the color selector button */
+::-moz-color-swatch {
+ width: 100%;
+ height: 100%;
+ min-width: 3px;
+ min-height: 3px;
+ margin-inline: auto;
+ box-sizing: border-box;
+ border: 1px solid grey;
+ display: block;
+}
+
+/* radio buttons */
+input[type=radio] {
+ appearance: auto;
+ -moz-default-appearance: radio;
+ margin-block: 3px 0;
+ margin-inline: 5px 3px;
+}
+
+/* check boxes */
+input[type=checkbox] {
+ appearance: auto;
+ -moz-default-appearance: checkbox;
+ margin-block: 3px;
+ margin-inline: 4px 3px;
+}
+
+/* Common features of radio buttons and check boxes */
+
+input[type=radio],
+input[type=checkbox] {
+ box-sizing: border-box;
+ cursor: default;
+ /* unset some values from the general 'input' rule above: */
+ padding: unset;
+ border: unset;
+ background-color: unset;
+ color: unset;
+}
+
+input:is([type=radio], [type=checkbox]):is(:disabled, :disabled:active, :disabled:hover:active) {
+ cursor: unset;
+}
+
+input[type=search] {
+ box-sizing: border-box;
+}
+
+/* buttons */
+
+/* Note: Values in nsNativeTheme IsWidgetStyled function
+ need to match button background/border values here */
+
+/* Non text-related properties for buttons: these ones are shared with
+ input[type=color] */
+button,
+::file-selector-button,
+input:is([type=color], [type=reset], [type=button], [type=submit]) {
+ appearance: auto;
+ -moz-default-appearance: button;
+ /* The sum of border and padding on block-start and block-end
+ must be the same here, for text inputs, and for <select>.
+ Note -moz-focus-inner padding does not affect button size. */
+ padding-block: 1px;
+ padding-inline: 8px;
+ border: 2px outset ButtonBorder;
+ background-color: ButtonFace;
+ cursor: default;
+ box-sizing: border-box;
+ user-select: none;
+ overflow-clip-box: padding-box;
+}
+
+/* Text-related properties for buttons: these ones are not shared with
+ input[type=color] */
+button,
+::file-selector-button,
+input:is([type=reset], [type=button], [type=submit]) {
+ color: ButtonText;
+ font: -moz-button;
+ white-space: pre;
+ text-align: center;
+ padding-inline: 4px;
+}
+
+input[type=color] {
+ inline-size: 64px;
+ block-size: 32px;
+ padding: 4px;
+}
+
+/* https://github.com/whatwg/html/issues/9976 */
+input:not([type=image i], [type=range i], [type=checkbox i], [type=radio i]) {
+ overflow: clip !important;
+ overflow-clip-margin: 0px !important;
+}
+
+button,
+::file-selector-button {
+ /* Buttons should lay out like "normal" html, mostly */
+ white-space: unset;
+ /* But no text-decoration reaching inside, by default */
+ display: inline-block;
+}
+
+*|*::-moz-button-content {
+ display: block;
+ /* Please keep the declarations below in sync with ::-moz-scrolled-content in
+ ua.css and ::-moz-fieldset-content above. */
+ content: inherit;
+ /* Multicol container */
+ column-count: inherit;
+ column-width: inherit;
+ column-gap: inherit;
+ column-rule: inherit;
+ column-fill: inherit;
+ /* Flex container */
+ flex-direction: inherit;
+ flex-wrap: inherit;
+ /* -webkit-box container (aliased from -webkit versions to -moz versions) */
+ -moz-box-orient: inherit;
+ -moz-box-direction: inherit;
+ -moz-box-pack: inherit;
+ -moz-box-align: inherit;
+ /* Grid container */
+ grid-auto-columns: inherit;
+ grid-auto-rows: inherit;
+ grid-auto-flow: inherit;
+ grid-column-gap: inherit;
+ grid-row-gap: inherit;
+ grid-template-areas: inherit;
+ grid-template-columns: inherit;
+ grid-template-rows: inherit;
+ /* CSS Align */
+ align-content: inherit;
+ align-items: inherit;
+ justify-content: inherit;
+ justify-items: inherit;
+}
+
+::file-selector-button:hover,
+button:hover,
+input:is([type=reset], [type=button], [type=submit], [type=color]):hover {
+ color: -moz-buttonhovertext;
+ background-color: -moz-buttonhoverface;
+}
+
+::file-selector-button:active:hover,
+button:active:hover,
+input:is([type=reset], [type=button], [type=submit], [type=color]):active:hover {
+ border-style: inset;
+ color: -moz-buttonactivetext;
+ background-color: -moz-buttonactiveface;
+}
+
+::-moz-focus-inner {
+ /* Note this padding only affects the -moz-focus-inner ring, not the button itself */
+ padding-block: 0;
+ padding-inline: 2px;
+ border: 1px dotted transparent;
+}
+
+:focus-visible::-moz-focus-inner {
+ border-color: currentColor;
+}
+
+:is(:disabled, :disabled:active)::file-selector-button,
+button:is(:disabled, :disabled:active),
+input:is([type=reset], [type=button], [type=submit], [type=color]):is(:disabled, :disabled:active),
+select:is(:disabled, :disabled:active) > button {
+ border-style: outset;
+ cursor: unset;
+}
+
+:is(:disabled, :disabled:active)::file-selector-button,
+button:is(:disabled, :disabled:active),
+input:is([type=reset], [type=button], [type=submit]):is(:disabled, :disabled:active),
+select:is(:disabled, :disabled:active) > button {
+ color: GrayText;
+ background-color: -moz-ButtonDisabledFace;
+}
+
+/* file selector */
+input[type=file] {
+ white-space: nowrap !important;
+ overflow-clip-box: padding-box;
+ color: unset;
+
+ /* Revert rules which apply on all inputs. */
+ appearance: none;
+ -moz-default-appearance: none;
+ cursor: default;
+
+ border: none;
+ background-color: transparent;
+ padding: unset;
+}
+
+input[type=file] > label {
+ display: inline-block;
+ min-inline-size: 12em;
+ text-align: match-parent;
+
+ color: unset;
+ font-size: unset;
+ letter-spacing: unset;
+
+ user-select: none;
+ unicode-bidi: plaintext;
+}
+
+/* button part of file selector */
+::file-selector-button {
+ font-size: unset;
+ letter-spacing: unset;
+ cursor: unset;
+ margin-inline-end: 5px;
+}
+
+ /*
+ * Make form controls inherit 'unicode-bidi' transparently as required by
+ * their various anonymous descendants and pseudo-elements:
+ *
+ * <textarea> and <input type=text>:
+ * inherit into the scroll frame with pseudo ::-moz-text-control-editing-root
+ * which is a (direct or indirect) child of the text control.
+ *
+ * Buttons (either <button>, <input type=submit>, <input type=button>
+ * or <input type=reset>)
+ * inherit into the ':-moz-button-content' pseudo-element.
+ *
+ * <select>:
+ * inherit into the ':-moz-display-comboboxcontrol-frame' pseudo-element and
+ * the <optgroup>'s ':before' pseudo-element, which is where the label of
+ * the <optgroup> gets displayed. The <option>s don't use anonymous boxes,
+ * so they need no special rules.
+ */
+::placeholder,
+::-moz-text-control-editing-root,
+*|*::-moz-button-content,
+*|*::-moz-display-comboboxcontrol-frame,
+optgroup:before {
+ unicode-bidi: inherit;
+ text-overflow: inherit;
+}
+
+progress {
+ appearance: auto;
+ -moz-default-appearance: progress-bar;
+ display: inline-block;
+ vertical-align: -0.2em;
+
+ /* Default style in case of there is appearance: none; */
+ border: 1px solid ThreeDShadow;
+ border-right-color: ThreeDHighlight;
+ border-bottom-color: ThreeDHighlight;
+ /* #e6e6e6 is a light gray. */
+ background-color: #e6e6e6;
+ overflow: clip;
+}
+
+progress::-moz-progress-bar,
+progress::slider-fill {
+ /* Prevent styling that would change the type of frame we construct. */
+ display: inline-block !important;
+ float: none !important;
+ position: static !important;
+ overflow: visible !important;
+ box-sizing: border-box !important;
+
+ appearance: auto;
+ -moz-default-appearance: progresschunk;
+ height: 100%;
+ width: 100%;
+
+ /* Default style in case of there is appearance: none; */
+ background-color: #0064b4; /* blue */
+}
+
+meter {
+ appearance: auto;
+ -moz-default-appearance: meter;
+ display: inline-block;
+ vertical-align: -0.2em;
+ background: linear-gradient(#e6e6e6, #e6e6e6, #eeeeee 20%, #cccccc 45%, #cccccc 55%);
+ overflow: clip;
+}
+
+meter::-moz-meter-bar,
+meter::slider-fill {
+ /* Block styles that would change the type of frame we construct. */
+ display: inline-block !important;
+ float: none !important;
+ position: static !important;
+ overflow: visible !important;
+
+ appearance: auto;
+ -moz-default-appearance: meterchunk;
+ height: 100%;
+ width: 100%;
+}
+
+meter:-moz-meter-optimum::-moz-meter-bar,
+meter:-moz-meter-optimum::slider-fill {
+ /* green. */
+ background: linear-gradient(#ad7, #ad7, #cea 20%, #7a3 45%, #7a3 55%);
+}
+meter:-moz-meter-sub-optimum::-moz-meter-bar,
+meter:-moz-meter-sub-optimum::slider-fill {
+ /* orange. */
+ background: linear-gradient(#fe7, #fe7, #ffc 20%, #db3 45%, #db3 55%);
+}
+meter:-moz-meter-sub-sub-optimum::-moz-meter-bar,
+meter:-moz-meter-sub-sub-optimum::slider-fill {
+ /* red. */
+ background: linear-gradient(#f77, #f77, #fcc 20%, #d44 45%, #d44 55%);
+}
+
+input[type=range] {
+ appearance: auto;
+ -moz-default-appearance: range;
+ margin: 2px;
+ /* Override some rules that apply on all input types: */
+ cursor: default;
+ padding: unset;
+ border: unset;
+ /* Prevent nsIFrame::HandlePress setting mouse capture to this element. */
+ user-select: none !important;
+}
+
+/**
+ * Layout handles positioning of this pseudo-element specially (so that content
+ * authors can concentrate on styling the thumb without worrying about the
+ * logic to position it). Specifically the 'margin', 'top' and 'left'
+ * properties are ignored.
+ *
+ * If content authors want to have a vertical range, they will also need to
+ * set the width/height of this pseudo-element.
+ *
+ * TODO(emilio, bug 1663819): Losen these restrictions once these
+ * pseudo-elements are better spec'd out.
+ */
+input[type=range]::-moz-range-track,
+input[type=range]::slider-track {
+ /* Prevent styling that would change the type of frame we construct. */
+ display: block !important;
+ float: none !important;
+ position: static !important;
+ writing-mode: unset !important;
+ direction: unset !important;
+ block-size: 0.2em; /* same as inline-size below */
+ /* Prevent nsIFrame::HandlePress setting mouse capture to this element. */
+ user-select: none !important;
+}
+
+input[type=range][orient=vertical]::-moz-range-track,
+input[type=range][orient=vertical]::slider-track {
+ inline-size: 0.2em; /* same as block-size above */
+ block-size: 100%;
+}
+
+/**
+ * Layout handles positioning of this pseudo-element specially (so that content
+ * authors can concentrate on styling this pseudo-element without worrying
+ * about the logic to position it). Specifically the 'margin', 'top' and 'left'
+ * properties are ignored. Additionally, if the range is horizontal, the width
+ * property is ignored, and if the range range is vertical, the height property
+ * is ignored.
+ */
+input[type=range]::-moz-range-progress,
+input[type=range]::slider-fill {
+ /* Prevent styling that would change the type of frame we construct. */
+ display: block !important;
+ float: none !important;
+ position: static !important;
+ writing-mode: unset !important;
+ direction: unset !important;
+ /* Since one of width/height will be ignored, this just sets the "other"
+ dimension. */
+ width: 0.2em;
+ height: 0.2em;
+ /* Prevent nsIFrame::HandlePress setting mouse capture to this element. */
+ user-select: none !important;
+}
+
+/**
+ * Layout handles positioning of this pseudo-element specially (so that content
+ * authors can concentrate on styling the thumb without worrying about the
+ * logic to position it). Specifically the 'margin', 'top' and 'left'
+ * properties are ignored.
+ */
+input[type=range]::-moz-range-thumb,
+input[type=range]::slider-thumb {
+ /* Native theming is atomic for range. Set appearance on the range
+ * to get rid of it. The thumb's appearance is fixed.
+ */
+ appearance: auto !important;
+ -moz-default-appearance: range-thumb !important;
+ /* Prevent styling that would change the type of frame we construct. */
+ display: block !important;
+ float: none !important;
+ position: static !important;
+ writing-mode: unset !important;
+ direction: unset !important;
+
+ width: 1em;
+ height: 1em;
+ border: 0.1em solid #999;
+ border-radius: 0.5em;
+ background-color: #F0F0F0;
+ /* Prevent nsIFrame::HandlePress setting mouse capture to this element. */
+ user-select: none !important;
+}
+
+input[type=number] {
+ appearance: auto;
+ -moz-default-appearance: number-input;
+}
+
+input[type=number]::-moz-number-spin-box {
+ writing-mode: horizontal-tb;
+ display: flex;
+ flex-direction: column;
+ width: max-content;
+ align-self: center;
+ justify-content: center;
+ /* Don't allow the spin buttons to create overflow */
+ max-height: 100%;
+ max-width: 100%;
+ overflow: clip;
+}
+
+input[type=number]::-moz-number-spin-up,
+input[type=number]::-moz-number-spin-down {
+ writing-mode: horizontal-tb;
+ appearance: auto;
+ -moz-default-appearance: spinner-upbutton;
+ display: block; /* bug 926670 */
+ flex-grow: 1;
+ cursor: default;
+}
+
+input[type=number]::-moz-number-spin-down {
+ -moz-default-appearance: spinner-downbutton;
+}
+
+input::-moz-search-clear-button,
+input::-moz-reveal {
+ display: block;
+ cursor: default;
+ width: 1em;
+ height: 1em;
+ max-height: 100%;
+ max-width: 100%;
+ margin-inline-start: 1px;
+ background-image: url("resource://content-accessible/searchfield-cancel.svg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+}
+
+input::-moz-reveal {
+ background-image: url("resource://gre-resources/password.svg");
+ -moz-context-properties: fill;
+ fill: currentColor;
+}
+
+input:-moz-revealed::-moz-reveal {
+ background-image: url("resource://gre-resources/password-hide.svg");
+}
+
+input:-moz-value-empty::-moz-reveal,
+input:-moz-value-empty::-moz-search-clear-button {
+ visibility: hidden;
+}
+
+input:is([type=date], [type=time], [type=datetime-local]) {
+ font-family: -moz-fixed;
+ cursor: default;
+}
+
+input:is([type=date], [type=time], [type=datetime-local]):is(:disabled, :read-only) {
+ color: GrayText;
+}
+
+input:autofill, select:autofill {
+ /* The idea behind using background-image instead of plain background-color
+ * is that it's less likely to be overridden by the page. */
+ background-image: linear-gradient(-moz-autofill-background, -moz-autofill-background);
+}
+
+input:-moz-autofill-preview, select:-moz-autofill-preview {
+ color: GrayText;
+}
diff --git a/layout/style/res/html.css b/layout/style/res/html.css
new file mode 100644
index 0000000000..383aa35f7b
--- /dev/null
+++ b/layout/style/res/html.css
@@ -0,0 +1,927 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+@namespace url(http://www.w3.org/1999/xhtml); /* set default namespace to HTML */
+@namespace xul url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
+
+@font-face {
+ font-family: -moz-bullet-font;
+ src: url("data:font/woff2;base64,d09GMgABAAAAAARYAAwAAAAACqAAAAQFAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBmAAgwIRCAqKDIcYATYCJAMsCxgABCAFg2AHIBtDCFGUrM0MyM/DGJyndUclpZwnU8QPQ6wsFOHO+/yHNvV9IEqSQgsVJW2p+uZkohKbVExPEz/JUW7zk6rzYH9723UJ/4DzBII8CSzwgFMOOE4KW2rjAmh4qQWSiid60f7Y9FsXScfUpeluagFqTTQYyoQaQSubXil0lHRsBehAI9KofG/6ogF9/Hl6lBd920LmeTxj8JXBfFWKwYAY3QsAAXD17ZAB4M6Ocv/nsZlkaTl0gLipewIQEMB2d9lKDAT1ZjP/F7jmWsQ3wn8AZvZFgIIC7ESh4AP1iFb4nPnfWyJgcQArpUWqW9W96j71kHr/L9a/dNRbj+8/ujXLWCMMFYVYiXoEaZQ4YOC/E7Dkz3JEjaokxAP6i3hIUjv9fwYyE6I3yIozKkaGN63fP36aeLJmxlRZwZiFziPrMVvOlnCF98SQJfGO/Xllv/FnWAcEjrMqaMCPwVmktCDO5zzxcXqeKS+QFxYnvJLFVzKZAFcKnlZRwHEPVM3mXxNt2gdZEpkKaIAG9gbgDTU5SOYDcmX7Rr61evEA1U+1/3SMb6FFtUqh55nYleE95j2zPNxzdlnGoR5xu/PxQKzb7bFaFLvl79Z54Lx9OH+g0/PPYlcsNo/nwP2V2vsHUHsV4KqEsd+e2r6Fu2v7abkfvsb65b41uwvRvqewH25kTntqolbYsEr5DAqrX97a0jrBLjFRExVHR2dH1Za6unyZfCVZHqQP0BtYjuUYlg9J6SurcrTEiOr26m5xcuTW4Sp3ljkUYWJ9+/iVmzbzPpcuXnGeqU3U7IKjz/qeKSSCltyhuSoxkqqTZX+DXt/OMmAikC8SzVD0jg3dbhIE0eUqc04UFFrxCSXzFxgHclzRMPe0ocOjiKRoSZISE0OtpkBjECdxkkRM1KiaJV0ed0V5umBP1wyUPL2ZBGLSDh5itIHahHRF0CY5nZMGib6T3cOmDvcTSZKuPiFJFpPRGNTIOq7jl5OjDiGIoo6qEE0QtfQJ3VYUD2RZvbm5uWWCWOgR4HXAk5GxLEO0izhLdvPTfpTV3xeOnOfT96uR53CdPrPq+P9HZvzO4QCMmDr7lTcNZorT6iMOYgI+IxClMzeCspeoLt5ABGSpta6gRZmQSnzk9e9jmOAYKC7RsyGMYaB6MpbNKMiRq2U6vI0yPZuTMiODFytMrGEBi7pjGgkAMoaNLGOFSoYceaZMx1+XTC/UNpmRzY1nmwT7AIcK+fK5lYNjz893lwMTuXlD2AKl8Md+24AxitRaLH/MUMqd9z862owy/bZTuZUqs1iRQop0KdLgZwPc9JS0lprnkef1gitBCRhjgV+vjGK8BfIV8CrlVghj1vIyZfyC/AJvqbsQYAEA/v+IAQA=");
+}
+
+/* bidi */
+
+:-moz-has-dir-attr {
+ unicode-bidi: isolate;
+}
+:-moz-dir-attr-rtl {
+ direction: rtl;
+}
+:-moz-dir-attr-ltr {
+ direction: ltr;
+}
+
+:-moz-dir-attr-like-auto:dir(ltr) { direction: ltr; }
+:-moz-dir-attr-like-auto:dir(rtl) { direction: rtl; }
+
+/* https://html.spec.whatwg.org/#bidi-rendering */
+input[type=tel]:dir(ltr) {
+ direction: ltr;
+}
+
+/* To ensure http://www.w3.org/TR/REC-html40/struct/dirlang.html#style-bidi:
+ *
+ * "When a block element that does not have a dir attribute is transformed to
+ * the style of an inline element by a style sheet, the resulting presentation
+ * should be equivalent, in terms of bidirectional formatting, to the
+ * formatting obtained by explicitly adding a dir attribute (assigned the
+ * inherited value) to the transformed element."
+ *
+ * and the rules in http://dev.w3.org/html5/spec/rendering.html#rendering
+ */
+
+address,
+article,
+aside,
+blockquote,
+body,
+caption,
+center,
+col,
+colgroup,
+dd,
+dir,
+div,
+dl,
+dt,
+fieldset,
+figcaption,
+figure,
+footer,
+form,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+header,
+hgroup,
+hr,
+html,
+legend,
+li,
+listing,
+main,
+marquee,
+menu,
+nav,
+noframes,
+ol,
+p,
+plaintext,
+pre,
+search,
+section,
+summary,
+table,
+tbody,
+td,
+tfoot,
+th,
+thead,
+tr,
+ul,
+xmp {
+ unicode-bidi: isolate;
+}
+
+bdi, output {
+ unicode-bidi: isolate;
+}
+/* We need the "bdo:-moz-has-dir-attr" bit because "bdo" has lower
+ specificity than the ":-moz-has-dir-attr" selector above. */
+bdo, bdo:-moz-has-dir-attr {
+ unicode-bidi: isolate-override;
+}
+textarea:-moz-dir-attr-like-auto,
+pre:-moz-dir-attr-like-auto {
+ unicode-bidi: plaintext;
+}
+
+/* blocks */
+
+article,
+aside,
+details,
+div,
+dt,
+figcaption,
+footer,
+form,
+header,
+hgroup,
+html,
+main,
+nav,
+search,
+section,
+summary {
+ display: block;
+}
+
+body {
+ display: block;
+ margin: 8px;
+}
+
+p, dl, multicol {
+ display: block;
+ margin-block-start: 1em;
+ margin-block-end: 1em;
+}
+
+dd {
+ display: block;
+ margin-inline-start: 40px;
+}
+
+blockquote, figure {
+ display: block;
+ margin-block-start: 1em;
+ margin-block-end: 1em;
+ margin-inline-start: 40px;
+ margin-inline-end: 40px;
+}
+
+address {
+ display: block;
+ font-style: italic;
+}
+
+center {
+ display: block;
+ text-align: -moz-center;
+}
+
+h1 {
+ display: block;
+ font-size: 2em;
+ font-weight: bold;
+ margin-block-start: .67em;
+ margin-block-end: .67em;
+}
+
+h2,
+:is(article, aside, nav, section)
+h1 {
+ display: block;
+ font-size: 1.5em;
+ font-weight: bold;
+ margin-block-start: .83em;
+ margin-block-end: .83em;
+}
+
+h3,
+:is(article, aside, nav, section)
+:is(article, aside, nav, section)
+h1 {
+ display: block;
+ font-size: 1.17em;
+ font-weight: bold;
+ margin-block-start: 1em;
+ margin-block-end: 1em;
+}
+
+h4,
+:is(article, aside, nav, section)
+:is(article, aside, nav, section)
+:is(article, aside, nav, section)
+h1 {
+ display: block;
+ font-size: 1.00em;
+ font-weight: bold;
+ margin-block-start: 1.33em;
+ margin-block-end: 1.33em;
+}
+
+h5,
+:is(article, aside, nav, section)
+:is(article, aside, nav, section)
+:is(article, aside, nav, section)
+:is(article, aside, nav, section)
+h1 {
+ display: block;
+ font-size: 0.83em;
+ font-weight: bold;
+ margin-block-start: 1.67em;
+ margin-block-end: 1.67em;
+}
+
+h6,
+:is(article, aside, nav, section)
+:is(article, aside, nav, section)
+:is(article, aside, nav, section)
+:is(article, aside, nav, section)
+:is(article, aside, nav, section)
+h1 {
+ display: block;
+ font-size: 0.67em;
+ font-weight: bold;
+ margin-block-start: 2.33em;
+ margin-block-end: 2.33em;
+}
+
+listing {
+ display: block;
+ font-family: -moz-fixed;
+ font-size: medium;
+ white-space: pre;
+ margin-block-start: 1em;
+ margin-block-end: 1em;
+}
+
+xmp, pre, plaintext {
+ display: block;
+ font-family: -moz-fixed;
+ white-space: pre;
+ margin-block-start: 1em;
+ margin-block-end: 1em;
+}
+
+/* tables */
+
+table {
+ display: table;
+ border-spacing: 2px;
+ border-collapse: separate;
+ /* XXXldb do we want this if we're border-collapse:collapse ? */
+ box-sizing: border-box;
+ text-indent: 0;
+}
+
+table[align="left"] {
+ float: left;
+}
+
+table[align="right"] {
+ float: right;
+ text-align: start;
+}
+
+
+/* border collapse rules */
+
+ /* Set hidden if we have 'frame' or 'rules' attribute.
+ Set it on all sides when we do so there's more consistency
+ in what authors should expect */
+
+ /* Put this first so 'border' and 'frame' rules can override it. */
+table[rules] {
+ border-width: thin;
+ border-style: hidden;
+}
+
+ /* 'border' before 'frame' so 'frame' overrides
+ A border with a given value should, of course, pass that value
+ as the border-width in pixels -> attr mapping */
+
+ /* :-moz-table-border-nonzero is like [border]:not([border="0"]) except it
+ also checks for other zero-like values according to HTML attribute
+ parsing rules */
+table:-moz-table-border-nonzero {
+ border-width: thin;
+ border-style: outset;
+}
+
+table[frame] {
+ border: thin hidden;
+}
+
+/* specificity must beat table:-moz-table-border-nonzero rule above */
+table[frame="void"] { border-style: hidden; }
+table[frame="above"] { border-style: outset hidden hidden hidden; }
+table[frame="below"] { border-style: hidden hidden outset hidden; }
+table[frame="lhs"] { border-style: hidden hidden hidden outset; }
+table[frame="rhs"] { border-style: hidden outset hidden hidden; }
+table[frame="hsides"] { border-style: outset hidden; }
+table[frame="vsides"] { border-style: hidden outset; }
+table[frame="box"],
+table[frame="border"] { border-style: outset; }
+
+
+/* Internal Table Borders */
+
+ /* 'border' cell borders first */
+
+table:-moz-table-border-nonzero > * > tr > td,
+table:-moz-table-border-nonzero > * > tr > th,
+table:-moz-table-border-nonzero > * > td,
+table:-moz-table-border-nonzero > * > th,
+table:-moz-table-border-nonzero > td,
+table:-moz-table-border-nonzero > th
+{
+ border-width: thin;
+ border-style: inset;
+}
+
+/* collapse only if rules are really specified */
+table[rules]:not([rules="none"], [rules=""]) {
+ border-collapse: collapse;
+}
+
+/* only specified rules override 'border' settings
+ (increased specificity to achieve this) */
+table[rules]:not([rules=""])> tr > td,
+table[rules]:not([rules=""])> * > tr > td,
+table[rules]:not([rules=""])> tr > th,
+table[rules]:not([rules=""])> * > tr > th,
+table[rules]:not([rules=""])> td,
+table[rules]:not([rules=""])> th
+{
+ border-width: thin;
+ border-style: none;
+}
+
+
+table[rules][rules="none"] > tr > td,
+table[rules][rules="none"] > * > tr > td,
+table[rules][rules="none"] > tr > th,
+table[rules][rules="none"] > * > tr > th,
+table[rules][rules="none"] > td,
+table[rules][rules="none"] > th
+{
+ border-width: thin;
+ border-style: none;
+}
+
+table[rules][rules="all"] > tr > td,
+table[rules][rules="all"] > * > tr > td,
+table[rules][rules="all"] > tr > th,
+table[rules][rules="all"] > * > tr > th,
+table[rules][rules="all"] > td,
+table[rules][rules="all"] > th
+{
+ border-width: thin;
+ border-style: solid;
+}
+
+table[rules][rules="rows"] > tr,
+table[rules][rules="rows"] > * > tr {
+ border-block-start-width: thin;
+ border-block-end-width: thin;
+ border-block-start-style: solid;
+ border-block-end-style: solid;
+}
+
+
+table[rules][rules="cols"] > tr > td,
+table[rules][rules="cols"] > * > tr > td,
+table[rules][rules="cols"] > tr > th,
+table[rules][rules="cols"] > * > tr > th {
+ border-inline-start-width: thin;
+ border-inline-end-width: thin;
+ border-inline-start-style: solid;
+ border-inline-end-style: solid;
+}
+
+table[rules][rules="groups"] > colgroup {
+ border-inline-start-width: thin;
+ border-inline-end-width: thin;
+ border-inline-start-style: solid;
+ border-inline-end-style: solid;
+}
+table[rules][rules="groups"] > tfoot,
+table[rules][rules="groups"] > thead,
+table[rules][rules="groups"] > tbody {
+ border-block-start-width: thin;
+ border-block-end-width: thin;
+ border-block-start-style: solid;
+ border-block-end-style: solid;
+}
+
+
+/* caption inherits from table not table-outer */
+caption {
+ display: table-caption;
+ text-align: center;
+}
+
+table[align="center"] > caption {
+ margin-inline-start: auto;
+ margin-inline-end: auto;
+}
+
+table[align="center"] > caption[align="left"]:dir(ltr) {
+ margin-inline-end: 0;
+}
+table[align="center"] > caption[align="left"]:dir(rtl) {
+ margin-inline-start: 0;
+}
+
+table[align="center"] > caption[align="right"]:dir(ltr) {
+ margin-inline-start: 0;
+}
+table[align="center"] > caption[align="right"]:dir(rtl) {
+ margin-inline-end: 0;
+}
+
+tr {
+ display: table-row;
+ vertical-align: inherit;
+}
+
+col {
+ display: table-column;
+}
+
+colgroup {
+ display: table-column-group;
+}
+
+tbody {
+ display: table-row-group;
+ vertical-align: middle;
+}
+
+thead {
+ display: table-header-group;
+ vertical-align: middle;
+}
+
+tfoot {
+ display: table-footer-group;
+ vertical-align: middle;
+}
+
+/* for XHTML tables without tbody */
+table > tr {
+ vertical-align: middle;
+}
+
+td {
+ display: table-cell;
+ vertical-align: inherit;
+ text-align: unset;
+ padding: 1px;
+}
+
+th {
+ display: table-cell;
+ vertical-align: inherit;
+ font-weight: bold;
+ padding: 1px;
+ text-align: -moz-center-or-inherit;
+}
+
+:is(tr, tbody, thead, tfoot, table) > form:-moz-is-html {
+ /* Important: don't show these forms in HTML */
+ display: none !important;
+}
+
+table[bordercolor] > tbody,
+table[bordercolor] > thead,
+table[bordercolor] > tfoot,
+table[bordercolor] > col,
+table[bordercolor] > colgroup,
+table[bordercolor] > tr,
+table[bordercolor] > * > tr,
+table[bordercolor] > tr > td,
+table[bordercolor] > * > tr > td,
+table[bordercolor] > tr > th,
+table[bordercolor] > * > tr > th {
+ border-color: inherit;
+}
+
+/* inlines */
+
+q:before {
+ content: open-quote;
+}
+
+q:after {
+ content: close-quote;
+}
+
+b, strong {
+ font-weight: bolder;
+}
+
+i, cite, em, var, dfn {
+ font-style: italic;
+}
+
+tt, code, kbd, samp {
+ font-family: -moz-fixed;
+}
+
+u, ins {
+ text-decoration: underline;
+}
+
+s, strike, del {
+ text-decoration: line-through;
+}
+
+big {
+ font-size: larger;
+}
+
+small {
+ font-size: smaller;
+}
+
+sub {
+ vertical-align: sub;
+ font-size: smaller;
+}
+
+sup {
+ vertical-align: super;
+ font-size: smaller;
+}
+
+nobr {
+ white-space: nowrap;
+}
+
+mark {
+ background: Mark;
+ color: MarkText;
+}
+
+/* titles */
+abbr[title], acronym[title] {
+ text-decoration: dotted underline;
+}
+
+/* lists */
+
+ul, menu, dir {
+ display: block;
+ list-style-type: disc;
+ margin-block-start: 1em;
+ margin-block-end: 1em;
+ padding-inline-start: 40px;
+}
+
+ul, ol, menu {
+ counter-reset: list-item;
+}
+
+ol {
+ display: block;
+ list-style-type: decimal;
+ margin-block-start: 1em;
+ margin-block-end: 1em;
+ padding-inline-start: 40px;
+}
+
+li {
+ display: list-item;
+ text-align: match-parent;
+}
+
+/* nested lists have no top/bottom margins */
+:is(ul, ol, dir, menu, dl) ul,
+:is(ul, ol, dir, menu, dl) ol,
+:is(ul, ol, dir, menu, dl) dir,
+:is(ul, ol, dir, menu, dl) menu,
+:is(ul, ol, dir, menu, dl) dl {
+ margin-block-start: 0;
+ margin-block-end: 0;
+}
+
+/* 2 deep unordered lists use a circle */
+:is(ol, ul, menu, dir) ul,
+:is(ol, ul, menu, dir) menu,
+:is(ol, ul, menu, dir) dir {
+ list-style-type: circle;
+}
+
+/* 3 deep (or more) unordered lists use a square */
+:is(ol, ul, menu, dir) :is(ol, ul, menu, dir) ul,
+:is(ol, ul, menu, dir) :is(ol, ul, menu, dir) menu,
+:is(ol, ul, menu, dir) :is(ol, ul, menu, dir) dir {
+ list-style-type: square;
+}
+
+
+/* leafs */
+
+/* <hr> noshade and color attributes are handled completely by
+ * HTMLHRElement::MapAttributesIntoRule.
+ * https://html.spec.whatwg.org/#the-hr-element-2
+ */
+hr {
+ color: gray;
+ border-width: 1px;
+ border-style: inset;
+ margin-block-start: 0.5em;
+ margin-block-end: 0.5em;
+ margin-inline-start: auto;
+ margin-inline-end: auto;
+ overflow: hidden;
+
+ /* FIXME: This is not really per spec */
+ display: block;
+}
+
+hr[size="1"] {
+ border-style: solid none none none;
+}
+
+/* Note that we only intend for the alt content to show up if the image is
+ * broken. But non-broken images/inputs will have a replaced box, and thus we
+ * won't we don't generate the pseudo-element anyways. This prevents
+ * unnecessary reframing when images become broken / non-broken. */
+input[type=image]::before,
+img::before {
+ content: -moz-alt-content !important;
+ unicode-bidi: isolate;
+}
+
+img[usemap], object[usemap] {
+ color: blue;
+}
+
+frameset {
+ display: block ! important;
+ overflow: clip;
+ position: static ! important;
+ float: none ! important;
+ border: none ! important;
+}
+
+frame {
+ border-radius: 0 ! important;
+}
+
+iframe {
+ border: 2px inset;
+}
+
+spacer {
+ position: static ! important;
+ float: none ! important;
+}
+
+canvas {
+ user-select: none;
+}
+
+iframe:focus-visible,
+body:focus-visible,
+html:focus-visible {
+ /* These elements historically don't show outlines when focused by default.
+ * We could consider changing that if needed. */
+ outline-style: none;
+}
+
+/* hidden elements: https://html.spec.whatwg.org/#hidden-elements
+ *
+ * Exceptions:
+ *
+ * * area declaration needs to be !important, see below / bug 135040. That's
+ * hacky and broken.
+ *
+ * * [hidden] is implemented as a presentation attribute to avoid a global
+ * selector in a UA sheet.
+ */
+base, basefont, datalist, head, link, meta, noembed,
+noframes, param, rp, script, style, template, title {
+ display: none;
+}
+
+area {
+ /* Don't give it frames other than its imageframe */
+ display: none ! important;
+}
+
+iframe:fullscreen {
+ /* iframes in full-screen mode don't show a border. */
+ border: none !important;
+ padding: unset !important;
+}
+
+/* Details and summary
+ * https://html.spec.whatwg.org/#the-details-and-summary-elements
+ *
+ * Note that these rules need to be duplicated in details.css for the anonymous
+ * summary, which wouldn't match otherwise.
+ *
+ * The spec here says something different, see
+ * https://github.com/whatwg/html/issues/8610
+ */
+details > summary:first-of-type {
+ display: list-item;
+ counter-increment: list-item 0;
+ list-style: disclosure-closed inside;
+}
+details[open] > summary:first-of-type {
+ list-style-type: disclosure-open;
+}
+
+/* media elements */
+video {
+ object-fit: contain;
+}
+
+video > img:-moz-native-anonymous {
+ /* Video poster images should render with the video element's "object-fit" &
+ "object-position" properties */
+ object-fit: inherit !important;
+ object-position: inherit !important;
+}
+
+audio:not([controls]) {
+ display: none !important;
+}
+
+audio[controls] {
+ /* This ensures that intrinsic sizing can reliably shrinkwrap our
+ controls (which are also always horizontal) and produce a
+ reasonable intrinsic size from them. */
+ writing-mode: horizontal-tb !important;
+}
+
+*|*::-moz-html-canvas-content {
+ display: block !important;
+ /* we want to be an absolute and fixed container */
+ transform: translate(0) !important;
+}
+
+video > .caption-box {
+ width: 100%;
+ height: 100%;
+ position: relative;
+}
+
+/**
+ * The pseudo element won't inherit CSS styles from its direct parent, `::cue`
+ * would actually inherit styles from video because it's video's pseudo element.
+ * Therefore, we have to explicitly set some styles which are already defined
+ * in its parent element in vtt.jsm.
+ */
+::cue {
+ color: rgba(255, 255, 255, 1);
+ white-space: pre-line;
+ background-color: rgba(0, 0, 0, 0.8);
+ font: 10px sans-serif;
+ overflow-wrap: break-word;
+ /* TODO : enable unicode-bidi, right now enable it would cause incorrect
+ display direction, maybe related with bug 1558431. */
+}
+
+/* <dialog> element styles */
+
+dialog {
+ position: absolute;
+ display: block;
+ inset-inline-start: 0;
+ inset-inline-end: 0;
+ margin: auto;
+ border-width: initial;
+ border-style: solid;
+ border-color: initial;
+ border-image: initial;
+ padding: 1em;
+ background-color: Canvas;
+ color: CanvasText;
+ width: -moz-fit-content;
+ height: -moz-fit-content;
+}
+
+dialog:not([open]) {
+ display: none;
+}
+
+dialog:modal {
+ -moz-top-layer: top !important;
+ position: fixed;
+ overflow: auto;
+ visibility: visible;
+ inset-block-start: 0;
+ inset-block-end: 0;
+ max-width: calc(100% - 6px - 2em);
+ max-height: calc(100% - 6px - 2em);
+}
+
+/* https://html.spec.whatwg.org/#flow-content-3 */
+dialog::backdrop {
+ background: rgba(0, 0, 0, 0.1);
+}
+
+marquee {
+ inline-size: -moz-available;
+ display: inline-block;
+ vertical-align: text-bottom;
+ text-align: start;
+}
+
+marquee:is([direction="up"], [direction="down"]) {
+ block-size: 200px;
+}
+
+/* Ruby */
+
+ruby {
+ display: ruby;
+}
+rb {
+ display: ruby-base;
+ white-space: nowrap;
+}
+rt {
+ display: ruby-text;
+}
+rtc {
+ display: ruby-text-container;
+}
+rtc, rt {
+ white-space: nowrap;
+ font-size: 50%;
+ -moz-min-font-size-ratio: 50%;
+ line-height: 1;
+}
+@media not (-moz-platform: windows) {
+ rtc, rt {
+ /* The widely-used Windows font Meiryo doesn't work fine with this
+ * setting, so disable this on Windows. We should re-enable it once
+ * Microsoft fixes this issue. See bug 1164279. */
+ font-variant-east-asian: ruby;
+ }
+}
+rtc, rt {
+ text-emphasis: none;
+}
+rtc:lang(zh), rt:lang(zh) {
+ ruby-align: center;
+}
+rtc:lang(zh-TW), rt:lang(zh-TW) {
+ font-size: 30%; /* bopomofo */
+ -moz-min-font-size-ratio: 30%;
+}
+rtc > rt {
+ font-size: unset;
+}
+ruby, rb, rt, rtc {
+ unicode-bidi: isolate;
+}
+
+/* Shadow DOM v1
+ * https://drafts.csswg.org/css-scoping/#slots-in-shadow-tree */
+slot {
+ display: contents;
+}
+
+/* Hide noscript elements if scripting is enabled */
+@media (scripting) {
+ noscript {
+ display: none !important;
+ }
+}
+
+@media print {
+ input, textarea, select, button, details {
+ -moz-user-input: none !important;
+ pointer-events: none !important;
+ }
+}
+
+/* Popover UA style, https://html.spec.whatwg.org/#flow-content-3 */
+/* stylelint-disable-next-line media-query-no-invalid */
+@media (-moz-bool-pref: "dom.element.popover.enabled") {
+ [popover]:not(:popover-open):not(dialog[open]) {
+ display:none;
+ }
+
+ dialog:popover-open {
+ display:block;
+ }
+
+ [popover] {
+ position: fixed;
+ inset: 0;
+ width: fit-content;
+ height: fit-content;
+ margin: auto;
+ border: solid;
+ padding: 0.25em;
+ overflow: auto;
+ color: CanvasText;
+ background-color: Canvas;
+ }
+
+ :popover-open {
+ -moz-top-layer: top;
+ }
+
+ :popover-open::backdrop {
+ position: fixed;
+ inset: 0;
+ pointer-events: none !important;
+ background-color: transparent;
+ }
+}
diff --git a/layout/style/res/noframes.css b/layout/style/res/noframes.css
new file mode 100644
index 0000000000..4d1adfdc1f
--- /dev/null
+++ b/layout/style/res/noframes.css
@@ -0,0 +1,13 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* This sheet is added to the style set for documents with frames disabled */
+
+noframes {
+ display: block;
+}
+
+frame, frameset, iframe {
+ display: none !important;
+}
diff --git a/layout/style/res/password-hide.svg b/layout/style/res/password-hide.svg
new file mode 100644
index 0000000000..74a63e3ed9
--- /dev/null
+++ b/layout/style/res/password-hide.svg
@@ -0,0 +1,7 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="context-fill" fill-opacity="context-fill-opacity">
+ <path d="M3.067 1.183a.626.626 0 0 0-.885.885l1.306 1.306A8.885 8.885 0 0 0 0 7.595l0 .809C1.325 11.756 4.507 14 8 14c1.687 0 3.294-.535 4.66-1.455l2.273 2.273a.626.626 0 0 0 .884-.886L3.067 1.183zm3.759 5.528 2.463 2.463c-.32.352-.777.576-1.289.576-.965 0-1.75-.785-1.75-1.75 0-.512.225-.969.576-1.289zM8 12.75c-3.013 0-5.669-1.856-6.83-4.75a7.573 7.573 0 0 1 3.201-3.745l1.577 1.577A2.958 2.958 0 0 0 5 8c0 1.654 1.346 3 3 3 .858 0 1.624-.367 2.168-.948l1.613 1.613A7.118 7.118 0 0 1 8 12.75z"/>
+ <path d="M8 2c-.687 0-1.356.11-2.007.275l1.049 1.049A7.06 7.06 0 0 1 8 3.25c3.013 0 5.669 1.856 6.83 4.75a7.925 7.925 0 0 1-1.141 1.971l.863.863A9.017 9.017 0 0 0 16 8.404l0-.809C14.675 4.244 11.493 2 8 2z"/>
+</svg>
diff --git a/layout/style/res/password.svg b/layout/style/res/password.svg
new file mode 100644
index 0000000000..0e9aa3f36f
--- /dev/null
+++ b/layout/style/res/password.svg
@@ -0,0 +1,7 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="context-fill" fill-opacity="context-fill-opacity">
+ <path d="M16 7.595C14.675 4.244 11.493 2 8 2S1.325 4.244 0 7.595l0 .809C1.325 11.756 4.507 14 8 14s6.675-2.244 8-5.595l0-.81zM8 12.75c-3.013 0-5.669-1.856-6.83-4.75C2.331 5.106 4.987 3.25 8 3.25S13.669 5.106 14.83 8c-1.161 2.894-3.817 4.75-6.83 4.75z"/>
+ <path d="M8 11c-1.654 0-3-1.346-3-3s1.346-3 3-3 3 1.346 3 3-1.346 3-3 3zm0-4.75c-.965 0-1.75.785-1.75 1.75S7.035 9.75 8 9.75 9.75 8.965 9.75 8 8.965 6.25 8 6.25z"/>
+</svg>
diff --git a/layout/style/res/plaintext.css b/layout/style/res/plaintext.css
new file mode 100644
index 0000000000..04d9b500b1
--- /dev/null
+++ b/layout/style/res/plaintext.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+pre {
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ -moz-control-character-visibility: visible;
+}
+
+.nowrap pre {
+ white-space: pre;
+}
+
+/* Make text go with the rules of dir=auto, but allow it to be overriden if 'Switch Text Direction' is triggered */
+html:not([dir]) pre { /* Not a UA sheet, so doesn't use :-moz-has-dir-attr */
+ unicode-bidi: plaintext;
+}
+
+@-moz-document unobservable-document() {
+ :root {
+ color-scheme: light dark;
+ }
+}
+
+/* NOTE(emilio): For some reason some pages, mainly bing.com, load a bunch of
+ * scripts in zero-size <object> elements, see bug 1548449.
+ *
+ * Line-breaking such documents is useless and pretty expensive, so only render
+ * them if there's a viewport. Sigh.
+ */
+@media (width: 0) or (height: 0) {
+ :root {
+ display: none;
+ }
+}
diff --git a/layout/style/res/quirk.css b/layout/style/res/quirk.css
new file mode 100644
index 0000000000..6e74839ee3
--- /dev/null
+++ b/layout/style/res/quirk.css
@@ -0,0 +1,105 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+@namespace url(http://www.w3.org/1999/xhtml); /* set default namespace to HTML */
+
+
+/* Quirk: make orphaned LIs have inside bullet (b=1049) */
+
+/* force inside position for orphaned lis */
+li {
+ list-style-position: inside;
+}
+
+/* restore outside position for lists inside LIs */
+li :is(ul, ol, dir, menu) {
+ list-style-position: outside;
+}
+
+/* undo previous two rules for properly nested lists */
+:is(ul, ol, dir, menu) :is(ul, ol, dir, menu, li) {
+ list-style-position: unset;
+}
+
+
+/* Quirk: ensure that we get proper padding if the very first
+ * node in an LI is another UL or OL. This is an ugly way to
+ * fix the problem, because it extends the LI up into what
+ * would otherwise appear to be the ULs space. (b=38832) */
+
+/* Note: this fix will fail once we implement marker box
+ * alignment correctly. */
+li > ul:-moz-first-node,
+li > ol:-moz-first-node {
+ padding-block-start: 1em;
+}
+
+
+table {
+ text-align: start;
+ white-space: normal; /* compatible with IE & spec */
+ line-height: normal;
+
+ /* Quirk: cut off all font inheritance in tables except for family. */
+ font-size: initial;
+ font-weight: initial;
+ font-style: initial;
+ font-variant: initial;
+}
+
+
+/* Quirk: collapse top margin of BODY and TD and bottom margin of TD */
+
+/*
+ * While it may seem simpler to use :-moz-first-node and :-moz-last-node without
+ * tags, it's slower, since we have to do the :-moz-first-node or :-moz-last-node
+ * check on every single element in the document. If we list all the
+ * element names for which the UA stylesheet specifies a margin, the
+ * selectors will be hashed in the selector maps and things will be much more
+ * efficient.
+ */
+:is(body, td, th) > :is(p, dl, multicol, blockquote, h1, h2, h3, h4, h5, h6, listing, plaintext, xmp, pre, ul, menu, dir, ol):-moz-first-node {
+ margin-block-start: 0;
+}
+
+td > p:-moz-last-node, th > p:-moz-last-node {
+ margin-block-end: 0;
+}
+
+/* Similar as above, but for empty elements
+ * collapse the bottom or top margins of empty elements
+ * - see bug 97361
+ */
+:is(body, td, th) > :is(p, dl, multicol, blockquote, h1, h2, h3, h4, h5, h6, listing, plaintext, xmp, pre, ul, menu, dir, ol):-moz-only-whitespace:-moz-first-node {
+ margin-block-end: 0;
+}
+
+:is(td, th) > :is(p, dl, multicol, blockquote, h1, h2, h3, h4, h5, h6, listing, plaintext, xmp, pre, ul, menu, dir, ol):-moz-only-whitespace:-moz-last-node {
+ margin-block-start: 0;
+}
+
+/* Quirk: Make floated images have a margin (b=58899) */
+img[align=left] {
+ margin-right: 3px;
+}
+
+img[align=right] {
+ margin-left: 3px;
+}
+
+/*
+ * Quirk: Use border-box box sizing for text inputs, password inputs, and
+ * textareas. (b=184478 on why we use content-box sizing in standards mode)
+ */
+
+/* Note that all other <input>s already use border-box
+ sizing, so we're ok with this selector */
+input:not([type=image]), textarea {
+ box-sizing: border-box;
+}
+
+/* Quirk: give form margin for compat (b=41806) */
+form {
+ margin-block-end: 1em;
+}
diff --git a/layout/style/res/scrollbars.css b/layout/style/res/scrollbars.css
new file mode 100644
index 0000000000..a4f2611888
--- /dev/null
+++ b/layout/style/res/scrollbars.css
@@ -0,0 +1,234 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
+
+/* Rules required for style caching of anonymous content scrollbar parts */
+/* stylelint-disable-next-line media-query-no-invalid */
+@media (-moz-bool-pref: "layout.css.cached-scrollbar-styles.enabled") {
+ :is(scrollcorner, resizer, scrollbar, scrollbarbutton, slider):where(:-moz-native-anonymous) {
+ /* All scrollbar parts must not inherit any properties from the scrollable
+ * element (except for visibility and pointer-events), for the anonymous
+ * content style caching system to work.
+ */
+ all: initial;
+ visibility: inherit;
+ pointer-events: inherit;
+
+ /* These properties are not included in 'all'. */
+ -moz-context-properties: initial;
+ -moz-control-character-visibility: initial;
+ -moz-min-font-size-ratio: initial;
+ -moz-box-collapse: initial;
+ -moz-theme: initial;
+
+ /* We don't want zoom on our ancestors to affect our styles. */
+ zoom: document;
+
+ math-depth: initial;
+ /* As long as inert implies pointer-events: none as it does now, we're
+ * good. */
+ -moz-inert: initial;
+
+ /* direction: initial is not sufficient, since its initial value can depend
+ * on the document's language. But we specify ltr explicitly below */
+
+ /* Similarly for font properties, whose initial values depend on the
+ * document's language. Scrollbar parts don't have any text or rely on
+ * font metrics.
+ */
+ font: 16px sans-serif;
+
+ /* The initial value of justify-items is `legacy`, which makes it depend on
+ * the parent style.
+ *
+ * Reset it to something else.
+ */
+ justify-items: start;
+
+ /* Avoid `object > *` rule in html.css from setting a useless, non-initial
+ * value of vertical-align.
+ */
+ vertical-align: initial !important;
+ }
+
+ /* There are other rules that set the cursor on the scrollbar, expecting them
+ * to inherit into its children. Explicitly inherit it, overriding the
+ * 'all: initial;' declaration above.
+ */
+ :is(scrollbarbutton, slider, thumb):where(:-moz-native-anonymous) {
+ cursor: inherit;
+ }
+}
+
+scrollbar, scrollbarbutton, scrollcorner, slider, thumb, resizer {
+ /* We need a display value that doesn't get blockified to preserve the
+ * scrollbar sizing asserts. In practice it doesn't matter since these get
+ * special frames */
+ display: block;
+ box-sizing: border-box;
+
+ /* Our scrollbar layout uses physical coordinates, we wouldn't want an
+ * horizontal scrollbar to flip in rtl for example. */
+ direction: ltr;
+ writing-mode: initial;
+
+ -moz-user-focus: ignore;
+ /* Prevent -moz-user-modify declaration from designmode.css having an effect. */
+ -moz-user-modify: initial;
+ user-select: none;
+}
+
+
+/********** resizer **********/
+
+resizer {
+ position: relative;
+ z-index: 2147483647;
+
+ background: url("chrome://global/skin/icons/resizer.svg") no-repeat;
+ background-size: 100% 100%;
+ cursor: se-resize;
+ width: 15px;
+ height: 15px;
+}
+
+resizer[dir="bottom"][flip],
+resizer[dir="bottomleft"] {
+ transform: scaleX(-1);
+}
+
+resizer[dir="bottomleft"] {
+ cursor: sw-resize;
+}
+
+resizer[dir="top"],
+resizer[dir="bottom"] {
+ cursor: ns-resize;
+}
+
+resizer[dir="left"] {
+ transform: scaleX(-1);
+}
+
+resizer[dir="left"],
+resizer[dir="right"] {
+ cursor: ew-resize;
+}
+
+resizer[dir="topleft"] {
+ cursor: nw-resize;
+}
+
+resizer[dir="topright"] {
+ cursor: ne-resize;
+}
+
+thumb {
+ appearance: auto;
+ -moz-default-appearance: scrollbarthumb-horizontal;
+}
+
+thumb[orient="vertical"] {
+ -moz-default-appearance: scrollbarthumb-vertical;
+}
+
+scrollbar[disabled] thumb {
+ visibility: hidden;
+}
+
+@media (-moz-platform: android) {
+ scrollbar, resizer, scrollcorner {
+ pointer-events: none;
+ }
+}
+
+scrollbar {
+ appearance: auto;
+ -moz-default-appearance: scrollbar-horizontal;
+ cursor: default;
+}
+
+scrollbar[orient="vertical"] {
+ -moz-default-appearance: scrollbar-vertical;
+}
+
+scrollbar[root] {
+ position: relative;
+ z-index: 2147483647; /* largest positive value of a signed 32-bit integer */
+}
+
+@media (-moz-overlay-scrollbars) {
+ scrollbar {
+ opacity: 1;
+ will-change: opacity;
+ transition-property: opacity;
+ transition-duration: env(-moz-overlay-scrollbar-fade-duration);
+ }
+ scrollbar:not([active]),
+ scrollbar[disabled] {
+ pointer-events: none;
+ opacity: 0;
+ }
+ scrollcorner {
+ pointer-events: none;
+ }
+}
+
+slider {
+ appearance: auto;
+ -moz-default-appearance: scrollbartrack-horizontal;
+}
+
+slider[orient="vertical"] {
+ -moz-default-appearance: scrollbartrack-vertical;
+}
+
+scrollbarbutton {
+ appearance: auto;
+ -moz-default-appearance: scrollbarbutton-right;
+}
+
+scrollbar[orient="vertical"] > scrollbarbutton {
+ -moz-default-appearance: scrollbarbutton-down;
+}
+
+scrollbarbutton[type="decrement"] {
+ -moz-default-appearance: scrollbarbutton-left;
+}
+
+scrollbar[orient="vertical"] > scrollbarbutton[type="decrement"] {
+ -moz-default-appearance: scrollbarbutton-up;
+}
+
+scrollcorner {
+ appearance: auto;
+ -moz-default-appearance: scrollcorner;
+ width: 16px;
+ cursor: default;
+}
+
+@media (-moz-scrollbar-start-backward: 0) {
+ scrollbarbutton[sbattr="scrollbar-up-top"] {
+ display: none;
+ }
+}
+
+@media (-moz-scrollbar-start-forward: 0) {
+ scrollbarbutton[sbattr="scrollbar-down-top"] {
+ display: none;
+ }
+}
+
+@media (-moz-scrollbar-end-backward: 0) {
+ scrollbarbutton[sbattr="scrollbar-up-bottom"] {
+ display: none;
+ }
+}
+
+@media (-moz-scrollbar-end-forward: 0) {
+ scrollbarbutton[sbattr="scrollbar-down-bottom"] {
+ display: none;
+ }
+}
diff --git a/layout/style/res/searchfield-cancel.svg b/layout/style/res/searchfield-cancel.svg
new file mode 100644
index 0000000000..2cff2f08bb
--- /dev/null
+++ b/layout/style/res/searchfield-cancel.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
+ <style>
+ circle {
+ fill: #808080;
+ }
+
+ line {
+ stroke: #fff;
+ stroke-width: 1.5px;
+ }
+ </style>
+
+ <circle cx="7" cy="7" r="7" />
+ <line x1="4" y1="4" x2="10" y2="10" />
+ <line x1="10" y1="4" x2="4" y2="10" />
+</svg> \ No newline at end of file
diff --git a/layout/style/res/ua.css b/layout/style/res/ua.css
new file mode 100644
index 0000000000..b0bc905d96
--- /dev/null
+++ b/layout/style/res/ua.css
@@ -0,0 +1,455 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+@namespace parsererror url(http://www.mozilla.org/newlayout/xml/parsererror.xml);
+@namespace html url(http://www.w3.org/1999/xhtml);
+@namespace xul url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
+
+/* magic -- some of these rules are important to keep pages from overriding
+ them
+*/
+
+/* Tables */
+
+*|*::-moz-table {
+ display: table;
+ box-sizing: border-box; /* XXX do we really want this? */
+}
+
+*|*::-moz-inline-table {
+ display: inline-table;
+ box-sizing: border-box; /* XXX do we really want this? */
+}
+
+*|*::-moz-table-wrapper {
+ /* The inherited properties here need to be safe to have on both the
+ * table and the table wrapper, generally because code ignores them
+ * for the table. */
+ display: inherit; /* table or inline-table */
+ -moz-top-layer: inherit;
+ margin: inherit;
+ float: inherit;
+ clear: inherit;
+ position: inherit;
+ top: inherit;
+ right: inherit;
+ bottom: inherit;
+ left: inherit;
+ z-index: inherit;
+ page-break-before: inherit;
+ page-break-after: inherit;
+ page-break-inside: inherit;
+ vertical-align: inherit; /* needed for inline-table */
+ line-height: inherit; /* needed for vertical-align on inline-table */
+ /* Bug 722777 */
+ transform: inherit;
+ transform-origin: inherit;
+ /* Bug 724750 */
+ backface-visibility: inherit;
+ clip: inherit;
+ /* Other transform-related properties */
+ /* transform-style: inherit; Bug 1560704 */
+ rotate: inherit;
+ scale: inherit;
+ translate: inherit;
+ /* When the table wrapper is a Flex/Grid item we need these: */
+ align-self: inherit;
+ justify-self: inherit;
+ grid-column-start: inherit;
+ grid-column-end: inherit;
+ grid-row-start: inherit;
+ grid-row-end: inherit;
+ order: inherit;
+ outline: inherit;
+ outline-offset: inherit;
+ column-span: inherit; /* needed if <table> has "column-span:all" */
+ contain: inherit; /* needed if table has 'contain:layout' or 'paint' */
+ container: inherit; /* Bug 1805588 */
+ scroll-margin: inherit; /* Bug 1633192 */
+}
+
+*|*::-moz-table-row {
+ display: table-row;
+}
+
+/* The ::-moz-table-column pseudo-element is for extra columns at the end
+ of a table. */
+*|*::-moz-table-column {
+ display: table-column;
+ /* Make sure anonymous columns don't interfere with hit testing. Basically,
+ * they should pretend as much as possible to not exist (since in the spec
+ * they do not exist).
+ *
+ * Please make sure to not reintroduce
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=1403293 if you change this
+ * bit!
+ */
+ visibility: hidden;
+}
+
+*|*::-moz-table-column-group {
+ display: table-column-group;
+ /* Make sure anonymous colgroups don't interfere with hit testing. Basically,
+ * they should pretend as much as possible to not exist (since in the spec
+ * they do not exist).
+ *
+ * Please make sure to not reintroduce
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=1403293 if you change this
+ * bit!
+ */
+ visibility: hidden;
+}
+
+*|*::-moz-table-row-group {
+ display: table-row-group;
+}
+
+*|*::-moz-table-cell {
+ display: table-cell;
+ white-space: inherit;
+}
+
+/* Ruby */
+*|*::-moz-ruby {
+ display: ruby;
+ unicode-bidi: isolate;
+}
+*|*::-moz-ruby-base {
+ display: ruby-base;
+ unicode-bidi: isolate;
+}
+*|*::-moz-ruby-text {
+ display: ruby-text;
+ unicode-bidi: isolate;
+}
+*|*::-moz-ruby-base-container {
+ display: ruby-base-container;
+ unicode-bidi: isolate;
+}
+*|*::-moz-ruby-text-container {
+ display: ruby-text-container;
+ unicode-bidi: isolate;
+}
+
+/* https://drafts.csswg.org/css-lists-3/#ua-stylesheet */
+::marker {
+ text-align: end;
+ text-transform: none;
+ unicode-bidi: isolate;
+ font-variant-numeric: tabular-nums;
+ white-space: pre;
+}
+
+/* SVG documents don't always load this file but they do have links.
+ * If you change the link rules, consider carefully whether to make
+ * the same changes to svg.css.
+ */
+
+/* Links and focusable content */
+
+:any-link {
+ cursor: pointer;
+ text-decoration: underline;
+}
+
+:link {
+ color: LinkText;
+}
+
+:any-link:active {
+ color: ActiveText;
+}
+
+:visited {
+ color: VisitedText;
+}
+
+/* stylelint-disable-next-line media-query-no-invalid */
+@media (-moz-bool-pref: "layout.css.always_underline_links") {
+ :any-link {
+ text-decoration: underline !important;
+ }
+}
+
+:focus-visible {
+ outline: 1px auto;
+}
+
+/* Inert subtrees */
+:-moz-inert {
+ -moz-inert: inert;
+}
+
+/* Miscellaneous */
+
+*|*::-moz-cell-content {
+ display: block;
+ unicode-bidi: inherit;
+ text-overflow: inherit;
+ overflow: inherit;
+ overflow-clip-box: inherit;
+ resize: inherit;
+ padding: inherit;
+ box-decoration-break: inherit;
+}
+
+*|*::-moz-block-inside-inline-wrapper {
+ display: block;
+ /* we currently inherit from the inline that is split */
+ position: inherit; /* static or relative or sticky */
+ outline: inherit;
+ outline-offset: inherit;
+ clip-path: inherit;
+ filter: inherit;
+ mask: inherit;
+ opacity: inherit;
+ text-decoration: inherit;
+ overflow-clip-box: inherit;
+ unicode-bidi: inherit;
+ user-select: inherit;
+ text-overflow: inherit;
+ /* The properties below here don't apply if our position is static,
+ and we do want them to have an effect if it's not, so it's fine
+ to always inherit them. */
+ top: inherit;
+ left: inherit;
+ bottom: inherit;
+ right: inherit;
+ z-index: inherit;
+}
+
+*|*::-moz-scrolled-content,
+*|*::-moz-scrolled-canvas {
+ /* e.g., text inputs, select boxes */
+ padding: inherit;
+ /* The display doesn't affect the kind of frame constructed here. This just
+ affects auto-width sizing of the block we create. */
+ display: block;
+ /* make unicode-bidi inherit, otherwise it has no effect on text inputs and
+ blocks with overflow: scroll; */
+ unicode-bidi: inherit;
+ text-overflow: inherit;
+ /* Please keep the declarations below in sync with ::-moz-fieldset-content /
+ ::-moz-button-content in forms.css */
+ content: inherit;
+ /* Multicol container */
+ column-count: inherit;
+ column-width: inherit;
+ column-gap: inherit;
+ column-rule: inherit;
+ column-fill: inherit;
+ /* Flex container */
+ flex-direction: inherit;
+ flex-wrap: inherit;
+ /* -webkit-box container (aliased from -webkit versions to -moz versions) */
+ -moz-box-orient: inherit;
+ -moz-box-direction: inherit;
+ -moz-box-pack: inherit;
+ -moz-box-align: inherit;
+ -webkit-line-clamp: inherit;
+ /* Grid container */
+ grid-auto-columns: inherit;
+ grid-auto-rows: inherit;
+ grid-auto-flow: inherit;
+ grid-column-gap: inherit;
+ grid-row-gap: inherit;
+ grid-template-areas: inherit;
+ grid-template-columns: inherit;
+ grid-template-rows: inherit;
+ /* CSS Align */
+ align-content: inherit;
+ align-items: inherit;
+ justify-content: inherit;
+ justify-items: inherit;
+ /* Do not change these. nsCSSFrameConstructor depends on them to create a good
+ frame tree. */
+ overflow-clip-box: inherit;
+}
+
+*|*::-moz-viewport, *|*::-moz-viewport-scroll, *|*::-moz-canvas, *|*::-moz-scrolled-canvas {
+ display: block;
+ background-color: inherit;
+}
+
+*|*::-moz-viewport-scroll {
+ overflow: auto;
+}
+
+*|*::-moz-column-set,
+*|*::-moz-column-content {
+ /* the column boxes inside a column-flowed block */
+ /* make unicode-bidi inherit, otherwise it has no effect on column boxes */
+ unicode-bidi: inherit;
+ text-overflow: inherit;
+ /* Both -moz-column-set and -moz-column-content need to be blocks. */
+ display: block;
+}
+
+*|*::-moz-column-set {
+ /* Inherit from ColumnSetWrapperFrame so that nsColumnSetFrame is aware of
+ them.*/
+ columns: inherit;
+ column-gap: inherit;
+ column-rule: inherit;
+ column-fill: inherit;
+}
+
+*|*::-moz-column-span-wrapper {
+ /* As a result of the discussion in
+ * https://github.com/w3c/csswg-drafts/issues/1072, most of the styles
+ * currently applied to ::-moz-block-inside-inline-wrapper should not
+ * apply here. */
+ display: block;
+ column-span: all;
+}
+
+*|*::-moz-anonymous-item {
+ /* Anonymous blocks that wrap contiguous runs of text
+ * inside of a flex / grid / -moz-box container. */
+ display: block;
+}
+
+*|*::-moz-page-sequence {
+ /* Collection of pages in print/print preview. Visual styles may only appear
+ * in print preview. */
+ display: block;
+ background: #606060 linear-gradient(#606060, #8a8a8a) fixed;
+ print-color-adjust: exact;
+ /* We always fill the available space in both directions */
+ height: 100%;
+ width: 100%;
+}
+
+*|*::-moz-printed-sheet {
+ /* Individual sheet of paper in print/print preview. Visual styles may only
+ * appear in print preview. */
+ display: block;
+ background: white;
+ print-color-adjust: exact;
+ box-shadow: 5px 5px 8px #202020;
+ box-decoration-break: clone;
+ /* TODO: Remove margin if viewport is small or something? */
+ margin: 0.125in 0.25in;
+}
+
+@media (monochrome) and (-moz-print-preview) {
+ *|*::-moz-page {
+ filter: grayscale(1);
+ }
+}
+
+*|*::-moz-page-content {
+ display: block;
+ margin: auto;
+}
+
+*|*::-moz-page-break {
+ display: block;
+}
+
+/* Printing */
+
+@media print {
+ * {
+ cursor: default !important;
+ }
+}
+
+:fullscreen:not(:root) {
+ -moz-top-layer: top !important;
+ position: fixed !important;
+ inset: 0 !important;
+ width: 100% !important;
+ height: 100% !important;
+ margin: 0 !important;
+ min-width: 0 !important;
+ max-width: none !important;
+ min-height: 0 !important;
+ max-height: none !important;
+ box-sizing: border-box !important;
+ object-fit: contain;
+ transform: none !important;
+}
+
+/* This pseudo-class is used to remove the inertness for the topmost modal
+ * element in top layer.
+ *
+ * Avoid doing this if the element is explicitly inert though. */
+:-moz-topmost-modal:not(html|*[inert]) {
+ -moz-inert: none;
+ /* Topmost modal elements need to be selectable even though ancestors are
+ * inert, but allow users to override this if they want to. */
+ user-select: text;
+}
+
+/**
+ * Ensure we recompute the default color for the root based on its
+ * computed color-scheme. This matches other browsers.
+ *
+ * For the default background, we look at the root
+ * element style frame in
+ * PresShell::GetDefaultBackgroundColorToDraw, however we
+ * can't make the initial style (the style the root element
+ * inherits from) depend on the root element's style, as that
+ * is trivially cyclic.
+ */
+:root {
+ color: CanvasText;
+}
+
+::backdrop {
+ -moz-top-layer: top !important;
+ display: block;
+ position: fixed;
+ inset: 0;
+ /* This prevents undesired interactions with the selection code. */
+ user-select: none;
+}
+
+:fullscreen:not(:root)::backdrop {
+ background: black;
+}
+
+/* XML parse error reporting */
+
+parsererror|parsererror {
+ display: block;
+ font-family: sans-serif;
+ font-weight: bold;
+ white-space: pre;
+ margin: 1em;
+ padding: 1em;
+ border-width: thin;
+ border-style: inset;
+ border-color: red;
+ font-size: 14pt;
+ background-color: lightyellow;
+ color: black;
+}
+
+parsererror|sourcetext {
+ display: block;
+ white-space: pre;
+ font-family: -moz-fixed;
+ margin-top: 2em;
+ margin-bottom: 1em;
+ color: red;
+ font-weight: bold;
+ font-size: 12pt;
+}
+
+/* Custom content container in the CanvasFrame, positioned on top of everything
+ everything else, not reacting to pointer events. */
+.moz-custom-content-container:-moz-native-anonymous {
+ pointer-events: none;
+ user-select: none;
+ -moz-top-layer: top;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ /* Initial direction depends on the document, make sure to reset it */
+ direction: ltr;
+}
diff --git a/layout/style/res/viewsource.css b/layout/style/res/viewsource.css
new file mode 100644
index 0000000000..6bcf73faa6
--- /dev/null
+++ b/layout/style/res/viewsource.css
@@ -0,0 +1,116 @@
+@charset "utf-8";
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+@namespace url(http://www.w3.org/1999/xhtml); /* set default namespace to HTML */
+
+*|*:root {
+ color-scheme: light dark;
+ direction: ltr;
+ -moz-control-character-visibility: visible;
+ height: 100%;
+}
+#viewsource {
+ font-family: -moz-fixed;
+ font-weight: normal;
+ white-space: pre;
+ counter-reset: line;
+ height: 100%;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 8px;
+}
+#viewsource.wrap {
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+pre {
+ font: inherit;
+ color: inherit;
+ white-space: inherit;
+ margin: 0 0 0 5ch;
+}
+pre[id]:before,
+span[id]:before {
+ content: counter(line) " ";
+ counter-increment: line;
+ user-select: none;
+ display: inline-block;
+ width: 5ch;
+ margin: 0 0 0 -5ch;
+ text-align: right;
+ color: #ccc;
+ font-weight: normal;
+ font-style: normal;
+}
+.highlight .start-tag,
+.highlight .end-tag {
+ color: purple;
+ font-weight: bold;
+}
+.highlight .comment {
+ color: green;
+ font-style: italic;
+}
+.highlight .cdata {
+ color: #CC0066;
+}
+.highlight .doctype,
+.highlight .markupdeclaration {
+ color: steelblue;
+ font-style: italic;
+}
+.highlight .pi {
+ color: orchid;
+ font-style: italic;
+}
+.highlight .entity {
+ color: #FF4500;
+ font-weight: normal;
+}
+.highlight .text {
+ font-weight: normal;
+}
+.highlight .attribute-name {
+ font-weight: bold;
+}
+.highlight .attribute-value {
+ color: blue;
+ font-weight: normal;
+}
+span:not(.error),
+a:not(.error) {
+ unicode-bidi: embed;
+}
+span[id] {
+ unicode-bidi: isolate;
+}
+.highlight .error {
+ color: revert;
+ font-weight: bold;
+ background-color: rgba(231, 116, 113, 0.3);
+ text-decoration: underline wavy red 0.5px;
+}
+@media (prefers-color-scheme: dark) {
+ .highlight .start-tag,
+ .highlight .end-tag {
+ color: #f55e5e;
+ }
+ .highlight .comment {
+ color: lightgreen;
+ }
+ .highlight .cdata {
+ color: #f068ac;
+ }
+ .highlight .doctype,
+ .highlight .markupdeclaration {
+ color: lightgray;
+ }
+ .highlight .entity {
+ color: #f18a65;
+ }
+ .highlight .attribute-value {
+ color: #97bbff;
+ }
+}