html, body {
display: grid;
}
html {
overflow: hidden;
height: 100%;
}
body {
--tmpl: repeat(var(--n), 1.125em);
grid-template: var(--tmpl)/var(--tmpl);
place-content: center;
}
.tile {
--m: calc(.5*(var(--n) - 1));
--abs-i: max(var(--m) - var(--i), var(--i) - var(--m));
--abs-j: max(var(--m) - var(--j), var(--j) - var(--m));
--rat: calc((var(--abs-i)*var(--abs-i) + var(--abs-j)*var(--abs-j))/var(--m)/var(--m));
transform: translate(var(--x), var(--y));
background: #000;
animation: a 2s cubic-bezier(0.65, 0, 0.35, 1) calc((var(--rat) - 2)*2s) infinite alternate;
}
@keyframes a {
0% {
transform: scale(0.3333333333);
}
}