/* 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/. */

@import "defines.css";
@import "scrollbar.css";

@namespace url("http://www.w3.org/1999/xhtml");
@namespace xul url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");

::-moz-selection {
  background-color: var(--color_background_highlight);
  color: var(--color_text_highlight);
}

/* Style the scrollbars */
xul|scrollbar[root="true"] {
  position: relative;
  z-index: 2147483647;
}

xul|scrollbar {
  -moz-appearance: none !important;
  -moz-binding: url("chrome://global/content/bindings/scrollbar.xml#scrollbar");
  background-color: transparent !important;
  background-image: none !important;
  border: 0px solid transparent !important;
  pointer-events: none;
}

/* Scrollbar code will reset the margin to the correct side depending on
   where layout actually puts the scrollbar */
xul|scrollbar[orient="vertical"] {
  margin-left: -8px;
  min-width: 8px;
  max-width: 8px;
}

xul|scrollbar[orient="vertical"] xul|thumb {
  -moz-appearance: scrollbarthumb-vertical !important;
  max-width: 6px !important;
  min-width: 6px !important;
}

xul|scrollbar[orient="horizontal"] {
  margin-top: -8px;
  min-height: 8px;
  max-height: 8px;
}

xul|scrollbar[orient="horizontal"] xul|thumb {
  -moz-appearance: scrollbarthumb-horizontal !important;
  max-height: 6px !important;
  min-height: 6px !important;
}

xul|scrollbar:not([active="true"]),
xul|scrollbar[disabled] {
  opacity: 0;
}

xul|scrollbarbutton {
  min-height: 8px !important;
  min-width: 8px !important;
  -moz-appearance: none !important;
  visibility: hidden;
}

xul|scrollbarbutton[sbattr="scrollbar-up-top"],
xul|scrollbarbutton[sbattr="scrollbar-bottom-top"] {
  display: none;
}

xul|scrollbar xul|thumb {
  background-color: rgba(0, 0, 0, 0.4) !important;
  -moz-border-top-colors: none !important;
  -moz-border-bottom-colors: none !important;
  -moz-border-right-colors: none !important;
  -moz-border-left-colors: none !important;
  border: 1px solid rgba(255, 255, 255, 0.4) !important;
  border-radius: 3px;
}

xul|scrollbarbutton {
  background-image: none !important;
}

select:not([size]):not([multiple]) > xul|scrollbar,
select[size="1"] > xul|scrollbar,
select:not([size]):not([multiple]) xul|scrollbarbutton,
select[size="1"] xul|scrollbarbutton {
  display: block;
  margin-left: 0;
  min-width: 16px;
}

/* Override inverse OS themes */
textarea,
button,
xul|button,
* > input:not([type="image"]) {
  -moz-appearance: none !important;  /* See bug 598421 for fixing the platform */
  border-radius: var(--form_border_radius);
}

select[size],
select[multiple],
select[size][multiple],
textarea,
* > input:not([type="image"]):not([type="image"]) {
  border-style: solid;
  border-color: var(--form_border);
  color: var(--form_text);
  background-color: var(--form_background);
}

/* Selects are handled by the form helper, see bug 685197 */
select option, select optgroup {
  pointer-events: none;
}

select:not([size]):not([multiple]),
select[size="0"],
select[size="1"],
* > input[type="button"],
* > input[type="submit"],
* > input[type="reset"],
button {
  border-style: solid;
  border-color: var(--form_border);
  color: var(--form_text);
  background-color: var(--form_background);
}

input[type="checkbox"] {
  background: var(--form_background);
}

input[type="radio"] {
  background: var(--form_background)
}

select {
  border-width: 1px;
  padding: 1px;
  border-radius: var(--form_border_radius);
}

select:not([size]):not([multiple]),
select[size="0"],
select[size="1"] {
  padding: 0 1px 0 1px;
}

* > input:not([type="image"]) {
  border-width: 1px;
  padding: 1px;
}

textarea {
  resize: none;
  border-width: 1px;
  -moz-padding-start: 1px;
  -moz-padding-end: 1px;
  padding-block-start: 2px;
  padding-block-end: 2px;
}

input[type="button"],
input[type="submit"],
input[type="reset"],
button {
  border-width: 1px;
  -moz-padding-start: 7px;
  -moz-padding-end: 7px;
  padding-block-start: 0;
  padding-block-end: 0;
}

