<!DOCTYPE html>
<html>
    <head>
        <title>hiding a box covering a multicol, vertical-rl</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; right:12em; width:3em; height:3em; background:red;"></div>
            <div style="width:20em; height:20em; -webkit-writing-mode:vertical-rl;">
                <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>
