<!DOCTYPE HTML>
<head>
    <!-- This test will check if the isolation flag is properly removed when we remove the mix-blend-mode property from its descendants. -->
    <link rel="stylesheet" href="resources/blending-style.css">
    <style>
        div {
            /* This forces render layers, avoiding normal flow only issues */
            position: relative;
        }
    </style>
</head>
<body>
    <div class="isolating lime box">
        <div id="target" class="isolating yellow box difference" style="left: 50px;">
            <div class="box">
                <div class="fuchsia box difference" style="left:-25px;"></div>
            </div>
        </div>
    </div>
    <script type="text/javascript">
        if (window.testRunner)
            window.testRunner.waitUntilDone();

        function change() {
            var target = document.getElementById("target");
            target.className = "isolating yellow box";

            if (window.testRunner)
                window.testRunner.notifyDone();
        }

        window.setTimeout("change()", 10);
    </script>
</body>
