summaryrefslogtreecommitdiffstats
path: root/browser/themes/windows/browser.css
diff options
context:
space:
mode:
Diffstat (limited to 'browser/themes/windows/browser.css')
-rw-r--r--browser/themes/windows/browser.css395
1 files changed, 395 insertions, 0 deletions
diff --git a/browser/themes/windows/browser.css b/browser/themes/windows/browser.css
new file mode 100644
index 0000000000..5698fb3d99
--- /dev/null
+++ b/browser/themes/windows/browser.css
@@ -0,0 +1,395 @@
+/* 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 url("chrome://browser/skin/browser-shared.css");
+@import url("chrome://browser/skin/contextmenu.css");
+@import url("chrome://browser/skin/browser-custom-colors.css");
+
+#menubar-items {
+ flex-direction: column; /* for flex hack */
+ justify-content: normal; /* align the menubar to the top also in customize mode */
+}
+
+#main-menubar > menu {
+ appearance: none;
+ color: inherit;
+
+ &[_moz-menuactive] {
+ background-color: light-dark(hsla(0,0%,0%,.12), hsla(0,0%,100%,.22));
+ color: inherit;
+
+ @media (prefers-contrast) {
+ background-color: -moz-menuhover;
+ color: -moz-menuhovertext;
+ }
+ }
+}
+
+@media (-moz-windows-accent-color-in-titlebar) {
+ :root[tabsintitlebar] {
+ /* stylelint-disable-next-line media-query-no-invalid */
+ @media (-moz-bool-pref: "browser.theme.windows.accent-color-in-tabs.enabled") {
+ --toolbox-non-lwt-bgcolor: ActiveCaption;
+ --toolbox-non-lwt-textcolor: CaptionText;
+ --toolbox-non-lwt-bgcolor-inactive: InactiveCaption;
+ --toolbox-non-lwt-textcolor-inactive: InactiveCaptionText;
+
+ #TabsToolbar:not(:-moz-lwtheme) {
+ /* These colors match the Linux/HCM default button colors. We need to
+ * override these on the tabs toolbar because the accent color is
+ * arbitrary, so the hardcoded colors from browser-custom-colors might
+ * not provide sufficient contrast. */
+ --toolbarbutton-icon-fill: currentColor;
+ --toolbarbutton-hover-background: color-mix(in srgb, currentColor 17%, transparent);
+ --toolbarbutton-active-background: color-mix(in srgb, currentColor 30%, transparent);
+ }
+ }
+
+ &[sizemode="normal"] #navigator-toolbox {
+ border-top: .5px solid ActiveBorder;
+ &:-moz-window-inactive {
+ border-top-color: InactiveBorder;
+ }
+ }
+ }
+}
+
+/* When temporarily showing the menu bar, make it at least as tall as the
+ * tab bar such that the window controls don't appear to move up. */
+:root[tabsintitlebar] #toolbar-menubar[autohide="true"] {
+ height: calc(var(--tab-min-height) - var(--tabs-navbar-shadow-size));
+}
+
+#print-preview-toolbar:not(:-moz-lwtheme) {
+ appearance: auto;
+ -moz-default-appearance: toolbox;
+}
+
+/* Titlebar */
+
+.titlebar-buttonbox {
+ appearance: none;
+ /* The button box must appear on top of the navigator-toolbox in order for
+ * click and hover mouse events to work properly for the button in the restored
+ * window state. Otherwise, elements in the navigator-toolbox, like the menubar,
+ * can swallow those events. It will also place the buttons above the fog on
+ * Windows 7 with Aero Glass.
+ */
+ z-index: 1;
+}
+
+.titlebar-buttonbox-container {
+ align-items: stretch;
+
+ /* Prevent window controls from overlapping the nav bar's shadow on the tab
+ * bar. */
+ #TabsToolbar > & {
+ margin-bottom: var(--tabs-navbar-shadow-size);
+ }
+}
+
+/* Window control buttons */
+
+.titlebar-button {
+ appearance: none;
+ border: none;
+ margin: 0;
+ padding: 8px 17px;
+ -moz-context-properties: stroke;
+ stroke: currentColor;
+
+ :root[tabletmode] & {
+ display: none;
+ }
+
+ &:focus-visible {
+ outline: var(--focus-outline);
+ outline-offset: var(--focus-outline-inset);
+ }
+
+ > .toolbarbutton-icon {
+ width: 12px;
+ height: 12px;
+
+ &:-moz-locale-dir(rtl) {
+ transform: scaleX(-1);
+ }
+ }
+}
+
+.titlebar-min {
+ /* Even though we use appearance: none, -moz-default-appearance is necessary
+ * for Windows 11's "snap layouts" feature, see
+ * DealWithWindowsAppearanceHacks */
+ -moz-default-appearance: -moz-window-button-minimize;
+ list-style-image: url(chrome://browser/skin/window-controls/minimize.svg);
+}
+
+.titlebar-max {
+ -moz-default-appearance: -moz-window-button-maximize;
+ list-style-image: url(chrome://browser/skin/window-controls/maximize.svg);
+}
+
+.titlebar-restore {
+ -moz-default-appearance: -moz-window-button-restore;
+ list-style-image: url(chrome://browser/skin/window-controls/restore.svg);
+}
+
+.titlebar-close {
+ -moz-default-appearance: -moz-window-button-close;
+ list-style-image: url(chrome://browser/skin/window-controls/close.svg);
+}
+
+:root[lwtheme-image] {
+ .titlebar-button {
+ -moz-context-properties: unset;
+ }
+ .titlebar-min {
+ list-style-image: url(chrome://browser/skin/window-controls/minimize-themes.svg);
+ }
+ .titlebar-max {
+ list-style-image: url(chrome://browser/skin/window-controls/maximize-themes.svg);
+ }
+ .titlebar-restore {
+ list-style-image: url(chrome://browser/skin/window-controls/restore-themes.svg);
+ }
+ .titlebar-close {
+ list-style-image: url(chrome://browser/skin/window-controls/close-themes.svg);
+ }
+}
+
+@media not (prefers-contrast) {
+ .titlebar-button:hover {
+ background-color: light-dark(hsla(0,0%,0%,.12), hsla(0,0%,100%,.22));
+
+ &:active {
+ background-color: light-dark(hsla(0,0%,0%,.22), hsla(0,0%,100%,.32));
+ }
+ }
+
+ .titlebar-close:hover {
+ stroke: white;
+ background-color: hsl(355,86%,49%);
+
+ &:active {
+ background-color: hsl(355,82%,69%);
+ }
+ }
+}
+
+@media (prefers-contrast) {
+ .titlebar-button {
+ background-color: -moz-field;
+ stroke: ButtonText;
+
+ &:hover {
+ background-color: SelectedItem;
+ stroke: SelectedItemText;
+ }
+ }
+
+ .titlebar-min {
+ list-style-image: url(chrome://browser/skin/window-controls/minimize-highcontrast.svg);
+ }
+
+ .titlebar-max {
+ list-style-image: url(chrome://browser/skin/window-controls/maximize-highcontrast.svg);
+ }
+
+ .titlebar-restore {
+ list-style-image: url(chrome://browser/skin/window-controls/restore-highcontrast.svg);
+ }
+
+ .titlebar-close {
+ list-style-image: url(chrome://browser/skin/window-controls/close-highcontrast.svg);
+ }
+}
+
+/* the 12px image renders a 10px icon, and the 10px upscaled gets rounded to 12.5, which
+ * rounds up to 13px, which makes the icon one pixel too big on 1.25dppx. Fix: */
+@media (1.20dppx <= resolution <= 1.45dppx) {
+ .titlebar-button > .toolbarbutton-icon {
+ width: 11.5px;
+ height: 11.5px;
+ }
+}
+
+/* 175% dpi should result in the same device pixel sizes as 150% dpi. */
+@media (1.70dppx <= resolution <= 1.95dppx) {
+ .titlebar-button {
+ padding-inline: 14.1px;
+
+ > .toolbarbutton-icon {
+ width: 10.8px;
+ height: 10.8px;
+ }
+ }
+}
+
+/* 225% dpi should result in the same device pixel sizes as 200% dpi. */
+@media (2.20dppx <= resolution <= 2.45dppx) {
+ .titlebar-button {
+ padding-inline: 15.3333px;
+
+ > .toolbarbutton-icon {
+ width: 10.8px;
+ height: 10.8px;
+ }
+ }
+}
+
+/* 275% dpi should result in the same device pixel sizes as 250% dpi. */
+@media (2.70dppx <= resolution <= 2.95dppx) {
+ /* NB: todo: this should also change padding on the buttons
+ * themselves, but without a device to test this on, it's
+ * impossible to know by how much. */
+ .titlebar-button > .toolbarbutton-icon {
+ width: 10.8px;
+ height: 10.8px;
+ }
+}
+
+/* Bookmark menus */
+
+.bookmark-item {
+ &:is(menu, menuitem) {
+ min-width: 0;
+ max-width: 32em;
+ }
+
+ &:not(.subviewbutton) > .menu-iconic-left {
+ margin-block: 0;
+ }
+
+ &[cutting] {
+ > .toolbarbutton-icon,
+ > .menu-iconic-left > .menu-iconic-icon {
+ opacity: 0.5;
+ }
+
+ > .toolbarbutton-text,
+ > .menu-iconic-left > .menu-iconic-text {
+ opacity: 0.7;
+ }
+ }
+
+ &:is(toolbarbutton)[dragover="true"][open="true"] {
+ appearance: none;
+ background: SelectedItem !important;
+ color: SelectedItemText !important;
+ fill: SelectedItemText;
+ }
+}
+
+/* Bookmarks roots menu-items */
+
+#bookmarksToolbarFolderMenu,
+#BMB_bookmarksToolbar,
+#panelMenu_bookmarksToolbar {
+ list-style-image: url("chrome://browser/skin/places/bookmarksToolbar.svg");
+}
+
+/* Address bar */
+
+#urlbar,
+#searchbar {
+ font-size: 1.15em;
+}
+
+/* stylelint-disable-next-line media-query-no-invalid */
+@media (-moz-bool-pref: "browser.urlbar.experimental.expandTextOnFocus") {
+ #urlbar[breakout-extend] {
+ font-size: 1.25em;
+ }
+}
+
+@media (prefers-contrast) {
+ :root {
+ /* Windows HCM conventions use these colors for chiclets. We can't use them on
+ other platforms because AccentColor can be shown atop SelectedItem,
+ which has zero contrast. */
+ --urlbar-box-hover-bgcolor: SelectedItem;
+ --urlbar-box-active-bgcolor: SelectedItem;
+ --urlbar-box-hover-text-color: SelectedItemText;
+ }
+
+ #urlbar:not(:-moz-lwtheme, [focused="true"]) > #urlbar-background,
+ #searchbar:not(:-moz-lwtheme, :focus-within),
+ .findbar-textbox:not(:-moz-lwtheme, :focus) {
+ border-color: ThreeDShadow;
+ }
+}
+
+/* Autocomplete */
+
+#PopupAutoComplete > richlistbox > richlistitem[originaltype~="datalist-first"] {
+ border-top: 1px solid ThreeDShadow;
+}
+
+/* Tabstrip */
+
+#TabsToolbar {
+ min-height: 0;
+ padding: 0;
+}
+
+@media (prefers-contrast) {
+ /* For high contrast themes. XXX is this needed anymore? */
+ #tabbrowser-tabpanels,
+ :root[privatebrowsingmode=temporary] #tabbrowser-tabpanels {
+ background-color: -moz-default-background-color;
+ }
+}
+
+/* All tabs menupopup */
+
+.alltabs-item[selected="true"] {
+ font-weight: bold;
+}
+
+#UITourTooltipButtons {
+ /**
+ * Override the --arrowpanel-padding so the background extends
+ * to the sides and bottom of the panel.
+ */
+ margin-inline: -10px;
+ margin-bottom: -10px;
+}
+
+/* Make menu items larger when opened through touch. */
+panel[touchmode],
+menupopup[touchmode] {
+ --arrowpanel-menuitem-padding-block: 12px;
+ --arrowpanel-menuitem-padding: var(--arrowpanel-menuitem-padding-block) var(--arrowpanel-menuitem-padding-inline);
+ /* The value for the header back icon padding is selected in a way that the
+ * height of the header and its separator will be equal to the panel inner
+ * top padding plus standard menuitem, so that the header's separator will
+ * be located excatly where a normal toolbarseparator would be located after
+ * the first menuitem, in a menu without a header. */
+ --arrowpanel-header-back-icon-padding: 10px;
+}
+
+:root[uidensity="compact"] panel[touchmode] {
+ --arrowpanel-header-back-icon-padding: 12px;
+}
+
+menupopup[touchmode] :is(menu, menuitem, menucaption) {
+ /* Use the var set in the rule above to increase menu items height in menupopups when
+ * they are opened through touch.
+ * Panel menu items already have their padding set in panelUI-shared.css with the same var. */
+ padding-block: var(--arrowpanel-menuitem-padding-block);
+}
+
+#contentAreaContextMenu[touchmode] > #context-navigation > menuitem {
+ /* The navigation menuitems are bigger to begin with because of their inner padding,
+ * so calculate the padding-block to match normal menuitems height when in touchmode.
+ * 3.5em is the desired menuitem height (~42px), minus the menuitem actual height devided by 2. */
+ padding-block: calc((3.5em - 32px) / 2);
+}
+
+/* Other menu separators don't extend all the way to the menu edges, but the
+ one below the navigation buttons in the content context menu should. */
+#context-sep-navigation {
+ padding-inline: 0;
+}