<!doctype html>
<html>
<head>
<style>
    /* Specificity (2, 0, 2). */
    #f#f > padding > target {
        background-color: purple;
    }

    /* Specificity (1, 0, 2). */
    #f > padding > target {
        background-color: red;
        color: green;
    }

    /* Specificity (0, 0, 5) */
    padding padding foo padding target {
        color: green;
    }

    /* Specificity (0, 0, 4) */
    padding padding padding target {
        border: 5px blue solid;
    }

    :is(aBlock, #b) > :is(#c, d) > :is(e, #f) target {
        background-color: green;
        color: white;
        border: none;
    }
</style>
</head>
<body>
    <p>This test the dynamic specificity of :is() with a simple descendant backtracking case. The test pass if each block has style matching its description. None of the result should have a border.</p>

    <!--
     This case should match ":is(a, #b) > :is(#c, d) > :is(e, #f) target"
     like "#a > #c > e target"
     with the specificity (2, 0, 2).
     -->
    <foo id="b">
        <foo id="c">
            <e> <!-- Success case from here. -->
                <padding>
                    <b> <!-- Fail here as we need <aBlock> or #b -->
                        <d>
                            <e>
                                <padding>
                                    <aBlock>
                                        <c> <!-- Fail here as we need <d> or #c -->
                                            <foo id="f">
                                                <padding>
                                                    <target>White text on green background.</target>
                                                </padding>
                                            </foo>
                                        </c>
                                    </aBlock>
                                </padding>
                            </e>
                        </d>
                    </b>
                <padding>
            </e>
        </foo>
    </foo>

    <!--
     This case should match ":is(a, #b) > :is(#c, d) > :is(e, #f) target"
     like "#a > d > e target"
     with the specificity (1, 0, 3).
     -->
    <foo id="b">
        <d>
            <e> <!-- Success case from here. -->
                <padding>
                    <b> <!-- Fail here as we need <aBlock> or #b -->
                        <d>
                            <e>
                                <padding>
                                    <aBlock>
                                        <c> <!-- Fail here as we need <d> or #c -->
                                            <foo id="f">
                                                <padding>
                                                    <target>White text on purple background.</target>
                                                </padding>
                                            </foo>
                                        </c>
                                    </aBlock>
                                </padding>
                            </e>
                        </d>
                    </b>
                <padding>
            </e>
        </d>
    </foo>

    <!--
     This case should match ":is(a, #b) > :is(#c, d) > :is(e, #f) target"
     like "a > d > e target"
     with the specificity (0, 0, 4).
     -->
    <aBlock>
        <d>
            <e> <!-- Success case from here. -->
                <padding>
                    <b> <!-- Fail here as we need <aBlock> or #b -->
                        <d>
                            <e>
                                <padding>
                                    <a>
                                        <c> <!-- Fail here as we need <d> or #c -->
                                            <foo id="f">
                                                <padding>
                                                    <target>Green text on purple background.</target>
                                                </padding>
                                            </foo>
                                        </c>
                                    </a>
                                </padding>
                            </e>
                        </d>
                    </b>
                <padding>
            </e>
        </d>
    </aBlock>
</body>
</html>
