вы пытаетесь писать лесс императивно, будто это сасс. а он декларативный, на нём надо писать примерно как на функциональных языках.
здесь нет переменных в привычном смысле, поскольку их нельзя, собственно, изменять. то есть, объявлять переменную заранее и менять потом её значение - не нужно. зато здесь можно в другой области видимости объявить другое значение с этим же именем. например, изменяющиеся значения можно передавать в качестве параметров, при каждом новом вызове.
в общем, код как у вас может быть написан примерно так:
.y(@y) when (@y < 10) {
.x(@x) when (@x < 10) {
@squareI: @y * 10 + @x + 1;
@delayI: @y + @x;
@output: round(0.2 * @delayI, 1);
#square-@{squareI} {
animation-delay: ~"@{output}s";
}
.x(@x + 1);
}
.x(0);
.y(@y + 1);
}
.y(0);
но то же самое делается и проще:
.delay(@i: 0) when(@i < 100)
{
@squareI: @i + 1;
@x: mod(@i, 10);
@y: floor(@i / 10);
@delay: @x + @y;
#square-@{squareI} { animation-delay: ~"@{delay}s"; }
.delay(@i + 1);
}
.delay();