diff --git a/install/app_firefox.sh b/install/app_firefox.sh
new file mode 100644
index 0000000..a8b46a9
--- /dev/null
+++ b/install/app_firefox.sh
@@ -0,0 +1 @@
+sudo dnf install -y firefox
diff --git a/install/app_microsoft_edge.sh b/install/app_microsoft_edge.sh
deleted file mode 100644
index f832d98..0000000
--- a/install/app_microsoft_edge.sh
+++ /dev/null
@@ -1 +0,0 @@
-sudo dnf install -y microsoft-edge-stable
diff --git a/packages/hanabi b/packages/hanabi
index 8834eea..710859c 160000
--- a/packages/hanabi
+++ b/packages/hanabi
@@ -1 +1 @@
-Subproject commit 8834eea1d9b70623d62697e6d241f276401ab51f
+Subproject commit 710859c3708524ea2a1d22b262ee9753e7523e53
diff --git a/sources/install/nvidia_driver.sh b/sources/optional/nvidia_driver.sh
similarity index 100%
rename from sources/install/nvidia_driver.sh
rename to sources/optional/nvidia_driver.sh
diff --git a/themes/firefox/chrome/content/common.css b/themes/firefox/chrome/content/common.css
new file mode 100644
index 0000000..ff134de
--- /dev/null
+++ b/themes/firefox/chrome/content/common.css
@@ -0,0 +1,105 @@
+/* Edge-Frfox - content/common.css */
+
+/*
+ MARK: Default colours
+*/
+@-moz-document url-prefix(about:) {
+ :root {
+ --in-content-page-color: light-dark(#252525, #fff) !important;
+ --in-content-page-background: light-dark(#f7f7f7, #252525) !important;
+ --in-content-deemphasized-text: light-dark(#666, #bbb) !important;
+ --in-content-box-background: light-dark(#fff, #333) !important;
+ --in-content-box-background-odd: light-dark(rgb(0 0 0 / .05), rgb(255 255 255 / .05)) !important;
+ --in-content-box-info-background: light-dark(#f7f7f7, rgb(255 255 255 / 0.15)) !important;
+ --in-content-icon-color: light-dark(#666, #fff) !important;
+ --in-content-accent-color: light-dark(#006CBE, #75B6E8) !important;
+ --in-content-accent-color-active: light-dark(#1683D8, #4C98D1) !important;
+ --in-content-border-hover: light-dark(rgb(0 0 0 / .5), rgb(255 255 255 / .3)) !important;
+ --in-content-border-invalid: var(--red-50) !important;
+ --in-content-border-color: light-dark(#bebebe, rgb(255 255 255 / .2)) !important;
+ --in-content-error-text-color: light-dark(#FF848A, #FF9AA2) !important;
+ --in-content-link-color: light-dark(#0078D4, #75B6E8) !important;
+ --in-content-link-color-hover: light-dark(#006CBE, #63ADE5) !important;
+ --in-content-link-color-active: light-dark(#0749AC, #4C98D1) !important;
+ --in-content-link-color-visited: light-dark(#0078D4, #75B6E8) !important;
+ --link-color: var(--in-content-link-color) !important;
+ --link-color-hover: var(--in-content-link-color-hover) !important;
+ --link-color-active: var(--in-content-link-color-active) !important;
+ --link-color-visited: var(--in-content-link-color-visited) !important;
+ --in-content-button-text-color: var(--in-content-text-color) !important;
+ --in-content-button-text-color-hover: var(--in-content-text-color) !important;
+ --in-content-button-text-color-active: var(--in-content-button-text-color-hover) !important;
+ --in-content-button-background: light-dark(#EDEDED, #3B3B3B) !important;
+ --in-content-button-background-hover: light-dark(#e5e5e5, #545454) !important;
+ --in-content-button-background-active: light-dark(#d5d5d5, #606060) !important;
+ --in-content-primary-button-text-color: light-dark(#fff, #fff) !important;
+ --in-content-primary-button-background: light-dark(#0061e0, #006CBE) !important;
+ --in-content-primary-button-background-hover: light-dark(#0250bb, #0078D4) !important;
+ --in-content-primary-button-background-active: light-dark(#053e94, #005CA3) !important;
+ --color-accent-primary: light-dark(#0078D4, #006CBE) !important;
+ --color-accent-primary-hover: light-dark(#006CBE, #0078D4) !important;
+ --color-accent-primary-active: light-dark(#0749AC, #005CA3) !important;
+ --in-content-danger-button-background: light-dark(#DF4951, #E12424) !important;
+ --in-content-danger-button-background-hover: light-dark(#EA656C, #F94343) !important;
+ --in-content-danger-button-background-active: light-dark(#BB353C, #AA1E1E) !important;
+ --in-content-focus-outline-color: light-dark(rgb(0 85 215 / .5), #63ADE5) !important;
+ --focus-outline-color: var(--in-content-focus-outline-color) !important;
+ --in-content-table-background: light-dark(#f7f7f7, #252525) !important;
+ --in-content-text-color: var(--in-content-page-color) !important;
+ --border-interactive-color: light-dark(#929292, #858585) !important;
+ scrollbar-color:
+ light-dark(rgb(37 37 37 / .4), rgb(255 255 255 / .4))
+ light-dark(#f7f7f7, #252525) !important;
+ }
+
+ ::selection {
+ background-color: light-dark(#0078D4, #93B8E7);
+ color: light-dark(#fff, #000);
+ }
+}
+
+/*
+ MARK: Preferences page
+*/
+@-moz-document url-prefix(about:preferences),
+url-prefix(about:addons) {
+ .category[selected] {
+ position: relative !important;
+ border-radius: 4px !important;
+ }
+
+ .category[selected]:not(:hover, :active) {
+ background-color: var(--in-content-button-background) !important;
+ }
+
+ .category[selected]::before {
+ content: "";
+ position: absolute;
+ inset-block: 0;
+ margin-block: auto;
+ height: 24px;
+ width: 3px;
+ left: 2px;
+ background-color: var(--in-content-accent-color);
+ border-radius: 3px;
+ }
+
+ button.tab-button:hover {
+ border-block-color: transparent var(--in-content-box-border-color) !important;
+ }
+
+ button.tab-button[selected],
+ button.tab-button[selected]:hover {
+ border-block-color: transparent currentColor !important;
+ }
+
+ .toggle-button {
+ --toggle-dot-margin: 4px !important;
+ --toggle-width: 40px !important;
+ --toggle-height: 20px !important;
+ --toggle-background-color: transparent !important;
+ --toggle-dot-background-color: var(--in-content-page-color) !important;
+ --toggle-dot-background-color-on-pressed: #fff !important;
+ --toggle-dot-transform-x: calc(var(--toggle-width) - 2 * var(--toggle-dot-margin) - 2 * var(--toggle-border-width) - var(--toggle-dot-width)) !important;
+ }
+}
diff --git a/themes/firefox/chrome/content/newtab.css b/themes/firefox/chrome/content/newtab.css
new file mode 100644
index 0000000..f73d018
--- /dev/null
+++ b/themes/firefox/chrome/content/newtab.css
@@ -0,0 +1,415 @@
+/* Edge-Frfox - content/newtab.css */
+
+/*
+ MARK: Default colours
+*/
+@-moz-document url-prefix("about:newtab"),
+url-prefix("about:home"),
+url-prefix("about:firefoxview") {
+ :root:not([lwt-newtab], [lwt-newtab-brighttext]) {
+ --newtab-background-color: #F7F7F7 !important;
+ --newtab-background-color-secondary: #fff !important;
+ --newtab-text-primary-color: #252525 !important;
+ --newtab-primary-action-background: #0078D4 !important;
+ --newtab-text-secondary-color: color-mix(in srgb, var(--newtab-text-primary-color) 80%, transparent) !important;
+ --newtab-element-hover-color: color-mix(in srgb, var(--newtab-background-color) 95%, #000) !important;
+ --newtab-element-active-color: color-mix(in srgb, var(--newtab-background-color) 90%, #000) !important;
+ --newtab-element-secondary-color: color-mix(in srgb, currentColor 5%, transparent) !important;
+ --newtab-element-secondary-hover-color: color-mix(in srgb, currentColor 12%, transparent) !important;
+ --newtab-element-secondary-active-color: color-mix(in srgb, currentColor 25%, transparent) !important;
+ --newtab-primary-element-hover-color: color-mix(in srgb, var(--newtab-primary-action-background) 90%, #000) !important;
+ --newtab-primary-element-active-color: color-mix(in srgb, var(--newtab-primary-action-background) 80%, #000) !important;
+ --newtab-primary-element-text-color: #fff !important;
+ --newtab-primary-action-background-dimmed: color-mix(in srgb, var(--newtab-primary-action-background) 25%, transparent) !important;
+ --newtab-border-color: color-mix(in srgb, var(--newtab-background-color) 75%, #000) !important;
+ --newtab-wordmark-color: #737373 !important;
+ --newtab-status-success: #50B080 !important;
+ --newtab-status-error: #FF848A !important;
+ --newtab-inner-box-shadow-color: rgb(0 0 0 / .1) !important;
+ --newtab-overlay-color: color-mix(in srgb, var(--newtab-background-color) 85%, transparent) !important;
+ --newtab-text-emphasis-background: #FFED32 !important;
+ --newtab-text-emphasis-text-color: #000 !important;
+ --newtab-textbox-focus-color: var(--newtab-primary-action-background) !important;
+ --newtab-textbox-focus-boxshadow: 0 0 0 1px var(--newtab-primary-action-background), 0 0 0 4px rgba(var(--newtab-primary-action-background), 0.3) !important;
+ --newtab-button-secondary-color: inherit !important;
+ }
+
+ :root:not([style*="color"])[lwt-newtab-brighttext] {
+ --newtab-background-color: #252525 !important;
+ --newtab-background-color-secondary: #4A4A4A !important;
+ --newtab-text-primary-color: #fff !important;
+ --newtab-primary-action-background: #75B6E8 !important;
+ --newtab-element-hover-color: color-mix(in srgb, var(--newtab-background-color) 95%, #FFF) !important;
+ --newtab-element-active-color: color-mix(in srgb, var(--newtab-background-color) 90%, #FFF) !important;
+ --newtab-element-secondary-color: color-mix(in srgb, currentColor 10%, transparent) !important;
+ --newtab-element-secondary-hover-color: color-mix(in srgb, currentColor 17%, transparent) !important;
+ --newtab-element-secondary-active-color: color-mix(in srgb, currentColor 30%, transparent) !important;
+ --newtab-border-color: color-mix(in srgb, var(--newtab-background-color) 75%, #FFF) !important;
+ --newtab-primary-element-text-color: #252525 !important;
+ --newtab-wordmark-color: #fff !important;
+ --newtab-status-success: #50B080 !important;
+ }
+
+ /*
+ MARK: Custom GTK colours
+ */
+ @media (-moz-gtk-csd-available) {
+ :root:not([lwt-newtab]):not([style*="color"]) {
+ /* Colour adjusted for readability. */
+ --uc-accent-adjusted: light-dark(color-mix(in oklch, AccentColor 92%, black), color-mix(in oklch, AccentColor 60%, white));
+ --newtab-background-color: light-dark(-moz-dialog, color-mix(in srgb, -moz-dialog 82%, black)) !important;
+ --newtab-background-color-secondary: light-dark(Field, color-mix(in srgb, -moz-dialog 86%, white)) !important;
+ --newtab-text-primary-color: -moz-dialogtext !important;
+ --newtab-wordmark-color: light-dark(color-mix(in srgb, -moz-dialogtext 65%, transparent), -moz-dialogtext) !important;
+ --newtab-primary-action-background: var(--uc-accent-adjusted) !important;
+ }
+ }
+
+ /* Adjustments for themes. */
+ :root[style*="--newtab-background-color"] {
+ /* Make the Firefox logo workmark follow text colour. */
+ --newtab-wordmark-color: color-mix(in srgb, var(--newtab-text-primary-color) 60%, var(--newtab-background-color)) !important;
+
+ /* If there is no secondary background, create one from other colours. */
+ &:not([style*="--newtab-background-color-secondary"]) {
+ --newtab-background-color-secondary: color-mix(in srgb, var(--newtab-background-color) 15%, white) !important;
+ }
+
+ /* Dark adjustments for themes. */
+ &[lwt-newtab-brighttext] {
+ /* Make the Firefox logo workmark follow text colour. */
+ --newtab-wordmark-color: var(--newtab-text-primary-color) !important;
+
+ /* If there is no secondary background, create one from other colours. */
+ &:not([style*="--newtab-background-color-secondary"]) {
+ --newtab-background-color-secondary: color-mix(in srgb, var(--newtab-text-primary-color) 15%, var(--newtab-background-color)) !important;
+ }
+ }
+ }
+}
+
+/*
+ MARK: New tab page
+*/
+@-moz-document url-prefix("about:newtab"),
+url-prefix("about:home") {
+ /* Enforce system font selection. */
+ :where(body) {
+ font-family: system-ui !important;
+ }
+
+ /* Hide pin icons. */
+ .icon.icon-pin-small {
+ display: none !important;
+ }
+
+ /* Unpinned sites have lower opacity titles. */
+ .top-site-button .title:not(.pinned) {
+ opacity: 0.7 !important;
+ }
+
+ /*
+ MARK: Search bar
+ */
+ .search-wrapper {
+ & .search-handoff-button {
+ border-radius: 99px !important;
+ background-position: 12px !important;
+ padding-inline-start: 48px !important;
+ white-space: nowrap !important;
+ text-overflow: ellipsis !important;
+ --elevation: 4;
+ box-shadow:
+ 0 0 calc((var(--elevation) * 0.225px) + 2px) rgb(0 0 0 / .11),
+ 0 calc(var(--elevation) * 0.4px) calc((var(--elevation) * 0.9px)) rgb(0 0 0 / .13) !important;
+
+ &:hover {
+ --elevation: 6;
+ }
+ }
+
+ & .search-inner-wrapper {
+ min-height: 44px !important;
+ }
+
+ &.fake-focus:not(.search.disabled) .search-handoff-button {
+ border-color: transparent !important;
+ outline: 2px solid var(--newtab-primary-action-background) !important;
+ outline-offset: -1px !important;
+ }
+
+ &.search-disabled .search-handoff-button {
+ opacity: 0 !important;
+ }
+
+ .search-handoff-button .fake-caret {
+ inset-inline-start: 48px !important;
+ top: 13px !important;
+ }
+
+ @media (height > 700px) {
+ .fixed-search & {
+ padding: 15px 0 !important;
+ min-height: auto !important;
+ border-bottom: none !important;
+ }
+ }
+ }
+
+ .fake-textbox {
+ overflow: hidden !important;
+ text-overflow: ellipsis !important;
+ }
+
+ .outer-wrapper.only-search {
+ display: flex !important;
+ padding: 30px !important;
+ }
+
+ /* Sticky search bar header when scrolling. */
+ @media (height > 700px) {
+ body:not(.inline-onboarding) .fixed-search.visible-logo main {
+ padding-top: 246px !important;
+
+ @media (-moz-bool-pref: "uc.tweak.hide-newtab-logo") {
+ padding-top: 82px !important;
+ }
+ }
+ }
+
+ .icon-settings {
+ background-image: url("../icons/settings.svg") !important;
+ }
+
+ /*
+ MARK: Top sites tiles
+ */
+ .top-site-outer {
+ & .tile {
+ border-radius: 12px !important;
+ height: 44px !important;
+ width: 44px !important;
+ box-shadow: rgb(0 0 0 / 0.1) 0px 2px 4px !important;
+
+ & .icon-wrapper {
+ border-radius: 4px !important;
+ width: 24px !important;
+ height: 24px !important;
+
+ &.letter-fallback::before {
+ font-size: 32px !important;
+ }
+ }
+ }
+
+ & .default-icon,
+ & .search-topsite {
+ background-size: 16px !important;
+ height: 24px !important;
+ width: 24px !important;
+ }
+ }
+
+ /*
+ MARK: Recent activity cards
+ */
+ .card-outer {
+ --uc-border-radius: 8px;
+
+ &,
+ & .card,
+ & .ds-card-grid.ds-card-grid-border .ds-card:not(.placeholder) {
+ border-radius: var(--uc-border-radius) !important;
+ }
+
+ & .card,
+ & .ds-card-grid.ds-card-grid-border .ds-card:not(.placeholder) {
+ box-shadow:
+ rgb(0 0 0 / 0.14) 0px 1px 2px,
+ rgb(0 0 0 / 0.12) 0px 0px 2px !important;
+ }
+
+ & .card-preview-image-outer,
+ & .ds-card-grid.ds-card-grid-border .ds-card:not(.placeholder) .img-wrapper .img img {
+ border-radius: var(--uc-border-radius) var(--uc-border-radius) 0 0 !important
+ }
+ }
+
+ /* Add background & adjust padding for Recent activity & Pocket section. */
+ .collapsible-section:not(.top-sites) {
+ background-color: var(--newtab-background-color) !important;
+ border-radius: 12px !important;
+ padding: 10px 20px 20px !important;
+
+ & .section-list {
+ gap: 12px !important;
+ }
+ }
+
+ @media (-moz-bool-pref: "uc.tweak.hide-newtab-logo") {
+ .logo-and-wordmark {
+ display: none !important;
+ }
+
+ .outer-wrapper:not(.fixed-search) .search-wrapper {
+ padding-top: 0 !important;
+ }
+ }
+}
+
+/*
+ MARK: Private browsing
+*/
+@-moz-document url-prefix(about:privatebrowsing) {
+ :root {
+ --uc-wordmark-color: light-dark(#737373, #fff);
+ --uc-background-color-secondary: light-dark(#fff, #4a4a4a);
+
+ @media (-moz-bool-pref: "browser.theme.dark-private-windows") {
+ color-scheme: dark !important;
+ }
+ }
+
+ /* Custom GTK colours. */
+ @media (-moz-gtk-csd-available) {
+ :root:not([lwt-newtab]):not([style*="color"]) {
+ /* Colour adjusted for readability. */
+ --uc-accent-adjusted: light-dark(color-mix(in oklch, AccentColor 92%, black), color-mix(in oklch, AccentColor 60%, white));
+ --in-content-page-background: light-dark(-moz-dialog, color-mix(in srgb, -moz-dialog 82%, black)) !important;
+ --uc-background-color-secondary: light-dark(Field, color-mix(in srgb, -moz-dialog 86%, white)) !important;
+ --in-content-page-color: -moz-dialogtext !important;
+ --in-content-focus-outline-color: var(--uc-accent-adjusted) !important;
+ }
+ }
+
+ /*
+ MARK: Search bar
+ */
+ .search-inner-wrapper {
+ height: 44px !important;
+
+ .search-handoff-button,
+ .search-handoff-button:active,
+ .search-handoff-button:enabled:hover:active {
+ background-color: var(--uc-background-color-secondary) !important;
+ border: 0 !important;
+ border-radius: 99px !important;
+ padding-inline-start: 48px !important;
+ --elevation: 4;
+ box-shadow:
+ 0 0 calc((var(--elevation) * 0.225px) + 2px) rgb(0 0 0 / .11),
+ 0 calc(var(--elevation) * 0.4px) calc((var(--elevation) * 0.9px)) rgb(0 0 0 / .13) !important;
+
+ &:hover {
+ --elevation: 6;
+ }
+
+ &.focused:not(.disabled) {
+ box-shadow: none !important;
+ outline: 2px solid var(--in-content-focus-outline-color) !important;
+ outline-offset: -1px !important;
+ }
+
+ &.disabled {
+ opacity: 0 !important;
+ }
+
+ & .fake-textbox {
+ color: var(--in-content-page-color) !important;
+ }
+ }
+ }
+
+ .wordmark {
+ fill: var(--uc-wordmark-color) !important;
+ }
+
+ /* Information box in private browsing. */
+ .info {
+ background-color: var(--uc-background-color-secondary) !important;
+ background-image: none !important;
+ position: relative !important;
+
+ /* Private browsing icon. */
+ &::before {
+ content: "";
+ position: absolute;
+ left: 32px;
+ top: 20px;
+ height: 32px;
+ aspect-ratio: 1 / 1;
+ background: center / contain url("../icons/account-private.svg");
+ border-radius: 99px;
+ }
+ }
+
+}
+
+/*
+ MARK: Background images
+*/
+@media (-moz-bool-pref: "uc.tweak.newtab-background") {
+ @-moz-document url(about:newtab),
+ url(about:home),
+ url(about:privatebrowsing) {
+ body {
+ /* Specify both jpg and png file extensions, but jpg images will always
+ * have a higher priority. */
+ --bg-0: url(../background-0.jpg), url(../background-0.png);
+ --bg-1: url(../background-1.jpg), url(../background-1.png);
+ --newtab-element-hover-color: rgb(239 239 239 / .3) !important;
+ --newtab-element-active-color: rgb(239 239 239 / .45) !important;
+ --text-shadow: 0 1px 2px #000;
+ --icon-shadow: drop-shadow(0 0.3px 0.6px #000);
+ background-color: #252525 !important;
+ background-image: var(--bg-0) !important;
+ background-position: center !important;
+ background-size: cover !important;
+ background-attachment: fixed !important;
+
+ :root[lwt-newtab-brighttext] &,
+ :root.private & {
+ background-image: var(--bg-1), var(--bg-0) !important;
+ --newtab-element-hover-color: rgb(66 66 66 / .4) !important;
+ --newtab-element-active-color: rgb(66 66 66 / .55) !important;
+ }
+
+ @media not (-moz-bool-pref: "browser.theme.dark-private-windows") {
+ :root.private & {
+ background-image: var(--bg-0) !important;
+
+ @media (prefers-color-scheme: dark) {
+ background-image: var(--bg-1), var(--bg-0) !important;
+ }
+ }
+ }
+ }
+
+ /* Change text colour & add backgrounds to text over the background. */
+ .top-site-outer .title {
+ text-shadow: var(--text-shadow) !important;
+ color: #fff !important;
+ -moz-osx-font-smoothing: auto !important;
+ }
+
+ .wordmark,
+ .icon-settings,
+ .top-site-outer .context-menu-button {
+ filter: var(--icon-shadow) !important;
+ color: #fff !important;
+ fill: currentColor !important
+ }
+
+ .top-site-outer .title .sponsored-label {
+ color: #eee !important;
+ }
+
+ /* Add transparent sticky search header. */
+ @media (height > 700px) {
+ .fixed-search .search-wrapper {
+ border-bottom: 0 !important;
+ background: transparent linear-gradient(#0004, transparent) !important;
+ }
+ }
+ }
+}
diff --git a/themes/firefox/chrome/global/browser.css b/themes/firefox/chrome/global/browser.css
new file mode 100644
index 0000000..73ad75a
--- /dev/null
+++ b/themes/firefox/chrome/global/browser.css
@@ -0,0 +1,206 @@
+/* Edge-Frfox - browser.css
+ * https://github.com/bmFtZQ/edge-frfox */
+
+/* Windows has 1px missing space on top of window, but not when accent colour is
+ * applied to the title bar. */
+@media (-moz-platform: windows) and (not (-moz-windows-accent-color-in-titlebar)) {
+ :root[sizemode="normal"][tabsintitlebar]:not([inFullscreen]) #navigator-toolbox {
+ padding-top: 1px !important;
+ }
+}
+
+/* Add a shadow when the toolbars move over content, eg. in macOS hovering over
+ * the menu bar in fullscreen mode. */
+#navigator-toolbox[style*="transform"] {
+ box-shadow: 0 -3px 5px 3px light-dark(rgb(0 0 0 / .3), rgb(0 0 0 / .6)) !important;
+}
+
+/*
+ MARK: Rounded corners (Rc)
+*/
+@media (-moz-bool-pref: "uc.tweak.rounded-corners") {
+ /* Since Firefox 120, when the bookmarks bar is set to only open on new tabs,
+ * the bookmarks bar overlaps the #browser element. */
+
+ /* Change the element that shifts the browser content to the correct position. */
+ #main-window[BookmarksToolbarOverlapsBrowser] .newTabBrowserPanel,
+ #main-window[BookmarksToolbarOverlapsBrowser] #sidebar-box {
+ padding-top: 0 !important;
+ }
+
+ #main-window[BookmarksToolbarOverlapsBrowser] #browser {
+ margin-top: var(--bookmarks-toolbar-overlapping-browser-height);
+ }
+
+ /* Make sure that the toolbars are not positioned in-front of the browser
+ * element. */
+ #main-window[BookmarksToolbarOverlapsBrowser] #navigator-toolbox:not([style*="z-index"]) {
+ z-index: auto !important;
+ }
+
+ /* Move the browser element in-front of the toolbars when on the new tab page. */
+ #main-window:not([BookmarksToolbarOverlapsBrowser]) #browser {
+ z-index: 1 !important;
+ }
+
+ /*
+ MARK: Rc Variables
+ */
+ #main-window:not([chromehidden~="toolbar"]) {
+ --uc-tweak-rounded-corners-padding: 4px;
+ --uc-tweak-rounded-corners-radius: 8px;
+ --uc-tweak-rounded-corners-shadow:
+ 0 -.8px 0 0 rgb(0 0 0 / 0.02),
+ 0 0.5px 1px 1px rgb(0 0 0 / 0.06),
+ 0 1px 1px rgb(0 0 0 / 0.1);
+ --browser-frame-bgcolor: var(--toolbar-bgcolor, var(--lwt-accent-color));
+
+ /* Different shadow for higher resolution displays. */
+ @media (resolution > 1.8dppx) {
+ --uc-tweak-rounded-corners-shadow:
+ 0 0 0.5px 0.5px rgb(0 0 0 / 0.06),
+ 0 0.5px 1.5px rgb(0 0 0 / 0.1);
+ }
+
+ @media (-moz-bool-pref: "uc.tweak.floating-tabs") {
+ --browser-frame-bgcolor: var(--lwt-accent-color);
+
+ &:-moz-window-inactive {
+ --browser-frame-bgcolor: var(--lwt-accent-color-inactive, var(--lwt-accent-color));
+ }
+ }
+ }
+
+ /* Hide border below titlebar on macOS, as its titlebar already has a border. */
+ @media (-moz-platform: macos) {
+ :root[chromehidden~="toolbar"][chromehidden~="location"][chromehidden~="directories"] {
+ border-top: none !important;
+ }
+ }
+
+ /* Remove separator between toolbars and the browser window. */
+ #navigator-toolbox {
+ border-bottom: none !important;
+ }
+
+ /* Disable rounded corners in fullscreen, only if the toolbar is hidden. */
+ :root[inFullscreen] #navigator-toolbox[style*="margin-top"] + #browser,
+ :root[inDOMFullscreen] #browser {
+ --uc-tweak-rounded-corners-padding: 0;
+ --uc-tweak-rounded-corners-radius: 0;
+ --uc-tweak-rounded-corners-shadow: unset;
+ }
+
+ /*
+ MARK: Rc Browser
+ */
+ #appcontent .browserStack {
+ margin-inline: var(--uc-tweak-rounded-corners-padding) !important;
+ margin-block-end: var(--uc-tweak-rounded-corners-padding) !important;
+ border-radius: var(--uc-tweak-rounded-corners-radius) !important;
+ box-shadow: var(--uc-tweak-rounded-corners-shadow) !important;
+ background-color: var(--tabpanel-background-color) !important;
+ position: relative !important;
+
+ /* Use pseudo element overlay to simulate rounded corners, similar to the
+ * tab corners, fixes bug with backdrop-filter. */
+ &::after {
+ content: "";
+ position: absolute;
+ inset: 0;
+ border-radius: inherit;
+ /* Draw toolbar background on the negative corner space, then draw the
+ * same shadow from the browser window on top. */
+ box-shadow:
+ var(--uc-tweak-rounded-corners-shadow, 0 0 transparent),
+ 0 0 0 16px var(--browser-frame-bgcolor) !important;
+ clip-path: inset(0);
+ pointer-events: none;
+ }
+ }
+
+ /* Prevent status panel corners and shadow from appearing outside the browser. */
+ #statuspanel {
+ overflow: hidden;
+ }
+
+ /*
+ MARK: Rc Sidebar
+ */
+ #sidebar-box {
+ margin-inline-start: var(--uc-tweak-rounded-corners-padding) !important;
+ margin-block-end: var(--uc-tweak-rounded-corners-padding) !important;
+ border-radius: var(--uc-tweak-rounded-corners-radius) !important;
+ overflow: hidden !important;
+ box-shadow: var(--uc-tweak-rounded-corners-shadow) !important;
+
+ &[positionend] {
+ margin-inline-start: 0 !important;
+ margin-inline-end: var(--uc-tweak-rounded-corners-padding) !important;
+ }
+ }
+
+ /*
+ MARK: Rc Devtools
+ */
+
+ /* Devtools window when docked to the left or right. */
+ .devtools-toolbox-side-iframe {
+ margin-block-end: var(--uc-tweak-rounded-corners-padding) !important;
+ border-radius: var(--uc-tweak-rounded-corners-radius) !important;
+ overflow: hidden !important;
+ box-shadow: var(--uc-tweak-rounded-corners-shadow) !important;
+
+ /* Devtools window when docked to the left. */
+ &:first-child {
+ margin-inline-start: var(--uc-tweak-rounded-corners-padding) !important;
+ }
+
+ /* Devtools window when docked to the right. */
+ &:last-child {
+ margin-inline-end: var(--uc-tweak-rounded-corners-padding) !important;
+ }
+ }
+
+ /* Devtools window when docked to the bottom. */
+ .devtools-toolbox-bottom-iframe {
+ margin: var(--uc-tweak-rounded-corners-padding) !important;
+ margin-block-start: 0 !important;
+ border-radius: var(--uc-tweak-rounded-corners-radius) !important;
+ overflow: hidden !important;
+ box-shadow: var(--uc-tweak-rounded-corners-shadow) !important;
+ }
+
+ /* Hide devtools splitter. */
+ .devtools-side-splitter,
+ .devtools-horizontal-splitter {
+ background-color: transparent !important;
+ }
+
+ /* Responsive design mode. */
+ .browserContainer.responsive-mode {
+ background-color: transparent !important;
+
+ & .rdm-toolbar {
+ margin-inline: var(--uc-tweak-rounded-corners-padding) !important;
+ border-top-left-radius: var(--uc-tweak-rounded-corners-radius) !important;
+ border-top-right-radius: var(--uc-tweak-rounded-corners-radius) !important;
+ width: calc(100% - var(--uc-tweak-rounded-corners-padding) * 2) !important;
+ }
+ }
+
+ /* Remove sidebar border when not in full screen. */
+ :not(:root[inFullscreen] #navigator-toolbox[style*="margin-top"]) + #browser #sidebar-splitter {
+ border-inline-width: 0 !important;
+ }
+
+ /* Apply colour to the frame around the browser window. */
+ #browser {
+ background-color: var(--browser-frame-bgcolor);
+ }
+
+ /* Change colour of page when loading */
+ #tabbrowser-tabpanels {
+ background-color: transparent !important;
+ }
+}
diff --git a/themes/firefox/chrome/global/colors.css b/themes/firefox/chrome/global/colors.css
new file mode 100644
index 0000000..abaf8dc
--- /dev/null
+++ b/themes/firefox/chrome/global/colors.css
@@ -0,0 +1,366 @@
+/* Edge-Frfox - colors.css
+ * https://github.com/bmFtZQ/edge-frfox */
+
+/*
+ MARK: Default colours
+*/
+:root:not([lwtheme]),
+/* `--newtab-background-color-secondary used` to differentiate between a dark
+ * private window and private window with the 'Dark' theme enabled.
+ * May not be the most reliable method, but works for now up to FF 123. */
+:root[privatebrowsingmode="temporary"]:where([style*="--lwt-accent-color: rgb(28, 27, 34)"]:not([style*="--newtab-background-color-secondary: rgb(66, 65, 77)"])) {
+ /* Toolbars */
+ --lwt-accent-color: light-dark(#cecece, #1C1C1C) !important;
+ --lwt-accent-color-inactive: light-dark(#e8e8e8, #2e2e2e) !important;
+ --lwt-text-color: light-dark(#000, #FFF) !important;
+ --lwt-text-color-inactive: light-dark(#3A3A3A, #CBCBCB) !important;
+ --tab-selected-textcolor: light-dark(#000, #fff) !important;
+ --tab-selected-textcolor-inactive: light-dark(#3E3E3E, #CBCBCB) !important;
+ --tab-selected-bgcolor: var(--toolbar-bgcolor) !important;
+ --tab-attention-icon-color: light-dark(#0078D4, #93d0ff) !important;
+ --toolbar-bgcolor: light-dark(#f7f7f7, #3B3B3B) !important;
+ --toolbar-non-lwt-bgcolor: var(--toolbar-bgcolor) !important;
+ --toolbar-color: light-dark(#000, #fff) !important;
+ --toolbarbutton-icon-fill: var(--toolbar-color) !important;
+ --toolbarbutton-icon-fill-attention: light-dark(#0078D4, #4C98D1) !important;
+ --toolbarseparator-color: color-mix(in srgb, currentColor 25%, transparent) !important;
+ --chrome-content-separator-color: light-dark(#bfbfbf, #686868) !important;
+ --newtab-background-color: light-dark(#f7f7f7, #252525) !important;
+ --tabpanel-background-color: var(--newtab-background-color, var(--toolbar-bgcolor, transparent)) !important;
+ /* Toolbar button overlays */
+ --toolbarbutton-hover-background: color-mix(in srgb, currentColor 8%, transparent) !important;
+ --toolbarbutton-active-background: color-mix(in srgb, currentColor 13.5%, transparent) !important;
+ /* Tab audio indicator overlay icon */
+ --tab-icon-overlay-fill: var(--toolbar-color) !important;
+ --tab-icon-overlay-stroke: var(--toolbar-bgcolor) !important;
+ /* URL bar */
+ --toolbar-field-background-color: light-dark(#fff, #2B2B2B) !important;
+ --toolbar-field-color: light-dark(#000, #fff) !important;
+ --toolbar-field-border-color: transparent !important;
+ --toolbar-field-focus-background-color: var(--toolbar-field-background-color) !important;
+ --toolbar-field-focus-color: var(--toolbar-field-color) !important;
+ --toolbar-field-focus-border-color: light-dark(#0055D780, #63ADE5) !important;
+ --urlbar-icon-fill-opacity: 0.58 !important;
+ --urlbar-box-bgcolor: light-dark(rgb(0 0 0 / .09), rgb(255 255 255 / .11)) !important;
+ --urlbar-box-hover-bgcolor: light-dark(rgb(0 0 0 / .09), rgb(255 255 255 / .11)) !important;
+ --urlbar-box-active-bgcolor: light-dark(rgb(0 0 0 / .22), rgb(255 255 255 / .28)) !important;
+ --urlbar-box-focus-bgcolor: var(--urlbar-box-hover-bgcolor) !important;
+ /* URL bar suggestions */
+ --link-color: light-dark(#0078D4, #75B6E8) !important;
+ --uc-urlbarView-accent-color: light-dark(#1A6397, #75B6E8) !important;
+ --urlbarView-highlight-background: light-dark(#F2F2F2, #383838) !important;
+ --urlbarView-highlight-color: light-dark(#000, #fff) !important;
+ --urlbarView-hover-background: light-dark(#e5e5e5, #444444) !important;
+ --urlbarView-separator-color: light-dark(#EFEFEF, #5F5F5F) !important;
+ /* Menus/panels */
+ --arrowpanel-background: light-dark(#fff, #4A4A4A) !important;
+ --arrowpanel-color: light-dark(#1c1c1c, #fff) !important;
+ --arrowpanel-border-color: light-dark(#fff, #636363) !important;
+ --arrowpanel-dimmed: light-dark(#565656, #565656) !important;
+ --arrowpanel-dimmed-further: light-dark(#707070, #707070) !important;
+ --panel-separator-color: light-dark(#dadada, #636363) !important;
+ --panel-description-color: light-dark(#000a, #fffb) !important;
+ --panel-disabled-color: light-dark(#9E9E9E, #B9B9B9) !important;
+ --panel-item-hover-bgcolor: light-dark(#eee, #646464) !important;
+ --panel-item-active-bgcolor: light-dark(#ddd, #747474) !important;
+ --panel-banner-item-update-supported-bgcolor: light-dark(#188038, #81C995) !important;
+ /* Primary button */
+ --button-primary-bgcolor: light-dark(#0078D4, #006CBE) !important;
+ --button-primary-color: light-dark(#fff, #fff) !important;
+ --button-primary-hover-bgcolor: light-dark(#006BBD, #1C7CC5) !important;
+ --button-primary-active-bgcolor: light-dark(#0060AA, #3289CB) !important;
+ /* Secondary button */
+ --button-bgcolor: light-dark(#EFEFEF, #5C5C5C) !important;
+ --button-color: light-dark(#000, #fff) !important;
+ --button-hover-bgcolor: light-dark(#D5D5D5, #6E6E6E) !important;
+ --button-active-bgcolor: light-dark(#C0C0C0, #7C7C7C) !important;
+ /* Text input field, e.g. bookmarks editor */
+ --focus-outline-color: light-dark(#0055D780, #63ADE5) !important;
+ --input-bgcolor: light-dark(#fff, #4A4A4A) !important;
+ --input-color: light-dark(#2b2b2b, #fff) !important;
+ --input-border-color: light-dark(#bebebe, #808080) !important;
+ --error-text-color: light-dark(#FF9AA2, #FF9AA2) !important;
+ --input-error-border-color: light-dark(#FF848A, #FF848A) !important;
+ /* Side bar colours. */
+ --sidebar-background-color: light-dark(#f7f7f7, #3b3b3b) !important;
+ --sidebar-text-color: light-dark(#000, #fff) !important;
+ --sidebar-border-color: light-dark(#bfbfbf, #686868) !important;
+
+ /* ::::: Dialog theme ::::: */
+ & #window-modal-dialog::backdrop {
+ /* Overlay when dialog is shown. */
+ background-color: rgb(20 20 20 / .2) !important;
+ }
+
+ &[dialogroot] {
+ /* Dialog */
+ --in-content-page-background: var(--arrowpanel-background) !important;
+ --in-content-page-color: var(--arrowpanel-color) !important;
+ /* Primary button */
+ --in-content-primary-button-text-color: var(--button-primary-color) !important;
+ --in-content-primary-button-background: var(--button-primary-bgcolor) !important;
+ --in-content-primary-button-background-hover: var(--button-primary-hover-bgcolor) !important;
+ --in-content-primary-button-background-active: var(--button-primary-active-bgcolor) !important;
+ /* Secondary button */
+ --in-content-button-text-color: var(--button-color) !important;
+ --in-content-button-background: var(--button-bgcolor) !important;
+ --in-content-button-background-hover: var(--button-hover-bgcolor) !important;
+ --in-content-button-background-active: var(--button-active-bgcolor) !important;
+ /* Text input */
+ --in-content-box-background: var(--input-bgcolor) !important;
+ --in-content-box-border-color: var(--input-border-color) !important;
+ }
+}
+
+/* Ensure that dark mode is enabled completely in private browsing mode. */
+@media (-moz-bool-pref: "browser.theme.dark-private-windows") {
+ :root[privatebrowsingmode="temporary"],
+ :root[privatebrowsingmode="temporary"] #nav-bar,
+ :root[privatebrowsingmode="temporary"] #PersonalToolbar {
+ --toolbar-color-scheme: dark !important;
+ --tab-selected-color-scheme: dark !important;
+ color-scheme: dark !important;
+ }
+}
+
+/* Apply colours to the default 'Auto' theme. */
+:root:not([lwtheme]) #navigator-toolbox {
+ background-color: var(--lwt-accent-color) !important;
+ color: var(--lwt-text-color) !important;
+
+ /* Inactive window background colours. */
+ &:-moz-window-inactive {
+ background-color: var(--lwt-accent-color-inactive, var(--lwt-accent-color)) !important;
+ color: var(--lwt-text-color-inactive, var(--lwt-text-color)) !important;
+ }
+}
+
+/* Make sure that the tab toolbar opacity is always 1, inactive window colours
+ * are already supplied by this theme. */
+ :root[tabsintitlebar] #titlebar:-moz-window-inactive {
+ opacity: 1 !important;
+}
+
+/* Make the titlebar buttons black/white on default themes */
+:root:not([lwtheme])[tabsintitlebar] .titlebar-buttonbox {
+ color: var(--lwt-text-color) !important;
+}
+
+/* Status/link preview panel */
+#statuspanel-label {
+ background-color: var(--toolbar-field-focus-background-color) !important;
+ color: var(--toolbar-field-focus-color) !important;
+ border-color: transparent !important;
+ box-shadow: 0 2px 5px #0002, 0 0 0 1px light-dark(#0001, #0002) !important;
+ border-radius: 0 4px 0 0 !important;
+
+ #statuspanel[mirror] & {
+ border-radius: 4px 0 0 0 !important;
+ }
+}
+
+/*
+ MARK: Windows
+*/
+@media (-moz-platform: windows) {
+ /* Colour the text selection background and foreground. */
+ ::selection {
+ background-color: light-dark(#0078D4, #93B8E7) !important;
+ color: light-dark(#fff, #000) !important;
+ }
+
+ tooltip {
+ background-color: var(--arrowpanel-background) !important;
+ color: var(--arrowpanel-color) !important;
+ border-color: var(--arrowpanel-border-color) !important;
+ }
+
+ /* Use accent colour in titlebar when Windows option is enabled. */
+ @media (-moz-windows-accent-color-in-titlebar) and (-moz-bool-pref: "browser.theme.windows.accent-color-in-tabs.enabled") {
+ /* Uses :root:root to beat specificity of floating tabs adjustments. */
+ :root:root:not([lwtheme]) {
+ --lwt-accent-color: ActiveCaption !important;
+ --lwt-text-color: CaptionText !important;
+ --lwt-accent-color-inactive: InActiveCaption !important;
+ --lwt-text-color-inactive: InActiveCaptionText !important;
+ }
+ }
+
+ .titlebar-button:not(.titlebar-close):hover {
+ background-color: color-mix(in srgb, currentColor 11%, transparent) !important;
+
+ &:active {
+ background-color: color-mix(in srgb, currentColor 20%, transparent) !important;
+ }
+ }
+
+ .titlebar-close:hover {
+ stroke: white !important;
+ background-color: #e81123 !important;
+
+ &:active {
+ background-color: #DC5C66 !important;
+ }
+
+ toolbar[brighttext] &:active {
+ background-color: #971821 !important;
+ }
+ }
+
+ /* Library window colour theme. */
+ window#places {
+ --organizer-color: light-dark(#000, #fff) !important;
+ --organizer-deemphasized-color: light-dark(#666, #bbb) !important;
+ --organizer-toolbar-background: light-dark(#f7f7f7, #3B3B3B) !important;
+ --organizer-pane-background: light-dark(#f7f7f7, #2B2B2B) !important;
+ --organizer-content-background: light-dark(#f7f7f7, #1C1C1C) !important;
+ --organizer-hover-background: light-dark(#00000025, #ffffff25) !important;
+ --organizer-selected-background: light-dark(#006CBE80, #006CBE80) !important;
+ --organizer-outline-color: light-dark(#0055D7a0, #63ADE5) !important;
+ --organizer-toolbar-field-background: light-dark(#fff, #2B2B2B) !important;
+ --organizer-toolbar-field-background-focused: light-dark(#fff, #2B2B2B) !important;
+ --organizer-border-color: light-dark(#bfbfbf, #686868) !important;
+ scrollbar-color:
+ light-dark(#0006, #fff6)
+ light-dark(#f7f7f740, #2B2B2B40) !important;
+ }
+
+ #placesViewsBox #downloadsListBox richlistitem[selected="true"] {
+ background-color: light-dark(#006CBE, #006CBE) !important;
+ color: light-dark(#fff, #fff) !important;
+ }
+
+ #placeContentColumns :is(treecol, treecolpicker) {
+ background-color: light-dark(#f7f7f7, #3B3B3B) !important;
+ color: light-dark(#000, #fff) !important;
+ border-inline-start: 1px solid light-dark(#bfbfbf, #686868) !important;
+ box-shadow: inset 0 -1px light-dark(#bfbfbf, #686868) !important;
+ appearance: none !important;
+ }
+
+ #placeContentColumns :is(treecol, treecolpicker):where(:hover) {
+ background-color: light-dark(#cecece, #4A4A4A) !important;
+ color: light-dark(#000, #fff) !important;
+ }
+}
+
+/* Prevent macOS vibrancy appearance, instead using a solid background. */
+#sidebar-box {
+ appearance: none !important;
+}
+
+.sidebar-panel:not([lwt-sidebar]) {
+ color: light-dark(#000, #fff) !important;
+ scrollbar-color: light-dark(#0006, #fff6) light-dark(#f7f7f740, #3b3b3b40) !important;
+
+ /* Sidebar search box (Windows) */
+ @media(-moz-platform: windows) {
+ & #sidebar-search-container > #search-box,
+ & #viewButton {
+ appearance: none !important;
+ background-color: var(--toolbar-field-background-color) !important;
+ color: inherit !important;
+ border: 1px solid var(--input-border-color) !important;
+ border-radius: 4px !important;
+ padding: 6px 8px !important;
+
+ &:focus {
+ outline: 2px solid var(--input-border-color) !important;
+ outline-offset: -2px !important;
+ border-color: transparent !important;
+ }
+ }
+ }
+}
+
+@-moz-document url(chrome://browser/content/syncedtabs/sidebar.xhtml) {
+ body {
+ background: transparent !important;
+ }
+}
+
+/*
+ MARK: Linux / GTK csd
+*/
+@media (-moz-gtk-csd-available) {
+ :root:not([lwtheme]),
+ /* `--newtab-background-color-secondary used` to differentiate between a dark
+ * private window and private window with the 'Dark' theme enabled.
+ * May not be the most reliable method, but works for now up to FF 123. */
+ :root[privatebrowsingmode="temporary"]:where([style*="--lwt-accent-color: rgb(28, 27, 34)"]:not([style*="--newtab-background-color-secondary: rgb(66, 65, 77)"])) {
+ /* Used for mixing colours differently in light/dark themes. */
+ --uc-tint: light-dark(black, white);
+ /* Colour adjusted for readability. */
+ --uc-accent-adjusted: light-dark(
+ color-mix(in oklch, AccentColor 92%, black),
+ color-mix(in oklch, AccentColor 60%, white)
+ );
+ /* Toolbars */
+ --lwt-accent-color: light-dark(color-mix(in srgb, ActiveCaption 90%, black), ActiveCaption) !important;
+ --lwt-accent-color-inactive: light-dark(color-mix(in srgb, InactiveCaption 94%, black), InactiveCaption) !important;
+ --lwt-text-color: CaptionText !important;
+ --lwt-text-color-inactive: color-mix(in srgb, CaptionText 65%, transparent) !important;
+ --tab-selected-textcolor: var(--toolbar-color) !important;
+ --tab-selected-textcolor-inactive: color-mix(in srgb, var(--toolbar-color) 65%, transparent) !important;
+ --tab-selected-bgcolor: var(--toolbar-bgcolor) !important;
+ --tab-attention-icon-color: var(--uc-accent-adjusted) !important;
+ --toolbar-bgcolor: light-dark(-moz-dialog, color-mix(in srgb, -moz-dialog 92%, white)) !important;
+ --toolbar-color: -moz-dialogtext !important;
+ --toolbarbutton-icon-fill-attention: var(--uc-accent-adjusted) !important;
+ --chrome-content-separator-color: color-mix(in srgb, currentColor 17%, var(--toolbar-bgcolor)) !important;
+ --newtab-background-color: light-dark(-moz-dialog, color-mix(in srgb, -moz-dialog 82%, black)) !important;
+ /* URL bar */
+ --toolbar-field-background-color: light-dark(Field, color-mix(in srgb, Field 96%, -moz-dialogtext)) !important;
+ --toolbar-field-color: FieldText !important;
+ --toolbar-field-focus-border-color: light-dark(color-mix(in srgb, var(--focus-outline-color) 50%, transparent), var(--focus-outline-color)) !important;
+ --urlbar-box-bgcolor: var(--button-bgcolor) !important;
+ --urlbar-box-hover-bgcolor: var(--button-hover-bgcolor) !important;
+ --urlbar-box-active-bgcolor: var(--button-active-bgcolor) !important;
+ /* URL bar suggestions. */
+ --link-color: var(--uc-accent-adjusted) !important;
+ --uc-urlbarView-accent-color: var(--uc-accent-adjusted) !important;
+ --urlbarView-highlight-background: var(--panel-item-hover-bgcolor) !important;
+ --urlbarView-highlight-color: var(--toolbar-field-color) !important;
+ --urlbarView-hover-background: var(--panel-item-active-bgcolor) !important;
+ --urlbarView-separator-color: var(--panel-separator-color) !important;
+ /* Menus/panels */
+ --arrowpanel-background: Field !important;
+ --arrowpanel-color: FieldText !important;
+ --arrowpanel-border-color: light-dark(transparent, var(--panel-separator-color)) !important;
+ --arrowpanel-dimmed: color-mix(in srgb, currentColor 17%, transparent) !important;
+ --arrowpanel-dimmed-further: color-mix(in srgb, currentColor 30%, transparent) !important;
+ --panel-separator-color: color-mix(in srgb, currentColor 17%, var(--arrowpanel-background)) !important;
+ --panel-description-color: GrayText !important;
+ --panel-disabled-color: GrayText !important;
+ --panel-item-hover-bgcolor: color-mix(in srgb, currentColor 8%, transparent) !important;
+ --panel-item-active-bgcolor: color-mix(in srgb, currentColor 13%, transparent) !important;
+ /* Primary button */
+ --button-primary-bgcolor: AccentColor !important;
+ --button-primary-color: AccentColorText !important;
+ --button-primary-hover-bgcolor: color-mix(in srgb, var(--uc-tint) 10%, var(--button-primary-bgcolor)) !important;
+ --button-primary-active-bgcolor: color-mix(in srgb, var(--uc-tint) 20%, var(--button-primary-bgcolor)) !important;
+ /* Secondary button */
+ --button-bgcolor: color-mix(in srgb, currentColor 10%, transparent) !important;
+ --button-color: currentColor !important;
+ --button-hover-bgcolor: color-mix(in srgb, currentColor 14%, transparent) !important;
+ --button-active-bgcolor: color-mix(in srgb, currentColor 20%, transparent) !important;
+ /* Text input field, e.g. bookmarks editor. */
+ --focus-outline-color: var(--uc-accent-adjusted) !important;
+ --input-bgcolor: var(--arrowpanel-background) !important;
+ --input-color: var(--arrowpanel-color) !important;
+ --input-border-color: color-mix(in srgb, currentColor 35%, var(--arrowpanel-background)) !important;
+ /* Sidebar */
+ --sidebar-background-color: var(--toolbar-bgcolor) !important;
+ --sidebar-text-color: var(--toolbar-color) !important;
+ --sidebar-border-color: var(--chrome-content-separator-color) !important;
+ }
+
+ /* Use the same sidebar splitter style as other platforms. */
+ .sidebar-splitter {
+ border: 0 solid var(--sidebar-border-color) !important;
+ border-inline-end-width: 1px !important;
+ width: 4px !important;
+ background-color: transparent !important;
+ margin-inline-start: -4px !important;
+ }
+}
diff --git a/themes/firefox/chrome/global/popup.css b/themes/firefox/chrome/global/popup.css
new file mode 100644
index 0000000..8805a81
--- /dev/null
+++ b/themes/firefox/chrome/global/popup.css
@@ -0,0 +1,847 @@
+/* Edge-Frfox - popup.css */
+
+/*
+ MARK: Variables
+*/
+:root {
+ --panel-subview-body-padding: 2px 0 !important;
+ --arrowpanel-border-radius: 8px !important;
+ --arrowpanel-menuitem-border-radius: 4px !important;
+ --arrowpanel-menuitem-margin: var(--uc-arrowpanel-menuitem-margin-block) var(--uc-arrowpanel-menuitem-margin-inline) !important;
+ --arrowpanel-menuitem-padding-block: 6px !important;
+ --arrowpanel-menuitem-padding-inline: 10px !important;
+ --uc-arrowpanel-menuicon-margin-inline: 14px;
+ --uc-arrowpanel-menuitem-margin-inline: 4px;
+ --uc-arrowpanel-menuitem-margin-block: 2px;
+ --panel-separator-margin-vertical: 2px !important;
+ --panel-separator-margin-horizontal: 0 !important;
+
+ --uc-panel-zoom-button-padding: 8px;
+ --uc-panel-zoom-button-inline-padding: 9px;
+ --uc-panel-zoom-padding-block: calc(var(--panel-separator-margin-vertical) + var(--uc-arrowpanel-menuitem-margin-block));
+
+ --uc-autocomplete-panel-menuitem-margin: 4px;
+ --uc-autocomplete-panel-menuicon-padding-inline: 14px;
+ --uc-autocomplete-panel-separator-margin-vertical: 4px;
+
+ --uc-permission-itemcontainer-padding-block: 8px;
+ --uc-permission-item-margin-block: 4px;
+ --uc-permission-item-padding-inline: 16px;
+
+ --uc-contextmenu-border-radius: 8px;
+ --uc-contextmenu-padding: calc(4px - var(--uc-contextmenu-menuitem-border-width)) 0;
+ --uc-contextmenu-menuitem-border-radius: calc(4px + var(--uc-contextmenu-menuitem-border-width));
+ --uc-contextmenu-menuitem-padding-block: 6px;
+ --uc-contextmenu-menuitem-padding-inline: 10px;
+ --uc-contextmenu-menuitem-border-width: 2px;
+ --uc-contextmenu-menuicon-margin-inline: 12px;
+ --uc-contextmenu-menuitem-margin-inline: calc(4px - var(--uc-contextmenu-menuitem-border-width));
+ --uc-contextmenu-menuitem-margin-block: 0px;
+ --uc-contextmenu-menuitem-margin: var(--uc-contextmenu-menuitem-margin-block) var(--uc-contextmenu-menuitem-margin-inline);
+ --uc-contextmenu-separator-vertical: calc(4px - var(--uc-contextmenu-menuitem-border-width));
+ --uc-contextmenu-separator-horizontal: 0;
+}
+
+/*
+ MARK: App menu
+*/
+.addon-banner-item,
+.panel-banner-item {
+ margin: 2px 4px 2px !important;
+ padding-inline: 4px 12px !important;
+ padding-block: var(--arrowpanel-menuitem-padding-block) !important;
+ border-radius: var(--arrowpanel-menuitem-border-radius) !important;
+}
+
+#appMenu-fxa-label2 label,
+#PanelUI-fxa-menu-syncnow-button label {
+ margin-block: 0 !important;
+}
+
+.widget-overflow-list .toolbarbutton-1:not(.toolbarbutton-combined) > .toolbarbutton-text,
+.subviewbutton:not(#appMenu-zoom-controls > .subviewbutton) > .toolbarbutton-icon + .toolbarbutton-text,
+#appMenu-fxa-label2 > vbox {
+ padding-inline-start: var(--uc-arrowpanel-menuicon-margin-inline) !important;
+}
+
+/* special case menuitems with no icons */
+#appMenu-zoom-controls > .toolbarbutton-text,
+#fxa-manage-account-button > vbox,
+#PanelUI-fxa-menu-syncnow-button > hbox {
+ padding-inline-start: calc(16px + var(--uc-arrowpanel-menuicon-margin-inline)) !important;
+}
+
+.subviewbutton > .toolbarbutton-icon {
+ width: 16px !important;
+}
+
+/* firefox profile avatar in appmenu */
+#appMenu-fxa-label2::before {
+ content: "";
+ display: flex;
+ height: 16px;
+ width: 16px;
+ background: var(--avatar-image-url) 0/16px;
+ scale: 1.25;
+ border-radius: 99px;
+}
+
+/* disable proton account separator */
+#appMenu-fxa-separator {
+ border-image: none !important;
+}
+
+#appMenu-fxa-status2:not([fxastatus]) {
+ padding-block: 0 !important;
+}
+
+#appMenu-fxa-status2:not([fxastatus]) > #appMenu-fxa-label2 {
+ margin-inline-end: calc(var(--arrowpanel-menuitem-padding-inline) * -1) !important;
+}
+
+/* zoom controls */
+#appMenu-zoom-controls {
+ border-top: 1px solid var(--panel-separator-color) !important;
+ padding-inline: calc(var(--arrowpanel-menuitem-padding-inline) + var(--uc-arrowpanel-menuitem-margin-inline)) var(--uc-arrowpanel-menuitem-margin-inline) !important;
+ padding-block: var(--uc-panel-zoom-padding-block) !important;
+ margin: var(--panel-separator-margin-vertical) 0 calc(var(--panel-separator-margin-vertical) * -1) !important;
+}
+
+#appMenu-zoom-controls > .subviewbutton {
+ padding: var(--uc-panel-zoom-button-padding) var(--uc-panel-zoom-button-inline-padding) !important;
+ margin: 0 !important;
+}
+
+#appMenu-zoom-controls > #appMenu-zoomReset-button2 {
+ padding: var(--uc-panel-zoom-button-padding) calc(var(--uc-panel-zoom-button-padding) / 2) !important;
+}
+
+/* #appMenu-zoomReduce-button2, */
+#appMenu-zoom-controls > #appMenu-fullscreen-button2 {
+ margin-left: calc((var(--panel-separator-margin-vertical) + var(--uc-arrowpanel-menuitem-margin-block)) * 2 + 1px) !important;
+}
+
+#appMenu-zoom-controls > #appMenu-fullscreen-button2::before {
+ content: "";
+ border-inline-start: 1px solid var(--panel-separator-color);
+ display: block;
+ position: relative;
+ height: 32px;
+ margin-block: calc(var(--uc-panel-zoom-button-padding) * -1);
+ transform: translateX(calc(var(--uc-panel-zoom-button-inline-padding) * -1 - (var(--panel-separator-margin-vertical) + var(--uc-arrowpanel-menuitem-margin-block)) - 1px));
+}
+
+#appMenu-zoomReset-button2 {
+ height: calc(16px + var(--uc-panel-zoom-button-padding) * 2) !important;
+ min-height: calc(16px + var(--uc-panel-zoom-button-padding) * 2) !important;
+}
+
+#appMenu-zoomReduce-button2:not([disabled], [open], :active):is(:hover),
+#appMenu-zoomEnlarge-button2:not([disabled], [open], :active):is(:hover),
+#appMenu-fullscreen-button2:not([disabled], [open], :active):is(:hover),
+#appMenu-zoomReset-button2:not([disabled], [open], :active):is(:hover) {
+ background-color: var(--panel-item-hover-bgcolor) !important;
+}
+
+#appMenu-zoomReduce-button2:not([disabled]):is([open], :hover:active),
+#appMenu-zoomEnlarge-button2:not([disabled]):is([open], :hover:active),
+#appMenu-fullscreen-button2:not([disabled]):is([open], :hover:active),
+#appMenu-zoomReset-button2:not([disabled]):is([open], :hover:active) {
+ background-color: var(--panel-item-active-bgcolor) !important;
+}
+
+#appMenu-zoomReduce-button2 > .toolbarbutton-icon,
+#appMenu-zoomEnlarge-button2 > .toolbarbutton-icon {
+ fill: currentColor !important;
+ stroke: none !important;
+}
+
+#appMenu-zoomReset-button2 > .toolbarbutton-text,
+#appMenu-fullscreen-button2 > .toolbarbutton-icon {
+ background-color: transparent !important;
+ padding: 0 !important;
+}
+
+.subviewbutton[shortcut]::after {
+ opacity: 0.7 !important;
+}
+
+#widget-overflow-mainView .panel-subview-body {
+ padding-bottom: 0 !important;
+}
+
+.PanelUI-subView > .panel-header + toolbarseparator {
+ margin-bottom: 0 !important;
+}
+
+.PanelUI-subView > .panel-header + toolbarseparator + .panel-subview-body {
+ padding-top: var(--panel-separator-margin-vertical) !important;
+}
+
+#identity-popup-security-button {
+ margin-bottom: var(--panel-separator-margin-vertical) !important;
+}
+
+#permission-popup-mainView-panel-header,
+#identity-popup-mainView-panel-header,
+#protections-popup-mainView-panel-header,
+.panel-header {
+ min-height: calc((var(--arrowpanel-menuitem-padding-block) + 4px) * 2 + 16px) !important;
+}
+
+/* URL bar popup */
+.panel-footer > button {
+ border-radius: 2px !important;
+}
+
+.identity-popup-security-connection > hbox > description {
+ margin-inline-start: 0 !important;
+}
+
+.identity-popup-security-connection.identity-button {
+ margin-inline-end: calc(-1 * (var(--arrowpanel-menuitem-padding-inline) - 10px)) !important;
+}
+
+#identity-popup-mainView-panel-header-span,
+#permission-popup-mainView-panel-header-span,
+#identity-popup-mainView-panel-header label,
+#permission-popup-mainView-panel-header label,
+#protections-popup-mainView-panel-header-span {
+ margin-block: 0 !important;
+}
+
+.permission-popup-section {
+ padding-block: var(--uc-permission-itemcontainer-padding-block) !important;
+}
+
+#permission-popup-permissions-content {
+ padding-inline: var(--uc-permission-item-padding-inline) !important;
+}
+
+.permission-popup-permission-item,
+#permission-popup-storage-access-permission-list-header {
+ margin-block: var(--uc-permission-item-margin-block) !important;
+}
+
+.permission-popup-permission-label,
+.permission-popup-permission-header-label {
+ margin-inline-start: var(--uc-arrowpanel-menuicon-margin-inline) !important;
+}
+
+#editBookmarkPanel > #editBookmarkHeaderSeparator,
+#editBookmarkPanel > .panel-subview-body > #editBookmarkSeparator {
+ margin-inline: 0 !important;
+}
+
+/* subview */
+.panel-header {
+ padding: 4px !important;
+ padding-top: 4px !important;
+}
+
+.panel-header + toolbarseparator,
+#identity-popup-mainView-panel-header + toolbarseparator,
+#permission-popup-mainView-panel-header + toolbarseparator,
+#protections-popup-mainView-panel-header-section + toolbarseparator {
+ margin-block-start: 0 !important;
+}
+
+.panel-header > .subviewbutton-back {
+ margin: 0 !important;
+ padding: var(--arrowpanel-menuitem-padding-block) !important;
+}
+
+.panel-subview-footer-button {
+ margin-bottom: 4px !important;
+}
+
+.webextension-popup-browser,
+.webextension-popup-stack {
+ margin-block-start: calc(var(--panel-separator-margin-vertical) * -.5) !important;
+}
+
+/*
+ MARK: Downloads
+*/
+.downloadTypeIcon {
+ height: 16px !important;
+ width: 16px !important;
+}
+
+.downloadButton {
+ min-width: calc(16px + var(--uc-toolbarbutton-inner-inline-padding) * 2) !important;
+ height: calc(16px + var(--toolbarbutton-inner-padding) * 2) !important;
+ border-radius: var(--toolbarbutton-border-radius) !important;
+}
+
+.downloadProgress::-moz-progress-bar,
+.downloadProgress > div {
+ background-color: var(--toolbarbutton-icon-fill-attention) !important;
+}
+
+.downloadMainArea {
+ padding-block: 4px !important;
+ padding-inline: 12px !important;
+ border-radius: 0 !important;
+}
+
+#downloadsListBox > richlistitem {
+ padding-inline-end: 8px !important;
+ border-radius: var(--arrowpanel-menuitem-border-radius) !important;
+}
+
+#downloadsListBox,
+.downloadsPanelFooterButton {
+ margin: var(--arrowpanel-menuitem-margin) !important;
+ width: auto !important;
+ min-width: auto !important;
+}
+
+#downloadsPanel-blockedSubview,
+#downloadsPanel-mainView {
+ padding: var(--panel-separator-margin-vertical) 0 !important;
+}
+
+#emptyDownloads {
+ padding: 1.5em 16px 1.7em !important;
+}
+
+#downloadsHistory .button-text {
+ margin-block: 0 !important;
+ margin-inline: 0 !important;
+}
+
+.PanelUI-subView .subviewbutton-nav::after,
+#PlacesToolbar menu > .menu-right,
+.subviewbutton > .menu-right {
+ fill-opacity: 1 !important;
+}
+
+/*
+ MARK: Extensions
+*/
+/* #region */
+
+.toolbaritem-combined-buttons:is(:not([cui-areatype="toolbar"]), [overflowedItem="true"]) > toolbarbutton:not(.toolbarbutton-1)[disabled] {
+ opacity: 1 !important;
+ color: var(--panel-disabled-color) !important;
+}
+
+/* Removes space above extensions items. */
+#unified-extensions-messages-container {
+ margin-block: 0 !important;
+}
+
+:root {
+ --uei-icon-size: 24px !important;
+}
+
+@media (-moz-bool-pref: "uc.tweak.context-menu.compact-extensions-menu") {
+ :root {
+ --uei-icon-size: 16px !important;
+ }
+
+ /* Hide site access permissions label. */
+ .unified-extensions-item-message-deck {
+ display: none !important;
+ }
+
+ /* Use smaller toolbar extension icon if available. */
+ toolbaritem:is([overflowedItem="true"], [cui-areatype="panel"]) > .webextension-browser-action {
+ list-style-image: var(--webextension-toolbar-image, var(--webextension-menupanel-image, inherit)) !important;
+ }
+}
+
+/* Use smaller font-size in extensions menu on Windows. */
+@media (-moz-platform: windows) {
+ #unified-extensions-panel .toolbarbutton-text {
+ font: menu !important;
+ font-family: inherit !important;
+ }
+}
+
+/* Prevent extension labels from using >1 line, adding ellipsis if necessary. */
+.unified-extensions-item-contents {
+ flex: 1 !important;
+
+ & > .unified-extensions-item-name,
+ & > .unified-extensions-item-message-deck > .unified-extensions-item-message {
+ max-width: calc(100% - 4px) !important;
+ overflow: hidden !important;
+ text-overflow: ellipsis !important;
+ white-space: nowrap !important;
+ }
+}
+
+/* Extension item menu button. */
+.unified-extensions-item-menu-button {
+ padding: 0 !important;
+
+ & > .toolbarbutton-icon {
+ border: none !important;
+ padding-inline: var(--arrowpanel-menuitem-padding-inline) !important;
+ padding-block: var(--arrowpanel-menuitem-padding-block) !important;
+ margin-inline-start: var(--uc-arrowpanel-menuitem-margin-inline) !important;
+ }
+}
+
+/* Add grayscale filter to extensions with no access to current site. */
+.unified-extensions-list .unified-extensions-item-action-button:has(.unified-extensions-item-message[data-l10n-id="origin-controls-state-no-access"]) .unified-extensions-item-icon {
+ filter: grayscale(1) !important;
+}
+
+/* Adjust spacing between the extension item's icon and label. */
+.unified-extensions-item-name,
+.unified-extensions-item-message {
+ padding-inline-start: var(--uc-arrowpanel-menuicon-margin-inline) !important;
+}
+
+.unified-extensions-item-icon,
+.unified-extensions-item .webextension-browser-action > .toolbarbutton-badge-stack {
+ margin-inline-end: 0 !important;
+}
+/* #endregion */
+
+/*
+ MARK: Autocomplete
+*/
+#PopupAutoComplete {
+ /* workaround for inaccessible shadow-root element
+ moves the shadow-root element underneath, and away from panel edges */
+ padding-block: 10px !important;
+ padding-inline: 2px !important;
+
+ & > .autocomplete-richlistbox {
+ background: var(--arrowpanel-background) !important;
+ box-shadow: 0 0 0 1px inset var(--arrowpanel-border-color) !important;
+ height: auto !important;
+ margin-block: -10px !important;
+ margin-inline: -2px !important;
+ padding: var(--uc-contextmenu-padding) !important;
+ border-radius: var(--uc-contextmenu-border-radius) !important;
+ color: inherit !important;
+ }
+
+ & .autocomplete-richlistitem[originaltype="loginsFooter"] {
+ justify-content: start !important;
+ color: inherit !important;
+ background-color: transparent !important;
+ height: 28px !important;
+ min-height: 28px !important;
+ padding-inline-start: var(--uc-contextmenu-menuitem-padding-inline) !important;
+ position: relative !important;
+ overflow: visible !important;
+ margin-top: calc(var(--uc-contextmenu-separator-vertical) * 2 + 1px) !important;
+ }
+
+ /* Separator */
+ & .autocomplete-richlistitem[originaltype="loginsFooter"]::before {
+ content: "";
+ width: calc(100% + var(--uc-contextmenu-menuitem-margin-inline) * 2);
+ border-top: 1px solid var(--panel-separator-color);
+ position: absolute;
+ top: calc((var(--uc-contextmenu-separator-vertical) + var(--uc-contextmenu-menuitem-border-width)) * -1 - 1px);
+ left: calc(var(--uc-contextmenu-menuitem-margin-inline) * -1);
+ }
+
+ & .autocomplete-richlistitem:hover {
+ background-color: var(--panel-item-hover-bgcolor) !important;
+ }
+
+ & .autocomplete-richlistitem[selected] {
+ background-color: var(--panel-item-active-bgcolor) !important;
+ color: inherit !important;
+ }
+
+ & .ac-site-icon {
+ fill: currentColor !important;
+ margin-block: auto !important;
+ margin-inline: 0 var(--uc-autocomplete-panel-menuicon-padding-inline) !important;
+ }
+
+ & .ac-title {
+ margin-inline: calc(16px + var(--uc-autocomplete-panel-menuicon-padding-inline)) !important;
+ }
+
+ & .two-line-wrapper {
+ padding: 0 !important;
+ gap: 0 !important;
+ }
+}
+
+#PlacesToolbar menuitem,
+#PlacesToolbar menu,
+panelview .toolbarbutton-1,
+.subviewbutton,
+.widget-overflow-list .toolbarbutton-1 {
+ min-height: calc(16px + var(--uc-contextmenu-menuitem-padding-block) * 2) !important;
+}
+
+/*
+ MARK: Search bar suggestions
+*/
+#PopupSearchAutoComplete {
+ & .searchbar-separator {
+ margin: 4px 0 !important;
+ }
+
+ /* Search suggestions. */
+ & .autocomplete-richlistitem,
+ & .search-panel-header {
+ padding-block: 2px !important;
+ padding-inline: var(--uc-contextmenu-menuitem-padding-inline) !important;
+ margin: 0 var(--uc-arrowpanel-menuitem-margin-inline) !important;
+ border-radius: var(--arrowpanel-menuitem-border-radius) !important;
+
+ & > .ac-type-icon {
+ margin-inline-start: 0 !important;
+ }
+ }
+
+ /* Search engine selector. */
+ & .search-one-offs {
+ padding-block: 0 5px !important;
+
+ & #searchbar-one-offs-header-label {
+ margin-inline-start: 0 !important;
+ }
+
+ & .search-panel-one-offs-container {
+ margin-inline: 1px 7px !important;
+ }
+ }
+
+}
+
+/*
+ MARK: Context menu
+*/
+
+/* disable context menu when this tweak is applied */
+@media not (-moz-bool-pref: "uc.tweak.revert-context-menu") {
+ /* Context Menu */
+ menupopup:not(.PanelUI-subView),
+ menupopup:not(.PanelUI-subView) menuitem,
+ menupopup:not(.PanelUI-subView) menu,
+ menupopup:not(.PanelUI-subView) menuseparator,
+ panel:not(#PopupSearchAutoComplete) {
+ appearance: none !important;
+ }
+
+ menupopup:not(.PanelUI-subView),
+ #PopupAutoComplete,
+ menulist > menupopup:not(.PanelUI-subView) > menucaption {
+ -moz-window-shadow: none !important;
+ background: 0 !important;
+ border: 0 !important;
+ color: var(--arrowpanel-color) !important;
+ }
+
+ .popup-internal-box,
+ #PopupAutoComplete > .autocomplete-richlistbox,
+ .menupopup-arrowscrollbox {
+ background: var(--arrowpanel-background) !important;
+ border: 1px solid var(--arrowpanel-border-color) !important;
+ }
+
+ /* make room for menu shadow */
+ menupopup:not(.PanelUI-subView) {
+ padding: 4px 12px 20px !important;
+ margin: -6px -12px -16px !important;
+ }
+
+ /* cut off shadow so it doesn't get in the way of the menubar items */
+ menubar menupopup {
+ padding: 1px 8px 20px !important;
+ margin: -1px -4px -16px !important;
+ }
+
+ menupopup {
+ --uc-margin: 0 !important;
+ --uc-outline-color: #0001;
+ --uc-box-shadow:
+ 0 8px 12px #0003,
+ 0 4px 5px #0002,
+ 0 2px 4px #0002;
+ }
+
+ @media (prefers-color-scheme:dark) {
+ menupopup {
+ --uc-outline-color: #0002;
+ --uc-box-shadow:
+ 0 8px 12px #0003,
+ 0 4px 5px #0003,
+ 0 2px 4px #0002;
+ }
+ }
+
+ /* use default shadow for subview menupopup (eg. bookmarks) */
+ menupopup.PanelUI-subView {
+ --uc-box-shadow: 0 0 0 1px var(--panel-border-color);
+ --uc-margin: 1px !important;
+ margin-top: -5px !important;
+ }
+
+ .menupopup-arrowscrollbox {
+ box-shadow: var(--uc-box-shadow) !important;
+ outline: .5px solid var(--uc-outline-color) !important;
+ }
+
+ .popup-internal-box {
+ margin: 0 !important;
+ }
+
+ .popup-internal-box,
+ .menupopup-arrowscrollbox {
+ padding: var(--uc-contextmenu-padding) !important;
+ border-radius: var(--uc-contextmenu-border-radius) !important;
+ color: inherit !important;
+ }
+
+ menupopup menu[disabled="true"],
+ menupopup menuitem[disabled="true"] {
+ color: var(--panel-disabled-color) !important;
+ background: none !important;
+ }
+
+ menupopup menu:hover:not([disabled=true]),
+ menupopup menuitem:hover:not([disabled=true]),
+ menupopup menu[_moz-menuactive]:not([disabled=true]),
+ menupopup menuitem[_moz-menuactive]:not([disabled=true]) {
+ background-color: var(--panel-item-hover-bgcolor) !important;
+ color: inherit !important;
+ }
+
+ menupopup menuitem:hover:active:not([disabled=true]),
+ menupopup menu:hover:active:not([disabled=true]) {
+ background-color: var(--panel-item-active-bgcolor) !important;
+ color: inherit !important;
+ }
+
+ menupopup menuseparator,
+ panel menuseparator,
+ #PopupSearchAutoComplete .searchbar-separator {
+ margin: var(--uc-contextmenu-separator-vertical) 0 !important;
+ padding: 0 !important;
+ background: none !important;
+ border-top: 1px solid var(--panel-separator-color) !important;
+
+ &::before {
+ content: unset !important;
+ }
+ }
+
+ #PlacesToolbar menupopup[placespopup="true"] menuseparator::before {
+ display: none !important;
+ }
+
+ menupopup menu,
+ menupopup menuitem,
+ menupopup menucaption,
+ #PopupAutoComplete > richlistbox > richlistitem,
+ #PopupSearchAutoComplete .autocomplete-richlistitem {
+ padding: var(--uc-contextmenu-menuitem-padding-block) var(--uc-contextmenu-menuitem-padding-inline) !important;
+ margin: var(--uc-contextmenu-menuitem-margin) !important;
+ border-radius: var(--uc-contextmenu-menuitem-border-radius) !important;
+ border: var(--uc-contextmenu-menuitem-border-width) solid transparent !important;
+ background-clip: padding-box !important;
+ min-height: calc(16px + (var(--uc-contextmenu-menuitem-padding-block) + var(--uc-contextmenu-menuitem-border-width)) * 2) !important;
+ }
+
+ :not(:not(menubar)>menu, #ContentSelectDropdown) > menupopup > menuitem:not(.menuitem-iconic, [type="checkbox"], [type="radio"], .in-menulist, .in-menulist menuitem, .unified-nav-current),
+ :not(:not(menubar)>menu, #ContentSelectDropdown) > menupopup > menu:not(.menu-iconic, [type="checkbox"], [type="radio"], .in-menulist, .in-menulist menu, .unified-nav-current),
+ :not(:not(menubar)>menu, #ContentSelectDropdown) > menupopup > menucaption {
+ padding-inline-start: calc(var(--uc-contextmenu-menuitem-padding-inline) + 16px + var(--uc-contextmenu-menuicon-margin-inline)) !important;
+ }
+
+ .menu-iconic-icon {
+ margin-block: 0 !important;
+ margin-inline-end: 0 !important;
+ margin-inline-start: 0 !important;
+ }
+
+ menu > .menu-iconic-text,
+ menuitem > .menu-iconic-text,
+ /* Used for vertical context navigation tweak. */
+ #context-navigation > .menuitem-iconic::after {
+ padding-inline-start: var(--uc-contextmenu-menuicon-margin-inline) !important;
+ }
+
+ .menu-text,
+ .menu-iconic-text {
+ margin-inline-start: 0 !important;
+ padding-block: 0 !important;
+ }
+
+ .menu-accel,
+ .menu-iconic-accel {
+ margin-inline-end: 0 !important;
+ padding-block: 0 !important;
+ opacity: 0.7 !important;
+ }
+
+ .menu-iconic > .menu-iconic-left,
+ .menuitem-iconic > .menu-iconic-left {
+ padding-inline-end: 0 !important;
+ padding-block: 0 !important;
+ }
+
+ menuitem:is(.menuitem-iconic:not([data-usercontextid]), [type="checkbox"], [type="radio"], [checked], [selected]) .menu-iconic-icon {
+ -moz-context-properties: fill !important;
+ fill: currentColor !important;
+ }
+
+ .menu-right,
+ .menu-accel-container {
+ appearance: none !important;
+ margin-inline-end: 0 !important;
+ -moz-context-properties: fill;
+ fill: currentColor !important;
+ }
+
+ menupopup menuitem:is([type="checkbox"], [type="radio"]) .menu-iconic-icon,
+ menulist > menupopup > menuitem .menu-iconic-icon,
+ menu .menu-right {
+ height: 16px !important;
+ width: 16px !important;
+ }
+
+ menulist > menupopup > menuitem:is([checked="true"], [selected="true"])::before,
+ menupopup > menuitem::before,
+ menupopup > menu::before,
+ menupopup > menuitem::after {
+ display: none !important;
+ }
+
+ menuitem:is([type="checkbox"], [checked="true"], [type="radio"]) > .menu-iconic-left > .menu-iconic-icon {
+ display: flex !important;
+ }
+
+ menuitem[checked="true"] > .menu-iconic-left,
+ menu > .menu-iconic-left,
+ menuitem > .menu-iconic-left {
+ margin: 0 !important;
+ padding: 0 !important
+ }
+
+ #context-navigation:not([hidden]) {
+ padding: 0 !important;
+ --menuitem-min-width: calc(16px + var(--uc-contextmenu-menuitem-padding-inline) * 2) !important;
+ min-width: calc(4 * var(--menuitem-min-width));
+ }
+
+ #context-navigation > .menuitem-iconic > .menu-iconic-left > .menu-iconic-icon {
+ width: 16px !important;
+ height: 16px !important;
+ padding: 0 !important;
+ }
+
+ #context-navigation {
+ margin-inline: var(--uc-contextmenu-menuitem-margin-inline) !important;
+ }
+
+ #context-navigation > .menuitem-iconic {
+ justify-content: center !important;
+ }
+
+ #context-navigation > .menuitem-iconic {
+ margin: 0 !important;
+ }
+
+ #context-navigation > .menuitem-iconic {
+ flex-grow: 1 !important;
+ width: unset !important;
+ }
+
+ #context-navigation > .menuitem-iconic[_moz-menuactive="true"] > .menu-iconic-left > .menu-iconic-icon {
+ background-color: transparent !important;
+ }
+
+ #context-bookmarkpage[starred] .menu-iconic-icon {
+ fill: var(--lwt-toolbarbutton-icon-fill-attention, var(--toolbarbutton-icon-fill-attention, currentColor)) !important;
+ }
+
+ @media (not (-moz-bool-pref: "uc.tweak.smaller-context-menu-text")) and (-moz-platform: windows) {
+ .menu-text,
+ .menu-iconic-text,
+ panel .toolbarbutton-text,
+ #PopupSearchAutoComplete .ac-title,
+ /* Used for vertical context navigation tweak. */
+ #context-navigation > .menuitem-iconic::after {
+ margin-inline-start: 0 !important;
+ margin-block: -3px -1px !important;
+ padding-block: 0 !important;
+ }
+
+ .menu-text,
+ .menu-iconic-text,
+ panel .toolbarbutton-text,
+ #appMenu-fxa-status2,
+ .panel-header,
+ #PopupSearchAutoComplete,
+ /* Used for vertical context navigation tweak. */
+ #context-navigation > .menuitem-iconic::after {
+ font-size: 13.6px !important;
+ }
+ }
+}
+
+/*
+ MARK: Dialog box
+*/
+
+/* Dialog shadow and outline adjustments. */
+.dialogBox:not(.spotlightBox) {
+ border-radius: 8px !important;
+ outline: 0.5px solid var(--panel-separator-color) !important;
+ box-shadow:
+ 0 20px 38px rgb(0 0 0 / 0.23),
+ 0 5px 9px rgb(0 0 0 / 0.22) !important;
+}
+
+dialog {
+ /* Dialog title. */
+ & #titleContainer {
+ /* Add larger gap between icon and title text. */
+ & .titleIcon {
+ padding-inline-end: 8px !important;
+ }
+
+ /* Match font style in Edge. */
+ & #titleText {
+ font-size: 1.18em !important;
+ font-weight: 700 !important;
+ }
+
+ /* Adjust vertical alignment of title text. */
+ @media (-moz-platform: macOS) {
+ &:not([noicon]) > #titleCropper {
+ translate: 0 calc(-1px - max(.55 * var(--icon-size) - .6em, 0px)) !important;
+ }
+ }
+ }
+
+ /* Input focus style. */
+ & input:where([type="email"], [type="tel"], [type="text"], [type="password"], [type="url"], [type="number"]):focus {
+ outline: 2px solid var(--in-content-box-border-color) !important;
+ outline-offset: -2px !important;
+ }
+}
+
+/* FF123+ tab preview pop-up.
+ * CSS reference: https://searchfox.org/mozilla-central/source/browser/components/tabpreview/tabpreview.css
+ * Requires `browser.tabs.cardPreview.enabled` set to `true` */
+.tab-preview-container {
+ background-color: var(--arrowpanel-background) !important;
+ color: var(--arrowpanel-color) !important;
+ border: 0.5px solid var(--panel-separator-color) !important;
+ border-radius: 8.5px !important;
+
+ /* Place thumbnail at the top of the tooltip. */
+ display: flex !important;
+ flex-direction: column-reverse !important;
+
+ & .tab-preview-uri {
+ color: var(--panel-description-color) !important;
+ }
+}
diff --git a/themes/firefox/chrome/global/tree.css b/themes/firefox/chrome/global/tree.css
new file mode 100644
index 0000000..2bbffb4
--- /dev/null
+++ b/themes/firefox/chrome/global/tree.css
@@ -0,0 +1,87 @@
+/* Edge-Frfox - tree.css */
+
+/* Change height of tree items and add rounded corners */
+treechildren::-moz-tree-row,
+treecol:not([hideheader="true"]),
+.tree-columnpicker-button {
+ min-height: max(28px, 1.3em) !important;
+ border-radius: 2px !important;
+}
+
+/* Change the background colour on hover */
+@media not (prefers-contrast) {
+ treechildren::-moz-tree-row(hover) {
+ background-color: var(--toolbarbutton-hover-background) !important;
+ }
+}
+
+/* Change the background colour when pressed */
+treechildren::-moz-tree-row(selected) {
+ background-color: var(--toolbarbutton-active-background) !important;
+}
+
+/* Change the background colour when focused */
+treechildren::-moz-tree-row(selected, focus) {
+ background-color: var(--button-primary-bgcolor) !important;
+}
+
+treechildren::-moz-tree-row(current, focus) {
+ outline: var(--default-focusring);
+ outline-color: var(--button-primary-bgcolor) !important;
+ outline-offset: calc(-1 * var(--default-focusring-width));
+}
+
+treechildren::-moz-tree-image(selected),
+treechildren::-moz-tree-twisty(selected),
+treechildren::-moz-tree-cell-text(selected) {
+ color: inherit !important;
+}
+
+treechildren::-moz-tree-image(selected, focus),
+treechildren::-moz-tree-twisty(selected, focus),
+treechildren::-moz-tree-cell-text(selected, focus) {
+ color: var(--button-primary-color) !important;
+}
+
+/* Spacing between icon and label */
+treechildren::-moz-tree-image {
+ margin-inline-end: 8px !important;
+}
+
+/* Separator appearance */
+treechildren::-moz-tree-separator {
+ border-top: 1px solid var(--toolbarseparator-color) !important;
+ border-bottom: none !important;
+}
+
+/* Change the colour of the drop feedback elements */
+treechildren::-moz-tree-cell-text(primary, dropOn) {
+ background-color: var(--button-primary-bgcolor) !important;
+ color: var(--button-primary-color) !important;
+}
+
+treechildren::-moz-tree-drop-feedback {
+ background-color: var(--toolbarbutton-icon-fill-attention) !important;
+ border-radius: 2px !important;
+}
+
+/* Change the appearance for the expandable items */
+treechildren::-moz-tree-twisty {
+ padding-top: 0 !important;
+ padding-inline: 4px !important;
+ width: 16px !important;
+ list-style-image: url("../icons/arrow-filled-right.svg") !important;
+}
+
+treechildren:-moz-locale-dir(rtl)::-moz-tree-twisty(closed) {
+ list-style-image: url("../icons/arrow-filled-left.svg") !important;
+}
+
+treechildren::-moz-tree-twisty(open) {
+ list-style-image: url("../icons/arrow-filled-down.svg") !important;
+}
+
+/* Change the identation of child items */
+treechildren::-moz-tree-indentation {
+ width: 16px !important;
+}
diff --git a/themes/firefox/chrome/global/tweaks.css b/themes/firefox/chrome/global/tweaks.css
new file mode 100644
index 0000000..d3114b2
--- /dev/null
+++ b/themes/firefox/chrome/global/tweaks.css
@@ -0,0 +1,247 @@
+/* Edge-Frfox - tweaks.css */
+
+/*
+ MARK: Disable drag space
+*/
+@media (-moz-bool-pref: "uc.tweak.disable-drag-space") {
+ /* disable drag space above tabs */
+ :root {
+ --uc-tab-top-margin: 0px !important;
+ }
+}
+
+/*
+ MARK: Force tab colour
+*/
+/* force tabs to toolbar bg (useful for proton themes) (might experience some
+bugs with certain themes eg. dark text on dark background.) */
+@media (-moz-bool-pref: "uc.tweak.force-tab-colour") {
+ :root[lwtheme] {
+ --tab-selected-bgcolor: var(--toolbar-bgcolor) !important;
+ --tab-selected-textcolor: var(--toolbar-color) !important;
+ }
+}
+
+/*
+ MARK: Remove tab separators
+*/
+@media (-moz-bool-pref: "uc.tweak.remove-tab-separators") {
+ .tabbrowser-tab .tab-stack {
+ &::before,
+ &::after {
+ content: initial !important;
+ }
+ }
+}
+
+/*
+ MARK: Floating tabs
+*/
+@media (-moz-bool-pref: "uc.tweak.floating-tabs") {
+ :root:not([lwtheme]),
+ /* `--newtab-background-color-secondary used` to differentiate between a dark
+ * private window and private window with the 'Dark' theme enabled.
+ * May not be the most reliable method, but works for now up to FF 123. */
+ :root[privatebrowsingmode="temporary"]:where([style*="--lwt-accent-color: rgb(28, 27, 34)"]:not([style*="--newtab-background-color-secondary: rgb(66, 65, 77)"])) {
+ --lwt-accent-color: light-dark(#f3f3f3, #202020) !important;
+ --lwt-accent-color-inactive: unset !important;
+ --toolbar-bgcolor: light-dark(#fff, #3F3F3F) !important;
+ --lwt-tab-text: light-dark(#262626, #fff) !important;
+ --chrome-content-separator-color: light-dark(#bfbfbf, #535353) !important;
+ --lwt-tab-line-color: light-dark(transparent, rgb(255 255 255 / 0.06)) !important;
+ }
+
+ /* Uses :root body to avoid affecting other variables by changing
+ * --toolbar-color. */
+ :root body {
+ /* Use tabbar colours for better readability when using custom themes. */
+ --toolbar-color: var(--lwt-text-color) !important;
+ --toolbarbutton-icon-fill: var(--lwt-text-color) !important;
+
+ &:-moz-window-inactive {
+ --toolbar-color: var(--lwt-text-color-inactive, var(--lwt-text-color)) !important;
+ --toolbarbutton-icon-fill: var(--lwt-text-color-inactive, var(--lwt-text-color)) !important;
+ }
+ }
+
+ @media (-moz-gtk-csd-available) {
+ :root:not([lwtheme]) {
+ --toolbar-bgcolor: color-mix(in srgb, -moz-dialog 80%, #fff) !important;
+ --toolbar-field-background-color: Field !important;
+ --lwt-tab-text: -moz-dialogtext !important;
+ --lwt-tab-line-color: rgb(255 255 255 / 0.06) !important;
+ --lwt-accent-color: var(--toolbox-non-lwt-bgcolor) !important;
+
+ &:-moz-window-inactive {
+ --lwt-accent-color: var(--toolbox-non-lwt-bgcolor-inactive) !important;
+ }
+ }
+ }
+
+ /* Shadow for navbar and tabs */
+ :root,
+ :root .tabbrowser-tab {
+ --uc-titlebar-shadow: none;
+ --uc-tab-shadow-outline: rgb(0 0 0 / .11);
+ --uc-tab-shadow: 0 2.5px 3px 1px rgb(0 0 0 / .08);
+
+ & [brighttext],
+ & [brighttext] .tabbrowser-tab {
+ --uc-titlebar-shadow: none;
+ --uc-tab-shadow-outline: transparent;
+ --uc-tab-shadow: 0 2px 3px rgb(0 0 0 / .12);
+ }
+
+ & #TabsToolbar {
+ --tab-border-radius: 8px !important;
+ }
+ }
+
+ /* remove toolbar bg */
+ #nav-bar,
+ #PersonalToolbar {
+ background-color: transparent !important;
+ }
+
+ /* invert bottom corner radius for tabs */
+ .tab-background {
+ border-radius: var(--tab-border-radius) !important;
+
+ &::before,
+ &::after {
+ display: none !important;
+ }
+ }
+
+ .tab-background[selected] {
+ border: 1px solid var(--lwt-tab-line-color, var(--lwt-tabs-border-color, transparent)) !important;
+ outline: 1px solid var(--uc-tab-shadow-outline) !important;
+
+ /* Fractional scaling adjustments (150%, 175%, etc.) */
+ @media (1dppx < resolution < 2dppx) {
+ outline-width: 1.5px !important;
+ }
+ }
+
+ /* adjust spacing of area above tabs */
+ @media not (-moz-platform: macos) {
+ :root[sizemode="maximized"] {
+ --uc-tab-top-margin: 4px !important;
+ }
+ }
+
+ :root:is([inFullscreen], :not([tabsintitlebar])) {
+ --uc-tab-top-margin: 4px !important;
+ }
+
+ @media (-moz-bool-pref: "uc.tweak.disable-drag-space") {
+ :root {
+ --uc-tab-top-margin: 4px !important;
+ }
+ }
+
+ /* IMPORTANT: Adds padding and removes margin on top of tabs to allow user to
+ * select it from the top edge of the window */
+ #tabbrowser-tabs {
+ margin-top: calc(var(--uc-tab-top-margin) - 4px) !important;
+
+ & .tabbrowser-tab,
+ & #tabs-newtab-button {
+ padding-top: 4px !important;
+ }
+ }
+
+ #scrollbutton-up:not(.menupopup-scrollbutton),
+ #scrollbutton-down:not(.menupopup-scrollbutton) {
+ &,
+ & ~ spacer {
+ margin-top: 4px !important;
+ }
+ }
+
+ /* move tab shadow behind urlbar */
+ .tabbrowser-tab[visuallyselected="true"],
+ #nav-bar {
+ z-index: 2 !important;
+ }
+
+ /* tab shadow adjustments */
+ .tabbrowser-tab {
+ overflow-clip-margin: 8px !important;
+ }
+
+ #tabbrowser-arrowscrollbox > *,
+ #scrollbutton-up:not(.menupopup-scrollbutton),
+ #scrollbutton-up:not(.menupopup-scrollbutton) ~ spacer,
+ #scrollbutton-down:not(.menupopup-scrollbutton) {
+ margin-bottom: 8px !important;
+ }
+
+ #tabbrowser-arrowscrollbox {
+ margin-bottom: -8px !important;
+ }
+}
+
+/*
+ MARK: Vertical context nav
+*/
+@media (not (-moz-platform: macos)) and (not (-moz-bool-pref: "uc.tweak.revert-context-menu")) {
+ @media (-moz-bool-pref: "uc.tweak.vertical-context-navigation") {
+ #context-navigation {
+ /* Stack menu items vertically. */
+ flex-direction: column !important;
+
+ /* Align the image and label to the left edge. */
+ & > .menuitem-iconic {
+ justify-content: start !important;
+
+ &::after {
+ /* Get the menuitem label from the aria-label attribute. */
+ content: attr(aria-label);
+ }
+ }
+ }
+ }
+}
+
+/*
+ MARK: Hide access key
+*/
+@media (-moz-bool-pref: "uc.tweak.context-menu.hide-access-key") {
+ :where(menuitem, menu) > :is(.menu-text, .menu-iconic-text)[value]:not([value=""]) {
+ &::before {
+ /* The default value is -moz-label-content, which takes the data from the
+ * value attribute and highlights the character found in the accesskey
+ * attribute. This skips that and uses the value attribute directly. */
+ content: attr(value) !important;
+ }
+ }
+}
+
+/*
+ MARK: Show tab close button
+*/
+@media (-moz-bool-pref: "uc.tweak.show-tab-close-button-on-hover") {
+ #tabbrowser-tabs[closebuttons="activetab"] .tabbrowser-tab:not([pinned], [selected]):hover .tab-close-button {
+ display: flex !important;
+ }
+}
+
+/*
+ MARK: Hide forward button
+*/
+@media (-moz-bool-pref: "uc.tweak.hide-forward-button") {
+ :root:not([customizing]) #forward-button[disabled] {
+ display: none !important;
+ }
+}
+
+/*
+ MARK: Hide Firefox account
+*/
+@media (-moz-bool-pref: "uc.tweak.context-menu.hide-firefox-account") {
+ #appMenu-fxa-status2,
+ #appMenu-fxa-separator {
+ display: none !important;
+ }
+}
diff --git a/themes/firefox/chrome/icons/accessibility.svg b/themes/firefox/chrome/icons/accessibility.svg
new file mode 100755
index 0000000..bfcf02a
--- /dev/null
+++ b/themes/firefox/chrome/icons/accessibility.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/account-private.svg b/themes/firefox/chrome/icons/account-private.svg
new file mode 100644
index 0000000..4c3040e
--- /dev/null
+++ b/themes/firefox/chrome/icons/account-private.svg
@@ -0,0 +1,13 @@
+
diff --git a/themes/firefox/chrome/icons/account.svg b/themes/firefox/chrome/icons/account.svg
new file mode 100644
index 0000000..1400006
--- /dev/null
+++ b/themes/firefox/chrome/icons/account.svg
@@ -0,0 +1,7 @@
+
diff --git a/themes/firefox/chrome/icons/add-to-dictionary.svg b/themes/firefox/chrome/icons/add-to-dictionary.svg
new file mode 100644
index 0000000..ebcb80f
--- /dev/null
+++ b/themes/firefox/chrome/icons/add-to-dictionary.svg
@@ -0,0 +1,4 @@
+
diff --git a/themes/firefox/chrome/icons/arrow-down.svg b/themes/firefox/chrome/icons/arrow-down.svg
new file mode 100644
index 0000000..ddf8622
--- /dev/null
+++ b/themes/firefox/chrome/icons/arrow-down.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/arrow-filled-down.svg b/themes/firefox/chrome/icons/arrow-filled-down.svg
new file mode 100644
index 0000000..bd111a7
--- /dev/null
+++ b/themes/firefox/chrome/icons/arrow-filled-down.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/arrow-filled-left.svg b/themes/firefox/chrome/icons/arrow-filled-left.svg
new file mode 100644
index 0000000..c0f6945
--- /dev/null
+++ b/themes/firefox/chrome/icons/arrow-filled-left.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/arrow-filled-right.svg b/themes/firefox/chrome/icons/arrow-filled-right.svg
new file mode 100644
index 0000000..2f65f5e
--- /dev/null
+++ b/themes/firefox/chrome/icons/arrow-filled-right.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/arrow-left.svg b/themes/firefox/chrome/icons/arrow-left.svg
new file mode 100644
index 0000000..1da2ba2
--- /dev/null
+++ b/themes/firefox/chrome/icons/arrow-left.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/arrow-right.svg b/themes/firefox/chrome/icons/arrow-right.svg
new file mode 100644
index 0000000..a7b1606
--- /dev/null
+++ b/themes/firefox/chrome/icons/arrow-right.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/arrow-up.svg b/themes/firefox/chrome/icons/arrow-up.svg
new file mode 100644
index 0000000..a3bfad7
--- /dev/null
+++ b/themes/firefox/chrome/icons/arrow-up.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/audio-save.svg b/themes/firefox/chrome/icons/audio-save.svg
new file mode 100644
index 0000000..21b6752
--- /dev/null
+++ b/themes/firefox/chrome/icons/audio-save.svg
@@ -0,0 +1,4 @@
+
diff --git a/themes/firefox/chrome/icons/autoplay-media-blocked.svg b/themes/firefox/chrome/icons/autoplay-media-blocked.svg
new file mode 100644
index 0000000..0de5a38
--- /dev/null
+++ b/themes/firefox/chrome/icons/autoplay-media-blocked.svg
@@ -0,0 +1,5 @@
+
diff --git a/themes/firefox/chrome/icons/autoplay-media.svg b/themes/firefox/chrome/icons/autoplay-media.svg
new file mode 100644
index 0000000..8df77df
--- /dev/null
+++ b/themes/firefox/chrome/icons/autoplay-media.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/back.svg b/themes/firefox/chrome/icons/back.svg
new file mode 100644
index 0000000..b6e67d7
--- /dev/null
+++ b/themes/firefox/chrome/icons/back.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/bookmark-hollow.svg b/themes/firefox/chrome/icons/bookmark-hollow.svg
new file mode 100644
index 0000000..47e2f1d
--- /dev/null
+++ b/themes/firefox/chrome/icons/bookmark-hollow.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/bookmark-star-on-tray.svg b/themes/firefox/chrome/icons/bookmark-star-on-tray.svg
new file mode 100644
index 0000000..e35453e
--- /dev/null
+++ b/themes/firefox/chrome/icons/bookmark-star-on-tray.svg
@@ -0,0 +1,4 @@
+
diff --git a/themes/firefox/chrome/icons/bookmark.svg b/themes/firefox/chrome/icons/bookmark.svg
new file mode 100644
index 0000000..c5ff2e0
--- /dev/null
+++ b/themes/firefox/chrome/icons/bookmark.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/camera-blocked.svg b/themes/firefox/chrome/icons/camera-blocked.svg
new file mode 100644
index 0000000..7d6aa1a
--- /dev/null
+++ b/themes/firefox/chrome/icons/camera-blocked.svg
@@ -0,0 +1,5 @@
+
diff --git a/themes/firefox/chrome/icons/camera.svg b/themes/firefox/chrome/icons/camera.svg
new file mode 100644
index 0000000..23e2384
--- /dev/null
+++ b/themes/firefox/chrome/icons/camera.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/canvas-blocked.svg b/themes/firefox/chrome/icons/canvas-blocked.svg
new file mode 100644
index 0000000..f6fba0f
--- /dev/null
+++ b/themes/firefox/chrome/icons/canvas-blocked.svg
@@ -0,0 +1,5 @@
+
diff --git a/themes/firefox/chrome/icons/canvas.svg b/themes/firefox/chrome/icons/canvas.svg
new file mode 100644
index 0000000..e71396f
--- /dev/null
+++ b/themes/firefox/chrome/icons/canvas.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/checkmark.svg b/themes/firefox/chrome/icons/checkmark.svg
new file mode 100644
index 0000000..ade387a
--- /dev/null
+++ b/themes/firefox/chrome/icons/checkmark.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/chevron.svg b/themes/firefox/chrome/icons/chevron.svg
new file mode 100644
index 0000000..c61ab0a
--- /dev/null
+++ b/themes/firefox/chrome/icons/chevron.svg
@@ -0,0 +1,4 @@
+
diff --git a/themes/firefox/chrome/icons/close-9px.svg b/themes/firefox/chrome/icons/close-9px.svg
new file mode 100644
index 0000000..c567b9a
--- /dev/null
+++ b/themes/firefox/chrome/icons/close-9px.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/close.svg b/themes/firefox/chrome/icons/close.svg
new file mode 100644
index 0000000..4aa95d0
--- /dev/null
+++ b/themes/firefox/chrome/icons/close.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/container-tab.svg b/themes/firefox/chrome/icons/container-tab.svg
new file mode 100644
index 0000000..3a11413
--- /dev/null
+++ b/themes/firefox/chrome/icons/container-tab.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/customize.svg b/themes/firefox/chrome/icons/customize.svg
new file mode 100644
index 0000000..0087061
--- /dev/null
+++ b/themes/firefox/chrome/icons/customize.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/desktop-notification-blocked.svg b/themes/firefox/chrome/icons/desktop-notification-blocked.svg
new file mode 100644
index 0000000..5e6dd9c
--- /dev/null
+++ b/themes/firefox/chrome/icons/desktop-notification-blocked.svg
@@ -0,0 +1,5 @@
+
diff --git a/themes/firefox/chrome/icons/desktop-notification.svg b/themes/firefox/chrome/icons/desktop-notification.svg
new file mode 100644
index 0000000..d09f0df
--- /dev/null
+++ b/themes/firefox/chrome/icons/desktop-notification.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/developer.svg b/themes/firefox/chrome/icons/developer.svg
new file mode 100644
index 0000000..bf2f355
--- /dev/null
+++ b/themes/firefox/chrome/icons/developer.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/downloads.svg b/themes/firefox/chrome/icons/downloads.svg
new file mode 100644
index 0000000..e9cd7c6
--- /dev/null
+++ b/themes/firefox/chrome/icons/downloads.svg
@@ -0,0 +1,4 @@
+
diff --git a/themes/firefox/chrome/icons/duplicate-tab.svg b/themes/firefox/chrome/icons/duplicate-tab.svg
new file mode 100644
index 0000000..5c80180
--- /dev/null
+++ b/themes/firefox/chrome/icons/duplicate-tab.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/edit-copy-without-tracking.svg b/themes/firefox/chrome/icons/edit-copy-without-tracking.svg
new file mode 100644
index 0000000..1967f0b
--- /dev/null
+++ b/themes/firefox/chrome/icons/edit-copy-without-tracking.svg
@@ -0,0 +1,5 @@
+
diff --git a/themes/firefox/chrome/icons/edit-copy.svg b/themes/firefox/chrome/icons/edit-copy.svg
new file mode 100644
index 0000000..079c113
--- /dev/null
+++ b/themes/firefox/chrome/icons/edit-copy.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/edit-cut.svg b/themes/firefox/chrome/icons/edit-cut.svg
new file mode 100644
index 0000000..dea6b9e
--- /dev/null
+++ b/themes/firefox/chrome/icons/edit-cut.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/edit-delete.svg b/themes/firefox/chrome/icons/edit-delete.svg
new file mode 100755
index 0000000..cf851d6
--- /dev/null
+++ b/themes/firefox/chrome/icons/edit-delete.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/edit-paste.svg b/themes/firefox/chrome/icons/edit-paste.svg
new file mode 100644
index 0000000..2b1c074
--- /dev/null
+++ b/themes/firefox/chrome/icons/edit-paste.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/edit-redo.svg b/themes/firefox/chrome/icons/edit-redo.svg
new file mode 100644
index 0000000..4fd020f
--- /dev/null
+++ b/themes/firefox/chrome/icons/edit-redo.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/edit-select-all.svg b/themes/firefox/chrome/icons/edit-select-all.svg
new file mode 100755
index 0000000..f39494d
--- /dev/null
+++ b/themes/firefox/chrome/icons/edit-select-all.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/edit-undo.svg b/themes/firefox/chrome/icons/edit-undo.svg
new file mode 100755
index 0000000..7595ba6
--- /dev/null
+++ b/themes/firefox/chrome/icons/edit-undo.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/edit.svg b/themes/firefox/chrome/icons/edit.svg
new file mode 100644
index 0000000..f77c003
--- /dev/null
+++ b/themes/firefox/chrome/icons/edit.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/extension-blocked.svg b/themes/firefox/chrome/icons/extension-blocked.svg
new file mode 100644
index 0000000..3ebb9a9
--- /dev/null
+++ b/themes/firefox/chrome/icons/extension-blocked.svg
@@ -0,0 +1,5 @@
+
diff --git a/themes/firefox/chrome/icons/extension.svg b/themes/firefox/chrome/icons/extension.svg
new file mode 100644
index 0000000..8671aad
--- /dev/null
+++ b/themes/firefox/chrome/icons/extension.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/firefox-view.svg b/themes/firefox/chrome/icons/firefox-view.svg
new file mode 100644
index 0000000..6288a1e
--- /dev/null
+++ b/themes/firefox/chrome/icons/firefox-view.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/firefox.svg b/themes/firefox/chrome/icons/firefox.svg
new file mode 100644
index 0000000..312a76f
--- /dev/null
+++ b/themes/firefox/chrome/icons/firefox.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/folder.svg b/themes/firefox/chrome/icons/folder.svg
new file mode 100644
index 0000000..766d6f0
--- /dev/null
+++ b/themes/firefox/chrome/icons/folder.svg
@@ -0,0 +1,4 @@
+
diff --git a/themes/firefox/chrome/icons/forget.svg b/themes/firefox/chrome/icons/forget.svg
new file mode 100644
index 0000000..cf23a92
--- /dev/null
+++ b/themes/firefox/chrome/icons/forget.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/forward.svg b/themes/firefox/chrome/icons/forward.svg
new file mode 100644
index 0000000..e7fd370
--- /dev/null
+++ b/themes/firefox/chrome/icons/forward.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/fullscreen-exit.svg b/themes/firefox/chrome/icons/fullscreen-exit.svg
new file mode 100644
index 0000000..38d42d9
--- /dev/null
+++ b/themes/firefox/chrome/icons/fullscreen-exit.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/fullscreen.svg b/themes/firefox/chrome/icons/fullscreen.svg
new file mode 100644
index 0000000..109ce72
--- /dev/null
+++ b/themes/firefox/chrome/icons/fullscreen.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/geo-blocked.svg b/themes/firefox/chrome/icons/geo-blocked.svg
new file mode 100644
index 0000000..1576b8d
--- /dev/null
+++ b/themes/firefox/chrome/icons/geo-blocked.svg
@@ -0,0 +1,5 @@
+
diff --git a/themes/firefox/chrome/icons/geo.svg b/themes/firefox/chrome/icons/geo.svg
new file mode 100644
index 0000000..2899170
--- /dev/null
+++ b/themes/firefox/chrome/icons/geo.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/help.svg b/themes/firefox/chrome/icons/help.svg
new file mode 100644
index 0000000..e01d242
--- /dev/null
+++ b/themes/firefox/chrome/icons/help.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/history.svg b/themes/firefox/chrome/icons/history.svg
new file mode 100644
index 0000000..cd06463
--- /dev/null
+++ b/themes/firefox/chrome/icons/history.svg
@@ -0,0 +1,4 @@
+
diff --git a/themes/firefox/chrome/icons/home.svg b/themes/firefox/chrome/icons/home.svg
new file mode 100644
index 0000000..f9ecfaf
--- /dev/null
+++ b/themes/firefox/chrome/icons/home.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/icons.css b/themes/firefox/chrome/icons/icons.css
new file mode 100644
index 0000000..885220d
--- /dev/null
+++ b/themes/firefox/chrome/icons/icons.css
@@ -0,0 +1,1063 @@
+/* Edge-Frfox - icons.css */
+
+/*
+ MARK: Win 11 window controls
+*/
+@media (-moz-platform: windows) {
+ .titlebar-min {
+ list-style-image: url("win11-minimize.svg") !important;
+
+ @media (resolution > 1.25dppx) {
+ list-style-image: url("win11-minimize.svg#high-dpi") !important;
+ }
+ }
+
+ .titlebar-max {
+ list-style-image: url("win11-maximize.svg") !important;
+ }
+
+ .titlebar-restore {
+ list-style-image: url("win11-restore.svg") !important;
+ }
+
+ .titlebar-close {
+ list-style-image: url("win11-close.svg") !important;
+
+ /* Alternative icon that uses a thicker stroke, making it easier to see when
+ * displayed on a dark background, only needed at 100% UI scale.
+ */
+ @media (resolution = 1dppx) {
+ toolbar[brighttext] &,
+ &:hover {
+ list-style-image: url("win11-close-dark.svg") !important;
+ }
+ }
+ }
+}
+
+.subviewbutton {
+ -moz-context-properties: fill, fill-opacity !important;
+ fill: currentColor !important;
+}
+
+:root[fxastatus="not_configured"] #fxa-avatar-image {
+ list-style-image: url("account.svg") !important;
+}
+
+.private-browsing-indicator-icon {
+ list-style-image: url("account-private.svg") !important;
+ border-radius: 100% !important;
+}
+
+/* disable context menu icons on macOS */
+@media not (-moz-platform: macos) {
+ #context-back {
+ list-style-image: url("back.svg") !important;
+ }
+
+ #context-forward {
+ list-style-image: url("forward.svg") !important;
+ }
+
+ #context-reload {
+ list-style-image: url("reload.svg") !important;
+ }
+
+ #context-stop {
+ list-style-image: url("close.svg") !important;
+ }
+
+ #context-bookmarkpage {
+ list-style-image: url("bookmark-hollow.svg") !important;
+ }
+
+ #context-bookmarkpage[starred] {
+ list-style-image: url("bookmark.svg") !important;
+ }
+}
+
+#back-button {
+ list-style-image: url("back.svg") !important;
+}
+
+#forward-button {
+ list-style-image: url("forward.svg") !important;
+}
+
+#reload-button {
+ list-style-image: url("reload.svg") !important;
+}
+
+#stop-button,
+.close-icon {
+ list-style-image: url("close.svg") !important;
+}
+
+.tab-close-button {
+ list-style-image: url("close-9px.svg") !important;
+}
+
+#sidebar-button {
+ list-style-image: url("sidebars-right.svg") !important;
+}
+
+#sidebar-button:-moz-locale-dir(ltr):not([positionend]),
+#sidebar-button:-moz-locale-dir(rtl)[positionend] {
+ list-style-image: url("sidebars.svg") !important;
+}
+
+#downloads-button,
+#downloads-indicator-anchor,
+#appMenu-downloads-button,
+#appMenu-library-downloads-button {
+ list-style-image: url("downloads.svg") !important;
+}
+
+#appMenu-passwords-button,
+#password-notification-icon,
+#PopupAutoComplete > richlistbox > richlistitem[originaltype="generatedPassword"] > .two-line-wrapper > .ac-site-icon,
+#PopupAutoComplete > richlistbox > richlistitem[originaltype="loginWithOrigin"] > .two-line-wrapper > .ac-site-icon,
+#PopupAutoComplete > richlistbox > richlistitem[originaltype="login"] > .ac-site-icon {
+ list-style-image: url("passwords.svg") !important;
+}
+
+#nav-bar-overflow-button {
+ list-style-image: url("chevron.svg") !important;
+}
+
+#PanelUI-menu-button,
+#appMenu-more-button2,
+.unified-extensions-item-menu-button {
+ list-style-image: url("menu.svg") !important;
+}
+
+#appMenu-help-button2 {
+ list-style-image: url("help.svg") !important;
+}
+
+#new-tab-button {
+ list-style-image: url("new-tab.svg") !important;
+}
+
+#firefox-view-button {
+ list-style-image: url("firefox-view.svg") !important;
+}
+
+#sync-button,
+.urlbarView-row[source="tabs"] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-favicon,
+#urlbar-engine-one-off-item-tabs {
+ list-style-image: url("tab.svg") !important;
+}
+
+#history-panelmenu,
+.urlbarView-row[source="history"] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-favicon,
+#urlbar-engine-one-off-item-history,
+#appMenu-history-button,
+#appMenu-library-history-button,
+#sidebar-switcher-history,
+#sidebar-box[sidebarcommand="viewHistorySidebar"] > #sidebar-header > #sidebar-switcher-target > #sidebar-icon {
+ list-style-image: url("history.svg") !important;
+}
+
+#save-page-button,
+#appMenu-save-file-button2 {
+ list-style-image: url("save.svg") !important;
+}
+
+#print-button,
+#appMenu-print-button2 {
+ list-style-image: url("print.svg") !important;
+}
+
+.searchbar-search-icon {
+ list-style-image: url("search-glass.svg") !important;
+}
+
+#find-button,
+#appMenu-find-button2 {
+ list-style-image: url("search-page.svg") !important;
+}
+
+#appMenu-translate-button,
+#translations-button-icon {
+ list-style-image: url("translate.svg") !important;
+}
+
+#open-file-button {
+ list-style-image: url("open.svg") !important;
+}
+
+#add-ons-button,
+#appMenu-extensions-themes-button,
+#unified-extensions-button,
+#unified-extensions-manage-extensions {
+ list-style-image: url("extension.svg") !important;
+}
+
+#zoom-out-button,
+#appMenu-zoomReduce-button2 {
+ list-style-image: url("zoom-out.svg") !important;
+}
+
+#zoom-in-button,
+#tabs-newtab-button,
+#TabsToolbar #new-tab-button,
+#appMenu-zoomEnlarge-button2 {
+ list-style-image: url("plus.svg") !important;
+}
+
+#cut-button {
+ list-style-image: url("edit-cut.svg") !important;
+}
+
+#copy-button {
+ list-style-image: url("edit-copy.svg") !important;
+}
+
+#paste-button {
+ list-style-image: url("edit-paste.svg") !important;
+}
+
+#email-link-button {
+ list-style-image: url("mail.svg") !important;
+}
+
+#screenshot-button {
+ list-style-image: url("screenshot.svg") !important;
+}
+
+#preferences-button,
+.search-setting-button > .button-box > .button-icon,
+#appMenu-settings-button,
+.unified-extensions-item-open-menu.subviewbutton {
+ list-style-image: url("settings.svg") !important;
+}
+
+#panic-button {
+ list-style-image: url("forget.svg") !important;
+}
+
+#appMenu-new-private-window-button2 {
+ list-style-image: url("private-window.svg") !important;
+}
+
+#privatebrowsing-button {
+ list-style-image: url("privateBrowsing.svg") !important;
+}
+
+#save-to-pocket-button {
+ list-style-image: url("pocket-outline.svg") !important;
+}
+
+#profiler-button-button > .toolbarbutton-icon,
+.subviewbutton[label="Task Manager"] {
+ list-style-image: url("tool-profiler.svg") !important;
+}
+
+#developer-button {
+ list-style-image: url("developer.svg") !important;
+}
+
+#new-window-button,
+#appMenu-new-window-button2 {
+ list-style-image: url("window.svg") !important;
+}
+
+#restore-button,
+#fullscreen-button,
+#appMenu-fullscreen-button2 {
+ list-style-image: url("fullscreen.svg") !important;
+}
+
+#restore-button[checked],
+#fullscreen-button[checked],
+#appMenu-fullscreen-button2[checked] {
+ list-style-image: url("fullscreen-exit.svg") !important;
+}
+
+#bookmarks-menu-button,
+#appMenu-bookmarks-button,
+#sidebar-switcher-bookmarks,
+#appMenu-library-bookmarks-button,
+#sidebar-box[sidebarcommand="viewBookmarksSidebar"] > #sidebar-header > #sidebar-switcher-target > #sidebar-icon {
+ list-style-image: url("bookmark-star-on-tray.svg") !important;
+}
+
+#home-button {
+ list-style-image: url("home.svg") !important;
+}
+
+#library-button {
+ list-style-image: url("library.svg") !important;
+}
+
+/* identity icons */
+#identity-icon {
+ list-style-image: url("info.svg") !important;
+}
+
+#identity-box[pageproxystate="valid"].chromeUI #identity-icon {
+ list-style-image: url("firefox.svg") !important;
+}
+
+#identity-box[pageproxystate="valid"].localResource #identity-icon {
+ list-style-image: url("page-portrait.svg") !important;
+}
+
+#urlbar:not(.searchButton) > :is(#urlbar-input-container, .urlbar-input-container) > #identity-box[pageproxystate="invalid"] #identity-icon {
+ list-style-image: url("search-glass.svg") !important;
+}
+
+#urlbar[actiontype="extension"] > :is(#urlbar-input-container, .urlbar-input-container) > #identity-box #identity-icon,
+#identity-box[pageproxystate="valid"].extensionPage #identity-icon {
+ list-style-image: url("extension.svg") !important;
+}
+
+#identity-box[pageproxystate="valid"].verifiedDomain #identity-icon,
+#identity-box[pageproxystate="valid"].mixedActiveBlocked #identity-icon {
+ list-style-image: url("security.svg") !important;
+}
+
+:is(#urlbar-input-container, .urlbar-input-container)[pageproxystate="valid"] > #tracking-protection-icon-container > #tracking-protection-icon-box > #tracking-protection-icon {
+ list-style-image: url("tracking-protection.svg") !important;
+}
+
+/* security */
+.identity-popup-security-connection {
+ list-style-image: url("security-broken.svg") !important;
+}
+
+#identity-box[pageproxystate="valid"].notSecure #identity-icon,
+#identity-box[pageproxystate="valid"].mixedActiveContent #identity-icon,
+#identity-box[pageproxystate="valid"].httpsOnlyErrorPage #identity-icon {
+ list-style-image: url("security-broken.svg") !important;
+}
+
+#identity-popup[connection=chrome] .identity-popup-security-connection {
+ list-style-image: url("firefox.svg") !important;
+}
+
+#identity-popup[connection="file"] .identity-popup-security-connection {
+ list-style-image: url("page-portrait.svg") !important;
+}
+
+#identity-popup[connection^=secure] .identity-popup-security-connection {
+ list-style-image: url("security.svg") !important;
+}
+
+#identity-popup[ciphers=weak] .identity-popup-security-connection,
+#identity-popup[mixedcontent~=passive-loaded][isbroken] .identity-popup-security-connection,
+#identity-popup[connection=secure-cert-user-overridden] .identity-popup-security-connection,
+#identity-popup[connection=cert-error-page] .identity-popup-security-connection {
+ list-style-image: url("security-warning.svg") !important;
+}
+
+#identity-popup[connection=net-error-page] .identity-popup-security-connection {
+ list-style-image: url("info.svg") !important;
+}
+
+#identity-popup[connection=extension] .identity-popup-security-connection {
+ list-style-image: url("extension.svg") !important;
+}
+
+#appMenu-new-tab-button2 {
+ list-style-image: url("new-tab-image.svg") !important;
+}
+
+.findbar-find-previous {
+ list-style-image: url("arrow-up.svg") !important;
+}
+
+.findbar-find-next {
+ list-style-image: url("arrow-down.svg") !important;
+}
+
+#protections-popup-mainView .subviewbutton-nav:not(.notFound)::after,
+#identity-popup-mainView .subviewbutton-nav::after,
+.widget-overflow-list .subviewbutton-nav::after,
+.PanelUI-subView .subviewbutton-nav::after,
+.menu-right {
+ content: url("arrow-filled-right.svg") !important;
+ opacity: 0.6 !important;
+ scale: 0.75 !important;
+}
+
+#PlacesChevron,
+#urlbar-go-button {
+ list-style-image: url("arrow-right.svg") !important;
+}
+
+.panel-header > .subviewbutton-back {
+ list-style-image: url("arrow-left.svg") !important;
+}
+
+#overflowMenu-customize-button,
+#appmenu-moreTools-button {
+ list-style-image: url("customize.svg") !important;
+}
+
+.bookmark-item[container] {
+ list-style-image: url("folder.svg") !important;
+}
+
+#pageAction-panel-bookmark,
+#star-button {
+ list-style-image: url("bookmark-hollow.svg") !important;
+}
+
+#pageAction-panel-bookmark[starred],
+#star-button[starred] {
+ list-style-image: url("bookmark.svg") !important;
+}
+
+#sidebar-box[sidebarcommand="viewTabsSidebar"] > #sidebar-header > #sidebar-switcher-target > #sidebar-icon,
+#sidebar-switcher-tabs {
+ list-style-image: url("send-to-device.svg") !important;
+}
+
+/* tab icons */
+.tab-icon-image[src="chrome://branding/content/icon32.png"],
+.tab-icon-image[src="chrome://browser/skin/privatebrowsing/favicon.svg"] {
+ content: url("new-tab-image.svg") !important;
+}
+
+.tab-icon-image[src="chrome://global/skin/icons/settings.svg"] {
+ content: url("settings.svg") !important;
+}
+
+.tab-icon-image[src="chrome://mozapps/skin/extensions/extension.svg"] {
+ content: url("extension.svg") !important;
+}
+
+.tab-icon-image[src="chrome://browser/skin/customize.svg"] {
+ content: url("customize.svg") !important;
+}
+
+/* permissions */
+#permissions-granted-icon {
+ list-style-image: url("permissions.svg") !important;
+}
+
+.geo-icon {
+ list-style-image: url("geo.svg") !important;
+}
+
+.geo-icon.blocked-permission-icon {
+ list-style-image: url("geo-blocked.svg") !important;
+}
+
+.xr-icon {
+ list-style-image: url("xr.svg") !important;
+}
+
+.xr-icon.blocked-permission-icon {
+ list-style-image: url("xr-blocked.svg") !important;
+}
+
+.popup-notification-icon[popupid="web-notifications"],
+.desktop-notification-icon {
+ list-style-image: url("desktop-notification.svg") !important;
+}
+
+.desktop-notification-icon.blocked-permission-icon {
+ list-style-image: url("desktop-notification-blocked.svg") !important;
+}
+
+.camera-icon,
+#webRTC-sharingCamera-menu,
+#webrtc-sharing-icon[sharing="camera"] {
+ list-style-image: url("camera.svg") !important;
+}
+
+.camera-icon.blocked-permission-icon {
+ list-style-image: url("camera-blocked.svg") !important;
+}
+
+.microphone-icon,
+#webRTC-sharingMicrophone-menu,
+#webrtc-sharing-icon[sharing="microphone"] {
+ list-style-image: url("microphone.svg") !important;
+}
+
+.microphone-icon.blocked-permission-icon {
+ list-style-image: url("microphone-blocked.svg") !important;
+}
+
+.screen-icon,
+#webRTC-sharingScreen-menu,
+#webrtc-sharing-icon[sharing="screen"] {
+ list-style-image: url("screen.svg") !important;
+}
+
+.screen-icon.blocked-permission-icon {
+ list-style-image: url("screen-blocked.svg") !important;
+}
+
+.popup-notification-icon[popupid="persistent-storage"],
+.persistent-storage-icon,
+.indexedDB-icon {
+ list-style-image: url("persistent-storage.svg") !important;
+}
+
+.persistent-storage-icon.blocked-permission-icon {
+ list-style-image: url("persistent-storage-blocked.svg") !important;
+}
+
+.popup-icon {
+ list-style-image: url("popup.svg") !important;
+}
+
+.autoplay-media-icon {
+ list-style-image: url("autoplay-media.svg") !important;
+}
+
+.autoplay-media-icon.blocked-permission-icon {
+ list-style-image: url("autoplay-media-blocked.svg") !important;
+}
+
+#canvas-notification-icon,
+.popup-notification-icon[popupid="canvas-permissions-prompt"],
+.canvas-icon {
+ list-style-image: url("canvas.svg") !important;
+}
+
+.canvas-icon.blocked-permission-icon {
+ list-style-image: url("canvas-blocked.svg") !important;
+}
+
+.midi-icon,
+.midi-sysex-icon,
+.popup-notification-icon[popupid="midi"],
+.popup-notification-icon[popupid="midi-sysex"] {
+ list-style-image: url("midi.svg") !important;
+}
+
+.install-icon {
+ list-style-image: url("extension.svg") !important;
+}
+
+.install-icon.blocked-permission-icon,
+.popup-notification-icon[popupid="xpinstall-disabled"],
+.popup-notification-icon[popupid="addon-install-blocked"],
+.popup-notification-icon[popupid="addon-install-origin-blocked"] {
+ list-style-image: url("extension-blocked.svg") !important;
+}
+
+/* tab sound icons */
+.tab-icon-overlay[soundplaying] {
+ list-style-image: url("tab-audio-playing-small.svg") !important;
+}
+
+.tab-icon-overlay[muted] {
+ list-style-image: url("tab-audio-muted-small.svg") !important;
+}
+
+.tab-icon-overlay[activemedia-blocked] {
+ list-style-image: url("tab-audio-blocked-small.svg") !important;
+}
+
+/* reload/stop animation */
+#stop-reload-button[animate] > #reload-button[displaystop] + #stop-button > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image {
+ background-image: url("reload-to-stop.svg") !important;
+}
+
+#stop-reload-button[animate] > #reload-button > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image {
+ background-image: url("stop-to-reload.svg") !important;
+}
+
+#reader-mode-button > .urlbar-icon {
+ list-style-image: url("reader-mode.svg") !important;
+}
+
+#appMenu-report-broken-site-button {
+ list-style-image: url("report.svg") !important;
+}
+
+/*
+ MARK: Context menu
+*/
+
+/* disable context menu icons when this tweak is applied */
+@media not (-moz-bool-pref: "uc.tweak.revert-context-menu") {
+
+ /* Context Menu Icons */
+ menupopup > menuitem:is([checked="true"], [selected="true"]) .menu-iconic-icon {
+ list-style-image: url("checkmark.svg") !important;
+
+ @media (-moz-platform: linux) {
+ list-style-image: none !important;
+ }
+ }
+
+ #context-video-pictureinpicture:not([checked="true"]) .menu-iconic-icon {
+ list-style-image: url("media-pip.svg") !important;
+ }
+
+ #context-media-loop:not([checked="true"]) .menu-iconic-icon {
+ list-style-image: url("media-loop.svg") !important;
+ }
+
+ :not(:not(menubar) > menu, #ContentSelectDropdown) > menupopup > menuitem:not(.menuitem-iconic, [type="checkbox"], [type="radio"], .in-menulist, .in-menulist menuitem, .unified-nav-current),
+ :not(:not(menubar) > menu, #ContentSelectDropdown) > menupopup > menu:not(.menu-iconic, [type="checkbox"], [type="radio"], .in-menulist, .in-menulist menu, .unified-nav-current) {
+ background-image: var(--menu-image) !important;
+ background-size: 16px !important;
+ background-position: var(--uc-contextmenu-menuitem-padding-inline) center !important;
+ background-repeat: no-repeat !important;
+ -moz-context-properties: fill, fill-opacity !important;
+ fill: currentColor !important;
+ }
+
+ @media (-moz-platform: macos) {
+ #context-back {
+ --menu-image: url("back.svg");
+ }
+
+ #context-forward {
+ --menu-image: url("forward.svg");
+ }
+
+ #context-reload {
+ --menu-image: url("reload.svg");
+ }
+
+ #context-stop {
+ --menu-image: url("close.svg");
+ }
+
+ #context-bookmarkpage {
+ --menu-image: url("bookmark-hollow.svg");
+ }
+
+ #contentAreaContextMenu #context-bookmarkpage[starred] {
+ --menu-image: url("bookmark.svg");
+ fill: var(--toolbarbutton-icon-fill-attention, currentColor) !important;
+ }
+ }
+
+ #context-savepage {
+ --menu-image: url("save.svg");
+ }
+
+ #context-selectall,
+ .textbox-contextmenu menuitem[cmd*="selectAll"],
+ #context_selectAllTabs,
+ #toolbar-context-selectAllTabs {
+ --menu-image: url("edit-select-all.svg");
+ }
+
+ #context-undo,
+ .textbox-contextmenu menuitem[cmd*="undo"],
+ #context_undoCloseTab,
+ #toolbar-context-undoCloseTab {
+ --menu-image: url("edit-undo.svg");
+ }
+
+ #context-redo,
+ .textbox-contextmenu menuitem[cmd*="redo"] {
+ --menu-image: url("edit-redo.svg");
+ }
+
+ #context-copy,
+ .textbox-contextmenu menuitem[cmd*="copy"],
+ #placesContext_copy {
+ --menu-image: url("edit-copy.svg");
+ }
+
+ #context-stripOnShareLink,
+ #strip-on-share {
+ --menu-image: url("edit-copy-without-tracking.svg");
+ }
+
+ #context-paste,
+ .textbox-contextmenu menuitem[cmd*="paste"],
+ #placesContext_paste_group {
+ --menu-image: url("edit-paste.svg");
+ }
+
+ #context-cut,
+ .textbox-contextmenu menuitem[cmd*="cut"],
+ #placesContext_cut {
+ --menu-image: url("edit-cut.svg");
+ }
+
+ #context-delete,
+ .customize-context-removeExtension,
+ .unified-extensions-context-menu-remove-extension,
+ .textbox-contextmenu menuitem[cmd*="delete"],
+ menuitem[id="placesContext_deleteBookmark"],
+ menuitem[id="placesContext_deleteFolder"],
+ menuitem[id="placesContext_delete"],
+ menuitem[id="placesContext_delete_history"],
+ menuitem[id="placesContext_deleteHost"] {
+ --menu-image: url("edit-delete.svg");
+ }
+
+ #paste-and-go,
+ .searchbar-paste-and-search {
+ --menu-image: url("paste-and-go.svg");
+ }
+
+ #context-print-selection {
+ --menu-image: url("print.svg");
+ }
+
+ #context-take-screenshot {
+ --menu-image: url("screenshot.svg");
+ }
+
+ #context-viewsource,
+ #context-viewpartialsource-selection {
+ --menu-image: url("source-code.svg");
+ }
+
+ #context-inspect-a11y {
+ --menu-image: url("accessibility.svg");
+ }
+
+ #context-inspect {
+ --menu-image: url("inspect.svg");
+ }
+
+ #context-searchselect {
+ --menu-image: url("search-glass.svg");
+ }
+
+ #context-viewimage {
+ --menu-image: url("image-open.svg");
+ }
+
+ #context-saveimage,
+ #context-video-saveimage {
+ --menu-image: url("image-save.svg");
+ }
+
+ #context-savevideo {
+ --menu-image: url("video-save.svg");
+ }
+
+ #context-viewvideo {
+ --menu-image: url("video-open.svg");
+ }
+
+ #context-saveaudio {
+ --menu-image: url("audio-save.svg");
+ }
+
+ #context-copyimage-contents {
+ --menu-image: url("image-copy.svg");
+ }
+
+ #context-copyimage,
+ #context-copyvideourl,
+ #context-copylink {
+ --menu-image: url("link.svg");
+ }
+
+ #context-sendimage,
+ #context-sendvideo,
+ #context-sendaudio {
+ --menu-image: url("mail.svg");
+ }
+
+ #context-setDesktopBackground,
+ .viewCustomizeToolbar {
+ --menu-image: url("customize.svg");
+ }
+
+ #context-reloadimage,
+ #context_reloadTab,
+ #context_reloadSelectedTabs,
+ #toolbar-context-reloadSelectedTab,
+ #toolbar-context-reloadSelectedTabs {
+ --menu-image: url("reload.svg");
+ }
+
+ #context-sendlinktodevice,
+ #context_sendTabToDevice,
+ #context-sendpagetodevice,
+ #sidebar-switcher-tabs {
+ --menu-image: url("send-to-device.svg");
+ }
+
+ #context-openlinkintab,
+ #context-openlinkincontainertab,
+ menuitem[id="placesContext_open:newtab"],
+ menuitem[id="placesContext_openLinks:tabs"],
+ menuitem[id="placesContext_openBookmarkLinks:tabs"],
+ menuitem[id="placesContext_openBookmarkContainer:tabs"] {
+ --menu-image: url("tab.svg");
+ }
+
+ #context_openANewTab,
+ #toolbar-context-openANewTab {
+ --menu-image: url("new-tab-image.svg");
+ }
+
+ #context-openlinkinusercontext-menu,
+ menu[id="placesContext_open:newcontainertab"],
+ menu[id="placesContext_openContainer:tabs"] {
+ --menu-image: url("container-tab.svg");
+ }
+
+ #context-openlink,
+ menuitem[id="placesContext_open:newwindow"] {
+ --menu-image: url("window.svg");
+ }
+
+ #context-openlinkprivate,
+ menuitem[id="placesContext_open:newprivatewindow"] {
+ --menu-image: url("private-window.svg");
+ }
+
+ #context-savelink {
+ --menu-image: url("downloads.svg");
+ }
+
+ #spell-add-to-dictionary {
+ --menu-image: url("add-to-dictionary.svg");
+ }
+
+ #manage-saved-logins {
+ --menu-image: url("passwords.svg");
+ }
+
+ #context-media-play,
+ #context_playTab,
+ #context_playSelectedTabs {
+ --menu-image: url("media-play.svg");
+ }
+
+ #context-media-pause {
+ --menu-image: url("media-pause.svg");
+ }
+
+ #context-media-mute,
+ #context_toggleMuteTab,
+ #context_toggleMuteSelectedTabs {
+ --menu-image: url("media-mute.svg");
+ }
+
+ #context-media-unmute,
+ #context_toggleMuteTab[muted],
+ #context_toggleMuteSelectedTabs[muted] {
+ --menu-image: url("media-unmute.svg");
+ }
+
+ #context-media-playbackrate {
+ --menu-image: url("media-speed.svg");
+ }
+
+ #context-video-fullscreen {
+ --menu-image: url("fullscreen.svg");
+ }
+
+ #context-leave-dom-fullscreen,
+ menuitem[contexttype="fullscreen"][label*="Exit"] {
+ --menu-image: url("fullscreen-exit.svg");
+ }
+
+ #context-media-hidecontrols,
+ #context-media-showcontrols {
+ --menu-image: url("permissions.svg");
+ }
+
+ #context_pinTab,
+ #context_unpinTab,
+ #context_pinSelectedTabs,
+ #context_unpinSelectedTabs,
+ .customize-context-moveToPanel {
+ --menu-image: url("pin.svg");
+ }
+
+ #context_duplicateTab,
+ #context_duplicateTabs {
+ --menu-image: url("duplicate-tab.svg");
+ }
+
+ #context_bookmarkTab,
+ #context_bookmarkSelectedTabs,
+ #toggle_PersonalToolbar,
+ #context-bookmarklink,
+ #toolbar-context-bookmarkSelectedTab,
+ #toolbar-context-bookmarkSelectedTabs {
+ --menu-image: url("bookmark-hollow.svg");
+ }
+
+ #sidebar-switcher-bookmarks {
+ --menu-image: url("bookmark-star-on-tray.svg");
+ }
+
+ menuitem[id="placesContext_show_bookmark:info"],
+ menuitem[id="placesContext_show_folder:info"],
+ menuitem[id="placesContext_show:info"] {
+ --menu-image: url("edit.svg");
+ }
+
+ menuitem[id="placesContext_showAllBookmarks"],
+ #BMB_bookmarksShowAllTop,
+ #BMB_bookmarksShowAll,
+ .customize-context-manageExtension,
+ .unified-extensions-context-menu-manage-extension {
+ --menu-image: url("manage.svg");
+ }
+
+ menuitem[id="placesContext_new:bookmark"],
+ menuitem[id="placesContext_new:folder"],
+ menuitem[id="placesContext_new:separator"] {
+ --menu-image: url("plus.svg");
+ }
+
+ #context-savelinktopocket,
+ #context-pocket {
+ --menu-image: url("pocket-outline.svg");
+ }
+
+ #context_moveTabOptions {
+ --menu-image: url("move-tab.svg");
+ }
+
+ .share-tab-url-item {
+ --menu-image: url("share.svg");
+ }
+
+ #context_reopenInContainer {
+ --menu-image: url("container-tab.svg");
+ }
+
+ #context_closeTab {
+ --menu-image: url("close.svg");
+ }
+
+ .customize-context-reportExtension,
+ .unified-extensions-context-menu-report-extension {
+ --menu-image: url("report.svg");
+ }
+
+ #sidebar-switcher-history {
+ --menu-image: url("history.svg");
+ }
+}
+
+/*
+ MARK: App menu header
+*/
+
+/* Header icons for the app menu sub menus (eg. fx account, history...) */
+.panel-header > h1 > span {
+ &::before {
+ content: "";
+ background: var(--header-image, none) center / 16px no-repeat;
+ -moz-context-properties: fill, fill-opacity;
+ fill: currentColor;
+ padding-inline-start: calc(var(--uc-enabled, 0) * 16px);
+ margin-inline-end: calc(var(--uc-enabled, 0) * 8px);
+ }
+
+ #PanelUI-fxa &::before {
+ --header-image: var(--avatar-image-url);
+ --uc-enabled: 1;
+ transform: scale(1.25);
+ border-radius: 99px;
+ display: inline-block;
+ height: 16px;
+ vertical-align: text-bottom;
+ }
+
+ #PanelUI-bookmarks &::before {
+ --header-image: url("bookmark-star-on-tray.svg");
+ --uc-enabled: 1;
+ }
+
+ #PanelUI-history &::before {
+ --header-image: url("history.svg");
+ --uc-enabled: 1;
+ }
+
+ #PanelUI-helpView &::before {
+ --header-image: url("help.svg");
+ --uc-enabled: 1;
+ }
+
+ #appMenu-libraryView &::before {
+ --header-image: url("library.svg");
+ --uc-enabled: 1;
+ }
+
+ #unified-extensions-panel &::before {
+ --header-image: url("extension.svg");
+ --uc-enabled: 1;
+ }
+
+ #report-broken-site-popup-mainView &::before {
+ --header-image: url("report.svg");
+ --uc-enabled: 1;
+ }
+}
+
+/*
+ MARK: Tree items
+*/
+
+/* Tree items used for side bar and library windows */
+treechildren::-moz-tree-image {
+ fill-opacity: 1 !important;
+}
+
+treechildren::-moz-tree-image(title) {
+ list-style-image: url("page-portrait.svg") !important;
+}
+
+/* default folder icon */
+treechildren::-moz-tree-image(title, container),
+treechildren::-moz-tree-image(title, open) {
+ list-style-image: url("folder.svg") !important;
+}
+
+/* bookmarks bar icon */
+treechildren::-moz-tree-image(container, queryFolder_toolbar_____) {
+ list-style-image: url("bookmark-hollow.svg") !important;
+}
+
+/* bookmarks menu icon */
+treechildren::-moz-tree-image(container, queryFolder_menu________) {
+ list-style-image: url("folder.svg") !important;
+}
+
+/* smart folder icon */
+treechildren::-moz-tree-image(query) {
+ list-style-image: url("settings.svg") !important;
+}
+
+/* bookmarks category icon */
+treechildren::-moz-tree-image(query, OrganizerQuery_allbms_____v) {
+ list-style-image: url("bookmark-hollow.svg") !important;
+}
+
+/* downloads category icon */
+treechildren::-moz-tree-image(query, OrganizerQuery_downloads__v) {
+ list-style-image: url("downloads.svg") !important;
+}
+
+/* tags category icon */
+treechildren::-moz-tree-image(title, query, tagContainer),
+treechildren::-moz-tree-image(query, OrganizerQuery_tags_______v) {
+ list-style-image: url("tag.svg") !important;
+}
+
+/* calendar icon for folders grouping items by date */
+treechildren::-moz-tree-image(title, query, dayContainer) {
+ list-style-image: url("history.svg") !important;
+}
+
+treechildren::-moz-tree-image(title, query, hostContainer) {
+ list-style-image: url("folder.svg") !important;
+}
+
+/* history category icon */
+treechildren::-moz-tree-image(query, OrganizerQuery_history____v) {
+ list-style-image: url("history.svg") !important;
+}
+
+treechildren::-moz-tree-image(title, query, folder) {
+ list-style-image: url("folder.svg") !important;
+}
diff --git a/themes/firefox/chrome/icons/image-copy.svg b/themes/firefox/chrome/icons/image-copy.svg
new file mode 100644
index 0000000..8266f7c
--- /dev/null
+++ b/themes/firefox/chrome/icons/image-copy.svg
@@ -0,0 +1,5 @@
+
diff --git a/themes/firefox/chrome/icons/image-open.svg b/themes/firefox/chrome/icons/image-open.svg
new file mode 100644
index 0000000..b17d039
--- /dev/null
+++ b/themes/firefox/chrome/icons/image-open.svg
@@ -0,0 +1,8 @@
+
diff --git a/themes/firefox/chrome/icons/image-save.svg b/themes/firefox/chrome/icons/image-save.svg
new file mode 100644
index 0000000..4ed3345
--- /dev/null
+++ b/themes/firefox/chrome/icons/image-save.svg
@@ -0,0 +1,4 @@
+
diff --git a/themes/firefox/chrome/icons/info.svg b/themes/firefox/chrome/icons/info.svg
new file mode 100644
index 0000000..50f7757
--- /dev/null
+++ b/themes/firefox/chrome/icons/info.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/inspect.svg b/themes/firefox/chrome/icons/inspect.svg
new file mode 100755
index 0000000..8f29365
--- /dev/null
+++ b/themes/firefox/chrome/icons/inspect.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/library.svg b/themes/firefox/chrome/icons/library.svg
new file mode 100644
index 0000000..f1e0c01
--- /dev/null
+++ b/themes/firefox/chrome/icons/library.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/link.svg b/themes/firefox/chrome/icons/link.svg
new file mode 100644
index 0000000..4509293
--- /dev/null
+++ b/themes/firefox/chrome/icons/link.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/mail.svg b/themes/firefox/chrome/icons/mail.svg
new file mode 100644
index 0000000..a8c9112
--- /dev/null
+++ b/themes/firefox/chrome/icons/mail.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/manage.svg b/themes/firefox/chrome/icons/manage.svg
new file mode 100644
index 0000000..59e1249
--- /dev/null
+++ b/themes/firefox/chrome/icons/manage.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/media-loop.svg b/themes/firefox/chrome/icons/media-loop.svg
new file mode 100644
index 0000000..0ff335c
--- /dev/null
+++ b/themes/firefox/chrome/icons/media-loop.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/media-mute.svg b/themes/firefox/chrome/icons/media-mute.svg
new file mode 100644
index 0000000..bfcc81f
--- /dev/null
+++ b/themes/firefox/chrome/icons/media-mute.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/media-pause.svg b/themes/firefox/chrome/icons/media-pause.svg
new file mode 100644
index 0000000..6212a20
--- /dev/null
+++ b/themes/firefox/chrome/icons/media-pause.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/media-pip.svg b/themes/firefox/chrome/icons/media-pip.svg
new file mode 100644
index 0000000..a83fb54
--- /dev/null
+++ b/themes/firefox/chrome/icons/media-pip.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/media-play.svg b/themes/firefox/chrome/icons/media-play.svg
new file mode 100644
index 0000000..da95f78
--- /dev/null
+++ b/themes/firefox/chrome/icons/media-play.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/media-speed.svg b/themes/firefox/chrome/icons/media-speed.svg
new file mode 100644
index 0000000..a7767c7
--- /dev/null
+++ b/themes/firefox/chrome/icons/media-speed.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/media-unmute.svg b/themes/firefox/chrome/icons/media-unmute.svg
new file mode 100644
index 0000000..9a7d4b7
--- /dev/null
+++ b/themes/firefox/chrome/icons/media-unmute.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/menu.svg b/themes/firefox/chrome/icons/menu.svg
new file mode 100644
index 0000000..44b77db
--- /dev/null
+++ b/themes/firefox/chrome/icons/menu.svg
@@ -0,0 +1,5 @@
+
diff --git a/themes/firefox/chrome/icons/microphone-blocked.svg b/themes/firefox/chrome/icons/microphone-blocked.svg
new file mode 100644
index 0000000..36663f2
--- /dev/null
+++ b/themes/firefox/chrome/icons/microphone-blocked.svg
@@ -0,0 +1,5 @@
+
diff --git a/themes/firefox/chrome/icons/microphone.svg b/themes/firefox/chrome/icons/microphone.svg
new file mode 100644
index 0000000..e93a61d
--- /dev/null
+++ b/themes/firefox/chrome/icons/microphone.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/midi.svg b/themes/firefox/chrome/icons/midi.svg
new file mode 100644
index 0000000..8f8bd4e
--- /dev/null
+++ b/themes/firefox/chrome/icons/midi.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/move-tab.svg b/themes/firefox/chrome/icons/move-tab.svg
new file mode 100644
index 0000000..9c5d46f
--- /dev/null
+++ b/themes/firefox/chrome/icons/move-tab.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/new-tab-image.svg b/themes/firefox/chrome/icons/new-tab-image.svg
new file mode 100644
index 0000000..f1201ed
--- /dev/null
+++ b/themes/firefox/chrome/icons/new-tab-image.svg
@@ -0,0 +1,6 @@
+
diff --git a/themes/firefox/chrome/icons/new-tab.svg b/themes/firefox/chrome/icons/new-tab.svg
new file mode 100644
index 0000000..062c3c6
--- /dev/null
+++ b/themes/firefox/chrome/icons/new-tab.svg
@@ -0,0 +1,4 @@
+
diff --git a/themes/firefox/chrome/icons/open.svg b/themes/firefox/chrome/icons/open.svg
new file mode 100644
index 0000000..067f3ae
--- /dev/null
+++ b/themes/firefox/chrome/icons/open.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/page-portrait.svg b/themes/firefox/chrome/icons/page-portrait.svg
new file mode 100644
index 0000000..8ed9c54
--- /dev/null
+++ b/themes/firefox/chrome/icons/page-portrait.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/passwords.svg b/themes/firefox/chrome/icons/passwords.svg
new file mode 100644
index 0000000..099f498
--- /dev/null
+++ b/themes/firefox/chrome/icons/passwords.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/paste-and-go.svg b/themes/firefox/chrome/icons/paste-and-go.svg
new file mode 100644
index 0000000..18f1553
--- /dev/null
+++ b/themes/firefox/chrome/icons/paste-and-go.svg
@@ -0,0 +1,4 @@
+
diff --git a/themes/firefox/chrome/icons/permissions.svg b/themes/firefox/chrome/icons/permissions.svg
new file mode 100644
index 0000000..0df27b3
--- /dev/null
+++ b/themes/firefox/chrome/icons/permissions.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/persistent-storage-blocked.svg b/themes/firefox/chrome/icons/persistent-storage-blocked.svg
new file mode 100644
index 0000000..23caa39
--- /dev/null
+++ b/themes/firefox/chrome/icons/persistent-storage-blocked.svg
@@ -0,0 +1,5 @@
+
diff --git a/themes/firefox/chrome/icons/persistent-storage.svg b/themes/firefox/chrome/icons/persistent-storage.svg
new file mode 100644
index 0000000..0746caa
--- /dev/null
+++ b/themes/firefox/chrome/icons/persistent-storage.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/pin.svg b/themes/firefox/chrome/icons/pin.svg
new file mode 100644
index 0000000..fbfc31c
--- /dev/null
+++ b/themes/firefox/chrome/icons/pin.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/plus.svg b/themes/firefox/chrome/icons/plus.svg
new file mode 100644
index 0000000..7072c1c
--- /dev/null
+++ b/themes/firefox/chrome/icons/plus.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/pocket-outline.svg b/themes/firefox/chrome/icons/pocket-outline.svg
new file mode 100644
index 0000000..24c7a41
--- /dev/null
+++ b/themes/firefox/chrome/icons/pocket-outline.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/popup.svg b/themes/firefox/chrome/icons/popup.svg
new file mode 100644
index 0000000..1f8a8cf
--- /dev/null
+++ b/themes/firefox/chrome/icons/popup.svg
@@ -0,0 +1,5 @@
+
diff --git a/themes/firefox/chrome/icons/print.svg b/themes/firefox/chrome/icons/print.svg
new file mode 100644
index 0000000..ed311c7
--- /dev/null
+++ b/themes/firefox/chrome/icons/print.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/private-window.svg b/themes/firefox/chrome/icons/private-window.svg
new file mode 100644
index 0000000..59126a2
--- /dev/null
+++ b/themes/firefox/chrome/icons/private-window.svg
@@ -0,0 +1,4 @@
+
diff --git a/themes/firefox/chrome/icons/privateBrowsing.svg b/themes/firefox/chrome/icons/privateBrowsing.svg
new file mode 100644
index 0000000..d576a31
--- /dev/null
+++ b/themes/firefox/chrome/icons/privateBrowsing.svg
@@ -0,0 +1,3 @@
+
diff --git a/themes/firefox/chrome/icons/reader-mode.svg b/themes/firefox/chrome/icons/reader-mode.svg
new file mode 100644
index 0000000..370fda6
--- /dev/null
+++ b/themes/firefox/chrome/icons/reader-mode.svg
@@ -0,0 +1,4 @@
+
diff --git a/themes/firefox/chrome/icons/reload-to-stop.svg b/themes/firefox/chrome/icons/reload-to-stop.svg
new file mode 100644
index 0000000..13b1bd9
--- /dev/null
+++ b/themes/firefox/chrome/icons/reload-to-stop.svg
@@ -0,0 +1,28 @@
+
+
diff --git a/themes/firefox/chrome/icons/reload.svg b/themes/firefox/chrome/icons/reload.svg
new file mode 100644
index 0000000..772c9bd
--- /dev/null
+++ b/themes/firefox/chrome/icons/reload.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/report.svg b/themes/firefox/chrome/icons/report.svg
new file mode 100644
index 0000000..7b7517f
--- /dev/null
+++ b/themes/firefox/chrome/icons/report.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/save.svg b/themes/firefox/chrome/icons/save.svg
new file mode 100644
index 0000000..e3179f3
--- /dev/null
+++ b/themes/firefox/chrome/icons/save.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/screen-blocked.svg b/themes/firefox/chrome/icons/screen-blocked.svg
new file mode 100644
index 0000000..1a9f603
--- /dev/null
+++ b/themes/firefox/chrome/icons/screen-blocked.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/themes/firefox/chrome/icons/screen.svg b/themes/firefox/chrome/icons/screen.svg
new file mode 100644
index 0000000..9aec149
--- /dev/null
+++ b/themes/firefox/chrome/icons/screen.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/screenshot.svg b/themes/firefox/chrome/icons/screenshot.svg
new file mode 100644
index 0000000..65e9cff
--- /dev/null
+++ b/themes/firefox/chrome/icons/screenshot.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/search-glass.svg b/themes/firefox/chrome/icons/search-glass.svg
new file mode 100644
index 0000000..79a5001
--- /dev/null
+++ b/themes/firefox/chrome/icons/search-glass.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/search-page.svg b/themes/firefox/chrome/icons/search-page.svg
new file mode 100755
index 0000000..05c3b53
--- /dev/null
+++ b/themes/firefox/chrome/icons/search-page.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/security-broken.svg b/themes/firefox/chrome/icons/security-broken.svg
new file mode 100644
index 0000000..e931dc1
--- /dev/null
+++ b/themes/firefox/chrome/icons/security-broken.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/security-warning.svg b/themes/firefox/chrome/icons/security-warning.svg
new file mode 100644
index 0000000..467d5aa
--- /dev/null
+++ b/themes/firefox/chrome/icons/security-warning.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/themes/firefox/chrome/icons/security.svg b/themes/firefox/chrome/icons/security.svg
new file mode 100644
index 0000000..c79b8c2
--- /dev/null
+++ b/themes/firefox/chrome/icons/security.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/send-to-device.svg b/themes/firefox/chrome/icons/send-to-device.svg
new file mode 100644
index 0000000..2d77ac2
--- /dev/null
+++ b/themes/firefox/chrome/icons/send-to-device.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/settings.svg b/themes/firefox/chrome/icons/settings.svg
new file mode 100644
index 0000000..de58959
--- /dev/null
+++ b/themes/firefox/chrome/icons/settings.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/share.svg b/themes/firefox/chrome/icons/share.svg
new file mode 100644
index 0000000..1d135f4
--- /dev/null
+++ b/themes/firefox/chrome/icons/share.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/sidebars-right.svg b/themes/firefox/chrome/icons/sidebars-right.svg
new file mode 100644
index 0000000..626ee35
--- /dev/null
+++ b/themes/firefox/chrome/icons/sidebars-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/sidebars.svg b/themes/firefox/chrome/icons/sidebars.svg
new file mode 100644
index 0000000..ab58502
--- /dev/null
+++ b/themes/firefox/chrome/icons/sidebars.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/source-code.svg b/themes/firefox/chrome/icons/source-code.svg
new file mode 100755
index 0000000..a65f35d
--- /dev/null
+++ b/themes/firefox/chrome/icons/source-code.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/stop-to-reload.svg b/themes/firefox/chrome/icons/stop-to-reload.svg
new file mode 100644
index 0000000..0f9d2d1
--- /dev/null
+++ b/themes/firefox/chrome/icons/stop-to-reload.svg
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/themes/firefox/chrome/icons/tab-audio-blocked-small.svg b/themes/firefox/chrome/icons/tab-audio-blocked-small.svg
new file mode 100644
index 0000000..f5af4d4
--- /dev/null
+++ b/themes/firefox/chrome/icons/tab-audio-blocked-small.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/themes/firefox/chrome/icons/tab-audio-muted-small.svg b/themes/firefox/chrome/icons/tab-audio-muted-small.svg
new file mode 100644
index 0000000..442fd7f
--- /dev/null
+++ b/themes/firefox/chrome/icons/tab-audio-muted-small.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/themes/firefox/chrome/icons/tab-audio-playing-small.svg b/themes/firefox/chrome/icons/tab-audio-playing-small.svg
new file mode 100644
index 0000000..896a890
--- /dev/null
+++ b/themes/firefox/chrome/icons/tab-audio-playing-small.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/themes/firefox/chrome/icons/tab.svg b/themes/firefox/chrome/icons/tab.svg
new file mode 100644
index 0000000..d21577b
--- /dev/null
+++ b/themes/firefox/chrome/icons/tab.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/tag.svg b/themes/firefox/chrome/icons/tag.svg
new file mode 100644
index 0000000..8864d48
--- /dev/null
+++ b/themes/firefox/chrome/icons/tag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/tool-profiler.svg b/themes/firefox/chrome/icons/tool-profiler.svg
new file mode 100644
index 0000000..8760328
--- /dev/null
+++ b/themes/firefox/chrome/icons/tool-profiler.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/tracking-protection.svg b/themes/firefox/chrome/icons/tracking-protection.svg
new file mode 100644
index 0000000..8491ded
--- /dev/null
+++ b/themes/firefox/chrome/icons/tracking-protection.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/translate.svg b/themes/firefox/chrome/icons/translate.svg
new file mode 100644
index 0000000..58e8c43
--- /dev/null
+++ b/themes/firefox/chrome/icons/translate.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/video-open.svg b/themes/firefox/chrome/icons/video-open.svg
new file mode 100644
index 0000000..5aba487
--- /dev/null
+++ b/themes/firefox/chrome/icons/video-open.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/themes/firefox/chrome/icons/video-save.svg b/themes/firefox/chrome/icons/video-save.svg
new file mode 100644
index 0000000..9523d94
--- /dev/null
+++ b/themes/firefox/chrome/icons/video-save.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/themes/firefox/chrome/icons/win11-close-dark.svg b/themes/firefox/chrome/icons/win11-close-dark.svg
new file mode 100644
index 0000000..ccc02b4
--- /dev/null
+++ b/themes/firefox/chrome/icons/win11-close-dark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/win11-close.svg b/themes/firefox/chrome/icons/win11-close.svg
new file mode 100644
index 0000000..8fa6779
--- /dev/null
+++ b/themes/firefox/chrome/icons/win11-close.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/win11-maximize.svg b/themes/firefox/chrome/icons/win11-maximize.svg
new file mode 100644
index 0000000..81f1254
--- /dev/null
+++ b/themes/firefox/chrome/icons/win11-maximize.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/win11-minimize.svg b/themes/firefox/chrome/icons/win11-minimize.svg
new file mode 100644
index 0000000..fa479fe
--- /dev/null
+++ b/themes/firefox/chrome/icons/win11-minimize.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/themes/firefox/chrome/icons/win11-restore.svg b/themes/firefox/chrome/icons/win11-restore.svg
new file mode 100644
index 0000000..09f94a2
--- /dev/null
+++ b/themes/firefox/chrome/icons/win11-restore.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/window.svg b/themes/firefox/chrome/icons/window.svg
new file mode 100644
index 0000000..f5d3426
--- /dev/null
+++ b/themes/firefox/chrome/icons/window.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/xr-blocked.svg b/themes/firefox/chrome/icons/xr-blocked.svg
new file mode 100644
index 0000000..b4df6f3
--- /dev/null
+++ b/themes/firefox/chrome/icons/xr-blocked.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/themes/firefox/chrome/icons/xr.svg b/themes/firefox/chrome/icons/xr.svg
new file mode 100644
index 0000000..80772b3
--- /dev/null
+++ b/themes/firefox/chrome/icons/xr.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/icons/zoom-out.svg b/themes/firefox/chrome/icons/zoom-out.svg
new file mode 100644
index 0000000..9023b66
--- /dev/null
+++ b/themes/firefox/chrome/icons/zoom-out.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/themes/firefox/chrome/toolbar/findbar.css b/themes/firefox/chrome/toolbar/findbar.css
new file mode 100644
index 0000000..499e501
--- /dev/null
+++ b/themes/firefox/chrome/toolbar/findbar.css
@@ -0,0 +1,73 @@
+/* Edge-Frfox - findbar.css
+ * https://github.com/bmFtZQ/edge-frfox */
+
+/*
+ MARK: Findbar textbox
+*/
+.findbar-textbox {
+ border: 0 !important;
+ border-radius: var(--toolbarbutton-border-radius) !important;
+ background-color: var(--toolbar-field-background-color) !important;
+
+ /* Add shadow when in light mode with no theme applied, like the URL bar. */
+ :root:not([lwtheme]) & {
+ box-shadow: 0 0 4px light-dark(rgb(0 0 0 / .1), transparent) !important;
+ }
+
+ &:focus {
+ outline-width: 2px !important;
+ outline-offset: -1px !important;
+ }
+
+ &[status="notfound"] {
+ outline: 2px solid var(--input-error-border-color, #E22850) !important;
+ outline-offset: -1px !important;
+ }
+}
+
+/* Prevent focus outline from being cut off on the findbar textbox. */
+.findbar-container {
+ overflow-inline: visible !important;
+
+ /* Add ability to drag window from empty space in the findbar. */
+ &::after {
+ content: "";
+ flex: 1;
+ align-self: stretch;
+ margin-block: -6px;
+ -moz-window-dragging: drag;
+ }
+}
+
+/*
+ MARK: Findbar buttons
+*/
+.findbar-find-previous,
+.findbar-find-next,
+findbar .close-icon {
+ border-radius: var(--toolbarbutton-border-radius) !important;
+
+ &:not([disabled]):hover {
+ background-color: var(--toolbarbutton-hover-background, rgb(190 190 190 / .2)) !important;
+
+ &:active {
+ background-color: var(--toolbarbutton-active-background, rgb(190 190 190 / .4)) !important;
+ }
+ }
+}
+
+/*
+ MARK: Rounded corners
+*/
+@media (-moz-bool-pref: "uc.tweak.rounded-corners") {
+ findbar {
+ border: none !important;
+ margin-bottom: var(--uc-tweak-rounded-corners-padding, 0px) !important;
+ background-color: transparent !important;
+ padding-inline: var(--uc-tweak-rounded-corners-padding, 0px) !important;
+
+ &[hidden] {
+ margin-bottom: calc(var(--uc-tweak-rounded-corners-padding, 0px) - 40px) !important;
+ }
+ }
+}
diff --git a/themes/firefox/chrome/toolbar/navbar.css b/themes/firefox/chrome/toolbar/navbar.css
new file mode 100644
index 0000000..20c6310
--- /dev/null
+++ b/themes/firefox/chrome/toolbar/navbar.css
@@ -0,0 +1,105 @@
+/* Edge-Frfox - navbar.css
+ * https://github.com/bmFtZQ/edge-frfox */
+
+/*
+ MARK: Variables
+*/
+:root {
+ --toolbarbutton-border-radius: 4px !important;
+ --toolbarbutton-inner-padding: 7px !important;
+ --uc-toolbarbutton-inner-inline-padding: 12px !important;
+ --toolbarbutton-outer-padding: 2px !important;
+ --tabs-navbar-shadow-size: 0px !important;
+}
+
+#nav-bar {
+ border-top: none !important;
+}
+
+/*
+ MARK: Toolbar buttons
+*/
+#nav-bar .toolbarbutton-1>.toolbarbutton-icon {
+ width: calc(2 * var(--uc-toolbarbutton-inner-inline-padding) + 16px) !important;
+}
+
+#nav-bar .toolbarbutton-1>.toolbarbutton-icon,
+#nav-bar .toolbarbutton-1>.toolbarbutton-text,
+#nav-bar .toolbarbutton-1>.toolbarbutton-badge-stack {
+ padding-inline: var(--uc-toolbarbutton-inner-inline-padding) !important;
+}
+
+/* move reload/stop icon to middle of button */
+#reload-button>.toolbarbutton-animatable-box,
+#stop-button>.toolbarbutton-animatable-box {
+ top: calc(50% - 10px) !important;
+}
+
+#nav-bar-customization-target :where(#reload-button, #stop-button)>.toolbarbutton-icon {
+ padding: var(--toolbarbutton-inner-padding) var(--uc-toolbarbutton-inner-inline-padding) !important;
+}
+
+toolbar .toolbaritem-combined-buttons {
+ margin-inline: var(--toolbarbutton-outer-padding) !important;
+}
+
+/*
+ MARK: Account button
+*/
+.browser-toolbar #fxa-toolbar-menu-button,
+.browser-toolbar #fxa-toolbar-menu-button>.toolbarbutton-badge-stack,
+#fxa-avatar-image {
+ border-radius: 99px !important;
+}
+
+.browser-toolbar #fxa-toolbar-menu-button>.toolbarbutton-badge-stack {
+ padding: var(--toolbarbutton-inner-padding) !important;
+ margin-inline: calc(var(--uc-toolbarbutton-inner-inline-padding) - var(--toolbarbutton-inner-padding)) !important;
+}
+
+#TabsToolbar #fxa-toolbar-menu-button>.toolbarbutton-badge-stack {
+ margin-inline: calc(var(--uc-toolbarbutton-inner-inline-padding) - (var(--toolbarbutton-inner-padding) + 2px)) !important;
+}
+
+#fxa-toolbar-menu-button {
+ display: flex !important;
+}
+
+#widget-overflow-list>#fxa-toolbar-menu-button #fxa-avatar-image {
+ scale: 1.25 !important;
+}
+
+.customization-target>#fxa-toolbar-menu-button #fxa-avatar-image {
+ scale: 1.5 !important;
+}
+
+/*
+ MARK: Button transitions
+*/
+@media not (prefers-reduced-motion) {
+ .toolbarbutton-1>.toolbarbutton-icon,
+ .toolbarbutton-1>.toolbarbutton-text,
+ .toolbarbutton-1>.toolbarbutton-badge-stack,
+ :not(.panel-subview-body>toolbaritem)>.bookmark-item:not(menu, menuitem),
+ .urlbar-page-action,
+ .identity-box-button,
+ #tracking-protection-icon-container,
+ panel button,
+ panel menulist,
+ .titlebar-button {
+ transition: background-color 0.25s ease !important;
+ }
+
+ .toolbarbutton-1:not([disabled=true]):is([open], [checked], :hover:active)>.toolbarbutton-icon,
+ .toolbarbutton-1:not([disabled=true]):is([open], [checked], :hover:active)>.toolbarbutton-text,
+ .toolbarbutton-1:not([disabled=true]):is([open], [checked], :hover:active)>.toolbarbutton-badge-stack,
+ :not(.panel-subview-body>toolbaritem)>.bookmark-item:not(menu, menuitem):not([disabled=true]):is([open], [checked], :hover:active),
+ .urlbar-page-action:not([disabled=true]):is([open], [checked], :hover:active),
+ .identity-box-button:not([disabled=true]):is([open], [checked], :hover:active),
+ #tracking-protection-icon-container:not([disabled=true]):is([open], [checked], :hover:active),
+ panel button:not([disabled=true]):is([open], [checked], :hover:active),
+ panel menulist:not([disabled=true]):is([open], [checked], :hover:active),
+ .titlebar-button:not([disabled=true]):hover:active {
+ transition-duration: 0s !important;
+ }
+}
diff --git a/themes/firefox/chrome/toolbar/personalbar.css b/themes/firefox/chrome/toolbar/personalbar.css
new file mode 100644
index 0000000..0294ce9
--- /dev/null
+++ b/themes/firefox/chrome/toolbar/personalbar.css
@@ -0,0 +1,85 @@
+/* Edge-Frfox - personalbar.css
+ * https://github.com/bmFtZQ/edge-frfox */
+
+/*
+ MARK: Variables
+*/
+:root {
+ --bookmark-block-padding: 6px !important;
+ --bookmark-inline-padding: 6px !important;
+ --bookmark-block-margin: 2px !important;
+ --bookmark-inline-margin: 2px !important;
+ --uc-bookmark-toolbar-padding-bottom: 2px;
+ --bookmarks-toolbar-overlapping-browser-height: calc(var(--uc-bookmark-toolbar-padding-bottom) + 16px + (var(--bookmark-block-margin) + var(--bookmark-block-padding)) * 2) !important;
+}
+
+#PersonalToolbar {
+ padding-bottom: var(--uc-bookmark-toolbar-padding-bottom) !important;
+}
+
+/*
+ MARK: Bookmark items
+*/
+#personal-toolbar-empty-description,
+#PersonalToolbar .toolbarbutton-1,
+toolbarbutton.bookmark-item:not(.subviewbutton) {
+ margin-block: var(--bookmark-block-margin) !important;
+ margin-inline: var(--bookmark-inline-margin) !important;
+ padding-block: var(--bookmark-block-padding) !important;
+ padding-inline: var(--bookmark-inline-padding) !important;
+ font-size: 12px !important;
+
+ /* Adjust vertical label position on Windows */
+ @media (-moz-platform: windows) {
+ & .toolbarbutton-text {
+ margin-block: -1px 0 !important;
+ }
+ }
+}
+
+#PersonalToolbar .toolbarbutton-1 {
+ padding: 0 !important;
+}
+
+/* Spacing between icon and label for bookmarks bar items */
+#managed-bookmarks>.toolbarbutton-icon,
+#bookmarks-toolbar-placeholder>.toolbarbutton-icon,
+#PlacesToolbarItems>.bookmark-item>.toolbarbutton-icon[label]:not([label=""]),
+#OtherBookmarks.bookmark-item[container]>.toolbarbutton-icon {
+ margin-inline-end: 8px !important;
+}
+
+/* Sizing for bookmarks bar icons */
+#PersonalToolbar .toolbarbutton-1>.toolbarbutton-icon {
+ width: calc(2 * var(--bookmark-block-padding) + 16px) !important;
+ height: calc(2 * var(--bookmark-block-padding) + 16px) !important;
+ padding: var(--bookmark-block-padding) !important;
+}
+
+/*
+ MARK: Separators
+*/
+#PlacesToolbarItems > toolbarseparator {
+ padding-inline: calc(3px - var(--bookmark-inline-margin)) !important;
+ align-items: center !important;
+
+ &::before {
+ content: "";
+ border-inline-start: 1px solid var(--toolbarseparator-color) !important;
+ height: 16px !important;
+ border-image: none !important;
+ }
+
+ /* Fractional scaling adjustments (150%, 175%, etc.) */
+ @media (1dppx < resolution < 2dppx) {
+ &::before {
+ border-inline-start-width: 1.5px !important;
+ }
+ }
+}
+
+/* Left and Right padding of bookmarks bar */
+#PersonalToolbar {
+ padding-inline: calc(var(--toolbar-start-end-padding) - 2px) calc(var(--toolbar-start-end-padding) + 4px) !important;
+}
+
diff --git a/themes/firefox/chrome/toolbar/tabbar.css b/themes/firefox/chrome/toolbar/tabbar.css
new file mode 100644
index 0000000..f0bc4f0
--- /dev/null
+++ b/themes/firefox/chrome/toolbar/tabbar.css
@@ -0,0 +1,700 @@
+/* Edge-Frfox - tabbar.css
+ * https://github.com/bmFtZQ/edge-frfox */
+
+/*
+ MARK: Variables
+*/
+:root {
+ /* Extra space at the top of the window. */
+ --uc-tab-top-margin: 8px !important;
+
+ /* Remove extra space at the top of the window when in fullscreen or when
+ * title bars are enabled. */
+ &[inFullscreen],
+ &:not([tabsintitlebar]) {
+ --uc-tab-top-margin: 0px !important;
+ }
+
+ /* Remove extra space at the top when the window is maximised or the menu bar
+ * is active, only on platforms other than macOS. */
+ @media not (-moz-platform: macos) {
+ &[sizemode="maximized"],
+ & #toolbar-menubar:not([inactive]) + #TabsToolbar,
+ &:has(#toolbar-menubar:not([inactive])) {
+ --uc-tab-top-margin: 0px !important;
+ }
+ }
+
+ & #TabsToolbar {
+ --tab-min-height: 32px !important;
+ --inline-tab-padding: 11px !important;
+ --uc-inline-pinned-tab-padding: 12px !important;
+ --tab-border-radius: 4px !important;
+ --toolbarbutton-inner-padding: 6px !important;
+ --uc-toolbarbutton-inner-inline-padding: 8px !important;
+ --toolbarbutton-border-radius: 4px !important;
+ --tabs-navbar-shadow-size: 0px !important;
+ --tab-shadow-max-size: 0 !important;
+ --uc-tab-separator-height: 20px;
+ --uc-toolbarbutton-block-margin: 2px;
+
+ /* Gap between tab and adjacent buttons (+2px button margin). */
+ --uc-toolbarbutton-tab-gap: 2px;
+
+ @media (-moz-bool-pref: "uc.tweak.rounded-corners") {
+ --tab-border-radius: 8px !important;
+ --uc-toolbarbutton-tab-gap: 6px;
+ }
+ }
+}
+
+/* Tab grow/shrink transition. */
+.tabbrowser-tab:not([pinned]) {
+ transition-property: min-width, max-width !important;
+ transition-duration: 150ms !important;
+ transition-timing-function: cubic-bezier(0, .75, .25, 1) !important;
+}
+
+/* Tab moving transition. */
+#tabbrowser-tabs[movingtab] > #tabbrowser-arrowscrollbox > .tabbrowser-tab[fadein]:not([selected]):not([multiselected]),
+.tabbrowser-tab[tab-grouping],
+.tabbrowser-tab[tabdrop-samewindow] {
+ transition: transform 200ms cubic-bezier(0, .75, .25, 1) !important;
+}
+
+/* Remove tab toolbar background transition on inactive windows. */
+#navigator-toolbox {
+ transition: none !important;
+}
+
+/*
+ MARK: Toolbar & buttons
+*/
+/* #region */
+
+#TabsToolbar {
+ /* Padding between the edge of the toolbar and its content. */
+ padding-inline-start: 8px !important;
+
+ /* Remove any existing margins from toolbar buttons. */
+ & .toolbarbutton-1 {
+ margin: 0 !important;
+ }
+
+ /* Tab toolbar button sizing. */
+ & .toolbarbutton-1 > .toolbarbutton-icon,
+ & .toolbarbutton-1 > .toolbarbutton-badge-stack {
+ border-radius: var(--toolbarbutton-border-radius) !important;
+ padding: var(--toolbarbutton-inner-padding) var(--uc-toolbarbutton-inner-inline-padding) !important;
+ /* Add margin-block to buttons so they are positioned correctly. */
+ margin: var(--uc-toolbarbutton-block-margin) 0 !important;
+ }
+
+ & .toolbarbutton-1 > .toolbarbutton-icon {
+ width: calc(2 * var(--uc-toolbarbutton-inner-inline-padding) + 16px) !important;
+ height: calc(2 * var(--toolbarbutton-inner-padding) + 16px) !important;
+ }
+
+ /* Keep certain buttons (such as new tab) square shaped. */
+ & #tabs-newtab-button > .toolbarbutton-icon,
+ & #alltabs-button > .toolbarbutton-badge-stack,
+ & #tabbrowser-tabs[hasadjacentnewtabbutton][overflow] ~ #new-tab-button > .toolbarbutton-icon {
+ padding: var(--toolbarbutton-inner-padding) !important;
+ width: calc(2 * var(--toolbarbutton-inner-padding) + 16px) !important;
+ }
+
+ /* Toolbar buttons should use the same colour as unselected tabs. */
+ & .toolbarbutton-animatable-box,
+ & .toolbarbutton-1 {
+ fill: currentColor !important;
+ }
+
+ & #TabsToolbar-customization-target {
+ /* Vertically align toolbar buttons to the bottom of the tab bar. */
+ align-items: end !important;
+
+ /* Reduce space between start of the window and first toolbar button. */
+ & > .toolbarbutton-1:nth-child(1 of .toolbarbutton-1:not(#tabbrowser-tabs ~ *)) {
+ margin-inline-start: -2px !important;
+ }
+
+ /* Add space after the last toolbar button before the tabs. */
+ & > .toolbarbutton-1:nth-last-child(1 of .toolbarbutton-1:not(#tabbrowser-tabs ~ *)),
+ :root[privatebrowsingmode] & > .toolbarbutton-1:nth-last-child(1 of .toolbarbutton-1:not(#tabbrowser-tabs ~ *):not(#firefox-view-button)) {
+ margin-inline-end: calc(var(--uc-toolbarbutton-tab-gap) + 2px) !important;
+
+ /* Reduces space between this button and the tab scroll button when
+ * overflowed for consistency. */
+ &:has(~ #tabbrowser-tabs[overflow]) {
+ margin-inline-end: 2px !important;
+ }
+ }
+ }
+}
+
+#tabbrowser-tabs {
+ /* Remove the border from the left of the tab bar. */
+ border-inline: none !important;
+ padding-inline-start: var(--tab-overflow-pinned-tabs-width) !important;
+
+ /* Add space above the tabs. */
+ margin-top: var(--uc-tab-top-margin) !important;
+
+ /* Pull tabs closer to toolbar buttons when overflowed. */
+ &[overflow]:not([haspinnedtabs]) {
+ margin-inline-start: -2px !important;
+ }
+
+ /* Remove gap between pinned and unpinned tabs. */
+ &[haspinnedtabs]:not([positionpinnedtabs]) .tabbrowser-tab:nth-child(1 of :not([pinned], [hidden])) {
+ margin-inline-start: 0 !important;
+ }
+}
+
+/* Add space between last tab and new tab button. */
+#tabbrowser-tabs #tabs-newtab-button {
+ margin-inline-start: var(--uc-toolbarbutton-tab-gap) !important;
+}
+
+/* Tab scrolling buttons. */
+#scrollbutton-up:not(.menupopup-scrollbutton),
+#scrollbutton-down:not(.menupopup-scrollbutton) {
+ border-width: 2px !important;
+ border-radius: calc(var(--toolbarbutton-border-radius) + 2px) !important;
+ padding-inline: calc(var(--toolbarbutton-inner-padding) - 4px) !important;
+ padding-block: var(--toolbarbutton-inner-padding) !important;
+}
+
+/* Add margin to the side of the button facing the tabs so the buttons line up
+ * on the opposite side with others in the toolbar. */
+#scrollbutton-up:not(.menupopup-scrollbutton) {
+ margin-inline: 0 2px !important;
+}
+
+#scrollbutton-down:not(.menupopup-scrollbutton) {
+ margin-inline: 2px 0 !important;
+}
+
+/* Hide pre-tabs spacer as it isn't needed. */
+.titlebar-spacer[type="pre-tabs"] {
+ display: none !important;
+}
+
+/* Make sure that the post-tabs spacer appears. */
+.titlebar-spacer[type="post-tabs"] {
+ display: flex !important;
+}
+
+/* macOS titlebar buttons positioning. */
+@media (-moz-platform: macos) {
+ /* Compensate for padding added to the Tabs Toolbar. */
+ .titlebar-buttonbox-container {
+ margin-inline-start: -8px !important;
+
+ /* Make sure that titlebar buttons have equal spacing on all sides. */
+ & .titlebar-buttonbox {
+ margin-inline: calc((var(--tab-min-height) + var(--uc-tab-top-margin) - 14px) / 2) !important;
+ }
+ }
+}
+
+/* Linux titlebar button positioning. */
+@media (-moz-platform: linux) {
+ .titlebar-buttonbox-container {
+ /* Add space between buttons and other toolbar buttons. */
+ margin-inline: 8px 0 !important;
+
+ @media (-moz-gtk-csd-reversed-placement) {
+ /* Compensate for padding added to the Tabs Toolbar. */
+ margin-inline: -8px 8px !important;
+ }
+ }
+}
+/* #endregion */
+
+
+/*
+ MARK: Tab inner content
+*/
+/* #region */
+
+.tabbrowser-tab {
+ font-size: 12px !important;
+ padding-inline: 0 !important;
+ /* Allow shadows to appear outside the tabs. */
+ overflow-clip-margin: 8px !important;
+
+ /* Set width of tabs. */
+ &:not([pinned], [style*="max-width"])[fadein] {
+ max-width: 240px !important;
+ }
+
+ /* Enforce tab foreground colour. */
+ &:is([visuallyselected], [multiselected]) {
+ color: var(--tab-selected-textcolor) !important;
+
+ &:-moz-window-inactive {
+ color: var(--tab-selected-textcolor-inactive, var(--tab-selected-textcolor)) !important;
+ }
+ }
+}
+
+/* Tab inner content padding. */
+.tab-content {
+ padding-inline: var(--inline-tab-padding) 0 !important;
+
+ /* Pinned tab padding. */
+ &[pinned] {
+ padding: 0 var(--uc-inline-pinned-tab-padding) !important;
+ }
+
+ /* Indicator for when the title of a pinned tab changes. */
+ &[pinned][titlechanged]:not([selected]),
+ .tabbrowser-tab:is([image], [pinned]) &[attention]:not([selected]) {
+ background-position: center bottom 2px !important;
+ }
+}
+
+/* Space between tab icons and the tab titles. */
+.tab-throbber:not([pinned]),
+.tab-icon-pending:not([pinned]),
+.tab-icon-image:not([pinned]),
+.tab-sharing-icon-overlay:not([pinned]) {
+ margin-inline-end: calc(var(--inline-tab-padding) - 1px) !important;
+}
+
+/* Make sure that the tabs are the correct height. */
+#tabbrowser-tabs .tab-label-container {
+ height: var(--tab-min-height) !important;
+
+ /* Hide tab audio indicator label. */
+ & .tab-secondary-label {
+ display: none !important;
+ }
+}
+
+/* Tab close button styling. */
+.tab-close-button {
+ margin-inline-end: 8px !important;
+ width: 17px !important;
+ height: 17px !important;
+ padding: 4px !important;
+ border-radius: var(--toolbarbutton-border-radius) !important;
+}
+
+/* Ensure that unselected tabs use full opacity and correct colours.
+ * Also ensures that the tab's icon is always visible.
+ */
+.tab-label-container:not([selected="true"], [multiselected]),
+.tab-icon-stack[indicator-replaces-favicon] > :not(.tab-icon-overlay) {
+ opacity: 1 !important;
+}
+
+/* Change width of the gradient mask located on the right of the tab labels. */
+#tabbrowser-tabs[closebuttons="activetab"] .tabbrowser-tab .tab-label-container {
+ --tab-label-mask-size: 1em !important;
+}
+
+/* Tab container indicator. */
+.tabbrowser-tab[usercontextid] {
+ & .tab-context-line {
+ height: 2px !important;
+ border-radius: 2px !important;
+ margin: 2px 7px 0 !important;
+ }
+
+ &[selected] .tab-context-line {
+ margin-inline: 9px !important;
+ }
+}
+
+/*
+ MARK: Sound playing indicator
+*/
+
+/* Move the audio indicator to the right of the tab's icon. */
+#tabbrowser-tabs:not([closebuttons="activetab"]) .tab-icon-overlay:not([pinned]) {
+ margin-inline: 22px 6px !important;
+}
+
+/* When there is no tab icon, move indicator to the left. */
+#tabbrowser-tabs .tabbrowser-tab:not([image]) .tab-icon-overlay:not([pinned]) {
+ margin-inline: 0px 6px !important;
+}
+
+/* Overlay the audio indicator onto the tab icon when there isn't enough space. */
+.tab-icon-overlay:not([crashed]):is([pinned], [sharing]),
+#tabbrowser-tabs[closebuttons="activetab"] .tab-icon-overlay:not([crashed]) {
+ top: -5.5px !important;
+ inset-inline-end: -6px !important;
+}
+
+/* Set colour for the overlay tab audio indicator. */
+#tabbrowser-tabs[closebuttons="activetab"] {
+ & .tab-icon-overlay:is([soundplaying], [muted], [activemedia-blocked]):not([crashed]) {
+ stroke: var(--tab-icon-overlay-stroke, light-dark(white, black)) !important;
+ color: var(--tab-icon-overlay-fill, light-dark(black, white)) !important;
+ fill-opacity: 1 !important;
+
+ &:hover {
+ background-color: var(--tab-icon-overlay-stroke, light-dark(white, black)) !important;
+ }
+ }
+}
+
+/* Add border radius to the tab audio indicator. */
+.tab-icon-overlay:is([soundplaying], [muted], [activemedia-blocked]):not([crashed]) {
+ border-radius: var(--toolbarbutton-border-radius) !important;
+ padding: 0 !important;
+}
+
+/* Ensure the audio indicator is visible when needed. */
+.tab-icon-stack:is([soundplaying], [muted], [activemedia-blocked]) > .tab-icon-overlay {
+ opacity: 1 !important;
+}
+/* #endregion */
+
+
+/*
+ MARK: Background and corners
+*/
+/* #region */
+
+.tab-background {
+ border-radius: var(--tab-border-radius);
+ border-bottom-left-radius: 0 !important;
+ border-bottom-right-radius: 0 !important;
+ margin-block: 0 !important;
+ border: 0 !important;
+ position: relative !important;
+ --uc-tab-corner-bg: transparent;
+ --uc-tab-corner-outline: transparent;
+
+ /* Both rounded bottom corners. */
+ &::before,
+ &::after {
+ content: "" !important;
+ position: absolute !important;
+ width: var(--tab-border-radius) !important;
+ aspect-ratio: 1 / 1;
+ bottom: 0 !important;
+ pointer-events: none !important;
+ clip-path: inset(0);
+ }
+
+ /* Bottom left corner. */
+ &::before {
+ border-bottom-right-radius: var(--tab-border-radius) !important;
+ left: 0 !important;
+ translate: calc(-1 * var(--tab-border-radius)) 0 !important;
+ box-shadow:
+ /* First shadow is a 1px outline for better theming support. */
+ -1px -1px var(--uc-tab-corner-outline) inset,
+ /* Second shadow is to add the background colour to the corner. */
+ 0 0 0 var(--tab-border-radius) var(--uc-tab-corner-bg) !important;
+ }
+
+ /* Bottom right corner. */
+ &::after {
+ border-bottom-left-radius: var(--tab-border-radius) !important;
+ right: 0 !important;
+ translate: var(--tab-border-radius) 0 !important;
+ box-shadow:
+ /* First shadow is a 1px outline for better theming support. */
+ 1px -1px var(--uc-tab-corner-outline) inset,
+ /* Second shadow is to add the background colour to the corner. */
+ 0 0 0 var(--tab-border-radius) var(--uc-tab-corner-bg) !important;
+ }
+
+ /* Make sure that the bottom corners have the same background colour. */
+ &:is([selected], [multiselected]) {
+ --uc-tab-corner-bg: var(--tab-selected-bgcolor, var(--lwt-selected-tab-background-color, var(--toolbar-bgcolor)));
+ --uc-tab-corner-outline: var(--lwt-tab-line-color, transparent);
+ /* Disable tab outlines when selected. */
+ outline: none !important;
+ }
+
+ /* Tab hover background colour. */
+ .tabbrowser-tab:hover &:not([selected], [multiselected]) {
+ background-color: color-mix(in srgb, currentColor 8%, transparent) !important;
+ --uc-tab-corner-bg: color-mix(in srgb, currentColor 8%, transparent) !important;
+
+ /* When in light mode, the hover colour should be white. */
+ #TabsToolbar:not([brighttext]) & {
+ background-color: rgb(255 255 255 / .3) !important;
+ --uc-tab-corner-bg: rgb(255 255 255 / .3) !important;
+
+ @media (-moz-bool-pref: "uc.tweak.floating-tabs") {
+ background-color: var(--toolbar-bgcolor) !important;
+ --uc-tab-corner-bg: var(--toolbar-bgcolor) !important;
+ }
+ }
+ }
+
+ /* When tabs are selected but not active, they should have a partially
+ * transparent background. */
+ #tabbrowser-tabs &[multiselected]:not([selected]) {
+ box-shadow: none !important;
+ opacity: 0.7 !important;
+ }
+}
+
+/* Disable bottom left rounded corner to prevent overlapping transparent tabs.
+ *
+ * If a tab is selected, then the next tab's bottom-left corner should be
+ * inverted to prevent overlap with the transparent backgrounds.
+ *
+ * If the next tab is hidden, then find the next visible tab which would be
+ * positioned next to the active tab.
+ */
+.tabbrowser-tab:is([selected], [multiselected]):not([hidden]) {
+ & + .tabbrowser-tab .tab-background:not([selected]),
+ & + .tabbrowser-tab[hidden] ~ .tabbrowser-tab:not([hidden]):is([hidden] + *) .tab-background:not([selected]) {
+ border-bottom-left-radius: var(--tab-border-radius) !important;
+
+ &::before {
+ --uc-tab-corner-bg: transparent !important;
+ }
+ }
+}
+/* #endregion */
+
+
+/*
+ MARK: Tab separators
+*/
+/* #region */
+
+.tabbrowser-tab .tab-stack {
+ /* Both side separators. */
+ &::before,
+ &::after {
+ content: "";
+ position: absolute;
+ height: var(--uc-tab-separator-height);
+ inset-block: 0;
+ margin-block: auto;
+ border-left: 1px solid transparent;
+
+ }
+
+ /* Fractional scaling adjustments (150%, 175%, etc.) */
+ @media (1dppx < resolution < 2dppx) {
+ &::before,
+ &::after {
+ border-left-width: 1.5px !important;
+ }
+ }
+
+ /* Left side separators. */
+ &::before {
+ left: 0;
+ }
+
+ /* Right side separators. */
+ &::after {
+ right: 0;
+ }
+}
+
+/* Set separator color and add separator for last visible tab. */
+.tabbrowser-tab:not([selected], [multiselected], :hover) {
+ /* All tabs. */
+ & .tab-stack::before,
+ /* Last visible tab. */
+ &:nth-last-child(1 of .tabbrowser-tab:not([hidden])) .tab-stack::after,
+ /* Last visible pinned tab when overflowed. */
+ #tabbrowser-tabs[overflow] &:nth-last-child(1 of .tabbrowser-tab[pinned]:not([hidden])) .tab-stack::after {
+ border-color: color-mix(in srgb, currentColor 34%, transparent);
+ }
+}
+
+/* Hide tab separator when previous tab is hovered or selected.
+ *
+ * If a tab is selected, then the next tab's left separator should be hidden.
+ *
+ * If the next tab is hidden, then find the next visible tab.
+ */
+.tabbrowser-tab:is([selected], [multiselected], :hover):not([hidden]) {
+ & + .tabbrowser-tab .tab-stack::before,
+ & + .tabbrowser-tab[hidden] ~ .tabbrowser-tab:not([hidden]):is([hidden] + *) .tab-stack::before {
+ border-color: transparent !important;
+ }
+}
+
+/* Hide the first tab's separator for specific buttons before the tabs.
+ *
+ * If in private browsing mode, the Firefox View button is hidden, so the
+ * separator should also be hidden as long as there are no other buttons before
+ * it. If the Firefox account button is just before the tabs, then the separator
+ * should stay hidden.
+ *
+ * If the button directly before the tabs is the Firefox account button, the
+ * separator should be hidden.
+ *
+ * If there are no buttons before the tabs, hide the separator.
+ */
+:root[privatebrowsingmode] #firefox-view-button + #tabbrowser-tabs:not(.toolbarbutton-1:not(#fxa-toolbar-menu-button) + #firefox-view-button + #tabbrowser-tabs),
+#fxa-toolbar-menu-button + #tabbrowser-tabs,
+#tabbrowser-tabs:first-child {
+ & .tabbrowser-tab:nth-child(1 of .tabbrowser-tab:not([hidden])) .tab-stack::before {
+ border-color: transparent !important;
+ }
+}
+/* #endregion */
+
+
+/*
+ MARK: Tab shadows
+*/
+/* #region */
+
+/* Tab and toolbar shadows. */
+@media not (-moz-bool-pref: "uc.tweak.rounded-corners") {
+ /* Edge now removes the shadow when rounded corners are enabled. */
+ :root,
+ :root .tabbrowser-tab {
+ /* Light mode shadows. */
+ --uc-titlebar-shadow:
+ 0 -1px var(--tabs-navbar-shadow-color, transparent) inset,
+ 0 -3px 2px -3px rgb(0 0 0 / .2) inset;
+ --uc-tab-shadow:
+ 0 0 0 1px var(--lwt-tab-line-color, transparent),
+ 0 4px 5px rgb(0 0 0 / .21),
+ 0 0px 2px rgb(0 0 0 / .18);
+
+ & [brighttext],
+ & [brighttext] .tabbrowser-tab {
+ /* Dark mode shadows. */
+ --uc-titlebar-shadow:
+ 0 -1px var(--tabs-navbar-shadow-color, transparent) inset,
+ 0 -3px 2px -3px rgb(0 0 0 / .7) inset;
+ --uc-tab-shadow:
+ 0 0 0 1px var(--lwt-tab-line-color, transparent),
+ 0 5px 7px rgb(0 0 0 / .44),
+ 0 0px 2px rgb(0 0 0 / .7);
+ }
+ }
+}
+
+/* Apply tab shadows. */
+#tabbrowser-tabs .tab-background:is([selected], [multiselected]),
+#TabsToolbar #firefox-view-button[open] > .toolbarbutton-icon {
+ box-shadow: var(--uc-tab-shadow) !important;
+}
+
+/* Apply toolbar shadows. */
+#TabsToolbar {
+ box-shadow: var(--uc-titlebar-shadow) !important;
+}
+
+/* Prevent interference with context menu arrowscrollbox. */
+#tabbrowser-arrowscrollbox {
+ --uc-padding-top: 4px;
+ --uc-margin-top: -4px;
+ --uc-padding-inline-end: var(--tab-border-radius)
+}
+
+/* Make room for the tab shadows so they aren't clipped at the top. */
+.scrollbox-clip > scrollbox {
+ padding-top: var(--uc-padding-top, 0) !important;
+ margin-top: var(--uc-margin-top, 0) !important;
+ /* Used to fix tab overflow issue with rounded corners. */
+ padding-inline-end: var(--uc-padding-inline-end, 0) !important;
+}
+
+/* Add some room horizontally for the tab shadows and rounded corners. */
+#tabbrowser-tabs {
+ &:not([overflow]) {
+ margin-inline-start: -8px !important;
+ margin-inline-end: calc(-1 * var(--tab-border-radius)) !important;
+
+ :where(#tabbrowser-arrowscrollbox .tabbrowser-tab:nth-child(1 of .tabbrowser-tab:not([hidden]))) {
+ margin-inline-start: 8px !important;
+ }
+ }
+}
+
+/* Clip the bottom of the tabs so the shadows don't bleed into other areas. */
+#tabbrowser-tabs[positionpinnedtabs] > #tabbrowser-arrowscrollbox > .tabbrowser-tab[pinned] {
+ clip-path: inset(-8px -8px 0) !important;
+}
+/* #endregion */
+
+
+/*
+ MARK: Private browsing icon
+*/
+/* #region */
+
+:root[privatebrowsingmode="temporary"] {
+ /* Move the other content in the Tabs Toolbar in-front of the indicator. */
+ & #TabsToolbar .toolbar-items,
+ & #TabsToolbar .titlebar-buttonbox-container {
+ position: relative;
+ z-index: 1;
+ }
+
+ /* Hide the post tab spacer as it is not needed. */
+ .titlebar-spacer[type="post-tabs"] {
+ display: none !important;
+ }
+}
+
+/* String for the custom label. */
+:root,
+:root[lang^="en"] {
+ --uc-string-private: "Private";
+}
+
+/* Appearance & sizing for the private browsing indicator. */
+#private-browsing-indicator-with-label {
+ position: relative !important;
+ isolation: isolate;
+ font-size: 12px;
+
+ /* Allow space for the gradient to underlay other toolbar items. */
+ margin-inline: -16px -16px !important;
+ padding-inline: 32px 24px !important;
+ color: var(--button-primary-color, var(--toolbar-bgcolor)) !important;
+ text-shadow: none !important;
+ background: var(--uc-gradient);
+ --uc-bg-color: var(--button-primary-bgcolor, var(--toolbarbutton-icon-fill-attention));
+
+ /* Primay gradient, fades to transparent on the left. */
+ --uc-gradient: linear-gradient(to right, transparent, var(--uc-bg-color) 35%);
+
+ /* Alternate gradient, fades to transparent on both sides. */
+ --uc-gradient-alt: linear-gradient(to right, transparent, var(--uc-bg-color) 25%, var(--uc-bg-color) 75%, transparent);
+
+ /* If the titlebar buttons are on the right, then use the alternate gradient
+ * if the menu bar is not permanently enabled. */
+ @media (-moz-platform: windows),
+ (-moz-gtk-csd-available) and (not (-moz-gtk-csd-reversed-placement)) {
+ :root[tabsintitlebar] #toolbar-menubar:not([autohide="false"]) ~ #TabsToolbar & {
+ background: var(--uc-gradient-alt);
+ }
+ }
+
+ /* Private browsing icon size. */
+ & .private-browsing-indicator-icon {
+ height: 24px !important;
+ width: 24px !important;
+ }
+
+ /* Change "Private Browsing" text to "Private" (English locale only). */
+ :root:is([lang^="en"]) & {
+ /* Hide original label. */
+ & > label {
+ display: none !important;
+ }
+
+ /* Add custom "Private" label. */
+ &::after {
+ content: var(--uc-string-private);
+ margin-block: 1px 2px;
+ margin-inline: 6px 5px;
+ }
+ }
+}
+/* #endregion */
diff --git a/themes/firefox/chrome/toolbar/urlbar.css b/themes/firefox/chrome/toolbar/urlbar.css
new file mode 100644
index 0000000..b035de4
--- /dev/null
+++ b/themes/firefox/chrome/toolbar/urlbar.css
@@ -0,0 +1,262 @@
+/* Edge-Frfox - urlbar.css
+ * https://github.com/bmFtZQ/edge-frfox */
+
+/*
+ MARK: Variables
+*/
+:root {
+ --urlbar-min-height: 30px !important;
+ --urlbarView-item-inline-padding: calc(1px + var(--uc-urlbar-inline-padding) + var(--uc-urlbar-icon-inline-padding)) !important;
+ --urlbar-icon-border-radius: 99px !important;
+ --urlbar-icon-padding: calc(var(--toolbarbutton-inner-padding) - 2px) !important;
+ --urlbar-margin-inline: 6px !important;
+ --identity-box-margin-inline: 6px !important;
+ --uc-urlbar-icon-inline-padding: var(--uc-toolbarbutton-inner-inline-padding);
+ --uc-urlbar-inline-padding: 5px;
+ --uc-urlbar-shadow: 0 0 4px rgb(0 0 0 / .1);
+ --urlbarView-rich-suggestion-default-icon-size: 32px !important;
+
+ /* urlbar height */
+ & #urlbar-container {
+ --urlbar-container-height: calc(8px + 16px + var(--toolbarbutton-inner-padding) * 2) !important;
+ }
+
+ & #urlbar {
+ --urlbar-toolbar-height: calc(8px + 16px + var(--toolbarbutton-inner-padding) * 2) !important;
+ --urlbar-height: calc(16px + var(--toolbarbutton-inner-padding) * 2) !important;
+ --urlbar-min-height: calc(16px + var(--toolbarbutton-inner-padding) * 2) !important;
+ }
+
+ /* Spacing for urlbar suggestion icons. */
+ .urlbarView-row {
+ --urlbarView-icon-margin-start: 0px !important;
+ --urlbarView-icon-margin-end: calc(var(--uc-urlbar-icon-inline-padding) + var(--identity-box-margin-inline)) !important;
+ }
+}
+
+/*
+ MARK: URL bar
+*/
+#urlbar-background,
+#searchbar {
+ border-radius: calc(var(--urlbar-icon-border-radius) + 2px) !important;
+
+ /* Shadow for URL bar, only appears in light mode. */
+ :root:not([lwtheme]) #nav-bar:not([brighttext]) & {
+ box-shadow: var(--uc-urlbar-shadow, none);
+ }
+
+ /* Appearance when the URL bar is expanded. */
+ #urlbar[open] & {
+ border-radius: 8px !important;
+ border-color: transparent !important;
+ box-shadow: 0 10px 16px rgb(0 0 0 / 0.18), 0 3px 5px rgb(0 0 0 / 0.33) !important;
+ outline: 0.5px solid var(--arrowpanel-border-color) !important;
+
+ :root:not([lwtheme]) & {
+ outline-color: var(--panel-separator-color) !important;
+ }
+ }
+}
+
+/* Add padding to sides of URL bar. */
+:is(#urlbar-input-container, .urlbar-input-container),
+#searchbar {
+ padding-inline: var(--uc-urlbar-inline-padding) !important;
+}
+
+/* URL bar suggestions container. */
+.urlbarView {
+ margin-inline: 0 !important;
+ width: 100% !important;
+ border-inline: 0 !important;
+ padding-block: 0 !important;
+
+ & .urlbarView-body-inner {
+ width: 100% !important;
+ margin-inline: 0 !important;
+ }
+
+ /* Remove padding from top of URL bar results, not needed as URL bar input already has padding. */
+ & .urlbarView-results {
+ padding-block-start: 0 !important;
+ }
+}
+
+/* URL bar item. */
+.urlbarView-row {
+ padding-block: 0 !important;
+ border: none !important;
+ border-radius: 0 !important;
+
+ & .urlbarView-row-inner {
+ padding-block: 8px !important;
+ }
+
+ /* Vertically align search suggestion thumbnail images. */
+ &[rich-suggestion] > .urlbarView-row-inner > .urlbarView-favicon {
+ margin-inline-start: calc(var(--urlbarView-icon-margin-start) + (16px - var(--urlbarView-rich-suggestion-default-icon-size)) / 2) !important;
+ margin-inline-end: calc(var(--urlbarView-icon-margin-end) + (16px - var(--urlbarView-rich-suggestion-default-icon-size)) / 2) !important;
+ }
+}
+
+/* Add highlighted marker to the left of selected URL bar items. */
+.urlbarView-row:not([type="tip"], [type="dynamic"])[selected] > .urlbarView-row-inner,
+.urlbarView-row-inner[selected] {
+ box-shadow: 3px 0 var(--uc-urlbarView-accent-color, var(--toolbar-field-focus-border-color)) inset !important;
+}
+
+/* Keep URL bar in place when expanding. */
+#urlbar[breakout][breakout-extend] {
+ left: 0 !important;
+ width: 100% !important;
+}
+
+/* Search engine selector */
+.search-one-offs:not([hidden]) {
+ padding-block: 6px !important;
+
+ & .searchbar-engine-one-off-item {
+ min-width: 30px !important;
+ height: 30px !important;
+ }
+
+ .urlbarView:not([noresults]) > & {
+ border-color: var(--urlbarView-separator-color) !important;
+ }
+
+ #urlbar-anon-search-settings {
+ margin-inline-end: 8px !important;
+ }
+}
+
+/* Search engine indicator. */
+#urlbar-search-mode-indicator {
+ :root:not([lwtheme]) & {
+ background-color: var(--urlbar-box-hover-bgcolor) !important;
+ }
+
+ & #urlbar-search-mode-indicator-title {
+ font-size: 0.9em !important;
+ }
+}
+
+/* Remove border between URL bar input and suggestions. */
+#urlbar[open] > .urlbarView > .urlbarView-body-outer > .urlbarView-body-inner {
+ border-top: 0 !important;
+}
+
+/*
+ MARK: URL bar buttons
+*/
+.urlbar-page-action,
+#urlbar-go-button,
+.search-go-button,
+#tracking-protection-icon-container,
+#identity-icon-box {
+ padding-inline: var(--uc-urlbar-icon-inline-padding) !important;
+ width: calc(var(--uc-urlbar-icon-inline-padding) * 2 + 16px) !important;
+}
+
+/* Site information and Permissions buttons. */
+#identity-icon-box,
+#identity-permission-box,
+.notification-anchor-icon {
+ padding-inline: var(--uc-urlbar-icon-inline-padding) !important;
+}
+
+/* Zoom level and tab container indicators. */
+#userContext-icons,
+#urlbar-zoom-button {
+ padding-inline: var(--uc-urlbar-icon-inline-padding) !important;
+ margin-block: 0 !important;
+ margin-inline: 0 !important;
+}
+
+/* Move tracking protection button. */
+#tracking-protection-icon-container,
+#page-action-buttons {
+ order: 2 !important;
+}
+
+/* Hide tracking protection button when not hovering over URL bar. */
+#urlbar-container:not(:hover) #tracking-protection-icon-container:not([open]) {
+ visibility: collapse !important;
+}
+
+/* Focus border for URL bar. */
+#urlbar[focused="true"]:not([suppress-focus-border]) > #urlbar-background,
+#searchbar:focus-within {
+ outline-offset: calc(var(--focus-outline-width) * -1 + 1px) !important;
+}
+
+/* Pin icon for URL bar suggested sites. */
+.urlbarView-row[pinned] > .urlbarView-row-inner > .urlbarView-no-wrap > .urlbarView-type-icon {
+ fill: var(--toolbar-field-color) !important;
+}
+
+#urlbar-input::placeholder,
+.searchbar-textbox::placeholder {
+ opacity: 0.6 !important;
+}
+
+/* Make the lock icon brighter in dark mode. */
+#nav-bar[brighttext] #identity-box:not([pageproxystate="invalid"]) #identity-icon {
+ fill-opacity: calc(var(--urlbar-icon-fill-opacity) * 1.8) !important;
+}
+
+/* Make the URL bar label opaque in light mode, matching the icons. */
+#nav-bar:not([brighttext]) #identity-box #identity-icon-label {
+ opacity: var(--urlbar-icon-fill-opacity) !important;
+}
+
+/*
+ MARK: URL bar label
+*/
+
+/* Label on the left of the URL bar, shown when viewing Firefox or extension pages. */
+#identity-box[pageproxystate="valid"]:is(.notSecureText, .chromeUI, .extensionPage) > .identity-box-button {
+ position: relative;
+ width: unset !important;
+
+ /* Spacing between the icon and label. */
+ & #identity-icon-label {
+ padding-inline-start: 8px !important;
+ }
+
+ /* Separator to the right of the label. */
+ &::after {
+ content: "";
+ position: absolute;
+ height: 16px;
+ border-right: 1px solid currentColor;
+ right: 0;
+ inset-block: 0;
+ margin-block: auto;
+ opacity: 0;
+ }
+
+ /* Fractional scaling adjustments (150%, 175%, etc.) */
+ @media (1dppx < resolution < 2dppx) {
+ &::after {
+ border-right-width: 1.5px !important;
+ }
+ }
+
+ /* Remove background from urlbar box. */
+ &:not(:hover, [open]) {
+ background-color: transparent !important;
+
+ /* Separator opacity */
+ &::after {
+ opacity: 0.375;
+ }
+ }
+
+ /* Fade transition for separator. */
+ @media not (prefers-reduced-motion) {
+ &::after {
+ transition: opacity 0.2s ease;
+ }
+ }
+}
diff --git a/themes/firefox/chrome/tweaks/hide-tabs-bar.css b/themes/firefox/chrome/tweaks/hide-tabs-bar.css
new file mode 100644
index 0000000..070bf67
--- /dev/null
+++ b/themes/firefox/chrome/tweaks/hide-tabs-bar.css
@@ -0,0 +1,252 @@
+/* Edge-Frfox - tweaks/hide-tabs-bar.css
+ * https://github.com/bmFtZQ/edge-frfox */
+
+/*
+ MARK: Hide tabs toolbar
+*/
+@media (-moz-bool-pref: "uc.tweak.hide-tabs-bar"),
+(-moz-bool-pref: "uc.tweak.hide-tabs-bar.no-window-controls") {
+ /* Only hide the tabs toolbar if one of the following sidebar extensions is
+ * active: Sidebery, Tree Style Tab, or Tab Center Reborn. */
+ :root:not([customizing]):has(#sidebar-box[sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"]:not([hidden])),
+ :root:not([customizing]):has(#sidebar-box[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"]:not([hidden])),
+ :root:not([customizing]):has(#sidebar-box[sidebarcommand="tabcenter-reborn_ariasuni-sidebar-action"]:not([hidden])) {
+ /* Height of navbar, used for determining height and position of window controls */
+ --uc-navbar-height: 38px;
+ /* Drag space next to the window controls, allows you to move the window more easily */
+ --uc-titlebar-drag-space: 40px;
+
+ /* Hide the tabs */
+ #TabsToolbar {
+ visibility: collapse !important;
+ }
+
+ /* Fix issue with missing window controls. */
+ &[tabsintitlebar] #titlebar {
+ will-change: auto !important;
+ }
+
+ /* Add some padding to the top of the navbar */
+ &[tabsintitlebar] #nav-bar {
+ padding-top: var(--uc-tab-top-margin, 0) !important;
+ }
+
+ /* Set background colour of the menu bar to maintain consistency with the navbar */
+ @media not (-moz-bool-pref: "uc.tweak.floating-tabs") {
+ #toolbar-menubar {
+ background-color: var(--toolbar-bgcolor) !important;
+ color: var(--toolbar-color) !important;
+ }
+ }
+
+ /* Make sure window controls are removed in full screen mode. */
+ &[inDOMFullscreen] #TabsToolbar .titlebar-buttonbox,
+ &[inFullscreen] #navigator-toolbox[style*="margin-top"] #TabsToolbar .titlebar-buttonbox {
+ visibility: collapse !important;
+ }
+
+ /* Disable the replacement window controls if tweak is enabled. */
+ @media not (-moz-bool-pref: "uc.tweak.hide-tabs-bar.no-window-controls") {
+ /*
+ MARK: macOS styles
+ */
+ @media (-moz-platform: macos) {
+ /* Offset navbar contents to make space for the window controls */
+ &[tabsintitlebar]:not([inFullscreen]) #nav-bar {
+ padding-left: calc(70px + var(--uc-titlebar-drag-space)) !important;
+
+ /* Remove the padding from the side of the navbar */
+ #nav-bar-customization-target > :is(toolbarbutton, toolbaritem):first-child {
+ padding-inline-start: 0 !important;
+ }
+ }
+
+ /* Positioning of the window controls */
+ #TabsToolbar .titlebar-buttonbox-container {
+ visibility: visible !important;
+ position: fixed !important;
+ height: calc(var(--uc-navbar-height) + var(--uc-tab-top-margin, 0px));
+ margin: 0 !important;
+ top: 0;
+ left: 0;
+
+ .titlebar-buttonbox {
+ margin-inline: calc((var(--uc-navbar-height) + var(--uc-tab-top-margin, 0px) - 14px) / 2) !important;
+ }
+ }
+ }
+
+ /*
+ MARK: Windows styles
+ */
+ @media (-moz-platform: windows) {
+ /* Offset navbar contents to make space for the window controls */
+ &:where([inFullscreen], [tabsintitlebar]) #nav-bar {
+ padding-inline-end: calc(140px + var(--uc-titlebar-drag-space)) !important;
+
+ /* Remove the padding from the side of the navbar */
+ #PanelUI-menu-button {
+ padding-inline-end: 0 !important;
+ }
+ }
+
+ /* Positioning of the window controls */
+ :where(#toolbar-menubar[inactive]) + #TabsToolbar .titlebar-buttonbox {
+ visibility: visible !important;
+ position: fixed !important;
+ top: 0;
+ inset-inline-end: 0;
+ height: calc(var(--uc-navbar-height) + var(--uc-tab-top-margin, 0)) !important;
+ z-index: 100 !important;
+ color: var(--toolbar-color) !important;
+ }
+ }
+
+ /*
+ MARK: Linux/GTK styles
+ */
+ @media (-moz-gtk-csd-minimize-button),
+ (-moz-gtk-csd-maximize-button),
+ (-moz-gtk-csd-close-button) {
+ /* Width of single window control button. */
+ --uc-window-control-btn: 34px;
+
+ /* Navbar space reserved for one button. */
+ --uc-window-controls-width: var(--uc-window-control-btn);
+
+ /* Navbar space reserved for two buttons. */
+ @media (-moz-gtk-csd-minimize-button) and (-moz-gtk-csd-maximize-button),
+ (-moz-gtk-csd-minimize-button) and (-moz-gtk-csd-close-button),
+ (-moz-gtk-csd-maximize-button) and (-moz-gtk-csd-close-button) {
+ --uc-window-controls-width: calc(var(--uc-window-control-btn) * 2);
+ }
+
+ /* Navbar space reserved for three buttons. */
+ @media (-moz-gtk-csd-minimize-button) and (-moz-gtk-csd-maximize-button) and (-moz-gtk-csd-close-button) {
+ --uc-window-controls-width: calc(var(--uc-window-control-btn) * 3);
+ }
+
+ /* Offset navbar contents to make space for the window controls */
+ &:where([inFullscreen], [tabsintitlebar]) #nav-bar {
+ /* Window controls on the right. */
+ @media not (-moz-gtk-csd-reversed-placement) {
+ padding-inline-end: calc(var(--uc-window-controls-width, 0px) + var(--uc-titlebar-drag-space)) !important;
+
+ /* Remove the padding from the side of the navbar */
+ #PanelUI-menu-button {
+ padding-inline-end: 0 !important;
+ }
+ }
+
+ /* Window controls on the left. */
+ @media (-moz-gtk-csd-reversed-placement) {
+ padding-inline-start: calc(var(--uc-window-controls-width, 0px) + var(--uc-titlebar-drag-space)) !important;
+
+ /* Remove the padding from the side of the navbar */
+ #nav-bar-customization-target > :is(toolbarbutton, toolbaritem):first-child {
+ padding-inline-start: 0 !important;
+ }
+ }
+ }
+
+ /* Positioning of the window controls */
+ :where(#toolbar-menubar[inactive]) + #TabsToolbar .titlebar-buttonbox {
+ visibility: visible !important;
+ position: fixed !important;
+ top: 0;
+ height: calc(var(--uc-navbar-height) + var(--uc-tab-top-margin, 0)) !important;
+ z-index: 100 !important;
+ inset-inline: auto 0;
+
+ @media (-moz-gtk-csd-reversed-placement) {
+ inset-inline: 0 auto !important;
+ }
+ }
+ }
+ }
+ }
+}
+
+/*
+ MARK: Sidebar styles
+*/
+#sidebar-box:where([sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"]:not([hidden])),
+#sidebar-box:where([sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"]:not([hidden])),
+#sidebar-box:where([sidebarcommand="tabcenter-reborn_ariasuni-sidebar-action"]:not([hidden])) {
+ --sidebar-background-color: var(--toolbar-bgcolor) !important;
+ --sidebar-text-color: var(--toolbar-color) !important;
+ --sidebar-border-color: var(--chrome-content-separator-color) !important;
+ position: relative !important;
+
+ /* Floating tabs tweak uses the tab toolbar background instead. */
+ @media (-moz-bool-pref: "uc.tweak.floating-tabs") {
+ --sidebar-background-color: var(--lwt-accent-color) !important;
+ --sidebar-text-color: var(--lwt-text-color) !important;
+
+ &:-moz-window-inactive {
+ --sidebar-background-color: var(--lwt-accent-color-inactive) !important;
+ --sidebar-text-color: var(--lwt-text-color-inactive) !important;
+ }
+ }
+
+ #sidebar-header {
+ border-bottom: 0 !important;
+ padding: 10px 4px 0 !important;
+ overflow: hidden;
+ position: relative;
+
+ #sidebar-switcher-target,
+ #sidebar-close {
+ width: auto !important;
+ height: 28px !important;
+ padding: 0 8px !important;
+ border: none !important;
+ margin-inline: 0 !important;
+ }
+
+ #sidebar-spacer {
+ min-width: 8px !important;
+ }
+ }
+
+ /* Sidebar positioned on the left. */
+ &:not([positionend]) {
+ border-inline-end: 1px solid var(--sidebar-border-color);
+ /* Use less padding on the side with the border. */
+ padding-inline: 4px 3px;
+ }
+
+ /* Sidebar positioned on the right. */
+ &[positionend] {
+ border-inline-start: 1px solid var(--sidebar-border-color);
+ /* Use less padding on the side with the border. */
+ padding-inline: 3px 4px;
+ }
+
+ /* Rounded corners tweak optimisations. */
+ @media (-moz-bool-pref: "uc.tweak.rounded-corners") {
+ /* Remove padding and border from sidebar. */
+ &:not([positionend]),
+ &[positionend] {
+ border-inline: none;
+ padding-inline: 0;
+ }
+
+ @media (-moz-bool-pref: "uc.tweak.theme.sidebery") {
+ border-radius: 0 !important;
+ box-shadow: none !important;
+
+ &:not([positionend]) {
+ padding-inline-end: 3px;
+ }
+
+ &[positionend] {
+ padding-inline-start: 3px;
+ }
+ }
+
+ #sidebar-header {
+ padding-top: 4px !important;
+ }
+ }
+}
diff --git a/themes/firefox/chrome/tweaks/shrink-sideberry.css b/themes/firefox/chrome/tweaks/shrink-sideberry.css
new file mode 100644
index 0000000..38425ad
--- /dev/null
+++ b/themes/firefox/chrome/tweaks/shrink-sideberry.css
@@ -0,0 +1,19 @@
+/* Make Sidebery look good */
+#sidebar{
+ --uc-sidebar-width: 150px;
+ min-width: var(--uc-sidebar-width) !important;
+ width: var(--uc-sidebar-width) !important;
+ max-width: var(--uc-sidebar-width) !important;
+}
+#sidebar-header{
+ display: none;
+ min-width: var(--uc-sidebar-width) !important;
+ width: var(--uc-sidebar-width) !important;
+ max-width: var(--uc-sidebar-width) !important;
+}
+#sidebar-box{
+ min-width: var(--uc-sidebar-width) !important;
+ width: var(--uc-sidebar-width) !important;
+ max-width: var(--uc-sidebar-width) !important;
+}
+#sidebar-splitter{ display: none }
diff --git a/themes/firefox/chrome/tweaks/sidebery.css b/themes/firefox/chrome/tweaks/sidebery.css
new file mode 100644
index 0000000..4e45d01
--- /dev/null
+++ b/themes/firefox/chrome/tweaks/sidebery.css
@@ -0,0 +1,334 @@
+/* Edge-Frfox - sidebery.css
+ * https://github.com/bmFtZQ/edge-frfox
+ */
+
+/* This file needs to loaded into userContent.css so the @media rules can be
+ * used for automatic tweaks configuration. */
+
+/* Since the UUIDs are randomly generated, only a generic path can be specified,
+ * this can cause conflicts with other extensions that use the same file
+ * structure, but is unlikely to cause any major issues. */
+@-moz-document regexp("^moz-extension://.*?/sidebar/sidebar.html") {
+ /* Fix issues with rounded corners rendering. */
+ :root {
+ color-scheme: light dark !important;
+ background: light-dark(#aaa, #222) !important;
+ }
+
+ /* On macOS, ensure that text is rendered correctly. */
+ body {
+ -moz-osx-font-smoothing: auto !important;
+ }
+
+ /*
+ MARK: Default theme colours
+ */
+
+ /* macOS light mode. */
+ body[style*="--s-frame-fg: rgba(0, 0, 0, 0.847)"],
+ /* macOS dark mode. */
+ body[style*="--s-frame-fg: rgba(255, 255, 255, 0.847)"],
+ /* Windows light mode. */
+ body[style*="--s-frame-bg: rgb(240, 240, 240)"],
+ /* Windows dark mode. */
+ body[style*="--s-frame-bg: rgb(35, 34, 43)"],
+ /* No theme enabled. */
+ body:not([style*="--s-frame-bg"]) {
+ --s-frame-bg: light-dark(#cecece, #1C1C1C) !important;
+ --s-frame-fg: light-dark(#000, #FFF) !important;
+ --s-toolbar-bg: light-dark(#f7f7f7, #3B3B3B) !important;
+ --s-toolbar-fg: light-dark(#252525, #fff) !important;
+ --s-act-el-bg: light-dark(#fff, #4D4D4D) !important;
+ --s-act-el-fg: light-dark(#000, #fff) !important;
+ --s-act-el-border: transparent !important;
+ --s-popup-bg: light-dark(#fff, #4A4A4A) !important;
+ --s-popup-fg: light-dark(#1c1c1c, #fff) !important;
+ --s-popup-border: light-dark(#dadada, #636363) !important;
+ --s-accent: light-dark(#0078D4, #63ADE5) !important;
+ }
+
+ /* Linux/GTK support, side effect: Firefox themes do not work. */
+ @media (-moz-gtk-csd-available) {
+ body:not([style*="--s-frame-bg"]) {
+ --s-frame-bg: light-dark(color-mix(in srgb, ActiveCaption 90%, black), ActiveCaption) !important;
+ --s-frame-fg: CaptionText !important;
+ --s-toolbar-bg: light-dark(-moz-dialog, color-mix(in srgb, -moz-dialog 92%, white)) !important;
+ --s-toolbar-fg: -moz-dialogtext !important;
+ --s-act-el-bg: light-dark(-moz-dialog, color-mix(in srgb, -moz-dialog 80%, white)) !important;
+ --s-act-el-fg: -moz-dialogtext !important;
+ --s-act-el-border: transparent !important;
+ --s-popup-bg: Field !important;
+ --s-popup-fg: FieldText !important;
+ --s-popup-border: light-dark(transparent, color-mix(in srgb, currentColor 17%, Field)) !important;
+ --s-accent: AccentColor !important;
+ }
+ }
+
+ /*
+ MARK: Variables
+ */
+ #root.root {
+ --frame-bg: var(--s-toolbar-bg) !important;
+ --frame-fg: var(--s-toolbar-fg) !important;
+ --general-margin: 4px !important;
+ --tabs-font: 12px system-ui !important;
+ --tabs-height: 32px !important;
+ --tabs-pinned-width: 32px !important;
+ --tabs-pinned-height: 32px !important;
+ --tabs-close-btn-margin: 8px !important;
+ --ntb-btn-height: 32px !important;
+ --tabs-inner-gap: 8px !important;
+ --tabs-border-radius: 4px !important;
+ --general-border-radius: 4px !important;
+ --tabs-activated-shadow: 0 4px 4px rgb(0 0 0 / .18), 0 0px 2px rgb(0 0 0 / .19) !important;
+ --tabs-normal-fg: color-mix(in srgb, var(--frame-fg) 87%, transparent) !important;
+ --nav-btn-height: 32px !important;
+ --nav-btn-width: 32px !important;
+ --separator-color: color-mix(in srgb, var(--frame-fg) 20%, transparent) !important;
+ --nav-btn-active-shadow: inset 0 0 0 1px rgb(0 0 0 / 0.086), inset 0 1px 3px 0 rgb(0 0 0 / 0.086) !important;
+
+ /* Light mode adjustments. */
+ &[data-frame-color-scheme="light"] {
+ color-scheme: light !important;
+ --tabs-normal-fg: color-mix(in srgb, var(--frame-fg) 82%, transparent) !important;
+ }
+
+ /* Dark mode adjustments. */
+ &[data-frame-color-scheme="dark"] {
+ color-scheme: dark !important;
+ --tabs-activated-shadow: 0 4px 4px rgb(0 0 0 / .44), 0 0px 2px rgb(0 0 0 / .47) !important;
+ --nav-btn-active-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.071), 0 1px 3px 0 rgb(0 0 0 / 0.212) !important;
+ }
+
+ @media (-moz-bool-pref: "uc.tweak.rounded-corners") {
+ --tabs-border-radius: 8px !important;
+ }
+ }
+
+ /*
+ MARK: Floating tabs vars
+ */
+ @media (-moz-bool-pref: "uc.tweak.floating-tabs") {
+ body[style*="--s-frame-fg: rgba(0, 0, 0, 0.847)"],
+ body[style*="--s-frame-fg: rgba(255, 255, 255, 0.847)"],
+ body[style*="--s-frame-bg: rgb(240, 240, 240)"],
+ body[style*="--s-frame-bg: rgb(35, 34, 43)"],
+ body:not([style*="--s-frame-bg"]) {
+ --s-frame-bg: light-dark(#f3f3f3, #202020) !important;
+ --s-act-el-bg: light-dark(#fff, #3F3F3F) !important;
+ --s-act-el-border: light-dark(transparent, rgb(255 255 255 / 0.06)) !important;
+ }
+
+ #root.root {
+ --frame-bg: var(--s-frame-bg) !important;
+ --frame-fg: var(--s-frame-fg) !important;
+
+ --toolbar-bg: var(--s-frame-bg) !important;
+ --toolbar-fg: var(--s-frame-fg) !important;
+ --s-toolbar-bg: light-dark(#f3f3f3, #202020) !important;
+ --tabs-activated-shadow: 0 2.5px 3px 1px rgb(0 0 0 / .08), 0 0 0 1px rgb(0 0 0 / .11) !important;
+ --tabs-border-radius: 8px !important;
+
+ &[data-frame-color-scheme="dark"] {
+ --tabs-activated-shadow: 0 2px 3px rgb(0 0 0 / .12) !important;
+ }
+ }
+ }
+
+ /*
+ MARK: Tabs appearance
+ */
+ .Tab {
+ /* Active tab border. */
+ &[data-active="true"] .body {
+ outline: 1px solid var(--s-act-el-border, transparent) !important;
+ outline-offset: -1px !important;
+ }
+
+ /* Close button border radius. */
+ & .close {
+ border-radius: 4px !important;
+ }
+
+ /* Make sure that tab icons use full opacity. */
+ & .fav svg {
+ opacity: 1 !important;
+ }
+
+ /* Adjust spacing between tab icons and labels. */
+ & .title {
+ padding-inline: 0 !important;
+ }
+
+ /* Colourised tab shadow and outline. */
+ &[data-colorized="true"] {
+ --tabs-activated-shadow: unset !important;
+ --s-act-el-border: light-dark(rgb(0 0 0 / 0.35), rgb(255 255 255 / 0.25)) !important;
+ }
+
+ & .ctx {
+ box-shadow: none !important;
+ border-radius: 2px !important;
+ --uc-margin: 8px !important;
+ --uc-width: 2px !important;
+ --uc-offset: 1px !important;
+ }
+
+ &[data-active="true"] .ctx {
+ --uc-margin: 6px !important;
+ }
+
+ &[data-pin="false"] {
+ /* Inner spacing for tabs. */
+ & .fav {
+ margin: 0 calc(var(--tabs-inner-gap) + 2px) 0 var(--tabs-inner-gap) !important;
+ }
+
+ /* Tab container indicator. */
+ & .ctx {
+ inset-block: 0 !important;
+ margin-block: auto !important;
+ left: var(--uc-offset) !important;
+ width: var(--uc-width) !important;
+ height: calc(100% - var(--uc-margin) * 2) !important;
+ }
+ }
+
+ #root[data-pinned-tabs-position="panel"] &[data-pin="true"] {
+ /* Tab container indicator. */
+ & .ctx {
+ inset-inline: 0 !important;
+ margin-inline: auto !important;
+ bottom: var(--uc-offset) !important;
+ height: var(--uc-width) !important;
+ width: calc(100% - var(--uc-margin) * 2) !important;
+ }
+ }
+ }
+
+ .Notifications + .main-box .central-box {
+ height: 100% !important;
+ margin-top: 0 !important;
+ }
+
+ /* Add space to the top of the tabs to allow shadows to be visible. */
+ .AnimatedTabList,
+ .PinnedTabsBar {
+ padding-top: var(--tabs-margin) !important;
+ }
+
+ /* Remove space between the tabs and horizontal navigation bar, as tabs have
+ * their own space applied for the shadows. */
+ .top-horizontal-box {
+ margin-bottom: 0 !important;
+
+ & .NavigationBar.-top {
+ padding-block-end: 0 !important;
+ }
+ }
+
+ /* Pinned tabs separator. */
+ .PinnedTabsBar {
+ /* Pinned tab grid. */
+ #root[data-pinned-tabs-position="panel"] & {
+ padding-bottom: calc(var(--tabs-margin) + 1px) !important;
+ }
+
+ /* Pinned tab list. */
+ #root[data-pinned-tabs-position="panel"][data-pinned-tabs-list="true"] & {
+ padding-bottom: 1px !important;
+ }
+
+ /* Separator element. */
+ &::after {
+ display: unset !important;
+ bottom: 0 !important;
+ height: auto !important;
+ border-bottom: 1px solid var(--separator-color) !important;
+ background: transparent !important;
+ opacity: 1 !important;
+ }
+ }
+
+ /*
+ MARK: New tab button
+ */
+ .TabsPanel .new-tab-btns {
+ /* Add space for the separator. */
+ padding-top: calc(var(--tabs-margin) + 1px) !important;
+
+ /* Add separator before new tab button. */
+ &::before {
+ width: calc(100% - var(--tabs-margin)*2) !important;
+ inset-inline: auto !important;
+ top: 0 !important;
+ border-top: 1px solid var(--separator-color) !important;
+ box-shadow: none !important;
+ }
+
+ /* Make sure the separator is hidden when there are only pinned tabs. */
+ &[data-new-tab-bar-position="after_tabs"]:first-child {
+ padding-top: 0 !important;
+
+ &::before {
+ display: none !important;
+ }
+ }
+
+ /* Hide unnecessary pseudo element. */
+ &::after {
+ content: initial !important;
+ }
+
+ /* New tab button. */
+ & .new-tab-btn {
+ justify-content: start !important;
+ white-space: nowrap !important;
+ overflow: hidden !important;
+ border-radius: var(--tabs-border-radius) !important;
+
+ /* Make sure images do not shrink when collapsed. */
+ & > svg,
+ & > img {
+ position: static !important;
+ margin: 0 calc(var(--tabs-inner-gap) + 2px) 0 var(--tabs-inner-gap) !important;
+ flex-shrink: 0 !important;
+ }
+
+ /* Fix new tab icon when badge is placed above it (open in container). */
+ & > .-badge {
+ position: static !important;
+ margin-top: 10px !important;
+ margin-inline-start: calc(-1 * (14px + var(--tabs-inner-gap) / 2)) !important;
+ margin-inline-end: calc(var(--tabs-inner-gap) - 1px) !important;
+ }
+
+ /* Add new tab label. */
+ &::after {
+ content: "New Tab" !important;
+ font: var(--tabs-font) !important;
+ color: var(--frame-fg) !important;
+ }
+ }
+ }
+
+ /* Hide shadows at the top and bottom when scrolling. */
+ .ScrollBox > .top-shadow[data-show="true"],
+ .ScrollBox > .bottom-shadow[data-show="true"] {
+ display: none !important;
+ }
+
+ /*
+ MARK: Icons
+ */
+
+ /* New tab page icon. */
+ #icon_ff path {
+ d: path("M3 1h10a2 2 0 01 2 2v10a2 2 0 01-2 2H3a2 2 0 01-2-2V3a2 2 0 01 2-2zm3 1H3a1 1 0 00-1 1v10a1 1 0 00 1 1h10a1 1 0 00 1-1V5H7.5A1.5 1.5 0 01 6 3.5zm1 0v1.5a.5.5 0 00 .5.5H14V3a1 1 0 00-1-1zM5 8a1 1 0 01 0 2 1 1 0 01 0-2zm3 0a1 1 0 01 0 2 1 1 0 01 0-2zm3 0a1 1 0 01 0 2 1 1 0 01 0-2z") !important;
+ }
+
+ /* Plus icon. */
+ #icon_plus path {
+ d: path("M7 1a.5.5 0 01 1 0v6h6a.5.5 0 01 0 1H8v6a.5.5 0 01-1 0V8H1a.5.5 0 01 0-1h6z") !important;
+ }
+}
diff --git a/themes/firefox/chrome/userChrome.css b/themes/firefox/chrome/userChrome.css
new file mode 100644
index 0000000..e2d57ad
--- /dev/null
+++ b/themes/firefox/chrome/userChrome.css
@@ -0,0 +1,22 @@
+/* Edge-Frfox main files */
+@import url("icons/icons.css");
+@import url("toolbar/tabbar.css");
+@import url("toolbar/navbar.css");
+@import url("toolbar/personalbar.css");
+@import url("toolbar/findbar.css");
+@import url("toolbar/urlbar.css");
+@import url("global/colors.css");
+@import url("global/popup.css");
+@import url("global/browser.css");
+@import url("global/tree.css");
+
+/* Edge-Frfox tweaks */
+@import url("global/tweaks.css");
+@import url("tweaks/hide-tabs-bar.css");
+
+/* Personal tweaks */
+@import url("tweaks/shrink-sideberry.css");
+
+/* Import custom stylesheet instead of modifying Edge-Frfox theme files. */
+@import url("custom.css");
+
diff --git a/themes/firefox/chrome/userContent.css b/themes/firefox/chrome/userContent.css
new file mode 100644
index 0000000..8b4a543
--- /dev/null
+++ b/themes/firefox/chrome/userContent.css
@@ -0,0 +1,4 @@
+/* Edge-Frfox */
+@import url("content/common.css");
+@import url("content/newtab.css");
+@import url("tweaks/sidebery.css") (-moz-bool-pref: "uc.tweak.theme.sidebery");
diff --git a/themes/firefox/user.js b/themes/firefox/user.js
new file mode 100644
index 0000000..5755a39
--- /dev/null
+++ b/themes/firefox/user.js
@@ -0,0 +1,14 @@
+// Edge-Frfox - user.js
+// https://github.com/bmFtZQ/edge-frfox
+// This file contains the settings required for the theme to function correctly.
+
+// Enables the userChrome.css and userContent.css files.
+user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
+// Allows the theme's SVG icons to be coloured properly.
+user_pref("svg.context-properties.content.enabled", true);
+// Allows colours used in the theme to be mixed with others.
+user_pref("layout.css.color-mix.enabled", true);
+// Allows theme to use different colours for light/dark mode.
+user_pref("layout.css.light-dark.enabled", true);
+// Enables the CSS :has() selector, required for hide tabs toolbar tweak.
+user_pref("layout.css.has-selector.enabled", true);