[Pkg-mozext-commits] [tabmixplus] 16/28: Follow up bug 1066531, move all style rules with selected/visuallyselected attribute to separate files under app_version/before39.0 and app_version/39.0 folder. Move our style attributes to gBrowser.tabContainer and update style rules accordingly.

David Prévot taffit at moszumanska.debian.org
Sun Jul 5 15:02:34 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository tabmixplus.

commit 1fb9d646f673a6fce5d176e8b7cc2e887804d311
Author: onemen <tabmix.onemen at gmail.com>
Date:   Thu Jun 25 21:09:36 2015 +0300

    Follow up bug 1066531, move all style rules with selected/visuallyselected attribute to separate files under app_version/before39.0 and app_version/39.0 folder.
    Move our style attributes to gBrowser.tabContainer and update style rules accordingly.
---
 chrome.manifest                                    |   3 +-
 chrome/content/links/userInterface.js              |  24 +-
 chrome/content/minit/tablib.js                     |   8 +
 chrome/content/tab/tab.js                          |  46 ++--
 chrome/content/tabmix.js                           |  40 +--
 chrome/skin/app_version/39.0/linux/browser.css     |  17 ++
 chrome/skin/app_version/39.0/mac/browser.css       |  35 +++
 chrome/skin/app_version/39.0/tabStyles.css         | 267 +++++++++++++++++++++
 chrome/skin/app_version/39.0/win/browser.css       |  19 ++
 chrome/skin/app_version/all/linux/browser.css      |   7 -
 chrome/skin/app_version/all/mac/browser.css        |  16 --
 chrome/skin/app_version/all/win/browser.css        |   8 -
 .../skin/app_version/before39.0/linux/browser.css  |  17 ++
 chrome/skin/app_version/before39.0/mac/browser.css |  35 +++
 chrome/skin/app_version/before39.0/tabStyles.css   | 265 ++++++++++++++++++++
 chrome/skin/app_version/before39.0/win/browser.css |  19 ++
 chrome/skin/general.css                            | 120 ---------
 chrome/skin/tab.css                                |  21 --
 modules/DynamicRules.jsm                           |  54 +++--
 modules/Services.jsm                               |   6 +
 20 files changed, 778 insertions(+), 249 deletions(-)

diff --git a/chrome.manifest b/chrome.manifest
index 345acc1..fb60af1 100644
--- a/chrome.manifest
+++ b/chrome.manifest
@@ -80,7 +80,8 @@ overlay   chrome://wizzrss/content/feedster.xul                     chrome://tab
 
 skin      tabmixplus   classic/1.0   chrome/skin/
 
-skin      tabmix-version tabmixplus  chrome/skin/app_version/all/
+skin      tabmix-version tabmixplus  chrome/skin/app_version/before39.0/ appversion<39.0a1
+skin      tabmix-version tabmixplus  chrome/skin/app_version/39.0/       appversion>=39.0a1
 skin      tabmix-os    classic/1.0   chrome://tabmix-version/skin/win/   os=WINNT
 skin      tabmix-os    classic/1.0   chrome://tabmix-version/skin/mac/   os=Darwin
 skin      tabmix-os    classic/1.0   chrome://tabmix-version/skin/linux/ os=Linux
diff --git a/chrome/content/links/userInterface.js b/chrome/content/links/userInterface.js
index 56d8c1f..26853f4 100644
--- a/chrome/content/links/userInterface.js
+++ b/chrome/content/links/userInterface.js
@@ -380,31 +380,27 @@ Tabmix.restoreTabState = function TMP_restoreTabState(aTab) {
   aTab.removeAttribute("maxwidth");
 };
 
