<!DOCTYPE HTML>
<!--
     Any copyright is dedicated to the Public Domain.
     http://creativecommons.org/publicdomain/zero/1.0/
-->
<html><head>
  <meta charset="utf-8">
  <title>CSS Grid Test: Masonry layout with `align-tracks:stretch`</title>
  <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
  <link rel="help" href="https://drafts.csswg.org/css-grid-2">
  <link rel="match" href="masonry-align-tracks-stretch-002-ref.html">
<style>
html,body {
  color:black; background-color:white; font:6px/1 monospace; padding:0; margin:0;
}
grid {
  display: inline-grid;
  grid-template-rows: masonry;
  grid-template-columns: 30px;
  gap: 1px 2px;
  padding: 2px 3px 1px 1px;
  border-style: solid;
  border-width: 1px 7px 3px 5px;
  border-inline-start-color: magenta;
  border-block-start-color: blue;
  background: lightgrey content-box;
  align-tracks: stretch;
  block-size: 25px;
  vertical-align: top;
}
item {
  border-inline-start: 1px solid magenta;
  border-block-start: 2px solid blue;
}
item:nth-child(2n+1) { background: grey; }
item:nth-child(2n) { background: cyan; }
.hl { writing-mode: horizontal-tb; direction:ltr; }
.hr { writing-mode: horizontal-tb; direction:rtl; }
.vll { writing-mode: vertical-lr; direction:ltr; }
.vlr { writing-mode: vertical-lr; direction:rtl; }
.vrl { writing-mode: vertical-rl; direction:ltr; }
.vrr { writing-mode: vertical-rl; direction:rtl; }
.swl { writing-mode: sideways-lr; direction:ltr; }
.swr { writing-mode: sideways-lr; direction:rtl; }
</style>
</head>
<body>
<div style="display:none">
<grid>
  <item>1</item>
  <item>2a<br>2b</item>
</grid>
</div>
<script>
let wms = [ "hl", "hr", "vll", "vrr", "vlr", "vrl", "swl", "swr", ];
let grid = document.getElementsByTagName('grid')[0];
for (const reorder of [false, true]) {
  for (const cb_wm of wms) {
    for (const child_wm of wms) {
      let e = grid.cloneNode(true);
      e.className = cb_wm;
      e.children[1].className = child_wm;
      if (reorder) {
        e.children[0].style.order = '1';
      }
      document.body.appendChild(e);
    }
  }
}
</script>
</body></html>
