<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>CSS Multi-column Layout Test: wide column-rule-width painted above background-color</title>
  <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
  <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!--  2013-08-14  -->
  <link rel="help" href="http://www.w3.org/TR/css3-multicol/#crw" title="4.4. 'column-rule-width'" />
  <link rel="match" href="multicol-rule-fraction-002-ref.xht" />
  <meta name="flags" content="ahem" />
  <meta name="assert" content="This test checks that if a column rule is wider than its gap, then the column rule will overlap adjacent column boxes above the background of the multi-column element but below the inline content inside the multicol element. In this test, the blue column-rule is painted above the yellow background-color but below (under) the black Ahem glyphs." />
  <style type="text/css"><![CDATA[
  div
  {
  background-color: yellow;
  border: gray solid 1em;
  color: black;
  font: 1.25em/1 Ahem;
  orphans: 1;
  widows: 1;
  width: 14em;

  column-count: 4;
  column-gap: 1em;
  column-rule-color: blue;
  column-rule-style: solid;
  column-rule-width: 1.9em;
  }

  /*

  N == 4;

  W == max(0, (available-width - ((N - 1) * column-gap)) / N);
  W == max(0, (14em - ((4 - 1) * 1em)) / 4);
  W == max(0, (14em - (3 * 1em)) / 4);
  W == max(0, (14em - (3em)) / 4);
  W == max(0, (11em) / 4);
  W == max(0, 2.75em);
  W == 2.75em;

  */
  ]]></style>
 </head>

 <body>

  <div>
  1s cl
  2n cl
  3r cl
  4t cl
  </div>

 </body>
</html>