input[type="radio"],
input[type="checkbox"] {
  border: 1px solid var(--form_border) !important;
  -moz-padding-start: 1px;
  -moz-padding-end: 1px;
  padding-block-start: 2px;
  padding-block-end: 2px;
}

select > button {
  border-width: 0px !important;
  margin: 0px !important;
  padding: 0px !important;
  border-radius: 0;
  color: #414141;

  background-size: auto auto;
  background-color: transparent;
  background-image: url("chrome://browser/skin/images/dropmarker.svg") !important;
  background-position: calc(50% + 1px) center !important;
  background-repeat: no-repeat !important;

  font-size: inherit;
}

select[size]:focus,
select[multiple]:focus,
select[size][multiple]:focus,
textarea:focus,
input[type="file"]:focus > input[type="text"],
* > input:not([type="image"]):focus {
  outline: 0px !important;
  border-style: solid;
  border-color: var(--form_border);
  background-color: var(--form_background);
}

select:not([size]):not([multiple]):focus,
select[size="0"]:focus,
select[size="1"]:focus,
input[type="button"]:focus,
input[type="submit"]:focus,
input[type="reset"]:focus,
button:focus {
  outline: 0px !important;
  border-style: solid;
  border-color: var(--form_border);
  background-color: var(--form_background);
}

input[type="checkbox"]:focus,
input[type="radio"]:focus {
  border-color: var(--form_border) !important;
}

input[type="checkbox"]:focus {
  background: var(--form_background);
}

input[type="radio"]:focus {
  background: var(--form_background);
}

/* we need to be specific for selects because the above rules are specific too */
textarea:disabled,
select[size]:disabled,
select[multiple]:disabled,
select[size][multiple]:disabled,
select:not([size]):not([multiple]):disabled,
select[size="0"]:disabled,
select[size="1"]:disabled,
button:disabled,
button:disabled:active,
* > input:not([type="image"]):disabled,
* > input:not([type="image"]):disabled:active {
  color: var(--form_text_disabled);
  border-color: var(--form_border);
  border-style: solid;
  border-width: 1px;
  background: var(--form_background_disabled);
}

select:not([size]):not([multiple]):disabled,
select[size="0"]:disabled,
select[size="1"]:disabled {
  background: var(--form_background_disabled);
}

input[type="button"]:disabled,
input[type="button"]:disabled:active,
input[type="submit"]:disabled,
input[type="submit"]:disabled:active,
input[type="reset"]:disabled,
input[type="reset"]:disabled:active,
button:disabled,
button:disabled:active {
  -moz-padding-start: 7px;
  -moz-padding-end: 7px;
  padding-block-start: 0;
  padding-block-end: 0;
  background: var(--form_background_disabled);
}

input[type="radio"]:disabled,
input[type="radio"]:disabled:active,
input[type="radio"]:disabled:hover,
input[type="radio"]:disabled:hover:active,
input[type="checkbox"]:disabled,
input[type="checkbox"]:disabled:active,
input[type="checkbox"]:disabled:hover,
input[type="checkbox"]:disabled:hover:active {
  border:1px solid var(--form_border) !important;
}

select:disabled > button {
  opacity: 0.6;
  -moz-padding-start: 7px;
  -moz-padding-end: 7px;
  padding-block-start: 1px;
  padding-block-end: 1px;
}

/* -moz-touch-enabled? media elements */
:-moz-any(video, audio) > xul|videocontrols {
  -moz-binding: url("chrome://global/content/bindings/videocontrols.xml#touchControls");
}

/* display click to play when autoplay is blocked for videos */
video:not([controls]) > xul|videocontrols {
  visibility: visible;
  -moz-binding: url("chrome://global/content/bindings/videocontrols.xml#noControls");
}

*:-moz-any-link:active,
*[role=button]:active,
button:not(:disabled):active,
input:not(:focus):not(:disabled):active,
select:not(:disabled):active,
textarea:not(:focus):not(:disabled):active,
option:active,
label:active,
xul|menulist:active {
  background-color: var(--color_background_highlight_overlay);
}

button:active:hover,
input[type="color"]:-moz-system-metric(color-picker-available):active:hover,
input[type="reset"]:active:hover,
input[type="button"]:active:hover,
input[type="submit"]:active:hover {
  -moz-padding-end: 7px;
  -moz-padding-start: 7px;
}

input[type=number] > div > div, /* work around bug 946184 */
input[type=number]::-moz-number-spin-box {
  display: none;
}

