$columns: 12;
$container-base-width: 1200px;
$container-offset: $base-spacing-unit;

$mobile:  576px;
$tablet:  768px;
$desktop: 992px;

$mq: ( $mobile:$columns, $tablet:$columns, $desktop:$columns );

.container {
  max-width: $container-base-width;
  padding-left: $container-offset;
  padding-right: $container-offset;
  margin: 0 auto;
}

.container-full {
  max-width: 100%;
  padding-left: $container-offset;
  padding-right: $container-offset;
  margin: 0 auto;
}

.row {
  display: flex;
  flex-wrap: wrap;
  flex: 0 1 auto;
  flex-direction: row;
  box-sizing: border-box;
  margin-left: ($base-spacing-unit * -1);
  margin-right: ($base-spacing-unit * -1);
}

.col {
  padding-left: $base-spacing-unit;
  padding-right: $base-spacing-unit;
}

[class^="col-"] {
  flex: auto;
}

/* ========== MOBILE FIRST ========== */

// MOBILE
@for $i from 0 through $columns {
  .col-#{$i} {
    width: percentage( $i / $columns );
  }
}

@for $i from 0 through $columns {
  .push-#{$i} {
    margin-left: percentage( $i / $columns );
  }
}

@for $i from 0 through $columns {
  .pull-#{$i} {
    margin-right: percentage( $i / $columns );
  }
}


@each $key, $val in $mq {

  // TABLET
  @media(min-width: $tablet) {

    @for $i from 0 through $columns {
      .col-t-#{$i} {
        width: percentage( $i / $columns );
      }
    }

    @for $i from 0 through $columns {
      .push-t-#{$i} {
        margin-left: percentage( $i / $columns );
      }
    }

    @for $i from 0 through $columns {
      .pull-t-#{$i} {
        margin-right: percentage( $i / $columns );
      }
    }
  }


  // DESKTOP
  @media(min-width: $desktop) {

    @for $i from 0 through $columns {
      .col-d-#{$i} {
        width: percentage( $i / $columns );
      }
    }

    @for $i from 0 through $columns {
      .push-d-#{$i} {
        margin-left: percentage( $i / $columns );
      }
    }

    @for $i from 0 through $columns {
      .pull-d-#{$i} {
        margin-right: percentage( $i / $columns );
      }
    }
  }

}

@media(min-width: $desktop) {
  .d-hide {
    display: none !important;
  }

  .d-show {
    display: block !important;
  }
}