-Tabmix.tabStyles = {};
 Tabmix.setTabStyle = function(aTab, boldChanged) {
   if (!aTab)
     return;
-  let style = "other";
-  if (aTab.selected)
-    style = "current";
+  let style = "null";
+  let isSelected = aTab.getAttribute(TabmixSvc.selectedAtt) == "true";
   // if pending tab is blank we don't style it as unload or unread
-  else if (Tabmix.prefs.getBoolPref("unloadedTab") &&
+  if (!isSelected && Tabmix.prefs.getBoolPref("unloadedTab") &&
       (aTab.hasAttribute("pending") || aTab.hasAttribute("tabmix_pending")))
     style = TMP_SessionStore.isBlankPendingTab(aTab) ? "other" : "unloaded";
-  else if (Tabmix.prefs.getBoolPref("unreadTab") &&
+  else if (!isSelected && Tabmix.prefs.getBoolPref("unreadTab") &&
       !aTab.hasAttribute("visited") && !isTabEmpty(aTab))
     style = "unread";
 
-  let currentAttrib = aTab.getAttribute("tabmix_tabStyle");
-  let newAttrib = Tabmix.tabStyles[style] || style;
-  this.setItem(aTab, "tabmix_tabStyle", newAttrib);
+  let currentStyle = aTab.getAttribute("tabmix_tabState") || null;
+  if (style != "unread" && style != "unloaded")
+    style = null;
+  this.setItem(aTab, "tabmix_tabState", style);
 
   if (!boldChanged)
     return;
 
-  let isBold = function(attrib) {
-    attrib = attrib.split(" ");
-    return attrib.length > 1 && attrib.indexOf("not-bold") == -1;
-  };
-  boldChanged.value = isBold(newAttrib) != isBold(currentAttrib);
+  // return true if state changed
+  boldChanged.value = currentStyle != style;
 };
diff --git a/chrome/content/minit/tablib.js b/chrome/content/minit/tablib.js
index 5cb6070..02a8790 100644
--- a/chrome/content/minit/tablib.js
+++ b/chrome/content/minit/tablib.js
@@ -477,6 +477,14 @@ var tablib = {
       '  }'
     ).defineProperty();
 
+    if (Tabmix.isVersion(220)) {
+      Tabmix.changeCode(tabBar, "gBrowser.tabContainer._setPositionalAttributes")._replace(
+        /(\})(\)?)$/,
+        '          Tabmix.setTabStyle(this.selectedItem);\n' +
+        '          TabmixTabbar.updateBeforeAndAfter();\n' +
+        '$1$2'
+      ).toCode();
+    }
   },
 
   change_utility: function change_utility() {
diff --git a/chrome/content/tab/tab.js b/chrome/content/tab/tab.js
index e0f2326..e4ce98d 100644
--- a/chrome/content/tab/tab.js
+++ b/chrome/content/tab/tab.js
@@ -1222,7 +1222,7 @@ var gTMPprefObserver = {
       case "extensions.tabmix.unloadedTab":
       case "extensions.tabmix.unreadTab":
       case "extensions.tabmix.otherTab":
-        this.updateTabsStyle(prefName.split(".").pop(), true);
+        this.updateTabsStyle(prefName.split(".").pop());
         break;
       case "extensions.tabmix.progressMeter":
         this.setProgressMeter();
@@ -1757,7 +1757,7 @@ var gTMPprefObserver = {
     }
   },
 
-  updateTabsStyle: function(ruleName, toggle) {
+  updateTabsStyle: function(ruleName) {
     let attribValue = null;
     let styleName = ruleName.replace("Tab", "");
     let enabled = Tabmix.prefs.getBoolPref(ruleName);
@@ -1770,45 +1770,35 @@ var gTMPprefObserver = {
                prefValues.underline ? "underline" : "not-underline"
       ];
       if (prefValues.text)
-        attribValue.push(styleName + "-text");
+        attribValue.push("text");
       if (prefValues.bg)
-        attribValue.push(styleName + "-bg");
+        attribValue.push("bg");
       attribValue = attribValue.join(" ");
     }
 
-    let getTabs = function(attrib, val) {
-      return Array.slice(document.getElementsByAttribute(attrib, val));
-    };
+    let tabBar = gBrowser.tabContainer;
+    let currentAttrib = tabBar.getAttribute("tabmix_" + styleName + "Style") || "";
+    Tabmix.setItem(tabBar, "tabmix_" + styleName + "Style", attribValue);
 
-    let tabs, attrib = Tabmix.tabStyles[styleName] || styleName;
-    Tabmix.tabStyles[styleName] = attribValue;
     /** style on non-selected tab are unloaded, unread or other, unloaded and
      *  unread are only set on tab if the corresponded preference it on. if user
      *  changed unloaded or unread preference we need to set the proper tab
      *  style for each tab
      */
-    if (toggle && styleName == "unloaded") {
-      tabs = getTabs("pending", "true");
-      tabs.forEach(function(tab) Tabmix.setTabStyle(tab));
-    }
-    else if (toggle && styleName == "unread") {
-      if (enabled)
-        attrib = Tabmix.tabStyles["other"] || "other";
-      tabs = getTabs("tabmix_tabStyle", attrib);
-      tabs.forEach(function(tab) Tabmix.setTabStyle(tab));
-    }
-    else {
-      tabs = getTabs("tabmix_tabStyle", attrib);
-      tabs.forEach(function(tab) {
-        Tabmix.setItem(tab, "tabmix_tabStyle", attribValue || styleName);
-      });
-    }
+    if (styleName == "unloaded" || styleName == "unread")
+      Array.forEach(gBrowser.tabs, function(tab) Tabmix.setTabStyle(tab));
 
+    let isBold = function(attrib) {
+      attrib = attrib.split(" ");
+      return attrib.length > 1 && attrib.indexOf("not-bold") == -1;
+    };
     // changing bold attribute can change tab width and effect tabBar scroll status
     // also when we turn off unloaded, unread and other style diffrent style can take
     // control with a diffrent bold attribute
-    TabmixTabbar.updateScrollStatus();
-    TabmixTabbar.updateBeforeAndAfter();
+    if (isBold(attribValue || "") != isBold(currentAttrib)) {
+      TabmixTabbar.updateScrollStatus();
+      TabmixTabbar.updateBeforeAndAfter();
+    }
   },
 
   setProgressMeter: function () {
@@ -2583,7 +2573,7 @@ var TabmixProgressListener = {
         if (!isBlankPageURL(uri) && uri.indexOf("newTab.xul") == -1) {
           aBrowser.tabmix_allowLoad = !tab.hasAttribute("locked");
           if (Tabmix.prefs.getBoolPref("unreadTabreload") && tab.hasAttribute("visited") &&
-                !tab.hasAttribute("dontremovevisited") && tab.getAttribute("selected") != "true")
+              !tab.hasAttribute("dontremovevisited") && tab.getAttribute(TabmixSvc.selectedAtt) != "true")
             tab.removeAttribute("visited");
             Tabmix.setTabStyle(tab);
         }
diff --git a/chrome/content/tabmix.js b/chrome/content/tabmix.js
index 0472e6f..49764be 100644
--- a/chrome/content/tabmix.js
+++ b/chrome/content/tabmix.js
@@ -286,6 +286,9 @@ var TMP_eventListener = {
       case "TabSelect":
         this.onTabSelect(aEvent);
         break;
+      case "TabSwitchDone":
+        this.onTabSwitchDone(gBrowser.selectedTab);
+        break;
       case "TabMove":
         this.onTabMove(aEvent);
         break;
@@ -460,6 +463,10 @@ var TMP_eventListener = {
       Tabmix.Utils.initMessageManager(window);
     }
 
+    if (Tabmix.isVersion(390)) {
+      gBrowser.addEventListener("TabSwitchDone", this, false);
+    }
+
     var tabBar = gBrowser.tabContainer;
 
     tabBar.addEventListener("DOMMouseScroll", this, true);
@@ -613,7 +620,7 @@ var TMP_eventListener = {
     // apply style on tabs
     let styles = ["currentTab", "unloadedTab", "unreadTab", "otherTab"];
     styles.forEach(function(ruleName) {
-      gTMPprefObserver.updateTabsStyle(ruleName, true);
+      gTMPprefObserver.updateTabsStyle(ruleName);
     });
     // progressMeter on tabs
     gTMPprefObserver.setProgressMeter();
@@ -914,7 +921,6 @@ var TMP_eventListener = {
 
   onTabSelect: function TMP_EL_TabSelect(aEvent) {
     var tab = aEvent.target;
-    var tabBar = gBrowser.tabContainer;
 
     // for ColorfulTabs 6.0+
     // ColorfulTabs trapp TabSelect event after we do
@@ -936,29 +942,31 @@ var TMP_eventListener = {
 
     // update this functions after new tab select
     tab.setAttribute("tabmix_selectedID", Tabmix._nextSelectedID++);
+
+    if (!Tabmix.isVersion(390)) {
+      this.onTabSwitchDone(tab);
+    }
+
+    TMP_LastTab.OnSelect();
+    TabmixSessionManager.tabSelected(true);
+  },
+
+  onTabSwitchDone: function(tab) {
     if (!tab.hasAttribute("visited"))
       tab.setAttribute("visited", true);
 
     if (tab.hasAttribute("tabmix_pending"))
       tab.removeAttribute("tabmix_pending");
-    let lastSelected = document.getElementsByAttribute("tabmix_tabStyle",
-      Tabmix.tabStyles["current"] || "current")[0];
-    Tabmix.setTabStyle(lastSelected);
     Tabmix.setTabStyle(tab);
 
-    TMP_LastTab.OnSelect();
-    TabmixSessionManager.tabSelected(true);
-
     if (tab.hasAttribute("showbutton") &&
-        tabBar.getAttribute("closebuttons") == "activetab")
+        gBrowser.tabContainer.getAttribute("closebuttons") == "activetab")
       tab.style.removeProperty("width");
 
     // tabBar.updateCurrentBrowser call tabBar._setPositionalAttributes after
-    // TabSelect event. we call updateBeforeAndAfter after a timeout so
-    // _setPositionalAttributes not override our attribute
-    if (Tabmix.isVersion(220))
-      setTimeout(function(){TabmixTabbar.updateBeforeAndAfter();}, 0);
-    else
+    // TabSelect event.
+    // Since Firefox 220 we call updateBeforeAndAfter from _setPositionalAttributes
+    if (!Tabmix.isVersion(220))
       TabmixTabbar.updateBeforeAndAfter();
   },
 
@@ -1084,6 +1092,10 @@ var TMP_eventListener = {
     if (alltabsPopup && alltabsPopup._tabmix_inited)
       alltabsPopup.removeEventListener("popupshown", alltabsPopup.__ensureElementIsVisible, false);
 
+    if (Tabmix.isVersion(390)) {
+      gBrowser.removeEventListener("TabSwitchDone", this, false);
+    }
+
     gBrowser.tabContainer.removeEventListener("DOMMouseScroll", this, true);
 
     if (TMP_TabView.installed)
diff --git a/chrome/skin/app_version/39.0/linux/browser.css b/chrome/skin/app_version/39.0/linux/browser.css
new file mode 100644
index 0000000..e40d969
--- /dev/null
+++ b/chrome/skin/app_version/39.0/linux/browser.css
@@ -0,0 +1,17 @@
+/**
+    Firefox version 39+
+
+    Linux platform
+
+**/
+
+ at import url("chrome://tabmixplus/skin/app_version/all/linux/browser.css");
+ at import url("chrome://tabmixplus/skin/app_version/all/win/progress.css");
+ at import url("chrome://tabmixplus/skin/app_version/39.0/tabStyles.css");
+
+/***  Tab close button when user set background color ***/
+#TabsToolbar[brighttext] > #tabbrowser-tabs[tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"]:not(:hover) .tab-close-button,
+#TabsToolbar[brighttext] > #tabbrowser-tabs[tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"]:not(:hover) .tab-close-button,
+#TabsToolbar[brighttext] > #tabbrowser-tabs[tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]):not(:hover) > .tab-close-button {
+  background-image: -moz-image-rect(url("chrome://global/skin/icons/close.svg"), 0, 16, 16, 0);
+}
diff --git a/chrome/skin/app_version/39.0/mac/browser.css b/chrome/skin/app_version/39.0/mac/browser.css
new file mode 100644
index 0000000..881557d
--- /dev/null
+++ b/chrome/skin/app_version/39.0/mac/browser.css
@@ -0,0 +1,35 @@
+/**
+    Firefox version 39+
+
+    Mac platform
+
+**/
+
+ at import url("chrome://tabmixplus/skin/app_version/all/mac/browser.css");
+ at import url("chrome://tabmixplus/skin/app_version/all/mac/progress.css");
+ at import url("chrome://tabmixplus/skin/app_version/39.0/tabStyles.css");
+
+#tabbrowser-tabs[tabmix_currentStyle~="bg"] > .tabbrowser-tab[visuallyselected="true"] > .tab-stack > .tab-content,
+#tabbrowser-tabs[tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-content,
+#tabbrowser-tabs[tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-content,
+#tabbrowser-tabs[tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-content {
+  border-image: none !important;
+}
+
+/* tabmix color on tab - for inactive window */
+#tabbrowser-tabs[tabmix_currentStyle~="bg"] > .tabbrowser-tab[visuallyselected="true"] > .tab-stack > .tab-background >
+      :-moz-any(.tab-background-start, .tab-background-middle, .tab-background-end):-moz-window-inactive,
+#tabbrowser-tabs[tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background >
+      :-moz-any(.tab-background-start, .tab-background-middle, .tab-background-end):-moz-window-inactive,
+#tabbrowser-tabs[tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background >
+      :-moz-any(.tab-background-start, .tab-background-middle, .tab-background-end):-moz-window-inactive,
+#tabbrowser-tabs[tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background >
+      :-moz-any(.tab-background-start, .tab-background-middle, .tab-background-end):-moz-window-inactive {
+  opacity: 0.5 !important;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background > .tab-background-middle {
+  clip-path: none !important;
+}
diff --git a/chrome/skin/app_version/39.0/tabStyles.css b/chrome/skin/app_version/39.0/tabStyles.css
new file mode 100644
index 0000000..256692f
--- /dev/null
+++ b/chrome/skin/app_version/39.0/tabStyles.css
@@ -0,0 +1,267 @@
+/**
+    Firefox version 39+
+    Bug 1066531 replaced selected attribute with visuallyselected
+
+    :::: use visuallyselected instead of selected ::::
+
+    ALL platform
+
+**/
+
+/* :::: For current, unloaded, unread and other tab styles :::: */
+.tabbrowser-tabs[tabmix_currentStyle~="bold"] >
+    .tabbrowser-tab[visuallyselected="true"] .tab-text,
+.tabbrowser-tabs[tabmix_otherStyle~="bold"] >
+    .tabbrowser-tab:not([tabmix_tabState]):not([visuallyselected="true"]) .tab-text,
+.tabbrowser-tabs[tabmix_unloadedStyle~="bold"] >
+    .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"] .tab-text,
+.tabbrowser-tabs[tabmix_unreadStyle~="bold"] >
+    .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"] .tab-text {
+  font-weight: bold !important;
+}
+
+.tabbrowser-tabs[tabmix_currentStyle~="not-bold"] >
+    .tabbrowser-tab[visuallyselected="true"] .tab-text,
+.tabbrowser-tabs[tabmix_otherStyle~="not-bold"] >
+    .tabbrowser-tab:not([tabmix_tabState]):not([visuallyselected="true"]) .tab-text,
+.tabbrowser-tabs[tabmix_unloadedStyle~="not-bold"] >
+    .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"] .tab-text,
+.tabbrowser-tabs[tabmix_unreadStyle~="not-bold"] >
+    .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"] .tab-text {
+  font-weight: normal !important;
+}
+
+.tabbrowser-tabs[tabmix_currentStyle~="italic"] >
+    .tabbrowser-tab[visuallyselected="true"] .tab-text,
+.tabbrowser-tabs[tabmix_otherStyle~="italic"] >
+    .tabbrowser-tab:not([tabmix_tabState]):not([visuallyselected="true"]) .tab-text,
+.tabbrowser-tabs[tabmix_unloadedStyle~="italic"] >
+    .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"] .tab-text,
+.tabbrowser-tabs[tabmix_unreadStyle~="italic"] >
+    .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"] .tab-text {
+  font-style: italic !important;
+}
+
+.tabbrowser-tabs[tabmix_currentStyle~="not-italic"] >
+    .tabbrowser-tab[visuallyselected="true"] .tab-text,
+.tabbrowser-tabs[tabmix_otherStyle~="not-italic"] >
+    .tabbrowser-tab:not([tabmix_tabState]):not([visuallyselected="true"]) .tab-text,
+.tabbrowser-tabs[tabmix_unloadedStyle~="not-italic"] >
+    .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"] .tab-text,
+.tabbrowser-tabs[tabmix_unreadStyle~="not-italic"] >
+    .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"] .tab-text {
+  font-style: normal !important;
+}
+
+.tabbrowser-tabs[tabmix_currentStyle~="underline"] >
+    .tabbrowser-tab[visuallyselected="true"] .tab-text,
+.tabbrowser-tabs[tabmix_otherStyle~="underline"] >
+    .tabbrowser-tab:not([tabmix_tabState]):not([visuallyselected="true"]) .tab-text,
+.tabbrowser-tabs[tabmix_unloadedStyle~="underline"] >
+    .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"] .tab-text,
+.tabbrowser-tabs[tabmix_unreadStyle~="underline"] >
+    .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"] .tab-text {
+  text-decoration: underline !important;
+}
+
+/* :::: tabs background color for australis [Firefox 28+] :::: */
+.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab:hover:not([tabmix-beforeselected-visible]):not([visuallyselected="true"]):not([dragged]) {
+  position: relative;
+  z-index: 1;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_currentStyle~="bg"] > .tabbrowser-tab[visuallyselected="true"] > .tab-stack > .tab-background,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_currentStyle~="bg"] > .tabbrowser-tab[visuallyselected="true"] > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background > .tab-background-middle {
+  background-color: transparent !important;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_currentStyle~="bg"] > .tabbrowser-tab[visuallyselected="true"] > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(ltr)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(ltr)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(ltr)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(ltr)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_currentStyle~="bg"] > .tabbrowser-tab[visuallyselected="true"] > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(rtl)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(rtl)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(rtl)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(rtl)::before {
+  clip-path: url(chrome://browser/content/browser.xul#tab-curve-clip-path-start) !important;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_currentStyle~="bg"] > .tabbrowser-tab[visuallyselected="true"] > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(ltr)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(ltr)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(ltr)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(ltr)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_currentStyle~="bg"] > .tabbrowser-tab[visuallyselected="true"] > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(rtl)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(rtl)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(rtl)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(rtl)::before {
+  clip-path: url(chrome://browser/content/browser.xul#tab-curve-clip-path-end) !important;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_currentStyle~="bg"] > .tabbrowser-tab[visuallyselected="true"] > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_currentStyle~="bg"] > .tabbrowser-tab[visuallyselected="true"] > .tab-stack > .tab-background > .tab-background-end::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background > .tab-background-end::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background > .tab-background-end::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background > .tab-background-end::before {
+  content: "" !important;  /* this alrady exist for windows check in Mac and Linux*/
+  display: -moz-box !important; /* this alrady exist for windows check in Mac and Linux*/
+  background-color: transparent !important;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"]:hover > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"]:hover > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]):hover > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"]:hover > .tab-stack > .tab-background > .tab-background-end::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"]:hover > .tab-stack > .tab-background > .tab-background-end::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]):hover > .tab-stack > .tab-background > .tab-background-end::before {
+  min-height: 31px;
+  width: 30px;
+}
+
+/* see the same rule for selected tab in chrome://browser/skin/browser.css */
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"]:hover > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"]:hover > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]):hover > .tab-stack > .tab-background > .tab-background-middle {
+  background-clip: padding-box !important;
+  background-repeat: repeat-x !important;
+  background-size: auto 100%, auto 100%, auto 100% !important;
+  padding-top: 2px !important;
+  background-position: left bottom, left bottom, right bottom !important;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"]:not(:hover) > .tab-stack > .tab-background > .tab-background-start,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"]:not(:hover) > .tab-stack > .tab-background > .tab-background-start,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]):not(:hover) > .tab-stack > .tab-background > .tab-background-start,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"]:not(:hover) > .tab-stack > .tab-background > .tab-background-end,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"]:not(:hover) > .tab-stack > .tab-background > .tab-background-end,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]):not(:hover) > .tab-stack > .tab-background > .tab-background-end {
+  width: 0px !important;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"]:not(:hover) > .tab-stack > .tab-background,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"]:not(:hover) > .tab-stack > .tab-background,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]):not(:hover) > .tab-stack > .tab-background {
+  -moz-margin-start: 0px;
+  -moz-margin-end: 0px;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"]:not(:hover) > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"]:not(:hover) > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]):not(:hover) > .tab-stack > .tab-background > .tab-background-middle {
+  border: 2px solid transparent;
+  border-bottom: none;
+  -moz-margin-start: -1px;
+  -moz-margin-end: -1px;
+  border-radius: 13.25px 13.25px 0 0;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab[first-visible-tab]:not([visuallyselected="true"])[tabmix_tabState="unloaded"]:not(:hover) > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab[first-visible-tab]:not([visuallyselected="true"])[tabmix_tabState="unread"]:not(:hover) > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab[first-visible-tab]:not([visuallyselected="true"]):not([tabmix_tabState]):not(:hover) > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab[last-visible-tab]:not([visuallyselected="true"])[tabmix_tabState="unloaded"]:not(:hover) > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab[last-visible-tab]:not([visuallyselected="true"])[tabmix_tabState="unread"]:not(:hover) > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab[last-visible-tab]:not([visuallyselected="true"]):not([tabmix_tabState]):not(:hover) > .tab-stack > .tab-background > .tab-background-middle {
+  -moz-margin-start: -0.5px;
+  -moz-margin-end: -0.5px;
+}
+
+/* fix radios for tabs before and after the selected or hovered tab */
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"]:not(:hover)[afterselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"]:not(:hover)[afterselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]):not(:hover)[afterselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"][afterhovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"][afterhovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState])[afterhovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"]:not(:hover)[tabmix-beforeselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"]:not(:hover)[tabmix-beforeselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]):not(:hover)[tabmix-beforeselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"][beforehovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"][beforehovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState])[beforehovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl) {
+  border-bottom-left-radius: 15px;
+}
+
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"]:not(:hover)[tabmix-beforeselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"]:not(:hover)[tabmix-beforeselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]):not(:hover)[tabmix-beforeselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"][beforehovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"][beforehovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState])[beforehovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"]:not(:hover)[afterselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"]:not(:hover)[afterselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]):not(:hover)[afterselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"][afterhovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"][afterhovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState])[afterhovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl) {
+  border-bottom-right-radius: 15px;
+}
+
+/* fix for hoverd tab that is before or after selected tab */
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-start,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-start,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState])[afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-start,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState])[afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-end,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-end,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState])[tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-end,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-end::before,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-end::before,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState])[tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-end::before {
+  width: 0px !important;
+}
+
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"][afterselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"][afterselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState])[afterselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState])[tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(rtl) {
+  background-position: left bottom, left bottom, right bottom;
+  background-size: 0% 0%, calc(100% - (1 * 30px)) 100%, 30px 100%;
+  border-radius: 16px 0 0 20px;
+  margin-left: 0px;
+}
+
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState])[afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState])[tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl) {
+  border-left: 2px solid rgba(26 ,26, 26, 0.25);
+  border-radius: 16px 0 0 20px;
+  margin-left: 0px;
+}
+
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState])[tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"][afterselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"][afterselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState])[afterselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(rtl) {
+  background-position: left bottom, 30px bottom, right bottom;
+  background-size: 30px 100%, calc(100% - (1 * 30px)) 100%, 0% 0%;
+  border-radius: 0 16px 20px 0;
+  margin-right: 0px;
+}
+
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState])[tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState])[afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl) {
+  border-right: 2px solid rgba(26, 26, 26, 0.25);
+  border-radius: 0 16px 20px 0;
+  margin-right: 0px;
+}
diff --git a/chrome/skin/app_version/39.0/win/browser.css b/chrome/skin/app_version/39.0/win/browser.css
new file mode 100644
index 0000000..0468e2c
--- /dev/null
+++ b/chrome/skin/app_version/39.0/win/browser.css
@@ -0,0 +1,19 @@
+/**
+    Firefox version 39+
+
+    Windows platform
+
+**/
+
+ at import url("chrome://tabmixplus/skin/app_version/all/win/browser.css");
+ at import url("chrome://tabmixplus/skin/app_version/all/win/progress.css");
+ at import url("chrome://tabmixplus/skin/app_version/39.0/tabStyles.css");
+
+#main-window[tabsintitlebar][sizemode=normal] #toolbar-menubar[autohide="true"][inactive] + #TabsToolbar
+    #tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background > .tab-background-middle,
+#main-window[tabsintitlebar][sizemode=normal] #toolbar-menubar[autohide="true"][inactive] + #TabsToolbar
+    #tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background > .tab-background-middle,
+#main-window[tabsintitlebar][sizemode=normal] #toolbar-menubar[autohide="true"][inactive] + #TabsToolbar
+    #tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([visuallyselected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background > .tab-background-middle {
+  clip-path: none !important;
+}
diff --git a/chrome/skin/app_version/all/linux/browser.css b/chrome/skin/app_version/all/linux/browser.css
index 00a0886..2d22d1b 100644
--- a/chrome/skin/app_version/all/linux/browser.css
+++ b/chrome/skin/app_version/all/linux/browser.css
@@ -5,8 +5,6 @@
 
 **/
 
