summaryrefslogtreecommitdiffstats
path: root/layout/style/res/forms.css
diff options
context:
space:
mode:
Diffstat (limited to 'layout/style/res/forms.css')
-rw-r--r--layout/style/res/forms.css964
1 files changed, 964 insertions, 0 deletions
diff --git a/layout/style/res/forms.css b/layout/style/res/forms.css
new file mode 100644
index 0000000000..13d32aefdf
--- /dev/null
+++ b/layout/style/res/forms.css
@@ -0,0 +1,964 @@
+/* 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;
+ /* 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> (including its
+ internal padding magic) */
+ padding: 1px;
+ border: 2px inset ButtonBorder;
+ background-color: Field;
+ color: FieldText;
+ font: -moz-field;
+ text-rendering: optimizeLegibility;
+ cursor: text;
+ overflow-clip-box: padding-box content-box;
+}
+
+@media (-moz-non-native-content-theme) {
+ input {
+ padding-inline: 2px;
+ }
+}
+
+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;
+
+ /*
+ 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);
+}
+
+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;
+ /*
+ * 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.
+ */
+ line-height: normal !important;
+ user-select: none;
+ text-indent: 0;
+ white-space: nowrap !important;
+ word-wrap: normal !important;
+ text-align: match-parent;
+}
+
+select > option {
+ padding-inline: 4px;
+}
+
+option:checked {
+ background-color: -moz-cellhighlight;
+ color: -moz-cellhighlighttext;
+}
+
+select:focus option:checked {
+ background-color: SelectedItem !important;
+ color: SelectedItemText !important;
+}
+
+optgroup {
+ display: block;
+ float: none !important;
+ position: static !important;
+ font: -moz-list;
+ line-height: normal !important;
+ font-style: italic;
+ font-weight: bold;
+ font-size: unset;
+ user-select: none;
+ text-indent: 0;
+ 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: 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;
+}
+
+/* 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;
+ overflow-clip-box: padding-box;
+}
+
+input[type=color] {
+ inline-size: 64px;
+ block-size: 32px;
+}
+
+@media (-moz-non-native-content-theme) {
+ button,
+ ::file-selector-button,
+ input:is([type=reset], [type=button], [type=submit]) {
+ padding-inline: 4px;
+ }
+
+ input[type=color] {
+ padding: 4px;
+ }
+}
+
+button,
+::file-selector-button {
+ /* Buttons should lay out like "normal" html, mostly */
+ white-space: unset;
+ text-indent: 0;
+ /* 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: hidden !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;
+}
+
+@media print {
+ input, textarea, select, button {
+ -moz-user-input: none !important;
+ }
+}
+
+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;
+}
+
+::-moz-progress-bar {
+ /* 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;
+}
+
+::-moz-meter-bar {
+ /* 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%;
+}
+
+:-moz-meter-optimum::-moz-meter-bar {
+ /* green. */
+ background: linear-gradient(#ad7, #ad7, #cea 20%, #7a3 45%, #7a3 55%);
+}
+:-moz-meter-sub-optimum::-moz-meter-bar {
+ /* orange. */
+ background: linear-gradient(#fe7, #fe7, #ffc 20%, #db3 45%, #db3 55%);
+}
+:-moz-meter-sub-sub-optimum::-moz-meter-bar {
+ /* 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.
+ */
+input[type=range]::-moz-range-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 {
+ 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 {
+ /* 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 {
+ /* 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 {
+ writing-mode: horizontal-tb;
+ appearance: auto;
+ -moz-default-appearance: spinner-upbutton;
+ display: block; /* bug 926670 */
+ flex-grow: 1;
+ cursor: default;
+ /* Style for when native theming is off: */
+ background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="6" height="5"><path d="M1,4 L3,0 5,4" fill="dimgrey"/></svg>');
+ background-repeat: no-repeat;
+ background-position: center bottom;
+ border: 1px solid darkgray;
+ border-bottom: none;
+ /* [JK] I think the border-*-*-radius properties here can remain physical,
+ as we probably don't want to turn the spinner sideways in vertical writing mode */
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+}
+
+input[type=number]::-moz-number-spin-down {
+ writing-mode: horizontal-tb;
+ appearance: auto;
+ -moz-default-appearance: spinner-downbutton;
+ display: block; /* bug 926670 */
+ flex-grow: 1;
+ cursor: default;
+ /* Style for when native theming is off: */
+ background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="6" height="5"><path d="M1,1 L3,5 5,1" fill="dimgrey"/></svg>');
+ background-repeat: no-repeat;
+ background-position: center top;
+ border: 1px solid darkgray;
+ border-top: none;
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+
+input[type=number] > div > div > div:hover {
+ /* Give some indication of hover state for the up/down buttons */
+ background-color: lightblue;
+}
+
+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]) {
+ overflow: hidden !important;
+ 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;
+}