// Margin and Padding

@each $breakpoint in map-keys($grid-breakpoints) {
  @include media-breakpoint-up($breakpoint) {
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
    @each $prop, $abbrev in (margin: m, padding: p) {
      @each $size, $length in $spacer-series {
        
        // 正值
        .#{$abbrev}#{$infix}-#{$size} {
          #{$prop}: $length !important;
        }

        .#{$abbrev}t#{$infix}-#{$size} {
          #{$prop}-top: $length !important;
        }

        .#{$abbrev}r#{$infix}-#{$size} {
          #{$prop}-right: $length !important;
        }

        .#{$abbrev}b#{$infix}-#{$size} {
          #{$prop}-bottom: $length !important;
        }

        .#{$abbrev}l#{$infix}-#{$size} {
          #{$prop}-left: $length !important;
        }

        .#{$abbrev}x#{$infix}-#{$size} {
          #{$prop}-right: $length !important;
          #{$prop}-left: $length !important;
        }

        .#{$abbrev}y#{$infix}-#{$size} {
          #{$prop}-top: $length !important;
          #{$prop}-bottom: $length !important;
        }

        // 负值
        .#{$abbrev}-out#{$infix}-#{$size} {
          #{$prop}: -$length !important;
        }

        .#{$abbrev}t-out#{$infix}-#{$size} {
          #{$prop}-top: -$length !important;
        }

        .#{$abbrev}r-out#{$infix}-#{$size} {
          #{$prop}-right: -$length !important;
        }

        .#{$abbrev}b-out#{$infix}-#{$size} {
          #{$prop}-bottom: -$length !important;
        }

        .#{$abbrev}l-out#{$infix}-#{$size} {
          #{$prop}-left: -$length !important;
        }

        .#{$abbrev}x-out#{$infix}-#{$size} {
          #{$prop}-right: -$length !important;
          #{$prop}-left: -$length !important;
        }

        .#{$abbrev}y-out#{$infix}-#{$size} {
          #{$prop}-top: -$length !important;
          #{$prop}-bottom: -$length !important;
        }
      }
    }

    // Some special margin utils
    .m#{$infix}-auto {
      margin: auto !important;
    }

    .mt#{$infix}-auto {
      margin-top: auto !important;
    }

    .mr#{$infix}-auto {
      margin-right: auto !important;
    }

    .mb#{$infix}-auto {
      margin-bottom: auto !important;
    }

    .ml#{$infix}-auto {
      margin-left: auto !important;
    }

    .mx#{$infix}-auto {
      margin-right: auto !important;
      margin-left: auto !important;
    }

    .my#{$infix}-auto {
      margin-top: auto !important;
      margin-bottom: auto !important;
    }
  }
}
