.col-type (@col-type: flex) {
	.col-count (@col-count : @number-of-columns, @row-type : flex) {
		.col (
			@value_1-1 : @false, @value_2-1 : @false,
			@value_1-2 : @false, @value_2-2 : @false,
			@value_1-3 : @false, @value_2-3 : @false,
			@value_1-4 : @false, @value_2-4 : @false,
			@value_1-5 : @false, @value_2-5 : @false,
			@value_1-6 : @false, @value_2-6 : @false,
			@value_1-7 : @false, @value_2-7 : @false,
			@value_1-8 : @false, @value_2-8 : @false,
			@value_1-9 : @false, @value_2-9 : @false,
			@value_1-10: @false, @value_2-10: @false,
			@value_1-11: @false, @value_2-11: @false,
			@value_1-12: @false, @value_2-12: @false
		) {
			& when (@offset-var > 0) {
				.m(var(--offset-one-side));
			}
			& when (@offset-var-x > 0) {
				.mx(var(--offset-one-side-x));
			}

			.injects(
				{
					.ww(break-word);
					.bz(border-box);
				},
				@value_1-1,  @value_2-1,
				@value_1-2,  @value_2-2,
				@value_1-3,  @value_2-3,
				@value_1-4,  @value_2-4,
				@value_1-5,  @value_2-5,
				@value_1-6,  @value_2-6,
				@value_1-7,  @value_2-7,
				@value_1-8,  @value_2-8,
				@value_1-9,  @value_2-9,
				@value_1-10, @value_2-10,
				@value_1-11, @value_2-11,
				@value_1-12, @value_2-12
			);

			& when (@col-type = inline-block),(@col-type = inline-flex),(@col-type = inline-grid),(@col-type = inline){
				.col-ib(){
					display: @col-type;
					vertical-align: top;
				}
				.injects(
					{
						.col-ib();
					},
					@value_1-1,  @value_2-1,
					@value_1-2,  @value_2-2,
					@value_1-3,  @value_2-3,
					@value_1-4,  @value_2-4,
					@value_1-5,  @value_2-5,
					@value_1-6,  @value_2-6,
					@value_1-7,  @value_2-7,
					@value_1-8,  @value_2-8,
					@value_1-9,  @value_2-9,
					@value_1-10, @value_2-10,
					@value_1-11, @value_2-11,
					@value_1-12, @value_2-12
				);
			}

			& when (@col-type = left) , (@col-type = right){
				.col-float(){
					float: @col-type;
				}
				.injects(
					{
						.col-float();
					},
					@value_1-1,  @value_2-1,
					@value_1-2,  @value_2-2,
					@value_1-3,  @value_2-3,
					@value_1-4,  @value_2-4,
					@value_1-5,  @value_2-5,
					@value_1-6,  @value_2-6,
					@value_1-7,  @value_2-7,
					@value_1-8,  @value_2-8,
					@value_1-9,  @value_2-9,
					@value_1-10, @value_2-10,
					@value_1-11, @value_2-11,
					@value_1-12, @value_2-12
				);
			}

			// * init size column * //
			.col-size(@col-size : @col-count){
				& when (@col-size > @col-count){
					console-error("Incorrect number of columns - maximum @{columns_set_length}")
				}
				& when not (@col-type = grid) {
					@width_without_offset: 100% / @col-count * @col-size;
					& when not(@offset-var > 0) {
						& when (ispercentage(@offset)), (@offset = 0){
							width: @width_without_offset - @offset;
						}
						& when not (ispercentage(@offset)) {
							& when not (@offset = 0) {
								width: ~"calc(@{width_without_offset} - @{offset})";
							}
						}
					}

					& when (@offset-var > 0) {
						width: ~"calc(@{width_without_offset} - var(--offset))";
					}

					& when (@offset-var-x > 0) {
						width: ~"calc(@{width_without_offset} - var(--offset-x))";
					}
				}
			}

			._mixin-col(
				@value_1-1  : @false, @value_2-1  : @false,
				@value_1-2  : @false, @value_2-2  : @false,
				@value_1-3  : @false, @value_2-3  : @false,
				@value_1-4  : @false, @value_2-4  : @false,
				@value_1-5  : @false, @value_2-5  : @false,
				@value_1-6  : @false, @value_2-6  : @false,
				@value_1-7  : @false, @value_2-7  : @false,
				@value_1-8  : @false, @value_2-8  : @false,
				@value_1-9  : @false, @value_2-9  : @false,
				@value_1-10 : @false, @value_2-10 : @false,
				@value_1-11 : @false, @value_2-11 : @false,
				@value_1-12 : @false, @value_2-12 : @false
			) {
				& when not (@value_1-1 = @false){
					& when(includes(@breaks, @value_1-1) = 0){
						& when not (@value_2-1 = @false){
							.break( .col-size(@value_1-1) , 0 , @breaks[@@value_2-1] );
							& when not (@value_1-2 = @false) {
								._mixin-col(
									@value_2-1,  @value_1-2,
									@value_2-2,  @value_1-3,
									@value_2-3,  @value_1-4,
									@value_2-4,  @value_1-5,
									@value_2-5,  @value_1-6,
									@value_2-6,  @value_1-6,
									@value_2-7,  @value_1-7,
									@value_2-8,  @value_1-8,
									@value_2-9,  @value_1-9,
									@value_2-10, @value_1-10,
									@value_2-11, @value_1-11,
									@value_2-12
								);
							}
						}
						& when ( @value_2-1 = @false ) {
							.col-size( @value_1-1 );
						}
					}

					& when (includes(@breaks, @value_1-1) = 1){
						& when not(@value_1-2 = @false){
							.break( .col-size(@value_2-1) , @breaks[@@value_1-1], @breaks[@@value_1-2] );
							& when not (@value_2-2 = @false){
								._mixin-col(
									@value_1-2,  @value_2-2,
									@value_1-3,  @value_2-3,
									@value_1-4,  @value_2-4,
									@value_1-5,  @value_2-5,
									@value_1-6,  @value_2-6,
									@value_1-7,  @value_2-7,
									@value_1-8,  @value_2-8,
									@value_1-9,  @value_2-9,
									@value_1-10, @value_2-10,
									@value_1-11, @value_2-11,
									@value_1-12, @value_2-12
								);
							}
						}
						& when (@value_1-2 = @false){
							.break( .col-size(@value_2-1) , @breaks[@@value_1-1])
						}
					}
				}
			}

			._mixin-col(
				@value_1-1,  @value_2-1,
				@value_1-2,  @value_2-2,
				@value_1-3,  @value_2-3,
				@value_1-4,  @value_2-4,
				@value_1-5,  @value_2-5,
				@value_1-6,  @value_2-6,
				@value_1-7,  @value_2-7,
				@value_1-8,  @value_2-8,
				@value_1-9,  @value_2-9,
				@value_1-10, @value_2-10,
				@value_1-11, @value_2-11,
				@value_1-12, @value_2-12
			);
			// * end init size column * //
		}
	}
}
