<!doctype html>
<html>
<head>
    <title>Test the specificity of the :not() pseudo class itself.</title>
    <style>
        /* -- 1. Set up the base color for everything with a very low specificity -- */

        /* Each mathing of the type "notthereX should have a specificity of (0, 0, 1), the maxium of this selector should be (0, 0, 1). */
        :not(:not(*), notthere1, notthere2, notthere3, notthere4, notthere5) {
            background-color: white;
            color: black;
        }

        /* The pseudo class :not() itself should have no specificity. The following rule should not have precedence over "*". */
        :not(:not(*)) { /* Specificity: (0, 0, 0). */
            background-color: red;
            color: white;
        }

        /* -- 2. Test class specificity. -- */
        .case {
            background-color: red;
            color: white;
        }

        body > testcase.case { /* Specificity (0, 1, 2). */
            border: none;
        }

        testcase:not(.not-there) { /* Specificity (0, 1, 1). */
            color: lime;
            border: 10px solid black;
        }

        /* Specificity (0, 1, 1) since .not-there has the highest specificity inside :not(). */
        testcase:not(:not(*), foo, .not-there, bar) {
            background-color: pink;
            border: 50px solid black;
        }

        /* -- 3. Test #id specificty, all those rules should override the class rules above. -- */
        #case2 {
            background-color: red;
            color: white;
        }

        body > testcase#case2 { /* Specificity (1, 0, 2). */
            border: none;
        }

        testcase:not(#case1) {
            color: pink;
            border: 10px solid black;
        }

        testcase:not(:not(*), foo, bar, foo.class1.class2, bar.class1.class2.class3.class4, #case1) {
            background-color: lime;
            border: 50px solid black;
        }
    </style>
</head>
<body>
    <p>Test the specificity of the :not() pseudo class. The pseudo class :not() itself does not add anything to the specificity of a its selector, only the selectors inside :not() matter for specificity.</p>
    <testcase class="case" id="case1">This sentence should be green on a pink background, without border.</testcase>
    <testcase class="case" id="case2">This sentence should be pink on a green background, without border.</testcase>
</body>
</html>