- at import url("chrome://tabmixplus/skin/app_version/all/win/progress.css");
-
 /* :::: tabbar on bottom :::: */
 #TabsToolbar[tabbaronbottom] {
   background-image: none !important;
@@ -29,11 +27,6 @@
   background-image: -moz-image-rect(url("chrome://global/skin/icons/close.svg"), 0, 96, 16, 80);
 }
 
-/***  Tab close button when user set background color ***/
-#TabsToolbar[brighttext] .tabbrowser-tab:not([selected="true"]):not(:hover)[tabmix_tabStyle*="bg"] .tab-close-button {
-  background-image: -moz-image-rect(url("chrome://global/skin/icons/close.svg"), 0, 16, 16, 0);
-}
-
 #TabsToolbar[tabmix_skin][multibar] > #appmenu-toolbar-button {
   height: 25px;
 }
diff --git a/chrome/skin/app_version/all/mac/browser.css b/chrome/skin/app_version/all/mac/browser.css
index fee117e..a75402d 100644
--- a/chrome/skin/app_version/all/mac/browser.css
+++ b/chrome/skin/app_version/all/mac/browser.css
@@ -5,8 +5,6 @@
 
 **/
 
- at import url("chrome://tabmixplus/skin/app_version/all/mac/progress.css");
-
 /* :::: tabbar on bottom ::::
   we leave the default background-image on mac
 #TabsToolbar[tabbaronbottom] {
@@ -51,16 +49,6 @@
   vertical-align: bottom;
 }
 
-.tabbrowser-tab[tabmix_tabStyle*="bg"] > .tab-stack > .tab-content {
-  border-image: none !important;
-}
-
-/* tabmix color on tab - for inactive window */
-.tabbrowser-tab[tabmix_tabStyle*="bg"] > .tab-stack > .tab-background >
-        :-moz-any(.tab-background-start, .tab-background-middle, .tab-background-end):-moz-window-inactive {
-  opacity: 0.5 !important;
-}
-
 /* for mac - look in pinstripe/browser/browser.css */
 .tabbrowser-tabs > .tabbrowser-tab > * > .tab-progress-container > .tab-progress:not([selected="true"]),
 .tabbrowser-tabs > .tabbrowser-tab:not(:hover) > * > * > .tab-icon > .tab-icon-image:not([selected="true"]),
