diff --git a/patches/librewolf-pref-pane.patch b/patches/librewolf-pref-pane.patch
index 9b09136..966a6af 100644
--- a/patches/librewolf-pref-pane.patch
+++ b/patches/librewolf-pref-pane.patch
@@ -18,10 +18,10 @@ index 0000000..a194a5c
+ paths:
+ - librewolf-pref-pane.patch
diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn
-index 4f3babe..97c7ec2 100644
+index 4f3babe..0aa6f60 100644
--- a/browser/components/preferences/jar.mn
+++ b/browser/components/preferences/jar.mn
-@@ -11,6 +11,7 @@ browser.jar:
+@@ -11,9 +11,14 @@ browser.jar:
content/browser/preferences/home.js
content/browser/preferences/search.js
content/browser/preferences/privacy.js
@@ -29,6 +29,13 @@ index 4f3babe..97c7ec2 100644
content/browser/preferences/containers.js
content/browser/preferences/sync.js
content/browser/preferences/experimental.js
++ content/browser/preferences/moreFromMozilla.js
+ content/browser/preferences/fxaPairDevice.xhtml
+ content/browser/preferences/fxaPairDevice.js
+ content/browser/preferences/findInPage.js
++ content/browser/preferences/more-from-mozilla-qr-code-simple.svg
++ content/browser/preferences/more-from-mozilla-qr-code-simple-cn.svg
++ content/browser/preferences/more-from-mozilla-qr-code-advanced.svg
diff --git a/browser/components/preferences/librewolf.inc.xhtml b/browser/components/preferences/librewolf.inc.xhtml
new file mode 100644
index 0000000..7a582fb
@@ -556,18 +563,167 @@ index 0000000..bd20104
+}
+
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
-index 91e9e46..763ab49 100644
+index 91e9e46..7d401fc 100644
--- a/browser/components/preferences/preferences.js
+++ b/browser/components/preferences/preferences.js
-@@ -8,6 +8,7 @@
+@@ -8,27 +8,88 @@
/* import-globals-from search.js */
/* import-globals-from containers.js */
/* import-globals-from privacy.js */
+/* import-globals-from librewolf.js */
/* import-globals-from sync.js */
/* import-globals-from experimental.js */
++/* import-globals-from moreFromMozilla.js */
/* import-globals-from findInPage.js */
-@@ -117,6 +118,7 @@ function init_all() {
+-/* import-globals-from ../../base/content/utilityOverlay.js */
+-/* import-globals-from ../../../toolkit/content/preferencesBindings.js */
++/* import-globals-from /browser/base/content/utilityOverlay.js */
++/* import-globals-from /toolkit/content/preferencesBindings.js */
+
+ "use strict";
+
++var { AppConstants } = ChromeUtils.import(
++ "resource://gre/modules/AppConstants.jsm"
++);
+ var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
+
+-ChromeUtils.defineModuleGetter(
+- this,
+- "AMTelemetry",
+- "resource://gre/modules/AddonManager.jsm"
++var { Downloads } = ChromeUtils.import("resource://gre/modules/Downloads.jsm");
++var { Integration } = ChromeUtils.import(
++ "resource://gre/modules/Integration.jsm"
+ );
+-ChromeUtils.defineModuleGetter(
++/* global DownloadIntegration */
++Integration.downloads.defineModuleGetter(
+ this,
+- "formAutofillParent",
+- "resource://formautofill/FormAutofillParent.jsm"
++ "DownloadIntegration",
++ "resource://gre/modules/DownloadIntegration.jsm"
++);
++
++var { PrivateBrowsingUtils } = ChromeUtils.import(
++ "resource://gre/modules/PrivateBrowsingUtils.jsm"
+ );
+
++var { Weave } = ChromeUtils.import("resource://services-sync/main.js");
++var { FxAccounts, fxAccounts } = ChromeUtils.import(
++ "resource://gre/modules/FxAccounts.jsm"
++);
++
++XPCOMUtils.defineLazyServiceGetters(this, {
++ gApplicationUpdateService: [
++ "@mozilla.org/updates/update-service;1",
++ "nsIApplicationUpdateService",
++ ],
++
++ listManager: [
++ "@mozilla.org/url-classifier/listmanager;1",
++ "nsIUrlListManager",
++ ],
++ gHandlerService: [
++ "@mozilla.org/uriloader/handler-service;1",
++ "nsIHandlerService",
++ ],
++ gMIMEService: ["@mozilla.org/mime;1", "nsIMIMEService"],
++});
++
++XPCOMUtils.defineLazyModuleGetters(this, {
++ AMTelemetry: "resource://gre/modules/AddonManager.jsm",
++ BrowserUtils: "resource://gre/modules/BrowserUtils.jsm",
++ CloudStorage: "resource://gre/modules/CloudStorage.jsm",
++ ContextualIdentityService:
++ "resource://gre/modules/ContextualIdentityService.jsm",
++ DownloadUtils: "resource://gre/modules/DownloadUtils.jsm",
++ ExtensionPreferencesManager:
++ "resource://gre/modules/ExtensionPreferencesManager.jsm",
++ ExtensionSettingsStore: "resource://gre/modules/ExtensionSettingsStore.jsm",
++ FileUtils: "resource://gre/modules/FileUtils.jsm",
++ formAutofillParent: "resource://formautofill/FormAutofillParent.jsm",
++ FeatureGate: "resource://featuregates/FeatureGate.jsm",
++ HomePage: "resource:///modules/HomePage.jsm",
++ LoginHelper: "resource://gre/modules/LoginHelper.jsm",
++ NimbusFeatures: "resource://nimbus/ExperimentAPI.jsm",
++ OSKeyStore: "resource://gre/modules/OSKeyStore.jsm",
++ PlacesUtils: "resource://gre/modules/PlacesUtils.jsm",
++ SelectionChangedMenulist: "resource:///modules/SelectionChangedMenulist.jsm",
++ ShortcutUtils: "resource://gre/modules/ShortcutUtils.jsm",
++ SiteDataManager: "resource:///modules/SiteDataManager.jsm",
++ TransientPrefs: "resource:///modules/TransientPrefs.jsm",
++ UpdateUtils: "resource://gre/modules/UpdateUtils.jsm",
++ UIState: "resource://services-sync/UIState.jsm",
++ UrlbarPrefs: "resource:///modules/UrlbarPrefs.jsm",
++ UrlbarProviderQuickSuggest:
++ "resource:///modules/UrlbarProviderQuickSuggest.jsm",
++ UrlbarUtils: "resource:///modules/UrlbarUtils.jsm",
++});
++
+ XPCOMUtils.defineLazyGetter(this, "gSubDialog", function() {
+ const { SubDialogManager } = ChromeUtils.import(
+ "resource://gre/modules/SubDialog.jsm"
+@@ -41,12 +102,15 @@ XPCOMUtils.defineLazyGetter(this, "gSubDialog", function() {
+ "chrome://browser/skin/preferences/dialog.css",
+ "chrome://browser/skin/preferences/preferences.css",
+ ],
+- resizeCallback: ({ title, frame }) => {
++ resizeCallback: async ({ title, frame }) => {
+ // Search within main document and highlight matched keyword.
+- gSearchResultsPane.searchWithinNode(title, gSearchResultsPane.query);
++ await gSearchResultsPane.searchWithinNode(
++ title,
++ gSearchResultsPane.query
++ );
+
+ // Search within sub-dialog document and highlight matched keyword.
+- gSearchResultsPane.searchWithinNode(
++ await gSearchResultsPane.searchWithinNode(
+ frame.contentDocument.firstElementChild,
+ gSearchResultsPane.query
+ );
+@@ -86,6 +150,7 @@ function register_module(categoryName, categoryObject) {
+ gCategoryInits.set(categoryName, {
+ inited: false,
+ async init() {
++ let startTime = performance.now();
+ let template = document.getElementById("template-" + categoryName);
+ if (template) {
+ // Replace the template element with the nodes inside of it.
+@@ -97,13 +162,18 @@ function register_module(categoryName, categoryObject) {
+ template.replaceWith(frag);
+ document.l10n.resumeObserving();
+
+- // Asks Preferences to update the attribute value of the entire
+- // document again (this can be simplified if we could seperate the
+- // preferences of each pane.)
+- Preferences.updateAllElements();
++ // We need to queue an update again because the previous update might
++ // have happened while we awaited on translateFragment.
++ Preferences.queueUpdateOfAllElements();
+ }
++
+ categoryObject.init();
+ this.inited = true;
++ ChromeUtils.addProfilerMarker(
++ "Preferences",
++ { startTime },
++ categoryName + " init"
++ );
+ },
+ });
+ }
+@@ -113,10 +183,16 @@ document.addEventListener("DOMContentLoaded", init_all, { once: true });
+ function init_all() {
+ Preferences.forceEnableInstantApply();
+
++ // Asks Preferences to queue an update of the attribute values of
++ // the entire document.
++ Preferences.queueUpdateOfAllElements();
++ Services.telemetry.setEventRecordingEnabled("aboutpreferences", true);
++
+ register_module("paneGeneral", gMainPane);
register_module("paneHome", gHomePane);
register_module("paneSearch", gSearchPane);
register_module("panePrivacy", gPrivacyPane);
@@ -575,11 +731,117 @@ index 91e9e46..763ab49 100644
register_module("paneContainers", gContainersPane);
if (Services.prefs.getBoolPref("browser.preferences.experimental")) {
// Set hidden based on previous load's hidden value.
+@@ -128,6 +204,15 @@ function init_all() {
+ );
+ register_module("paneExperimental", gExperimentalPane);
+ }
++
++ NimbusFeatures.moreFromMozilla.recordExposureEvent({ once: true });
++ if (NimbusFeatures.moreFromMozilla.getVariable("enabled")) {
++ document.getElementById("category-more-from-mozilla").hidden = false;
++ gMoreFromMozillaPane.option = NimbusFeatures.moreFromMozilla.getVariable(
++ "template"
++ );
++ register_module("paneMoreFromMozilla", gMoreFromMozillaPane);
++ }
+ // The Sync category needs to be the last of the "real" categories
+ // registered and inititalized since many tests wait for the
+ // "sync-pane-loaded" observer notification before starting the test.
+@@ -155,6 +240,10 @@ function init_all() {
+
+ window.addEventListener("hashchange", onHashChange);
+
++ document.getElementById("focusSearch1").addEventListener("command", () => {
++ gSearchResultsPane.searchInput.focus();
++ });
++
+ gotoPref().then(() => {
+ let helpButton = document.getElementById("helpButton");
+ let helpUrl =
+@@ -201,16 +290,19 @@ function telemetryBucketForCategory(category) {
+ }
+
+ function onHashChange() {
+- gotoPref();
++ gotoPref(null, "hash");
+ }
+
+-async function gotoPref(aCategory) {
++async function gotoPref(
++ aCategory,
++ aShowReason = aCategory ? "click" : "initial"
++) {
+ let categories = document.getElementById("categories");
+ const kDefaultCategoryInternalName = "paneGeneral";
+ const kDefaultCategory = "general";
+ let hash = document.location.hash;
+-
+ let category = aCategory || hash.substr(1) || kDefaultCategoryInternalName;
++
+ let breakIndex = category.indexOf("-");
+ // Subcategories allow for selecting smaller sections of the preferences
+ // until proper search support is enabled (bug 1353954).
+@@ -292,10 +384,19 @@ async function gotoPref(aCategory) {
+
+ search(category, "data-category");
+
+- let mainContent = document.querySelector(".main-content");
+- mainContent.scrollTop = 0;
++ if (aShowReason != "initial") {
++ document.querySelector(".main-content").scrollTop = 0;
++ }
+
+ spotlight(subcategory, category);
++
++ // Record which category is shown
++ Services.telemetry.recordEvent(
++ "aboutpreferences",
++ "show",
++ aShowReason,
++ category
++ );
+ }
+
+ function search(aQuery, aAttribute) {
+@@ -510,9 +611,26 @@ function appendSearchKeywords(aId, keywords) {
+ element.setAttribute("searchkeywords", keywords.join(" "));
+ }
+
++async function ensureScrollPadding() {
++ let stickyContainer = document.querySelector(".sticky-container");
++ let height = await window.browsingContext.topChromeWindow
++ .promiseDocumentFlushed(() => stickyContainer.clientHeight)
++ .catch(err => Cu.reportError); // Can reject if the window goes away.
++
++ // Make it a bit more, to ensure focus rectangles etc. don't get cut off.
++ // This being 8px causes us to end up with 90px if the policies container
++ // is not visible (the common case), which matches the CSS and thus won't
++ // cause a style change, repaint, or other changes.
++ height += 8;
++ stickyContainer
++ .closest(".main-content")
++ .style.setProperty("scroll-padding-top", height + "px");
++}
++
+ function maybeDisplayPoliciesNotice() {
+ if (Services.policies.status == Services.policies.ACTIVE) {
+ document.getElementById("policies-container").removeAttribute("hidden");
++ ensureScrollPadding();
+ }
+ }
+
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
-index aab4a9e..907a631 100644
+index aab4a9e..d815682 100644
--- a/browser/components/preferences/preferences.xhtml
+++ b/browser/components/preferences/preferences.xhtml
-@@ -12,6 +12,7 @@
+@@ -6,12 +6,14 @@
+
+
+
++
+
+
+
@@ -587,7 +849,39 @@ index aab4a9e..907a631 100644
-@@ -128,6 +129,17 @@
+@@ -21,19 +23,18 @@
+ id="preferences-root">
+
+
+-
+-
++
++
+
+
+
++
+
+
+
+
+
++
+
+
+
+@@ -53,6 +54,7 @@
+
+
+
++
+
+
+
+@@ -128,6 +130,17 @@
@@ -605,7 +899,76 @@ index aab4a9e..907a631 100644
+
+
++
++
++
++
+
+
+
+@@ -168,32 +191,31 @@
+
+
+
+-
+-
++
+
+
+
+
+-
+-
+-
+-
+-
+-
+-
++
++
++
++
++
++
++
++
++
+
++
+
+-
+
+
+ #include searchResults.inc.xhtml
+@@ -201,9 +223,11 @@
#include home.inc.xhtml
#include search.inc.xhtml
#include privacy.inc.xhtml
@@ -613,11 +976,211 @@ index aab4a9e..907a631 100644
#include containers.inc.xhtml
#include sync.inc.xhtml
#include experimental.inc.xhtml
++#include moreFromMozilla.inc.xhtml
+
+
+
diff --git a/browser/locales/en-US/browser/preferences/preferences.ftl b/browser/locales/en-US/browser/preferences/preferences.ftl
-index d276f7a..36fffcb 100644
+index d276f7a..40fdfef 100644
--- a/browser/locales/en-US/browser/preferences/preferences.ftl
+++ b/browser/locales/en-US/browser/preferences/preferences.ftl
-@@ -1347,3 +1347,93 @@ choose-download-folder-title = Choose Download Folder:
+@@ -139,8 +139,8 @@ set-as-my-default-browser =
+ .label = Make Default…
+ .accesskey = D
+
+-startup-restore-previous-session =
+- .label = Restore previous session
++startup-restore-windows-and-tabs =
++ .label = Open previous windows and tabs
+ .accesskey = s
+
+ startup-restore-warn-on-quit =
+@@ -159,16 +159,25 @@ open-new-link-as-tabs =
+ .label = Open links in tabs instead of new windows
+ .accesskey = w
+
+-warn-on-close-multiple-tabs =
+- .label = Warn you when closing multiple tabs
++confirm-on-close-multiple-tabs =
++ .label = Confirm before closing multiple tabs
+ .accesskey = m
+
++# This string is used for the confirm before quitting preference.
++# Variables:
++# $quitKey (String) - the quit keyboard shortcut, and formatted
++# in the same manner as it would appear,
++# for example, in the File menu.
++confirm-on-quit-with-key =
++ .label = Confirm before quitting with { $quitKey }
++ .accesskey = b
++
+ warn-on-open-many-tabs =
+ .label = Warn you when opening multiple tabs might slow down { -brand-short-name }
+ .accesskey = d
+
+-switch-links-to-new-tabs =
+- .label = When you open a link in a new tab, switch to it immediately
++switch-to-new-tabs =
++ .label = When you open a link, image or media in a new tab, switch to it immediately
+ .accesskey = h
+
+ show-tabs-in-taskbar =
+@@ -263,6 +272,8 @@ translate-web-pages =
+ .label = Translate web content
+ .accesskey = T
+
++fx-translate-web-pages = { -translations-brand-name }
++
+ # The
element is replaced by the logo of the provider
+ # used to provide machine translations for web pages.
+ translate-attribution = Translations by
+@@ -443,6 +454,10 @@ update-application-use-service =
+ .label = Use a background service to install updates
+ .accesskey = b
+
++update-application-suppress-prompts =
++ .label = Show fewer update notification prompts
++ .accesskey = n
++
+ update-setting-write-failure-title2 = Error saving Update settings
+
+ # Variables:
+@@ -502,6 +517,10 @@ browsing-use-smooth-scrolling =
+ .label = Use smooth scrolling
+ .accesskey = m
+
++browsing-gtk-use-non-overlay-scrollbars =
++ .label = Always show scrollbars
++ .accesskey = o
++
+ browsing-use-onscreen-keyboard =
+ .label = Show a touch keyboard when necessary
+ .accesskey = c
+@@ -600,11 +619,6 @@ home-prefs-content-description = Choose what content you want on your Firefox Ho
+
+ home-prefs-search-header =
+ .label = Web Search
+-home-prefs-topsites-header =
+- .label = Top Sites
+-home-prefs-topsites-description = The sites you visit most
+-home-prefs-topsites-by-option-sponsored =
+- .label = Sponsored Top Sites
+ home-prefs-shortcuts-header =
+ .label = Shortcuts
+ home-prefs-shortcuts-description = Sites you save or visit
+@@ -616,7 +630,6 @@ home-prefs-shortcuts-by-option-sponsored =
+
+ home-prefs-recommended-by-header =
+ .label = Recommended by { $provider }
+-home-prefs-recommended-by-description-update = Exceptional content from across the web, curated by { $provider }
+ home-prefs-recommended-by-description-new = Exceptional content curated by { $provider }, part of the { -brand-product-name } family
+
+ ##
+@@ -625,9 +638,6 @@ home-prefs-recommended-by-learn-more = How it works
+ home-prefs-recommended-by-option-sponsored-stories =
+ .label = Sponsored Stories
+
+-home-prefs-highlights-header =
+- .label = Highlights
+-home-prefs-highlights-description = A selection of sites that you’ve saved or visited
+ home-prefs-highlights-option-visited-pages =
+ .label = Visited Pages
+ home-prefs-highlights-options-bookmarks =
+@@ -647,7 +657,6 @@ home-prefs-recent-activity-description = A selection of recent sites and content
+ # and non-essential but also not entirely trivial and useless.
+ home-prefs-snippets-header =
+ .label = Snippets
+-home-prefs-snippets-description = Updates from { -vendor-short-name } and { -brand-product-name }
+
+ home-prefs-snippets-description-new = Tips and news from { -vendor-short-name } and { -brand-product-name }
+
+@@ -946,6 +955,10 @@ forms-primary-pw-former-name = Formerly known as Master Password
+
+ forms-primary-pw-fips-title = You are currently in FIPS mode. FIPS requires a non-empty Primary Password.
+ forms-master-pw-fips-desc = Password Change Failed
++forms-windows-sso =
++ .label = Allow Windows single sign-on for Microsoft, work, and school accounts
++forms-windows-sso-learn-more-link = Learn more
++forms-windows-sso-desc = Manage accounts in your device settings
+
+ ## OS Authentication dialog
+
+@@ -1045,10 +1058,10 @@ sitedata-option-block-cross-site-trackers =
+ .label = Cross-site trackers
+ sitedata-option-block-cross-site-and-social-media-trackers =
+ .label = Cross-site and social media trackers
+-sitedata-option-block-cross-site-tracking-cookies-including-social-media =
+- .label = Cross-site tracking cookies — includes social media cookies
+-sitedata-option-block-cross-site-cookies-including-social-media =
+- .label = Cross-site cookies — includes social media cookies
++sitedata-option-block-cross-site-tracking-cookies =
++ .label = Cross-site tracking cookies
++sitedata-option-block-cross-site-cookies =
++ .label = Cross-site tracking cookies, and isolate other cross-site cookies
+ sitedata-option-block-cross-site-and-social-media-trackers-plus-isolate =
+ .label = Cross-site and social media trackers, and isolate remaining cookies
+ sitedata-option-block-unvisited =
+@@ -1127,6 +1140,7 @@ enhanced-tracking-protection-setting-custom =
+ content-blocking-etp-standard-desc = Balanced for protection and performance. Pages will load normally.
+ content-blocking-etp-strict-desc = Stronger protection, but may cause some sites or content to break.
+ content-blocking-etp-custom-desc = Choose which trackers and scripts to block.
++content-blocking-etp-blocking-desc = { -brand-short-name } blocks the following:
+
+ content-blocking-private-windows = Tracking content in Private Windows
+ content-blocking-cross-site-cookies-in-all-windows = Cross-site cookies in all windows (includes tracking cookies)
+@@ -1141,6 +1155,16 @@ content-blocking-all-third-party-cookies = All third-party cookies
+ content-blocking-cryptominers = Cryptominers
+ content-blocking-fingerprinters = Fingerprinters
+
++# "Test pilot" is used as a verb. Possible alternatives:
++# "Be the first to try", "Join an early experiment".
++content-blocking-etp-standard-tcp-rollout-checkbox =
++ .label = Test pilot our most powerful privacy feature ever
++ .accesskey = T
++
++# "Contains" here means "isolates", "limits".
++content-blocking-etp-standard-tcp-rollout-description = Total Cookie Protection contains cookies to the site you’re on, so trackers can’t use them to follow you between sites.
++content-blocking-etp-standard-tcp-rollout-learn-more = Learn more
++
+ content-blocking-warning-title = Heads up!
+ content-blocking-and-isolating-etp-warning-description = Blocking trackers and isolating cookies could impact the functionality of some sites. Reload a page with trackers to load all content.
+ content-blocking-and-isolating-etp-warning-description-2 = This setting may cause some websites to not display content or work correctly. If a site seems broken, you may want to turn off tracking protection for that site to load all content.
+@@ -1230,9 +1254,12 @@ permissions-block-popups =
+ .label = Block pop-up windows
+ .accesskey = B
+
+-permissions-block-popups-exceptions =
++# "popup" is a misspelling that is more popular than the correct spelling of
++# "pop-up" so it's included as a search keyword, not displayed in the UI.
++permissions-block-popups-exceptions-button =
+ .label = Exceptions…
+ .accesskey = E
++ .searchkeywords = popups
+
+ permissions-addon-install-warning =
+ .label = Warn you when websites try to install add-ons
+@@ -1269,10 +1296,8 @@ addon-recommendations-link = Learn more
+ # or builds with no Telemetry support available.
+ collection-health-report-disabled = Data reporting is disabled for this build configuration
+
+-collection-backlogged-crash-reports =
+- .label = Allow { -brand-short-name } to send backlogged crash reports on your behalf
++collection-backlogged-crash-reports-with-link = Allow { -brand-short-name } to send backlogged crash reports on your behalf Learn more
+ .accesskey = c
+-collection-backlogged-crash-reports-link = Learn more
+
+ ## Privacy Section - Security
+ ##
+@@ -1318,7 +1343,7 @@ space-alert-over-5gb-settings-button =
+
+ space-alert-over-5gb-message2 = { -brand-short-name } is running out of disk space. Website contents may not display properly. You can clear stored data in Settings > Privacy & Security > Cookies and Site Data.
+
+-space-alert-under-5gb-message2 = { -brand-short-name } is running out of disk space. Website contents may not display properly. Visit “Learn More” to optimize your disk usage for better browsing experience.
++space-alert-under-5gb-message2 = { -brand-short-name } is running out of disk space. Website contents may not display properly. Visit “Learn more” to optimize your disk usage for better browsing experience.
+
+ ## Privacy Section - HTTPS-Only
+
+@@ -1347,3 +1372,93 @@ choose-download-folder-title = Choose Download Folder:
# $service-name (String) - Name of a cloud storage provider like Dropbox, Google Drive, etc...
save-files-to-cloud-storage =
.label = Save files to { $service-name }
@@ -639,7 +1202,7 @@ index d276f7a..36fffcb 100644
+librewolf-extension-update-checkbox =
+ .label = Update add-ons automatically
+librewolf-sync-checkbox =
-+ .label = Enable Firefox Sync (requires restart)
++ .label = Enable Firefox Sync
+librewolf-autocopy-checkbox =
+ .label = Enable middle click paste
+librewolf-styling-checkbox =
@@ -679,7 +1242,7 @@ index d276f7a..36fffcb 100644
+librewolf-ipv6-warning1 = Before you change this, make sure your OS uses the IPv6 privacy extension.
+librewolf-ocsp-description = Prevent connecting to a website if the OCSP check cannot be performed.
+librewolf-ocsp-warning1 = This increases security, but it will cause breakage when an OCSP server is down.
-+librewolf-sync-description = Sync your data with other browsers.
++librewolf-sync-description = Sync your data with other browsers. Requires restart.
+librewolf-sync-warning1 = Firefox Sync encrypts data locally before transmitting it to the server.
+
+librewolf-autocopy-description = Select some text to copy it, then paste it with a middle-mouse click.
@@ -712,25 +1275,279 @@ index d276f7a..36fffcb 100644
+librewolf-config-link = All advanced settings (about:config)
+librewolf-open-profile = Open user profile directory
diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn
-index cf1ebf0..336118c 100644
+index cf1ebf0..f476053 100644
--- a/browser/themes/shared/jar.inc.mn
+++ b/browser/themes/shared/jar.inc.mn
-@@ -105,6 +105,7 @@
- skin/classic/browser/preferences/category-experiments.svg (../shared/preferences/category-experiments.svg)
+@@ -7,70 +7,58 @@
+ # be specified once. As a result, the source file paths are relative
+ # to the location of the actual manifest.
+
++ skin/classic/browser/aboutFrameCrashed.css (../shared/aboutFrameCrashed.css)
+ skin/classic/browser/aboutNetError.css (../shared/aboutNetError.css)
+- skin/classic/browser/blockedSite.css (../shared/blockedSite.css)
+- skin/classic/browser/error-pages.css (../shared/error-pages.css)
+ skin/classic/browser/aboutRestartRequired.css (../shared/aboutRestartRequired.css)
+ skin/classic/browser/aboutSessionRestore.css (../shared/aboutSessionRestore.css)
+- skin/classic/browser/aboutFrameCrashed.css (../shared/aboutFrameCrashed.css)
+ skin/classic/browser/aboutTabCrashed.css (../shared/aboutTabCrashed.css)
+ skin/classic/browser/aboutWelcomeBack.css (../shared/aboutWelcomeBack.css)
++ skin/classic/browser/blockedSite.css (../shared/blockedSite.css)
++ skin/classic/browser/error-pages.css (../shared/error-pages.css)
++ skin/classic/browser/offlineSupportPages.css (../shared/offlineSupportPages.css)
++ skin/classic/browser/searchbar.css (../shared/searchbar.css)
+ skin/classic/browser/setDesktopBackground.css (../shared/setDesktopBackground.css)
++ skin/classic/browser/webRTC-indicator.css (../shared/webRTC-indicator.css)
+ skin/classic/browser/addons/addon-install-blocked.svg (../shared/addons/addon-install-blocked.svg)
+ skin/classic/browser/addons/addon-install-downloading.svg (../shared/addons/addon-install-downloading.svg)
+ skin/classic/browser/addons/addon-install-error.svg (../shared/addons/addon-install-error.svg)
+ skin/classic/browser/addons/addon-install-installed.svg (../shared/addons/addon-install-installed.svg)
+ skin/classic/browser/addons/addon-install-warning.svg (../shared/addons/addon-install-warning.svg)
+ skin/classic/browser/controlcenter/3rdpartycookies.svg (../shared/controlcenter/3rdpartycookies.svg)
+- skin/classic/browser/controlcenter/3rdpartycookies-disabled.svg (../shared/controlcenter/3rdpartycookies-disabled.svg)
+ skin/classic/browser/controlcenter/cryptominers.svg (../shared/controlcenter/cryptominers.svg)
+ skin/classic/browser/controlcenter/dashboard.svg (../shared/controlcenter/dashboard.svg)
+- skin/classic/browser/controlcenter/cryptominers-disabled.svg (../shared/controlcenter/cryptominers-disabled.svg)
+ skin/classic/browser/controlcenter/mcb-disabled.svg (../shared/controlcenter/mcb-disabled.svg)
+ skin/classic/browser/controlcenter/etp-milestone.svg (../shared/controlcenter/etp-milestone.svg)
+- skin/classic/browser/controlcenter/fingerprinters.svg (../shared/controlcenter/fingerprinters.svg)
+- skin/classic/browser/controlcenter/fingerprinters-disabled.svg (../shared/controlcenter/fingerprinters-disabled.svg)
+- skin/classic/browser/controlcenter/socialblock.svg (../shared/controlcenter/socialblock.svg)
+- skin/classic/browser/controlcenter/socialblock-disabled.svg (../shared/controlcenter/socialblock-disabled.svg)
+- skin/classic/browser/controlcenter/tracker-image.svg (../shared/controlcenter/tracker-image.svg)
+- skin/classic/browser/controlcenter/tracker-image-disabled.svg (../shared/controlcenter/tracker-image-disabled.svg)
+- skin/classic/browser/controlcenter/trackers.svg (../shared/controlcenter/trackers.svg)
++ skin/classic/browser/controlcenter/panel.css (../shared/controlcenter/panel.css)
+ skin/classic/browser/controlcenter/tracking-protection.svg (../shared/controlcenter/tracking-protection.svg)
+ skin/classic/browser/controlcenter/hero-message-background.svg (../shared/controlcenter/hero-message-background.svg)
++* skin/classic/browser/customizableui/panelUI.inc.css (../shared/customizableui/panelUI.inc.css)
+ skin/classic/browser/customizableui/empty-overflow-panel.png (../shared/customizableui/empty-overflow-panel.png)
+ skin/classic/browser/customizableui/empty-overflow-panel@2x.png (../shared/customizableui/empty-overflow-panel@2x.png)
+ skin/classic/browser/customizableui/density-compact.svg (../shared/customizableui/density-compact.svg)
+ skin/classic/browser/customizableui/density-normal.svg (../shared/customizableui/density-normal.svg)
+ skin/classic/browser/customizableui/density-touch.svg (../shared/customizableui/density-touch.svg)
+- skin/classic/browser/customizableui/menu-arrow.svg (../shared/customizableui/menu-arrow.svg)
+ skin/classic/browser/customizableui/whimsy.png (../shared/customizableui/whimsy.png)
++ skin/classic/browser/downloads/allDownloadsView.inc.css (../shared/downloads/allDownloadsView.inc.css)
+ skin/classic/browser/downloads/contentAreaDownloadsView.css (../shared/downloads/contentAreaDownloadsView.css)
+- skin/classic/browser/downloads/download-blocked.svg (../shared/downloads/download-blocked.svg)
++ skin/classic/browser/downloads/download-blockedStates.css (../shared/downloads/download-blockedStates.css)
+ skin/classic/browser/downloads/download-summary.svg (../shared/downloads/download-summary.svg)
++ skin/classic/browser/downloads/downloads.inc.css (../shared/downloads/downloads.inc.css)
+ skin/classic/browser/downloads/downloads.svg (../shared/downloads/downloads.svg)
+ skin/classic/browser/downloads/notification-finish-animation.svg (../shared/downloads/notification-finish-animation.svg)
+ skin/classic/browser/downloads/notification-start-animation.svg (../shared/downloads/notification-start-animation.svg)
++ skin/classic/browser/downloads/progressmeter.css (../shared/downloads/progressmeter.css)
+ skin/classic/browser/drm-icon.svg (../shared/drm-icon.svg)
+ skin/classic/browser/permissions.svg (../shared/identity-block/permissions.svg)
+- skin/classic/browser/newInstall.css (../shared/newInstall.css)
+- skin/classic/browser/newInstallPage.css (../shared/newInstallPage.css)
+- skin/classic/browser/illustrations/blue-berror.svg (../shared/illustrations/blue-berror.svg)
+- skin/classic/browser/illustrations/error-connection-failure.svg (../shared/illustrations/error-connection-failure.svg)
+- skin/classic/browser/illustrations/error-malformed-url.svg (../shared/illustrations/error-malformed-url.svg)
+- skin/classic/browser/illustrations/error-server-not-found.svg (../shared/illustrations/error-server-not-found.svg)
+- skin/classic/browser/illustrations/error-session-restore.svg (../shared/illustrations/error-session-restore.svg)
+ skin/classic/browser/notification-icons/autoplay-media.svg (../shared/notification-icons/autoplay-media.svg)
+ skin/classic/browser/notification-icons/autoplay-media-blocked.svg (../shared/notification-icons/autoplay-media-blocked.svg)
+ skin/classic/browser/notification-icons/camera-blocked.svg (../shared/notification-icons/camera-blocked.svg)
+ skin/classic/browser/notification-icons/camera.svg (../shared/notification-icons/camera.svg)
+- skin/classic/browser/notification-icons/canvas-blocked.svg (../shared/notification-icons/canvas-blocked.svg)
+- skin/classic/browser/notification-icons/canvas.svg (../shared/notification-icons/canvas.svg)
+ skin/classic/browser/notification-icons/desktop-notification-blocked.svg (../shared/notification-icons/desktop-notification-blocked.svg)
+ skin/classic/browser/notification-icons/desktop-notification.svg (../shared/notification-icons/desktop-notification.svg)
+ skin/classic/browser/notification-icons/drag-indicator.svg (../shared/notification-icons/drag-indicator.svg)
+ skin/classic/browser/notification-icons/geo.svg (../shared/notification-icons/geo.svg)
+ skin/classic/browser/notification-icons/geo-blocked.svg (../shared/notification-icons/geo-blocked.svg)
+- skin/classic/browser/notification-icons/indexedDB.svg (../shared/notification-icons/indexedDB.svg)
+ skin/classic/browser/notification-icons/microphone-blocked.svg (../shared/notification-icons/microphone-blocked.svg)
+ skin/classic/browser/notification-icons/microphone.svg (../shared/notification-icons/microphone.svg)
+ skin/classic/browser/notification-icons/minimize.svg (../shared/notification-icons/minimize.svg)
+@@ -78,17 +66,11 @@
+ skin/classic/browser/notification-icons/persistent-storage.svg (../shared/notification-icons/persistent-storage.svg)
+ skin/classic/browser/notification-icons/plugin-badge.svg (../shared/notification-icons/plugin-badge.svg)
+ skin/classic/browser/notification-icons/popup.svg (../shared/notification-icons/popup.svg)
+- skin/classic/browser/notification-icons/popup-subitem.svg (../shared/notification-icons/popup-subitem.svg)
+ skin/classic/browser/notification-icons/screen-blocked.svg (../shared/notification-icons/screen-blocked.svg)
+ skin/classic/browser/notification-icons/screen.svg (../shared/notification-icons/screen.svg)
+ skin/classic/browser/notification-icons/xr-blocked.svg (../shared/notification-icons/xr-blocked.svg)
+ skin/classic/browser/notification-icons/xr.svg (../shared/notification-icons/xr.svg)
+- skin/classic/browser/notification-icons/update.svg (../shared/notification-icons/update.svg)
+ skin/classic/browser/notification-icons/midi.svg (../shared/notification-icons/midi.svg)
+- skin/classic/browser/notification-icons/webauthn.svg (../shared/notification-icons/webauthn.svg)
+- skin/classic/browser/notification-icons/block-cryptominer.svg (../shared/notification-icons/block-cryptominer.svg)
+- skin/classic/browser/notification-icons/block-fingerprinter.svg (../shared/notification-icons/block-fingerprinter.svg)
+- skin/classic/browser/notification-icons/block-social.svg (../shared/notification-icons/block-social.svg)
+
+ skin/classic/browser/tracking-protection.svg (../shared/identity-block/tracking-protection.svg)
+ skin/classic/browser/tracking-protection-disabled.svg (../shared/identity-block/tracking-protection-disabled.svg)
+@@ -102,28 +84,41 @@
+ skin/classic/browser/protections/new-feature.svg (../shared/protections/new-feature.svg)
+
+ skin/classic/browser/preferences/android-menu.svg (../shared/preferences/android-menu.svg)
+- skin/classic/browser/preferences/category-experiments.svg (../shared/preferences/category-experiments.svg)
skin/classic/browser/preferences/category-general.svg (../shared/preferences/category-general.svg)
skin/classic/browser/preferences/category-privacy-security.svg (../shared/preferences/category-privacy-security.svg)
+ skin/classic/browser/preferences/category-librewolf.svg (../shared/preferences/category-librewolf.svg)
skin/classic/browser/preferences/category-search.svg (../shared/preferences/category-search.svg)
skin/classic/browser/preferences/category-sync.svg (../shared/preferences/category-sync.svg)
- skin/classic/browser/preferences/critters-postcard.jpg (../shared/preferences/critters-postcard.jpg)
-@@ -119,6 +120,7 @@
+- skin/classic/browser/preferences/critters-postcard.jpg (../shared/preferences/critters-postcard.jpg)
++ skin/classic/browser/preferences/containers.css (../shared/preferences/containers.css)
++ skin/classic/browser/preferences/containers-dialog.css (../shared/preferences/containers-dialog.css)
++ skin/classic/browser/preferences/dialog.css (../shared/preferences/dialog.css)
+ skin/classic/browser/preferences/face-sad.svg (../shared/preferences/face-sad.svg)
+ skin/classic/browser/preferences/face-smile.svg (../shared/preferences/face-smile.svg)
+ skin/classic/browser/preferences/fxaPairDevice.css (../shared/preferences/fxaPairDevice.css)
+ skin/classic/browser/preferences/ios-menu.svg (../shared/preferences/ios-menu.svg)
++ skin/classic/browser/preferences/img-mobile.svg (../shared/preferences/img-mobile.svg)
++ skin/classic/browser/preferences/img-rally.png (../shared/preferences/img-rally.png)
++ skin/classic/browser/preferences/img-vpn.svg (../shared/preferences/img-vpn.svg)
++ skin/classic/browser/preferences/mozilla-logo.svg (../shared/preferences/mozilla-logo.svg)
+ skin/classic/browser/preferences/no-search-bar.svg (../shared/preferences/no-search-bar.svg)
+- skin/classic/browser/preferences/no-search-results.svg (../shared/preferences/no-search-results.svg)
++ skin/classic/browser/preferences/preferences.css (../shared/preferences/preferences.css)
+ skin/classic/browser/preferences/privacy.css (../shared/preferences/privacy.css)
++ skin/classic/browser/preferences/rally-logo.svg (../shared/preferences/rally-logo.svg)
+ skin/classic/browser/preferences/search-arrow-indicator.svg (../shared/preferences/search-arrow-indicator.svg)
skin/classic/browser/preferences/search-bar.svg (../shared/preferences/search-bar.svg)
++ skin/classic/browser/preferences/vpn-logo.svg (../shared/preferences/vpn-logo.svg)
skin/classic/browser/preferences/search.css (../shared/preferences/search.css)
skin/classic/browser/preferences/siteDataSettings.css (../shared/preferences/siteDataSettings.css)
+-* skin/classic/browser/preferences/containers.css (../shared/preferences/containers.css)
+-* skin/classic/browser/preferences/containers-dialog.css (../shared/preferences/containers-dialog.css)
+- skin/classic/browser/upgradeDialog/highlights-24.svg (../shared/upgradeDialog/highlights-24.svg)
+- skin/classic/browser/upgradeDialog/menu-24.svg (../shared/upgradeDialog/menu-24.svg)
+- skin/classic/browser/upgradeDialog/tabs-24.svg (../shared/upgradeDialog/tabs-24.svg)
+ skin/classic/browser/preferences/librewolf.css (../shared/preferences/librewolf.css)
- * skin/classic/browser/preferences/containers.css (../shared/preferences/containers.css)
- * skin/classic/browser/preferences/containers-dialog.css (../shared/preferences/containers-dialog.css)
- skin/classic/browser/upgradeDialog/highlights-24.svg (../shared/upgradeDialog/highlights-24.svg)
++ skin/classic/browser/upgradeDialog.css (../shared/upgradeDialog.css)
++ skin/classic/browser/spotlight.css (../shared/spotlight.css)
++ skin/classic/browser/upgradeDialog/abstract.png (../shared/upgradeDialog/abstract.png)
++ skin/classic/browser/upgradeDialog/cheers.png (../shared/upgradeDialog/cheers.png)
++ skin/classic/browser/upgradeDialog/default.png (../shared/upgradeDialog/default.png)
++ skin/classic/browser/upgradeDialog/elemental.png (../shared/upgradeDialog/elemental.png)
++ skin/classic/browser/upgradeDialog/foto.png (../shared/upgradeDialog/foto.png)
++ skin/classic/browser/upgradeDialog/graffiti.png (../shared/upgradeDialog/graffiti.png)
++ skin/classic/browser/upgradeDialog/lush.png (../shared/upgradeDialog/lush.png)
+ skin/classic/browser/fxa/fxa-spinner.svg (../shared/fxa/fxa-spinner.svg)
+ skin/classic/browser/fxa/sync-illustration.svg (../shared/fxa/sync-illustration.svg)
+ skin/classic/browser/fxa/sync-illustration-issue.svg (../shared/fxa/sync-illustration-issue.svg)
+@@ -139,24 +134,24 @@
+
+ skin/classic/browser/add-circle-fill.svg (../shared/icons/add-circle-fill.svg)
+ skin/classic/browser/back.svg (../shared/icons/back.svg)
+- skin/classic/browser/back-12.svg (../shared/icons/back-12.svg)
+ skin/classic/browser/bookmark.svg (../shared/icons/bookmark.svg)
+ skin/classic/browser/bookmark-12.svg (../shared/icons/bookmark-12.svg)
+ skin/classic/browser/bookmark-hollow.svg (../shared/icons/bookmark-hollow.svg)
+ skin/classic/browser/bookmark-star-on-tray.svg (../shared/icons/bookmark-star-on-tray.svg)
+ skin/classic/browser/bookmarks-toolbar.svg (../shared/icons/bookmarks-toolbar.svg)
++ skin/classic/browser/canvas.svg (../shared/icons/canvas.svg)
++ skin/classic/browser/canvas-blocked.svg (../shared/icons/canvas-blocked.svg)
+ skin/classic/browser/characterEncoding.svg (../shared/icons/characterEncoding.svg)
+ skin/classic/browser/chevron-animation.svg (../shared/icons/chevron-animation.svg)
+ skin/classic/browser/customize.svg (../shared/icons/customize.svg)
+- skin/classic/browser/developer.svg (../shared/icons/developer.svg)
+ skin/classic/browser/device-phone.svg (../shared/icons/device-phone.svg)
+ skin/classic/browser/device-tablet.svg (../shared/icons/device-tablet.svg)
+ skin/classic/browser/device-desktop.svg (../shared/icons/device-desktop.svg)
+ skin/classic/browser/device-tv.svg (../shared/icons/device-tv.svg)
+ skin/classic/browser/device-vr.svg (../shared/icons/device-vr.svg)
+- skin/classic/browser/edit-copy.svg (../shared/icons/edit-copy.svg)
+ skin/classic/browser/edit-cut.svg (../shared/icons/edit-cut.svg)
+ skin/classic/browser/edit-paste.svg (../shared/icons/edit-paste.svg)
++ skin/classic/browser/fingerprint.svg (../shared/icons/fingerprint.svg)
+ skin/classic/browser/forget.svg (../shared/icons/forget.svg)
+ skin/classic/browser/forward.svg (../shared/icons/forward.svg)
+ skin/classic/browser/fullscreen.svg (../shared/icons/fullscreen.svg)
+@@ -168,9 +163,7 @@
+ skin/classic/browser/import-export.svg (../shared/icons/import-export.svg)
+ #endif
+ skin/classic/browser/indicator-accessibility.svg (../shared/icons/indicator-accessibility.svg)
+- skin/classic/browser/indicator-private-browsing.svg (../shared/icons/indicator-private-browsing.svg)
+ skin/classic/browser/library.svg (../shared/icons/library.svg)
+- skin/classic/browser/link.svg (../shared/icons/link.svg)
+ skin/classic/browser/login.svg (../shared/icons/login.svg)
+ skin/classic/browser/logo-android.svg (../shared/icons/logo-android.svg)
+ skin/classic/browser/logo-ios.svg (../shared/icons/logo-ios.svg)
+@@ -181,34 +174,23 @@
+ skin/classic/browser/notification-fill-12.svg (../shared/icons/notification-fill-12.svg)
+ skin/classic/browser/open.svg (../shared/icons/open.svg)
+ skin/classic/browser/pin-12.svg (../shared/icons/pin-12.svg)
+- skin/classic/browser/pin-tab.svg (../shared/icons/pin-tab.svg)
+- skin/classic/browser/pocket-outline.svg (../shared/icons/pocket-outline.svg)
+ skin/classic/browser/privateBrowsing.svg (../shared/icons/privateBrowsing.svg)
+ skin/classic/browser/reader-mode.svg (../shared/icons/reader-mode.svg)
+- skin/classic/browser/restore-session.svg (../shared/icons/restore-session.svg)
+- skin/classic/browser/quit.svg (../shared/icons/quit.svg)
+- skin/classic/browser/reload.svg (../shared/icons/reload.svg)
+ skin/classic/browser/reload-to-stop.svg (../shared/icons/reload-to-stop.svg)
+ skin/classic/browser/save.svg (../shared/icons/save.svg)
+ skin/classic/browser/screenshot.svg (../shared/icons/screenshot.svg)
+- skin/classic/browser/send-to-device.svg (../shared/icons/send-to-device.svg)
+ skin/classic/browser/sidebars.svg (../shared/icons/sidebars.svg)
+ skin/classic/browser/sidebars-right.svg (../shared/icons/sidebars-right.svg)
+- skin/classic/browser/sign-out.svg (../shared/icons/sign-out.svg)
+ #ifndef MOZ_WIDGET_GTK
+ skin/classic/browser/sort.svg (../shared/icons/sort.svg)
+ #endif
+- skin/classic/browser/stop.svg (../shared/icons/stop.svg)
+ skin/classic/browser/stop-to-reload.svg (../shared/icons/stop-to-reload.svg)
+ skin/classic/browser/subtract-circle-fill.svg (../shared/icons/subtract-circle-fill.svg)
+ skin/classic/browser/success-animation.svg (../shared/icons/success-animation.svg)
+ skin/classic/browser/sync.svg (../shared/icons/sync.svg)
+ skin/classic/browser/tab.svg (../shared/icons/tab.svg)
+- skin/classic/browser/tab-12.svg (../shared/icons/tab-12.svg)
+- skin/classic/browser/unpin-tab.svg (../shared/icons/unpin-tab.svg)
+- skin/classic/browser/whatsnew.svg (../shared/icons/whatsnew.svg)
++ skin/classic/browser/thumb-down.svg (../shared/icons/thumb-down.svg)
+ skin/classic/browser/window.svg (../shared/icons/window.svg)
+- skin/classic/browser/zoom-in.svg (../shared/icons/zoom-in.svg)
+ skin/classic/browser/zoom-out.svg (../shared/icons/zoom-out.svg)
+ skin/classic/browser/ion.svg (../shared/icons/ion.svg)
+
+@@ -219,13 +201,11 @@
+
+ skin/classic/browser/tabbrowser/crashed.svg (../shared/tabbrowser/crashed.svg)
+ skin/classic/browser/tabbrowser/hourglass.svg (../shared/tabbrowser/hourglass.svg)
+- skin/classic/browser/tabbrowser/indicator-tab-attention.svg (../shared/tabbrowser/indicator-tab-attention.svg)
+ skin/classic/browser/tabbrowser/loading.svg (../shared/tabbrowser/loading.svg)
+ skin/classic/browser/tabbrowser/loading-burst.svg (../shared/tabbrowser/loading-burst.svg)
+ skin/classic/browser/tabbrowser/pendingpaint.png (../shared/tabbrowser/pendingpaint.png)
+ skin/classic/browser/tabbrowser/tab-audio-playing-small.svg (../shared/tabbrowser/tab-audio-playing-small.svg)
+ skin/classic/browser/tabbrowser/tab-audio-muted-small.svg (../shared/tabbrowser/tab-audio-muted-small.svg)
+- skin/classic/browser/tabbrowser/tab-audio-blocked.svg (../shared/tabbrowser/tab-audio-blocked.svg)
+ skin/classic/browser/tabbrowser/tab-audio-blocked-small.svg (../shared/tabbrowser/tab-audio-blocked-small.svg)
+ skin/classic/browser/tabbrowser/tab-connecting.png (../shared/tabbrowser/tab-connecting.png)
+ skin/classic/browser/tabbrowser/tab-connecting@2x.png (../shared/tabbrowser/tab-connecting@2x.png)
+@@ -234,30 +214,22 @@
+ skin/classic/browser/tabbrowser/tab-loading@2x.png (../shared/tabbrowser/tab-loading@2x.png)
+ skin/classic/browser/tabbrowser/tab-loading-inverted.png (../shared/tabbrowser/tab-loading-inverted.png)
+ skin/classic/browser/tabbrowser/tab-loading-inverted@2x.png (../shared/tabbrowser/tab-loading-inverted@2x.png)
+- skin/classic/browser/tabbrowser/tab-overflow-indicator.png (../shared/tabbrowser/tab-overflow-indicator.png)
+
+ skin/classic/browser/translating-16.png (../shared/translation/translating-16.png)
+ skin/classic/browser/translating-16@2x.png (../shared/translation/translating-16@2x.png)
+ skin/classic/browser/translation-16.png (../shared/translation/translation-16.png)
+ skin/classic/browser/translation-16@2x.png (../shared/translation/translation-16@2x.png)
+ skin/classic/browser/update-badge.svg (../shared/update-badge.svg)
+- skin/classic/browser/update-circle-fill-12.svg (../shared/update-circle-fill-12.svg)
+- skin/classic/browser/badge-blue.svg (../shared/badge-blue.svg)
+- skin/classic/browser/warning.svg (../shared/warning.svg)
+ skin/classic/browser/profiler-popup-backdrop.png (../shared/profiler-popup-backdrop.png)
+- skin/classic/browser/cert-error.svg (../shared/incontent-icons/cert-error.svg)
+ skin/classic/browser/wifi.svg (../shared/incontent-icons/wifi.svg)
+ skin/classic/browser/tab-crashed.svg (../shared/incontent-icons/tab-crashed.svg)
+- skin/classic/browser/welcome-back.svg (../shared/incontent-icons/welcome-back.svg)
+ skin/classic/browser/panic-panel/header.png (../shared/panic-panel/header.png)
+ skin/classic/browser/panic-panel/header@2x.png (../shared/panic-panel/header@2x.png)
+ skin/classic/browser/panic-panel/icons.png (../shared/panic-panel/icons.png)
+ skin/classic/browser/panic-panel/icons@2x.png (../shared/panic-panel/icons@2x.png)
+ skin/classic/browser/places/bookmarksMenu.svg (../shared/places/bookmarksMenu.svg)
+ skin/classic/browser/places/bookmarksToolbar.svg (../shared/places/bookmarksToolbar.svg)
+- skin/classic/browser/places/folder.svg (../shared/places/folder.svg)
+ skin/classic/browser/places/folder-smart.svg (../shared/places/folder-smart.svg)
+- skin/classic/browser/places/history.svg (../shared/places/history.svg)
+ skin/classic/browser/places/tag.svg (../shared/places/tag.svg)
+ skin/classic/browser/places/tree-icons.css (../shared/places/tree-icons.css)
+ skin/classic/browser/privatebrowsing/aboutPrivateBrowsing.css (../shared/privatebrowsing/aboutPrivateBrowsing.css)
diff --git a/browser/themes/shared/preferences/category-librewolf.svg b/browser/themes/shared/preferences/category-librewolf.svg
new file mode 100644
index 0000000..8ebf2eb
@@ -862,11 +1679,80 @@ index 0000000..12f926a
+ -moz-context-properties: fill, fill-opacity;
+ fill: currentColor;
+}
-diff --git a/browser/themes/shared/preferences/preferences.inc.css b/browser/themes/shared/preferences/preferences.inc.css
-index 31bffd0..1f9fbcf 100644
+diff --git a/browser/themes/shared/preferences/preferences.inc.css b/browser/themes/shared/preferences/preferences.css
+similarity index 70%
+rename from browser/themes/shared/preferences/preferences.inc.css
+rename to browser/themes/shared/preferences/preferences.css
+index 31bffd0..801b183 100644
--- a/browser/themes/shared/preferences/preferences.inc.css
-+++ b/browser/themes/shared/preferences/preferences.inc.css
-@@ -201,6 +201,10 @@ checkbox {
++++ b/browser/themes/shared/preferences/preferences.css
+@@ -1,10 +1,30 @@
+-%if 0
+ /* - This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ - You can obtain one at http://mozilla.org/MPL/2.0/. */
+-%endif
++
+ @namespace html "http://www.w3.org/1999/xhtml";
+
++/* Global rules */
++* {
++ user-select: text;
++}
++
++body {
++ font-size: 1.25em;
++}
++
++@media (-moz-platform: macos) {
++ body {
++ font-size: 1.36em;
++ }
++}
++
++@media (-moz-platform: linux) {
++ body {
++ font-size: 1.11em;
++ }
++}
++
+ #preferences-root {
+ text-rendering: optimizeLegibility;
+ }
+@@ -28,10 +48,8 @@
+ vertical-align: top; /* See bug 1606130 */
+ display: -moz-box;
+ -moz-box-orient: vertical;
+-}
+
+-* {
+- user-select: text;
++ --main-pane-width: 664px;
+ }
+
+ /*
+@@ -51,7 +69,7 @@
+ .pane-container {
+ /* A workaround to keep the container always float on the `top: 0` (Bug 1377009) */
+ display: block;
+- width: 664px;
++ width: var(--main-pane-width);
+ }
+
+ #mainPrefPane {
+@@ -113,7 +131,10 @@ button > hbox > label {
+ }
+
+ .indent {
+- margin-inline-start: 28px !important;
++ /* This should match the checkboxes/radiobuttons' width and inline margin,
++ such that when we have a toggle with a label followed by another element
++ with this class, the other element's text aligns with the toggle label. */
++ margin-inline-start: 22px !important;
+ }
+
+ checkbox {
+@@ -201,22 +222,40 @@ checkbox {
list-style-image: url("chrome://browser/skin/preferences/category-privacy-security.svg");
}
@@ -877,3 +1763,686 @@ index 31bffd0..1f9fbcf 100644
#category-sync > .category-icon {
list-style-image: url("chrome://browser/skin/preferences/category-sync.svg");
}
+
+ #category-experimental > .category-icon {
+- list-style-image: url("chrome://browser/skin/preferences/category-experiments.svg");
++ list-style-image: url("chrome://global/skin/icons/experiments.svg");
++}
++
++#category-more-from-mozilla > .category-icon {
++ list-style-image: url("chrome://browser/skin/preferences/mozilla-logo.svg");
++ -moz-context-properties: fill, stroke, fill-opacity, stroke-opacity;
++ fill: currentColor;
++ stroke: var(--in-content-page-background);
++}
++
++@media (prefers-contrast) {
++ #category-more-from-mozilla:hover > .category-icon {
++ stroke: var(--in-content-button-background-hover);
++ }
++
++ #category-more-from-mozilla[selected] > .category-icon {
++ stroke: var(--in-content-button-background-hover);
++ }
+ }
+
+ /* All panes */
+
+ .info-icon,
+ .androidIcon,
+-.iOSIcon,
+-#updateSettingCrossUserWarning,
+-.extension-controlled > description,
+-.info-panel > description {
++.iOSIcon {
+ -moz-context-properties: fill;
+ fill: currentColor;
+ }
+@@ -233,29 +272,12 @@ checkbox {
+ font-weight: 600;
+ }
+
+-.info-panel,
+-.extension-controlled {
+- margin-block: 18px !important;
+- background: var(--in-content-box-info-background);
+- border-radius: 5px;
+- padding-inline-end: 10px;
+-}
+-
+-.info-panel > description,
+-.extension-controlled > description {
+- line-height: 16px;
+- background: url(chrome://global/skin/icons/info.svg) 10px 14px no-repeat;
+- padding: 10px;
+- padding-inline-start: 32px;
++#browserContainersExtensionContent {
++ padding-block: 5px;
+ }
+
+-.info-panel > description {
+- line-height: unset;
+-}
+-
+-.info-panel > description:-moz-locale-dir(rtl),
+-.extension-controlled > description:-moz-locale-dir(rtl) {
+- background-position-x: right 10px;
++.extension-controlled {
++ margin-block: 18px;
+ }
+
+ .extension-controlled-icon {
+@@ -297,7 +319,7 @@ checkbox {
+ }
+
+ #useDocumentColors {
+- margin: 0;
++ margin: 4px 0;
+ }
+
+ #translationAttributionImage {
+@@ -402,8 +424,9 @@ checkbox {
+ margin-inline-end: 8px !important;
+ }
+
+-.actionsMenu:focus-visible {
+- outline-offset: -2px;
++/* Increase the specifity to override common.inc.css */
++richlistitem[selected] .actionsMenu:focus-visible {
++ outline-offset: -3px;
+ }
+
+ /* Home Pane */
+@@ -437,10 +460,10 @@ checkbox {
+ margin-inline-end: 0;
+ }
+
+-#homeContentsGroup checkbox[src] .checkbox-icon {
++#homeContentsGroup .checkbox-icon[src] {
+ -moz-context-properties: fill;
+ fill: currentColor;
+- margin-inline: 4px 8px;
++ margin-inline: 2px 8px;
+ width: 16px;
+ }
+
+@@ -479,6 +502,14 @@ checkbox {
+ stroke: var(--in-content-item-selected);
+ }
+
++@media (prefers-contrast) {
++ #engineList > treechildren::-moz-tree-image(hover),
++ #blocklistsTree > treechildren::-moz-tree-image(hover) {
++ fill: var(--in-content-item-hover-text);
++ stroke: var(--in-content-item-hover);
++ }
++}
++
+ #engineList > treechildren::-moz-tree-row,
+ #blocklistsTree > treechildren::-moz-tree-row {
+ min-height: 36px;
+@@ -494,11 +525,6 @@ checkbox {
+
+ /* Privacy Pane */
+
+-#locationBarGroup > .text-link {
+- margin-top: 6px;
+- line-height: 30px;
+-}
+-
+ #allowSmartSize {
+ margin-block: 0 4px;
+ }
+@@ -549,6 +575,14 @@ checkbox {
+ margin-inline-start: 0;
+ }
+
++@media (-moz-platform: windows-win7),
++ (-moz-platform: windows-win8) {
++ #windows-sso,
++ #windows-sso-caption {
++ display: none;
++ }
++}
++
+ /**
+ * Dialog
+ */
+@@ -576,7 +610,7 @@ checkbox {
+ overflow-x: auto;
+ }
+
+-@media (-moz-toolbar-prefers-color-scheme: dark) {
++@media (prefers-color-scheme: dark) {
+ @media not (prefers-contrast) {
+ .dialogBox {
+ --in-content-page-background: #42414d;
+@@ -584,7 +618,6 @@ checkbox {
+ }
+ }
+
+-
+ .dialogBox[resizable="true"] {
+ resize: both;
+ overflow: hidden;
+@@ -598,16 +631,6 @@ checkbox {
+ border-bottom: 1px solid var(--in-content-border-color);
+ }
+
+-@media not (-moz-proton) {
+-.dialogBox {
+- border-radius: 3.5px;
+-}
+-.dialogTitleBar {
+- padding: 3.5px 0;
+- background-color: var(--in-content-dialog-header-background);
+-}
+-} /*** END !proton ***/
+-
+ .dialogTitle {
+ font-size: .9em;
+ font-weight: 600;
+@@ -627,7 +650,7 @@ checkbox {
+ }
+
+ .dialogFrame {
+- margin: 20px;
++ margin: 10px;
+ -moz-box-flex: 1;
+ /* Default dialog dimensions */
+ width: 66ch;
+@@ -747,7 +770,9 @@ checkbox {
+ }
+
+ .fxaLoginRejectedWarning {
+- list-style-image: url(chrome://browser/skin/warning.svg);
++ list-style-image: url(chrome://global/skin/icons/warning.svg);
++ -moz-context-properties: fill;
++ fill: #FFBF00;
+ margin-inline: 4px 8px;
+ }
+
+@@ -756,10 +781,7 @@ checkbox {
+ }
+
+ .sync-group {
+- border-radius: 4px;
+- padding: 16px;
+ margin-block: 16px;
+- background-color: var(--in-content-box-info-background);
+ border: 1px solid var(--in-content-border-color);
+ }
+
+@@ -782,7 +804,7 @@ dialog > .sync-engines-list + hbox {
+
+ .sync-engines-list checkbox .checkbox-icon,
+ .sync-engine-image {
+- margin-inline: 4px 8px;
++ margin-inline: 2px 8px;
+ width: 16px;
+ height: 16px;
+ -moz-context-properties: fill;
+@@ -920,6 +942,11 @@ image.update-throbber {
+ margin-inline-end: 8px;
+ }
+
++.main-content {
++ /* the 32px min-height, plus 20+30px margin below, plus some leeway: */
++ scroll-padding-top: 90px;
++}
++
+ #policies-container,
+ #searchInput {
+ min-height: 32px;
+@@ -927,28 +954,41 @@ image.update-throbber {
+ }
+
+ #policies-container {
+- background-color: var(--in-content-box-info-background);
+- padding: 0 8px;
+ margin-inline-end: 16px;
+- border-radius: 2px;
++ /* Make sure the container is at least the same height as the searchbox.
++ This is needed in addition to the min-height above to make the info icon
++ the same height as the first line in the policies label.
++ Searchbox's height - line-height - border top and bottom */
++ padding-block: max(0px, calc((32px - 1.8em - 2px) / 2));
++}
++
++.info-box-container {
++ background-color: var(--in-content-box-info-background);
++ padding: 9px;
++ border: 1px solid transparent;
++ border-radius: 4px;
++}
++
++.info-box-container.smaller-font-size {
+ font-size: 85%;
+ }
+
+-.policies-label {
+- margin-inline-start: 2px;
++.info-icon-container {
++ display: flex;
+ }
+
+ .info-icon {
+ list-style-image: url("chrome://global/skin/icons/info.svg");
+ width: 16px;
+ height: 16px;
++ margin-inline-end: 6px;
++ align-self: start;
++ margin-top: 0.4em;
++ flex-shrink: 0;
+ }
+
+-.info-icon-telemetry {
+- list-style-image: url("chrome://global/skin/icons/info.svg");
+- width: 16px;
+- height: 16px;
+- margin-inline: 2px 8px;
++.info-box-container.smaller-font-size .info-icon {
++ margin-top: 0.3em;
+ }
+
+ .sticky-container {
+@@ -962,6 +1002,11 @@ image.update-throbber {
+ padding-inline: 4px;
+ }
+
++.sticky-inner-container {
++ -moz-box-flex: 1;
++ max-width: var(--main-pane-width);
++}
++
+ .search-tooltip {
+ max-width: 150px;
+ font-size: 1.25rem;
+@@ -1040,27 +1085,6 @@ menulist[indicator=true] > menupopup menuitem[indicator=true]:not([image]) > .me
+ line-height: 30px;
+ }
+
+-.no-results-image-container {
+- margin-top: 64px;
+-}
+-
+-.no-results-image {
+- list-style-image: url("chrome://browser/skin/preferences/no-search-results.svg");
+- width: 380px;
+- height: 293px;
+-}
+-
+-#no-results-message[query*=🔥🦊] {
+- background-image: url("chrome://browser/skin/preferences/critters-postcard.jpg");
+- background-size: contain;
+- background-repeat: no-repeat;
+- background-position: center;
+-}
+-
+-#no-results-message[query*=🔥🦊] > .no-results-container {
+- visibility: hidden;
+-}
+-
+ /* Proxy port input */
+
+ .proxy-port-input {
+@@ -1068,7 +1092,7 @@ menulist[indicator=true] > menupopup menuitem[indicator=true]:not([image]) > .me
+ margin-inline-start: 4px;
+ }
+
+-#defaultBrowserLanguage {
++#primaryBrowserLocale {
+ margin-inline-start: 0;
+ min-width: 20em;
+ }
+@@ -1107,25 +1131,12 @@ menulist[indicator=true] > menupopup menuitem[indicator=true]:not([image]) > .me
+ }
+
+ .updateSettingCrossUserWarningContainer {
+- background: var(--in-content-box-info-background);
+- border-radius: 5px;
+- padding: 2px 8px 8px;
+ margin-block-end: 17px;
+ }
+
+-#updateSettingCrossUserWarning {
+- padding-inline-start: 30px;
++#updateSettingCrossUserWarningDesc {
++ padding-inline-start: calc(16px + 6px); /* radio-check's width + margin-inline-end */
+ margin-block-start: 20px;
+- line-height: 20px;
+- background-image: url("chrome://global/skin/icons/info.svg");
+- background-position-x: left 2px;
+- background-position-y: top 2px;
+- background-size: 16px 16px;
+- background-repeat: no-repeat;
+-}
+-
+-#updateSettingCrossUserWarning:-moz-locale-dir(rtl) {
+- background-position-x: right 2px;
+ }
+
+ richlistitem .text-link {
+@@ -1193,3 +1204,322 @@ richlistitem .text-link:hover {
+ .featureGateDescription {
+ margin-inline-start: 28px;
+ }
++
++.checkbox-row {
++ display: flex;
++ align-items: baseline;
++}
++
++.checkbox-row input[type=checkbox] {
++ translate: 0 2px
++}
++
++.checkbox-row a {
++ margin-inline-start: 6px;
++}
++
++#moreFromMozillaCategory-header .title {
++ margin-block-end: 4px;
++}
++
++#moreFromMozillaCategory-header .subtitle {
++ color: var(--in-content-text-color);
++ margin-block-end: 24px;
++ line-height: 1.4em;
++}
++
++#moreFromMozillaCategory:not([hidden]) {
++ display: flex;
++ flex-direction: column;
++}
++
++#moreFromMozillaCategory .mozilla-product-item {
++ margin-top: 30px;
++}
++
++#moreFromMozillaCategory .product-title {
++ margin: 4px 0 3px;
++ background-repeat: no-repeat;
++ background-size: contain;
++ padding-inline-start: 30px;
++ -moz-context-properties: fill;
++ fill: currentColor;
++}
++
++#moreFromMozillaCategory .advanced .product-title {
++ background-size: initial;
++ padding-inline-start: 0;
++ padding-top: 33px;
++}
++
++/* The firefox-mobile product has three columns and needs to constrain the
++ * .product-info section to one of them.
++ */
++#firefox-mobile-div.advanced .product-info {
++ max-width: 200px;
++}
++
++#moreFromMozillaCategory .product-img {
++ background-repeat: no-repeat;
++ background-size: 170px;
++ padding-inline-start: 184px;
++}
++
++#moreFromMozillaCategory .product-title:-moz-locale-dir(rtl),
++#moreFromMozillaCategory .product-img:-moz-locale-dir(rtl) {
++ background-position-x: right;
++}
++
++#moreFromMozillaCategory .description {
++ display: inline flow-root;
++ color: var(--in-content-text-color);
++ padding-inline-start: 30px;
++ margin: 2px 0;
++ line-height: 1.4em;
++}
++
++#moreFromMozillaCategory .advanced .description {
++ padding-inline-start: 0;
++}
++
++#moreFromMozillaCategory .small-button {
++ margin-block: 14px 2px;
++ margin-inline: 30px 0;
++}
++
++#moreFromMozillaCategory .advanced .small-button {
++ margin: 24px 0;
++}
++
++#moreFromMozillaCategory .mozilla-product-item.advanced {
++ box-shadow: 0 2px 6px rgba(58, 57, 68, 0.2);
++ border-radius: 4px;
++
++ margin-block: 20px 10px;
++ margin-inline: 2px 0;
++ padding: 16px;
++}
++
++@media (prefers-color-scheme: dark) {
++ #moreFromMozillaCategory .mozilla-product-item.advanced {
++ background-color: rgb(66, 65, 77);
++ }
++}
++
++#moreFromMozillaCategory .advanced .product-info {
++ width: 500px;
++}
++
++#moreFromMozillaCategory .text-link {
++ line-height: 1.4em;
++
++ margin-block: 2px 0;
++ margin-inline: 6px 0;
++}
++
++#moreFromMozillaCategory .simple .text-link {
++ display: inline flow-root;
++ margin-inline-start: 4px;
++}
++
++#moreFromMozillaCategory .text-link.hidden {
++ display: none;
++}
++
++#firefox-mobile {
++ background-image: url("chrome://devtools/skin/images/browsers/mobile.svg");
++ padding-top: 5px;
++}
++
++#mozilla-vpn {
++ background-image: url("chrome://browser/skin/preferences/vpn-logo.svg");
++}
++
++#mozilla-rally {
++ background-image: url("chrome://browser/skin/preferences/rally-logo.svg");
++}
++
++#firefox-mobile-image {
++ background-image: url("chrome://browser/skin/preferences/img-mobile.svg");
++}
++
++.advanced #firefox-mobile-image {
++ display: flex;
++}
++
++#mozilla-vpn-image {
++ background-image: url("chrome://browser/skin/preferences/img-vpn.svg");
++}
++
++#mozilla-rally-image {
++ background-image: url("chrome://browser/skin/preferences/img-rally.png");
++}
++
++/*
++ * The :not clause is required because hiding an element with `display: flex` only
++ * partially hides it.
++ */
++.qr-code-box:not([hidden="true"]) {
++ max-width: 320px; /* a unit better than px for this & next? */
++ min-height: 204px;
++ margin-block: 10px 0;
++ margin-inline-start: 30px;
++ background-color: var(--in-content-box-info-background);
++ display: flex;
++ flex-direction: column;
++ align-items: center;
++ justify-content: space-evenly;
++ border-radius: 4px;
++}
++
++@media (prefers-contrast) {
++ .qr-code-box:not([hidden="true"]) {
++ border: 1px solid currentColor;
++ }
++}
++
++.advanced .qr-code-box {
++ align-items: flex-start;
++ margin-inline-start: 12px;
++}
++
++.qr-code-top-box {
++ display: flex;
++}
++
++.advanced .qr-code-top-box {
++ align-items: center;
++ width: 310px;
++}
++
++.qr-code-box-image {
++ border-radius: 4px;
++ padding: 2px;
++ width: 80px;
++ flex: 0 0 auto;
++ -moz-context-properties: fill;
++ fill: currentColor;
++}
++
++.advanced .qr-code-box-image {
++ max-width: 86px;
++ height: 86px;
++ margin-inline-end: 16px;
++ margin-block: 18px;
++
++ fill: rgb(87, 77, 77);
++}
++
++#moreFromMozillaCategory .advanced .text-link {
++ margin-inline-start: 0;
++}
++
++.qr-code-title-label {
++ flex: 1 1 auto;
++}
++
++.qr-code-box-title {
++ font-size: .87em;
++ font-weight: normal;
++ line-height: 1.42em;
++
++ text-align: center;
++
++ margin-block: 20px 0;
++ margin-inline: 40px;
++}
++
++.simple .qr-code-box-title {
++ margin-block: 0;
++ width: 296px;
++}
++
++.simple .qr-code-box {
++ padding-inline: 24px;
++ padding-block: 20px
++}
++
++.simple .qr-code-box-image {
++ padding: 10px;
++}
++
++.advanced .qr-code-box-title {
++ text-align: start;
++ margin-inline: 16px;
++ margin-block: revert;
++}
++
++#moreFromMozillaCategory .qr-code-link {
++ font-size: .87em;
++ line-height: 1.42em;
++ margin-block-start: 0;
++ margin-inline: 0; /* make sure we're correctly centered by overriding button rule */
++}
++
++#moreFromMozillaCategory .advanced .qr-code-link {
++ margin-inline: 16px;
++ margin-block-start: 30px;
++}
++
++@media (prefers-color-scheme: dark) {
++ .qr-code-box:not([hidden="true"]) {
++ background-color: rgba(91,91,102,0.45);
++ }
++
++ .advanced .qr-code-box-image {
++ background-color: white;
++ fill: black;
++ }
++
++ .qr-code-box-title {
++ color: #fbfbfe;
++ }
++}
++
++/* Platform-specific tweaks & overrides */
++
++@media (-moz-platform: macos) {
++ tabpanels {
++ padding: 20px 7px 7px;
++ }
++
++ #browserUseCurrent,
++ #browserUseBookmark,
++ #browserUseBlank {
++ margin-top: 10px;
++ }
++
++ #advancedPrefs {
++ margin: 0 8px;
++ }
++
++ #privacyPrefs {
++ padding: 0 4px;
++ }
++
++ #privacyPrefs > tabpanels {
++ padding: 18px 10px 10px;
++ }
++
++ #OCSPDialogPane {
++ font: message-box !important;
++ }
++
++ /**
++ * Update Preferences
++ */
++ #autoInstallOptions {
++ margin-inline-start: 20px;
++ }
++
++ .updateControls {
++ margin-inline-start: 10px;
++ }
++}
++
++@media (-moz-platform: linux) {
++ .treecol-sortdirection {
++ /* override the Linux only toolkit rule */
++ appearance: none;
++ }
++}