@mixin media($query:$feature $value $columns, $total-columns: $grid-columns) {

@if length($query) == 1 {
  @media screen and ($default-feature: nth($query, 1)) {
    $default-grid-columns: $grid-columns;
    $grid-columns: $total-columns !global;
    @content;
    $grid-columns: $default-grid-columns !global;
  }
}

@else {
  $loopTo: length($query);
  $mediaQuery: 'screen and ';
  $default-grid-columns: $grid-columns;
  $grid-columns: $total-columns !global;

  @if length($query) % 2 != 0 {
    $grid-columns: nth($query, $loopTo) !global;
    $loopTo: $loopTo - 1;
  }

  $i: 1;
  @while $i <= $loopTo {
    $mediaQuery: $mediaQuery + '(' + nth($query, $i) + ': ' + nth($query, $i + 1) + ') ';

    @if ($i + 1) != $loopTo {
      $mediaQuery: $mediaQuery + 'and ';
    }

    $i: $i + 2;
  }

  @media #{$mediaQuery} {
    @content;
    $grid-columns: $default-grid-columns !global;
  }
}

}