The CSS cascade includes user origin declarations which are rules provided by the user itself, for example user stylesheets applied by web extensions. The current priority of user over author origins is specced as follows:
-
user !imporant>author !important>author>user
A author’s declaration wins over a same-specificity user declaration except when !important is involved at which point the priority is reversed. This issue has in the past lead to browser extensions to insert their userstyles as the last author sheets which introduces the issue that two author sheets (the page’s own and the userstyle) have to fight for specificity which is a source of issues.
I propose that the ordering of user origin sheets to be put above author sheets like this:
-
user !imporant>author !important>user>author
This new ordering would banish having to use !important everywhere in userstyles and would also remove the necessity to fight for specificity with the target page’s styles.
Note that user origin stylesheets are a mostly unused concept today, only Firefox >= 53 allows web extensions to insert such sheets, Chrome will likely get the API option on tabs.insertCSS for it in 66, but until then, extensions can only insert author origin stylesheets.
Some more detail about the behaviour of extensions here. It’s a pretty old page, but most info on there is still valid today.