@@ -94,7 +82,3 @@
 #tabmixScrollBox[flowing=scrollbutton] > .scrollbutton-up:-moz-locale-dir(rtl) {
   -moz-border-image: url("chrome://browser/skin/tabbrowser/tab-overflow-border.png") 0 2 0 2 / 0 2px 0 0;
 }
-
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[tabmix_tabStyle*="bg"]:not([selected=true]) > .tab-stack > .tab-background > .tab-background-middle {
-  clip-path: none !important;
-}
diff --git a/chrome/skin/app_version/all/win/browser.css b/chrome/skin/app_version/all/win/browser.css
index a95b489..74cfa33 100644
--- a/chrome/skin/app_version/all/win/browser.css
+++ b/chrome/skin/app_version/all/win/browser.css
@@ -7,8 +7,6 @@
     to apply rule only to default them add #tabbrowser-tabs[classic40]
 **/
 
- at import url("chrome://tabmixplus/skin/app_version/all/win/progress.css");
-
 /* :::: tabbar on bottom :::: */
 #TabsToolbar[tabbaronbottom] {
   background-image: none !important;
@@ -75,9 +73,3 @@
   background-size: calc(100% - 2px) calc(100% - 2px), 1px calc(100% - 1px), 1px calc(100% - 1px), 100% 1px, 100% 1px;
   background-repeat: no-repeat;
 }
