@colors:
	red,
	orange,
	amber,
	green,
	teal,
	cyan,
	light-blue,
	blue,
	dark-blue,
	purple,
	dark-purple,
	black,
	white,
	transparent;

// ............................................................
// .for

.for(@i, @n) {.-each(@i)}
.for(@n)     when (isnumber(@n)) {.for(1, @n)}
.for(@i, @n) when not (@i = @n)  {
	.for((@i + (@n - @i) / abs(@n - @i)), @n);
}

// ............................................................
// .for-each

.for(@array)   when (default()) {.for-impl_(length(@array))}
.for-impl_(@i) when (@i > 1)    {.for-impl_((@i - 1))}
.for-impl_(@i) when (@i > 0)    {.-each(extract(@array, @i))}

.colors() {
	.for(@colors); .-each(@color){
		.-do(@color);
	}
}

.colors-background {
	.colors(); .-do(@color){
		&.@{color} {
			background-color: @@color;
		}
	}
}

.colors-background-fallback {
	.colors(); .-do(@color){
		&.@{color}-background {
			background-color: @@color;
		}
	}
}

.colors-border {
	.colors(); .-do(@color){
		&.@{color} {
			border-color: @@color;
		}
	}
}

.colors-border-fallback {
	.colors(); .-do(@color){
		&.@{color}-border {
			border-color: @@color;
		}
	}
}

.colors-foreground {
	.colors(); .-do(@color){
		&.@{color} {
			color: @@color;
		}
	}
}
