.mondrian { --gap: calc(0.6vw + 0.6vh); background-color: black; padding: var(--gap); height: 60vh; width: 50vw; margin: 15vh auto 0; box-shadow: 0 0 1em rgba(0,0,0,0.5); } .mondrian div { height: 100%; display: grid; --a: calc((100% + var(--gap)) * var(--pos) - var(--gap)); --b: calc((100% + var(--gap)) * (1 - var(--pos)) - var(--gap)); gap: min(var(--gap), var(--a) + var(--gap), var(--b) + var(--gap), 100%); box-sizing: border-box; } .mondrian div[data-dir="horizontal"] { grid-template-rows: var(--a) var(--b); } .mondrian div[data-dir="vertical"] { grid-template-columns: var(--a) var(--b); } @media (prefers-color-scheme: dark) { :root { color-scheme: dark; } }