-
-
-#main-window[tabsintitlebar][sizemode=normal] #toolbar-menubar[autohide="true"][inactive] + #TabsToolbar
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[tabmix_tabStyle*="bg"]:not([selected=true]) > .tab-stack > .tab-background > .tab-background-middle {
-  clip-path: none !important;
-}
diff --git a/chrome/skin/app_version/before39.0/linux/browser.css b/chrome/skin/app_version/before39.0/linux/browser.css
new file mode 100644
index 0000000..0b379f5
--- /dev/null
+++ b/chrome/skin/app_version/before39.0/linux/browser.css
@@ -0,0 +1,17 @@
+/**
+    Firefox before version 39
+
+    Linux platform
+
+**/
+
+ at import url("chrome://tabmixplus/skin/app_version/all/linux/browser.css");
+ at import url("chrome://tabmixplus/skin/app_version/all/win/progress.css");
+ at import url("chrome://tabmixplus/skin/app_version/before39.0/tabStyles.css");
+
+/***  Tab close button when user set background color ***/
+#TabsToolbar[brighttext] > #tabbrowser-tabs[tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"]:not(:hover) .tab-close-button,
+#TabsToolbar[brighttext] > #tabbrowser-tabs[tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"]:not(:hover) .tab-close-button,
+#TabsToolbar[brighttext] > #tabbrowser-tabs[tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]):not(:hover) > .tab-close-button {
+  background-image: -moz-image-rect(url("chrome://global/skin/icons/close.svg"), 0, 16, 16, 0);
+}
diff --git a/chrome/skin/app_version/before39.0/mac/browser.css b/chrome/skin/app_version/before39.0/mac/browser.css
new file mode 100644
index 0000000..0affcaa
--- /dev/null
+++ b/chrome/skin/app_version/before39.0/mac/browser.css
@@ -0,0 +1,35 @@
+/**
+    Firefox before version 39
+
+    Mac platform
+
+**/
+
+ at import url("chrome://tabmixplus/skin/app_version/all/mac/browser.css");
+ at import url("chrome://tabmixplus/skin/app_version/all/mac/progress.css");
+ at import url("chrome://tabmixplus/skin/app_version/before39.0/tabStyles.css");
+
+#tabbrowser-tabs[tabmix_currentStyle~="bg"] > .tabbrowser-tab[selected="true"] > .tab-stack > .tab-content,
+#tabbrowser-tabs[tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-content,
+#tabbrowser-tabs[tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-content,
+#tabbrowser-tabs[tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-content {
+  border-image: none !important;
+}
+
+/* tabmix color on tab - for inactive window */
+#tabbrowser-tabs[tabmix_currentStyle~="bg"] > .tabbrowser-tab[selected="true"] > .tab-stack > .tab-background >
+      :-moz-any(.tab-background-start, .tab-background-middle, .tab-background-end):-moz-window-inactive,
+#tabbrowser-tabs[tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background >
+      :-moz-any(.tab-background-start, .tab-background-middle, .tab-background-end):-moz-window-inactive,
+#tabbrowser-tabs[tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background >
+      :-moz-any(.tab-background-start, .tab-background-middle, .tab-background-end):-moz-window-inactive,
+#tabbrowser-tabs[tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background >
+      :-moz-any(.tab-background-start, .tab-background-middle, .tab-background-end):-moz-window-inactive {
+  opacity: 0.5 !important;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background > .tab-background-middle {
+  clip-path: none !important;
+}
diff --git a/chrome/skin/app_version/before39.0/tabStyles.css b/chrome/skin/app_version/before39.0/tabStyles.css
new file mode 100644
index 0000000..e488fb8
--- /dev/null
+++ b/chrome/skin/app_version/before39.0/tabStyles.css
@@ -0,0 +1,265 @@
+/**
+    Firefox before version 39
+    Bug 1066531 replaced selected attribute with visuallyselected
+
+    ALL platform
+
+**/
+
+/* :::: For current, unloaded, unread and other tab styles :::: */
+.tabbrowser-tabs[tabmix_currentStyle~="bold"] >
+    .tabbrowser-tab[selected="true"] .tab-text,
+.tabbrowser-tabs[tabmix_otherStyle~="bold"] >
+    .tabbrowser-tab:not([tabmix_tabState]):not([selected="true"]) .tab-text,
+.tabbrowser-tabs[tabmix_unloadedStyle~="bold"] >
+    .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"] .tab-text,
+.tabbrowser-tabs[tabmix_unreadStyle~="bold"] >
+    .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"] .tab-text {
+  font-weight: bold !important;
+}
+
+.tabbrowser-tabs[tabmix_currentStyle~="not-bold"] >
+    .tabbrowser-tab[selected="true"] .tab-text,
+.tabbrowser-tabs[tabmix_otherStyle~="not-bold"] >
+    .tabbrowser-tab:not([tabmix_tabState]):not([selected="true"]) .tab-text,
+.tabbrowser-tabs[tabmix_unloadedStyle~="not-bold"] >
+    .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"] .tab-text,
+.tabbrowser-tabs[tabmix_unreadStyle~="not-bold"] >
+    .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"] .tab-text {
+  font-weight: normal !important;
+}
+
+.tabbrowser-tabs[tabmix_currentStyle~="italic"] >
+    .tabbrowser-tab[selected="true"] .tab-text,
+.tabbrowser-tabs[tabmix_otherStyle~="italic"] >
+    .tabbrowser-tab:not([tabmix_tabState]):not([selected="true"]) .tab-text,
+.tabbrowser-tabs[tabmix_unloadedStyle~="italic"] >
+    .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"] .tab-text,
+.tabbrowser-tabs[tabmix_unreadStyle~="italic"] >
+    .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"] .tab-text {
+  font-style: italic !important;
+}
+
+.tabbrowser-tabs[tabmix_currentStyle~="not-italic"] >
+    .tabbrowser-tab[selected="true"] .tab-text,
+.tabbrowser-tabs[tabmix_otherStyle~="not-italic"] >
+    .tabbrowser-tab:not([tabmix_tabState]):not([selected="true"]) .tab-text,
+.tabbrowser-tabs[tabmix_unloadedStyle~="not-italic"] >
+    .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"] .tab-text,
+.tabbrowser-tabs[tabmix_unreadStyle~="not-italic"] >
+    .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"] .tab-text {
+  font-style: normal !important;
+}
+
+.tabbrowser-tabs[tabmix_currentStyle~="underline"] >
+    .tabbrowser-tab[selected="true"] .tab-text,
+.tabbrowser-tabs[tabmix_otherStyle~="underline"] >
+    .tabbrowser-tab:not([tabmix_tabState]):not([selected="true"]) .tab-text,
+.tabbrowser-tabs[tabmix_unloadedStyle~="underline"] >
+    .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"] .tab-text,
+.tabbrowser-tabs[tabmix_unreadStyle~="underline"] >
+    .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"] .tab-text {
+  text-decoration: underline !important;
+}
+
+/* :::: tabs background color for australis [Firefox 28+] :::: */
+.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab:hover:not([tabmix-beforeselected-visible]):not([selected="true"]):not([dragged]) {
+  position: relative;
+  z-index: 1;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_currentStyle~="bg"] > .tabbrowser-tab[selected="true"] > .tab-stack > .tab-background,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_currentStyle~="bg"] > .tabbrowser-tab[selected="true"] > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background > .tab-background-middle {
+  background-color: transparent !important;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_currentStyle~="bg"] > .tabbrowser-tab[selected="true"] > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(ltr)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(ltr)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(ltr)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(ltr)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_currentStyle~="bg"] > .tabbrowser-tab[selected="true"] > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(rtl)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(rtl)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(rtl)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(rtl)::before {
+  clip-path: url(chrome://browser/content/browser.xul#tab-curve-clip-path-start) !important;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_currentStyle~="bg"] > .tabbrowser-tab[selected="true"] > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(ltr)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(ltr)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(ltr)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(ltr)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_currentStyle~="bg"] > .tabbrowser-tab[selected="true"] > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(rtl)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(rtl)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(rtl)::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(rtl)::before {
+  clip-path: url(chrome://browser/content/browser.xul#tab-curve-clip-path-end) !important;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_currentStyle~="bg"] > .tabbrowser-tab[selected="true"] > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_currentStyle~="bg"] > .tabbrowser-tab[selected="true"] > .tab-stack > .tab-background > .tab-background-end::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background > .tab-background-end::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background > .tab-background-end::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background > .tab-background-end::before {
+  content: "" !important;  /* this alrady exist for windows check in Mac and Linux*/
+  display: -moz-box !important; /* this alrady exist for windows check in Mac and Linux*/
+  background-color: transparent !important;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"]:hover > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"]:hover > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]):hover > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"]:hover > .tab-stack > .tab-background > .tab-background-end::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"]:hover > .tab-stack > .tab-background > .tab-background-end::before,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]):hover > .tab-stack > .tab-background > .tab-background-end::before {
+  min-height: 31px;
+  width: 30px;
+}
+
+/* see the same rule for selected tab in chrome://browser/skin/browser.css */
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"]:hover > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"]:hover > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]):hover > .tab-stack > .tab-background > .tab-background-middle {
+  background-clip: padding-box !important;
+  background-repeat: repeat-x !important;
+  background-size: auto 100%, auto 100%, auto 100% !important;
+  padding-top: 2px !important;
+  background-position: left bottom, left bottom, right bottom !important;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"]:not(:hover) > .tab-stack > .tab-background > .tab-background-start,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"]:not(:hover) > .tab-stack > .tab-background > .tab-background-start,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]):not(:hover) > .tab-stack > .tab-background > .tab-background-start,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"]:not(:hover) > .tab-stack > .tab-background > .tab-background-end,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"]:not(:hover) > .tab-stack > .tab-background > .tab-background-end,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]):not(:hover) > .tab-stack > .tab-background > .tab-background-end {
+  width: 0px !important;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"]:not(:hover) > .tab-stack > .tab-background,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"]:not(:hover) > .tab-stack > .tab-background,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]):not(:hover) > .tab-stack > .tab-background {
+  -moz-margin-start: 0px;
+  -moz-margin-end: 0px;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"]:not(:hover) > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"]:not(:hover) > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]):not(:hover) > .tab-stack > .tab-background > .tab-background-middle {
+  border: 2px solid transparent;
+  border-bottom: none;
+  -moz-margin-start: -1px;
+  -moz-margin-end: -1px;
+  border-radius: 13.25px 13.25px 0 0;
+}
+
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab[first-visible-tab]:not([selected="true"])[tabmix_tabState="unloaded"]:not(:hover) > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab[first-visible-tab]:not([selected="true"])[tabmix_tabState="unread"]:not(:hover) > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab[first-visible-tab]:not([selected="true"]):not([tabmix_tabState]):not(:hover) > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab[last-visible-tab]:not([selected="true"])[tabmix_tabState="unloaded"]:not(:hover) > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab[last-visible-tab]:not([selected="true"])[tabmix_tabState="unread"]:not(:hover) > .tab-stack > .tab-background > .tab-background-middle,
+#tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab[last-visible-tab]:not([selected="true"]):not([tabmix_tabState]):not(:hover) > .tab-stack > .tab-background > .tab-background-middle {
+  -moz-margin-start: -0.5px;
+  -moz-margin-end: -0.5px;
+}
+
+/* fix radios for tabs before and after the selected or hovered tab */
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"]:not(:hover)[afterselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"]:not(:hover)[afterselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]):not(:hover)[afterselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"][afterhovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"][afterhovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState])[afterhovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"]:not(:hover)[tabmix-beforeselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"]:not(:hover)[tabmix-beforeselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]):not(:hover)[tabmix-beforeselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"][beforehovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"][beforehovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState])[beforehovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl) {
+  border-bottom-left-radius: 15px;
+}
+
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"]:not(:hover)[tabmix-beforeselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"]:not(:hover)[tabmix-beforeselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]):not(:hover)[tabmix-beforeselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"][beforehovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"][beforehovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState])[beforehovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"]:not(:hover)[afterselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"]:not(:hover)[afterselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]):not(:hover)[afterselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"][afterhovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"][afterhovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState])[afterhovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl) {
+  border-bottom-right-radius: 15px;
+}
+
+/* fix for hoverd tab that is before or after selected tab */
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-start,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-start,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState])[afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-start,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState])[afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-start::before,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-end,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-end,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState])[tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-end,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-end::before,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-end::before,
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState])[tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-end::before {
+  width: 0px !important;
+}
+
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"][afterselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"][afterselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState])[afterselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState])[tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(rtl) {
+  background-position: left bottom, left bottom, right bottom;
+  background-size: 0% 0%, calc(100% - (1 * 30px)) 100%, 30px 100%;
+  border-radius: 16px 0 0 20px;
+  margin-left: 0px;
+}
+
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState])[afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState])[tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl) {
+  border-left: 2px solid rgba(26 ,26, 26, 0.25);
+  border-radius: 16px 0 0 20px;
+  margin-left: 0px;
+}
+
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState])[tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"][afterselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"][afterselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState])[afterselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(rtl) {
+  background-position: left bottom, 30px bottom, right bottom;
+  background-size: 30px 100%, calc(100% - (1 * 30px)) 100%, 0% 0%;
+  border-radius: 0 16px 20px 0;
+  margin-right: 0px;
+}
+
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState])[tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
+#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState])[afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl) {
+  border-right: 2px solid rgba(26, 26, 26, 0.25);
+  border-radius: 0 16px 20px 0;
+  margin-right: 0px;
+}
diff --git a/chrome/skin/app_version/before39.0/win/browser.css b/chrome/skin/app_version/before39.0/win/browser.css
new file mode 100644
index 0000000..d24b354
--- /dev/null
+++ b/chrome/skin/app_version/before39.0/win/browser.css
@@ -0,0 +1,19 @@
+/**
+    Firefox before version 39
+
+    Windows platform
+
+**/
+
+ at import url("chrome://tabmixplus/skin/app_version/all/win/browser.css");
+ at import url("chrome://tabmixplus/skin/app_version/all/win/progress.css");
+ at import url("chrome://tabmixplus/skin/app_version/before39.0/tabStyles.css");
+
+#main-window[tabsintitlebar][sizemode=normal] #toolbar-menubar[autohide="true"][inactive] + #TabsToolbar
+    #tabbrowser-tabs[tabmix_australis="true"][tabmix_unloadedStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unloaded"] > .tab-stack > .tab-background > .tab-background-middle,
+#main-window[tabsintitlebar][sizemode=normal] #toolbar-menubar[autohide="true"][inactive] + #TabsToolbar
+    #tabbrowser-tabs[tabmix_australis="true"][tabmix_unreadStyle~="bg"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabState="unread"] > .tab-stack > .tab-background > .tab-background-middle,
+#main-window[tabsintitlebar][sizemode=normal] #toolbar-menubar[autohide="true"][inactive] + #TabsToolbar
+    #tabbrowser-tabs[tabmix_australis="true"][tabmix_otherStyle~="bg"] > .tabbrowser-tab:not([selected="true"]):not([tabmix_tabState]) > .tab-stack > .tab-background > .tab-background-middle {
+  clip-path: none !important;
+}
diff --git a/chrome/skin/general.css b/chrome/skin/general.css
index 0f7005d..44165cb 100644
--- a/chrome/skin/general.css
+++ b/chrome/skin/general.css
@@ -65,123 +65,3 @@
   -moz-padding-start: 15px;
   -moz-padding-end: 15px;
 }
