/* 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"); @namespace html url("http://www.w3.org/1999/xhtml"); checkbox { appearance: none; align-items: center; margin: 4px 2px; } .checkbox-icon[src] { margin-inline-end: 2px; } .checkbox-label { margin: 1px 0; } /* ..... disabled state ..... */ checkbox[disabled="true"] { opacity: 0.4; } /* ::::: checkmark image ::::: */ .checkbox-check { appearance: none; color: var(--checkbox-border-color, ThreeDShadow); background-color: var(--checkbox-unchecked-bgcolor, Field); border: 1px solid currentColor; border-radius: 2px; margin-inline-end: 6px; } .checkbox-check:not([native]) { height: 16px; width: 16px; } checkbox:not([disabled="true"]):hover > .checkbox-check { background-color: var(--checkbox-unchecked-hover-bgcolor, color-mix(in srgb, AccentColor 4%, Field)); } checkbox:not([disabled="true"]):hover:active > .checkbox-check { background-color: var(--checkbox-unchecked-active-bgcolor, color-mix(in srgb, AccentColor 8%, Field)); } .checkbox-check[checked] { border-color: var(--checkbox-checked-border-color, transparent); background-color: var(--checkbox-checked-bgcolor, AccentColor); background-image: url("chrome://global/skin/icons/check.svg"); background-position: center; background-repeat: no-repeat; -moz-context-properties: fill; fill: currentColor; color: var(--checkbox-checked-color, AccentColorText); /* Style the button also when printing with "Print Backgrounds" unchecked */ color-adjust: exact; } checkbox:not([disabled="true"]):hover > .checkbox-check[checked] { background-color: var(--checkbox-checked-hover-bgcolor, color-mix(in srgb, currentColor 12.5%, AccentColor)); } checkbox:not([disabled="true"]):hover:active > .checkbox-check[checked] { background-color: var(--checkbox-checked-active-bgcolor, color-mix(in srgb, currentColor 25%, AccentColor)); } checkbox:not([native]):focus-visible > .checkbox-check { outline: var(--focus-outline); outline-offset: var(--focus-outline-offset); } @media (prefers-contrast) { checkbox:not([disabled="true"]):hover > .checkbox-check { /* color will set the border-color on the check due to how HCM works for in-content pages. */ color: var(--checkbox-checked-border-color, color-mix(in srgb, AccentColor 4%, Field)); } checkbox:not([disabled="true"]):hover:active > .checkbox-check[checked], checkbox:not([disabled="true"]):hover > .checkbox-check[checked] { color: var(--checkbox-checked-border-color, AccentColorText); fill: var(--checkbox-checked-color, AccentColorText); background-color: var(--checkbox-checked-bgcolor, AccentColor); } } /* ..... Platform overrides ..... */ @media (-moz-platform: windows) { checkbox:where([native]) { appearance: auto; -moz-default-appearance: checkbox-container; align-items: center; margin: 2px 4px; padding-top: 1px; padding-bottom: 1px; padding-inline-start: 4px; padding-inline-end: 2px; } .checkbox-label[native] { margin: 0; } /* ..... focused state ..... */ checkbox[native]:focus-visible > .checkbox-label-box { outline: var(--focus-outline); } /* ..... disabled state ..... */ checkbox[native][disabled="true"] { color: GrayText; } @media (-moz-windows-classic) { checkbox[native][disabled="true"] { color: ThreeDShadow; text-shadow: 1px 1px ThreeDHighlight; } } /* ::::: checkmark image ::::: */ .checkbox-check[native] { appearance: auto; -moz-default-appearance: checkbox; align-items: center; margin-inline-end: 5px; } } @media (-moz-platform: macos) { checkbox:where([native]) { appearance: auto; -moz-default-appearance: checkbox-container; align-items: center; margin: 4px 2px; } .checkbox-label[native] { margin: 1px 0; } /* ..... disabled state ..... */ checkbox[native][disabled="true"] { color: GrayText; } /* ::::: checkmark image ::::: */ .checkbox-check[native] { appearance: auto; -moz-default-appearance: checkbox; margin-block: 1px 0; margin-inline: 1px 3px; /* vertical-align tells native theming where to snap to. However, this doesn't * always work reliably because of bug 503833. */ vertical-align: top; width: 1.3em; height: 1.3em; } } @media (-moz-platform: linux) { checkbox:where([native]) { appearance: auto; -moz-default-appearance: checkbox-container; align-items: center; margin: 2px 4px; } .checkbox-label-box[native] { appearance: auto; -moz-default-appearance: checkbox-label; } .checkbox-label[native] { margin: 0; } /* ..... focused state ..... */ checkbox[native]:focus-visible > .checkbox-label-box { /* Native theming should take care of this but it appears to be broken with some Gtk themes. Bug 1312169. */ outline: var(--focus-outline); } /* ..... disabled state ..... */ checkbox[native][disabled="true"] { color: GrayText; } /* ::::: checkmark image ::::: */ .checkbox-check[native] { appearance: auto; -moz-default-appearance: checkbox; margin: 2px; margin-inline-end: 4px; } }