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.