<!DOCTYPE html>
<html>
    <head>
        <title>hiding a box covering a multicol, vertical-lr</title>
        <script>
            if (window.testRunner)
                testRunner.waitUntilDone();
            function scheduleHide() {
                document.body.offsetLeft;
                setTimeout("hideIt()", 100);
            }
            function hideIt() {
                document.getElementById('hider').style.visibility = 'hidden';
                document.body.offsetLeft;
                if (window.testRunner)
                    testRunner.notifyDone();
            }
        </script>
    </head>
    <body onload="scheduleHide()" style="color:black; background:white;">
        <p>The word PASS should be seen below.</p>
        <div style="position:relative; width:30em; background:black;">
            <div id="hider" style="position:absolute; z-index:1; top:5.1em; left:2em; width:3em; height:3em; background:red;"></div>
            <div style="width:20em; height:20em; -webkit-writing-mode:vertical-lr;">
                <div style="-webkit-columns:4; -webkit-column-fill:auto; -webkit-column-gap:0; columns:4; column-fill:auto; column-gap:0; orphans:1; widows:1; -webkit-logical-height:6em; line-height:2em; background:cyan;">
                    <br>
                    <br>
                    <br>
                    <br>
                    <div style="position:relative;">&nbsp;PASS</div>
                </div>
            </div>
        </div>
    </body>
</html>
