/* -----------------------------------------
	13. Utilities
----------------------------------------- */

// Flex variation
//
// Custom styles for additional flex alignment options.
// Uncomment anything required

@each $breakpoint in map-keys($grid-breakpoints) {
  @include media-breakpoint-up($breakpoint) {
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);

    //.flex#{$infix}-first     { order: -1; }
    //.flex#{$infix}-last      { order: 1; }
    //.flex#{$infix}-unordered { order: 0; }
		//
    //.flex#{$infix}-row            { flex-direction: row !important; }
    //.flex#{$infix}-column         { flex-direction: column !important; }
    .flex#{$infix}-row-reverse    { flex-direction: row-reverse !important; }
    //.flex#{$infix}-column-reverse { flex-direction: column-reverse !important; }
		//
    //.flex#{$infix}-wrap         { flex-wrap: wrap !important; }
    //.flex#{$infix}-nowrap       { flex-wrap: nowrap !important; }
    //.flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; }
		//
    //.justify-content#{$infix}-start   { justify-content: flex-start !important; }
    //.justify-content#{$infix}-end     { justify-content: flex-end !important; }
    .justify-content#{$infix}-center  { justify-content: center !important; }
    //.justify-content#{$infix}-between { justify-content: space-between !important; }
    //.justify-content#{$infix}-around  { justify-content: space-around !important; }
		//
    .align-items#{$infix}-start    { align-items: flex-start !important; }
    .align-items#{$infix}-end      { align-items: flex-end !important; }
    .align-items#{$infix}-center   { align-items: center !important; }
    //.align-items#{$infix}-baseline { align-items: baseline !important; }
    //.align-items#{$infix}-stretch  { align-items: stretch !important; }
		//
    //.align-content#{$infix}-start   { align-content: flex-start !important; }
    //.align-content#{$infix}-end     { align-content: flex-end !important; }
    //.align-content#{$infix}-center  { align-content: center !important; }
    //.align-content#{$infix}-between { align-content: space-between !important; }
    //.align-content#{$infix}-around  { align-content: space-around !important; }
    //.align-content#{$infix}-stretch { align-content: stretch !important; }
		//
    //.align-self#{$infix}-auto     { align-self: auto !important; }
    //.align-self#{$infix}-start    { align-self: flex-start !important; }
    //.align-self#{$infix}-end      { align-self: flex-end !important; }
    //.align-self#{$infix}-center   { align-self: center !important; }
    //.align-self#{$infix}-baseline { align-self: baseline !important; }
    //.align-self#{$infix}-stretch  { align-self: stretch !important; }
  }
}

//
// Screenreaders
//

.sr-only,
.screen-reader-text {
  @include sr-only;
}

.sr-only-focusable,
.screen-reader-text-focusable {
  @include sr-only-focusable;
}

//
// Text
//

// Alignment

.text-justify  { text-align: justify !important; }
.text-nowrap   { white-space: nowrap !important; }
.text-truncate { @include text-truncate; }

// Responsive alignment

@each $breakpoint in map-keys($grid-breakpoints) {
  @include media-breakpoint-up($breakpoint) {
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);

    .text#{$infix}-left   { text-align: left !important; }
    .text#{$infix}-right  { text-align: right !important; }
    .text#{$infix}-center { text-align: center !important; }
  }
}

// Misc

.text-hide {
  @include text-hide;
}

// Margins

@each $breakpoint in map-keys($grid-breakpoints) {
  @include media-breakpoint-up($breakpoint) {
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);

    .m#{$infix}-auto { margin: auto !important; }
    .mt#{$infix}-auto,
    .my#{$infix}-auto {
      margin-top: auto !important;
    }
    .mr#{$infix}-auto,
    .mx#{$infix}-auto {
      margin-right: auto !important;
    }
    .mb#{$infix}-auto,
    .my#{$infix}-auto {
      margin-bottom: auto !important;
    }
    .ml#{$infix}-auto,
    .mx#{$infix}-auto {
      margin-left: auto !important;
    }
  }
}

// Responsive visibility utilities

@each $bp in map-keys($grid-breakpoints) {
  .hidden-#{$bp}-up {
    @include media-breakpoint-up($bp) {
      display: none !important;
    }
  }

  .hidden-#{$bp}-down {
    @include media-breakpoint-down($bp) {
      display: none !important;
    }
  }
}

.text-theme { color: $accent-color; }
