.columns {
  flex-wrap: wrap;
  margin-left: $columns-gutter / 2 * -1;
  margin-right: $columns-gutter / 2 * -1;
  margin-top: $columns-gutter / 2 * -1;

  &:last-child {
    margin-bottom: $columns-gutter / 2 * -1;
  }

  &:not(:last-child) {
    margin-bottom: $columns-gutter / 2;
  }

  &.is-centered {
    justify-content: center;
  }

  &.is-gapless {
    margin-left: 0;
    margin-right: 0;
    margin-top: 0;

    &:last-child {
      margin-bottom: 0;
    }

    &:not(:last-child) {
      margin-bottom: $columns-gutter;
    }

    & > .column {
      margin: 0;
      padding: 0;
    }
  }

  &.is-vcentered {
    align-items: center;
  }

  @include tablet {

    margin-left: $columns-gutter-md / 2 * -1;
    margin-right: $columns-gutter-md / 2 * -1;
    margin-top: $columns-gutter-md / 2 * -1;

    &:last-child {
      margin-bottom: $columns-gutter-md / 2 * -1;
    }

    &:not(:last-child) {
      margin-bottom: $columns-gutter-md / 2;
    }

    &:not(.is-desktop) {
      display: flex;
    }
  }

  @include desktop {
    &.is-desktop {
      display: flex;
    }
  }

  &.is-mobile {
    display: flex;
    @for $i from 1 through $columns-count {
      & > .column.is-#{$i} {
        flex: none;
        width: $i / 12 * 100%;
      }

      & > .column.is-offset-#{$i} {
        margin-left: $i / $columns-count * 100%;
      }
    }
  }

  @include mobile {
    @for $i from 1 through $columns-count {
      & > .column.is-#{$i}-mobile {
        flex: none;
        width: $i / $columns-count * 100%;
      }

      & > .column.is-offset-#{$i}-mobile {
        margin-left: $i / $columns-count * 100%;
      }
    }
  }

  @include tablet {
    @for $i from 1 through $columns-count {
      & > .column.is-#{$i},
      & > .column.is-#{$i}-tablet {
        flex: none;
        width: $i / $columns-count * 100%;
      }

      & > .column.is-offset-#{$i},
      & > .column.is-offset-#{$i}-tablet {
        margin-left: $i / $columns-count * 100%;
      }
    }
  }

  @include touch {
    @for $i from 1 through $columns-count {
      & > .column.is-#{$i}-touch {
        flex: none;
        width: $i / $columns-count * 100%;
      }

      & > .column.is-offset-#{$i}-touch {
        margin-left: $i / $columns-count * 100%;
      }
    }
  }

  @include desktop {
    @for $i from 1 through $columns-count {
      & > .column.is-#{$i}-desktop {
        flex: none;
        width: $i / $columns-count * 100%;
      }

      & > .column.is-offset-#{$i}-desktop {
        margin-left: $i / $columns-count * 100%;
      }
    }
  }

  @include widescreen {
    @for $i from 1 through $columns-count {
      & > .column.is-#{$i}-widescreen {
        flex: none;
        width: $i / $columns-count * 100%;
      }

      & > .column.is-offset-#{$i}-widescreen {
        margin-left: $i / $columns-count * 100%;
      }
    }
  }

  @include fullhd {
    @for $i from 1 through $columns-count {
      & > .column.is-#{$i}-fullhd {
        flex: none;
        width: $i / $columns-count * 100%;
      }

      & > .column.is-offset-#{$i}-fullhd {
        margin-left: $i / $columns-count * 100%;
      }
    }
  }
}

.column{
  display: block;
  flex-basis: 0;
  flex-grow: 1;
  flex-shrink: 1;
  padding: $columns-gutter / 2;

  @include tablet {
    padding: $columns-gutter-md / 2;
  }
}
