/*
border, border-radius, border-width, border-color, border-style
*/

// Default and preset style for border
.border {
  border: 1px solid $default-border-color;
}

/**
border-radius
shorthand: .br-{t|r|b|l}-{radius}
*/
@each $size,
$value in $border-radius {
  @include border-radius('br', $size, $value);
}

@each $breakpoint in map-keys($breakpoints) {
  @include breakpoint-up($breakpoint) {

    @each $size,
    $value in $border-radius {
      @include border-radius($breakpoint+"-br", $size, $value);
    }
  }
}

/**
border-width
shorthand: .bw-{t|r|b|l}-{width}, .{screen|hover|focus}-bw-{t|r|b|l}-{width}
*/

@each $size,
$value in $border-width {

  .bw-#{$size},
  .hover-bw-#{$size}:hover,
  .focus-bw-#{$size}:focus  {
    border-width: $value !important;
  }

  @each $side-name,
  $side in $sides {
    .bw-#{$side-name}-#{$size},
    .hover-bw-#{$side-name}-#{$size}:hover,
    .focus-bw-#{$side-name}-#{$size}:focus {
      border-#{$side}-width: $value !important;
    }
  }
}

@each $breakpoint in map-keys($breakpoints) {
  @include breakpoint-up($breakpoint) {
    @each $size,
    $value in $border-width {
    
      .#{$breakpoint}-bw-#{$size} {
        border-width: $value !important;
      }
    
      @each $side-name,
      $side in $sides {
        .#{$breakpoint}-bw-#{$side-name}-#{$size} {
          border-#{$side}-width: $value !important;
        }
      }
    }
  }
}
/**
  border-color
  shorthand: .bc-{color}, .border-{color}
  */

@each $name,
$value in $all-colors {

  .bc-#{$name},
  .hover-bc-#{$name}:hover,
  .focus-bc-#{$name}:focus {
    border-color: $value !important;
  }

  .border-#{$name} {
    border: 1px solid $value !important;
  }
}

/**
  border color alpha
  shorthand: .bc-{color}-{alpha}, .border-{color}-{alpha}
*/

@each $alpha-key,
$alpha-value in $alpha-options {

  @each $name,
  $value in $all-colors {

    .bc-#{$name}-#{$alpha-key},
    .hover-bc-#{$name}-#{$alpha-key}:hover,
    .focus-bc-#{$name}-#{$alpha-key}:focus {
      border-color: adjust-color($value, $alpha: -$alpha-value) !important;
    }

    .border-#{$name}-#{$alpha-key} {
      border: 1px solid adjust-color($value, $alpha: -$alpha-value) !important;
    }
  }
}

@each $side-key,
$side-value in $sides {
  .border-#{$side-key} {
    border-#{$side-value}: 1px solid $default-border-color;
  }
}

$border-styles: (none,
dotted,
dashed,
solid,
double
) !default;
/**
  border style
  shorthand: .{screen}-border-{style}
*/

@each $style-name in $border-styles {
  .border-#{$style-name}, 
  .hover-border-#{$style-name}:hover,
  .focus-border-#{$style-name}:focus {
    border-style: $style-name !important;
  }
}

@each $breakpoint in map-keys($breakpoints) {
  @include breakpoint-up($breakpoint) {
    @each $style-name in $border-styles {
      .#{$breakpoint}-border-#{$style-name} {
        border-style: $style-name !important;
      }
    }
  }
}