$widths: (
    s:  '(max-width: 720px)',
    m:  '(max-width: 1024px) and (min-width: 720px)',
    l:  '(min-width: 1024px)',
);

@for $i from 1 through 12 {
    .col-#{$i} {
        float: left;
        box-sizing: border-box;

        @if $i < 12 {
            width: (4.66666666667%*$i) + (4% * if($i > 1, $i - 1, 0));
            margin-left: 4%;
        } @else {
            width: 100%;
            margin-left: 0;
        }

        &:first-child {
            margin-left: 0;
        }
    }

    .col-no-margin-#{$i} {
        float: left;
        box-sizing: border-box;
        width: ((100%/12)*$i);
        margin: 0;
    }

    @if $i < 12 {
        .col-offset-#{$i}:first-child {
             margin-left: (8.66666666667%*$i) !important;
        }
        .col-offset-#{$i}:not(first-child) {
             margin-left: 4% + (8.66666666667%*$i) !important;
        }
    }
}

@each $size, $width in $widths {
    @media #{$width} {
        @for $i from 1 through 12 {
            .col-#{$size}-#{$i} {
                float: left;
                box-sizing: border-box;

                @if $i < 12 {
                    width: (4.66666666667%*$i) + (4% * if($i > 1, $i - 1, 0));
                    margin-left: 4%;
                } @else {
                    width: 100%;
                    margin-left: 0;
                }

                &:first-child {
                    margin-left: 0;
                }
            }

            @if $i < 12 {
                .col-offset-#{$size}-#{$i} {
                     margin-left: (8.66666666667%*$i);
                }
            }

            .col-no-margin-#{$size}-#{$i} {
                float: left;
                box-sizing: border-box;
                width: ((100%/12)*$i);
            }
        }

        .#{$size}-hidden {
            display: none !important;
        }

        .#{$size}-visible {
            display: block !important;
        }
    }
}

@media (min-width: 720px) and (orientation:portrait) {
    body {
        font-size: $default-font-size-vertial;
    }
}

.vertical-center {
    display: flex;
    align-items: center;
}

.horizontal-center {
    display: flex;
    justify-content: center;
    margin-left: auto;
    margin-right: auto;
}