-
-/* :::: tabs background color for australis [Firefox 28+] :::: */
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab:hover:not([tabmix-beforeselected-visible]):not([selected=true]):not([dragged]) {
-  position: relative;
-  z-index: 1;
-}
-
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[tabmix_tabStyle*="bg"] > .tab-stack > .tab-background ,
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[tabmix_tabStyle*="bg"] > .tab-stack > .tab-background > .tab-background-middle {
-  background-color: transparent !important;
-}
-
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[tabmix_tabStyle*="bg"] > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(ltr)::before,
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[tabmix_tabStyle*="bg"] > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(rtl)::before {
-  clip-path: url(chrome://browser/content/browser.xul#tab-curve-clip-path-start) !important;
-}
-
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[tabmix_tabStyle*="bg"] > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(ltr)::before,
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[tabmix_tabStyle*="bg"] > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(rtl)::before {
-  clip-path: url(chrome://browser/content/browser.xul#tab-curve-clip-path-end) !important;
-}
-
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[tabmix_tabStyle*="bg"] > .tab-stack > .tab-background > .tab-background-start::before,
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[tabmix_tabStyle*="bg"] > .tab-stack > .tab-background > .tab-background-end::before {
-  content: "" !important;  /* this alrady exist for windows check in Mac and Linux*/
-  display: -moz-box !important; /* this alrady exist for windows check in Mac and Linux*/
-  background-color: transparent !important;
-}
-
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[tabmix_tabStyle*="bg"]:hover > .tab-stack > .tab-background > .tab-background-start:not([selected=true])::before,
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[tabmix_tabStyle*="bg"]:hover > .tab-stack > .tab-background > .tab-background-end:not([selected=true])::before {
-  min-height: 31px;
-  width: 30px;
-}
-
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[tabmix_tabStyle*="bg"]:hover > .tab-stack > .tab-background > .tab-background-middle:not([selected=true]) {
-  /* see the same rule for selected tab in chrome://browser/skin/browser.css */
-  background-clip: padding-box !important;
-  background-repeat: repeat-x !important;
-  background-size: auto 100%, auto 100%, auto 100% !important;
-  padding-top: 2px !important;
-  background-position: left bottom, left bottom, right bottom !important;
-}
-
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[tabmix_tabStyle*="bg"]:not([selected=true]):not(:hover) > .tab-stack > .tab-background > .tab-background-start,
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[tabmix_tabStyle*="bg"]:not([selected=true]):not(:hover) > .tab-stack > .tab-background > .tab-background-end {
-  width: 0px !important;
-}
-
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[tabmix_tabStyle*="bg"]:not([selected=true]):not(:hover) > .tab-stack > .tab-background {
-  -moz-margin-start: 0px;
-  -moz-margin-end: 0px;
-}
-
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[tabmix_tabStyle*="bg"]:not([selected=true]):not(:hover) > .tab-stack > .tab-background > .tab-background-middle {
-  border: 2px solid transparent;
-  border-bottom: none;
-  -moz-margin-start: -1px;
-  -moz-margin-end: -1px;
-  border-radius: 13.25px 13.25px 0 0;
-}
-
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[first-visible-tab][tabmix_tabStyle*="bg"]:not([selected="true"]):not(:hover) > .tab-stack > .tab-background > .tab-background-middle,
-.tabbrowser-tabs[tabmix_australis="true"] > .tabbrowser-tab[last-visible-tab][tabmix_tabStyle*="bg"]:not([selected="true"]):not(:hover) > .tab-stack > .tab-background > .tab-background-middle {
-  -moz-margin-start: -0.5px;
-  -moz-margin-end: -0.5px;
-}
-
-/* fix radios for tabs before and after the selected or hovered tab */
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"]):not(:hover)[tabmix_tabStyle*="bg"][afterselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabStyle*="bg"][afterhovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"]):not(:hover)[tabmix_tabStyle*="bg"][tabmix-beforeselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabStyle*="bg"][beforehovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl) {
-  border-bottom-left-radius: 15px;
-}
-
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"]):not(:hover)[tabmix_tabStyle*="bg"][tabmix-beforeselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabStyle*="bg"][beforehovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"]):not(:hover)[tabmix_tabStyle*="bg"][afterselected-visible="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl),
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabStyle*="bg"][afterhovered="true"] > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl) {
-  border-bottom-right-radius: 15px;
-}
-
-/* fix for hoverd tab that is before or after selected tab */
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabStyle*="bg"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-start,
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabStyle*="bg"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-start::before,
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabStyle*="bg"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-end,
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabStyle*="bg"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-end::before {
-  width: 0px !important;
-}
-
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabStyle*="bg"][afterselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(ltr),
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabStyle*="bg"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(rtl) {
-  background-position: left bottom, left bottom, right bottom;
-  background-size: 0% 0%, calc(100% - (1 * 30px)) 100%, 30px 100%;
-  border-radius: 16px 0 0 20px;
-  margin-left: 0px;
-}
-
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabStyle*="bg"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabStyle*="bg"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl) {
-  border-left: 2px solid rgba(26 ,26, 26, 0.25);
-  border-radius: 16px 0 0 20px;
-  margin-left: 0px;
-}
-
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabStyle*="bg"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(ltr),
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabStyle*="bg"][afterselected-visible="true"]:hover > .tab-stack > .tab-background:-moz-locale-dir(rtl) {
-  background-position: left bottom, 30px bottom, right bottom;
-  background-size: 30px 100%, calc(100% - (1 * 30px)) 100%, 0% 0%;
-  border-radius: 0 16px 20px 0;
-  margin-right: 0px;
-}
-
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabStyle*="bg"][tabmix-beforeselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(ltr),
-#tabbrowser-tabs:not([movingtab])[tabmix_australis="true"] > .tabbrowser-tab:not([selected="true"])[tabmix_tabStyle*="bg"][afterselected-visible="true"]:hover > .tab-stack > .tab-background > .tab-background-middle:-moz-locale-dir(rtl) {
-  border-right: 2px solid rgba(26, 26, 26, 0.25);
-  border-radius: 0 16px 20px 0;
-  margin-right: 0px;
-}
diff --git a/chrome/skin/tab.css b/chrome/skin/tab.css
index a938b33..20529a5 100644
--- a/chrome/skin/tab.css
+++ b/chrome/skin/tab.css
@@ -55,27 +55,6 @@
   vertical-align: bottom;
 }
 
-/* :::: For current, unloaded, unread and other tab styles :::: */
-.tabbrowser-tab[tabmix_tabStyle~="bold"] .tab-text {
-  font-weight: bold !important;
-}
-
-.tabbrowser-tab[tabmix_tabStyle~="not-bold"] .tab-text {
-  font-weight: normal !important;
-}
-
-.tabbrowser-tab[tabmix_tabStyle~="italic"] .tab-text {
-  font-style: italic !important;
-}
-
-.tabbrowser-tab[tabmix_tabStyle~="not-italic"] .tab-text {
-  font-style: normal !important;
-}
-
-.tabbrowser-tab[tabmix_tabStyle~="underline"] .tab-text {
-  text-decoration: underline !important;
-}
-
 /* for extra icons */
 .tab-protect-icon {
   list-style-image: url("protected.png");
diff --git a/modules/DynamicRules.jsm b/modules/DynamicRules.jsm
index a999243..bac8e91 100644
--- a/modules/DynamicRules.jsm
+++ b/modules/DynamicRules.jsm
@@ -112,28 +112,39 @@ this.DynamicRules = {
     bgImage.bg = TabmixSvc.isMac ? bgImage.body : (bottomBorder + space20 + bgImage.body);
 ///XXX move -moz-appearance: to general rule when style have bg
     let backgroundRule = " {\n  -moz-appearance: none;\n  background-image: " + bgImage.bg + " !important;\n}\n";
+    if (TabmixSvc.isMac) {
+      backgroundRule = ' > .tab-stack > .tab-background >\n' +
+        '      :-moz-any(.tab-background-start, .tab-background-middle, .tab-background-end)' + backgroundRule;
+    }
     let tabTextRule = " .tab-text {\n  color: #textColor !important;\n}\n";
 
-    let styleRules = {
-      currentTab:    { text:  '.tabbrowser-tab[tabmix_tabStyle~="current-text"]' + tabTextRule,
-                       bg  :  '.tabbrowser-tab[tabmix_tabStyle~="current-bg"]' + backgroundRule},
-      unloadedTab:   { text:  '.tabbrowser-tab[tabmix_tabStyle~="unloaded-text"]' + tabTextRule,
-                       bg:    '.tabbrowser-tab[tabmix_tabStyle~="unloaded-bg"]' + backgroundRule},
-      unreadTab:     { text:  '.tabbrowser-tab[tabmix_tabStyle~="unread-text"]' +  tabTextRule,
-                       bg:    '.tabbrowser-tab[tabmix_tabStyle~="unread-bg"]' + backgroundRule},
-      otherTab:      { text:  '.tabbrowser-tab[tabmix_tabStyle~="other-text"]' + tabTextRule,
-                       bg:    '.tabbrowser-tab[tabmix_tabStyle~="other-bg"]' + backgroundRule},
+    let _selected = TabmixSvc.version(390) ? '[visuallyselected="true"]' : '[selected="true"]';
+    let _notSelected = TabmixSvc.version(390) ? ':not([visuallyselected="true"])' : ':not([selected="true"])';
+    let tabState = {
+      current: _selected,
+      unloaded: '[tabmix_tabState="unloaded"]' + _notSelected,
+      unread: '[tabmix_tabState="unread"]' + _notSelected,
+      other: ':not([tabmix_tabState])' + _notSelected,
     };
 
-    if (TabmixSvc.isMac) {
-      backgroundRule = '.tabbrowser-tab[tabmix_tabStyle~="#RULE-bg"] > .tab-stack > .tab-background >\n' +
-        '      :-moz-any(.tab-background-start, .tab-background-middle, .tab-background-end)' + backgroundRule;
-
-      styleRules.currentTab.bg = backgroundRule.replace("#RULE", "current");
-      styleRules.unloadedTab.bg = backgroundRule.replace("#RULE", "unloaded");
-      styleRules.unreadTab.bg = backgroundRule.replace("#RULE", "unread");
-      styleRules.otherTab.bg = backgroundRule.replace("#RULE", "other");
-    }
+    let styleRules = {
+      currentTab: {
+        text: '#tabbrowser-tabs[tabmix_currentStyle~="text"] > .tabbrowser-tab' + tabState.current + tabTextRule,
+        bg:   '#tabbrowser-tabs[tabmix_currentStyle~="bg"] > .tabbrowser-tab' + tabState.current + backgroundRule
+      },
+      unloadedTab: {
+        text: '#tabbrowser-tabs[tabmix_unloadedStyle~="text"] > .tabbrowser-tab' + tabState.unloaded + tabTextRule,
+        bg:   '#tabbrowser-tabs[tabmix_unloadedStyle~="bg"] > .tabbrowser-tab' + tabState.unloaded + backgroundRule
+      },
+      unreadTab: {
+        text: '#tabbrowser-tabs[tabmix_unreadStyle~="text"] > .tabbrowser-tab' + tabState.unread + tabTextRule,
+        bg:   '#tabbrowser-tabs[tabmix_unreadStyle~="bg"] > .tabbrowser-tab' + tabState.unread + backgroundRule
+      },
+      otherTab: {
+        text: '#tabbrowser-tabs[tabmix_otherStyle~="text"] > .tabbrowser-tab' + tabState.other + tabTextRule,
+        bg:   '#tabbrowser-tabs[tabmix_otherStyle~="bg"] > .tabbrowser-tab' + tabState.other + backgroundRule
+      },
+    };
 
     if (TabmixSvc.australis && !this.treeStyleTab) {
       bgImage.bg = 'url("chrome://browser/skin/customizableui/background-noise-toolbar.png"),\n' +
@@ -150,12 +161,15 @@ this.DynamicRules = {
             space26 + 'rgba(250, 250, 250, 0.88) 3px, rgba(250, 250, 250, 0.88) 3px,\n' +
             space26 + 'rgba(254, 254, 254, 0.72) 4px, rgba(254, 254, 254, 0.72) 4px, #bottomColor)';
       bgImage.startEndhover = bgImage.bghover;
-      let _selector = '.tabbrowser-tab#HOVER[tabmix_tabStyle~="#RULE-bg"] > .tab-stack > .tab-background >';
+      let _selector = '#tabbrowser-tabs[tabmix_#RULEStyle~="bg"] > ' +
+                      '.tabbrowser-tab#HOVER#STATE > .tab-stack > .tab-background >';
       for (let rule of Object.keys(styleRules)) {
         let style = styleRules[rule];
         delete style.bg;
+        let styleName = rule.replace("Tab", "");
+        let ruleSelector = _selector.replace("#RULE", styleName)
+                                    .replace("#STATE", tabState[styleName]);
         let hover = rule == "currentTab" ? "" : ":hover";
-        let ruleSelector = _selector.replace("#RULE", rule.replace("Tab", ""));
         let selector = ruleSelector.replace("#HOVER", hover);
         let type = hover.replace(":", "") || "selected";
         style["bg" + type] =       selector + ' .tab-background-middle {\n' +
diff --git a/modules/Services.jsm b/modules/Services.jsm
index 2dfed6e..80905f3 100644
--- a/modules/Services.jsm
+++ b/modules/Services.jsm
@@ -24,6 +24,12 @@ function isVersion(aVersionNo) {
 }
 
 this.TabmixSvc = {
+  get selectedAtt() {
+    delete this.selectedAtt;
+    return (this.selectedAtt = isVersion(390) ?
+            "visuallyselected" : "selected");
+  },
+
   aboutBlank: "about:blank",
   aboutNewtab: "about:newtab",
   newtabUrl: "browser" + ".newtab.url",

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/tabmixplus.git



More information about the Pkg-mozext-commits mailing list