//
// Utility classes
// --------------------------------------------------


//
// Floats
//

.clearfix {
  @include clearfix();
}

.center-block {
  @include center-block();
}

.pull-right {
  @include pull-right();
}

.pull-left {
  @include pull-left();
}


//
// Screenreaders
//

.sr-only {
  @include sr-only();
}

.sr-only-focusable {
  @include sr-only-focusable();
}


//
// Spacing
//

.m-a-0 { margin:        0; }
.m-t-0 { margin-top:    0; }
.m-r-0 { margin-right:  0; }
.m-b-0 { margin-bottom: 0; }
.m-l-0 { margin-left:   0; }

.m-a { margin:        $spacer; }
.m-t { margin-top:    $spacer-y; }
.m-r { margin-right:  $spacer-x }
.m-b { margin-bottom: $spacer-y; }
.m-l { margin-left:   $spacer-x; }
.m-x {
  margin-right: $spacer-x;
  margin-left:  $spacer-x;
}
.m-y {
  margin-top:    $spacer-y;
  margin-bottom: $spacer-y;
}

.m-t-md { margin-top:    ($spacer-y * 1.5); }
.m-r-md { margin-right:  ($spacer-y * 1.5); }
.m-b-md { margin-bottom: ($spacer-y * 1.5); }
.m-l-md { margin-left:   ($spacer-y * 1.5); }
.m-x-md {
  margin-right: ($spacer-x * 1.5);
  margin-left:  ($spacer-x * 1.5);
}
.m-y-md {
  margin-top:    ($spacer-y * 1.5);
  margin-bottom: ($spacer-y * 1.5);
}

.m-t-lg { margin-top:    ($spacer-y * 3); }
.m-r-lg { margin-right:  ($spacer-y * 3); }
.m-b-lg { margin-bottom: ($spacer-y * 3); }
.m-l-lg { margin-left:   ($spacer-y * 3); }
.m-x-lg {
  margin-right: ($spacer-x * 3);
  margin-left:  ($spacer-x * 3);
}
.m-y-lg {
  margin-top:    ($spacer-y * 3);
  margin-bottom: ($spacer-y * 3);
}



.p-a-0 { padding:        0; }
.p-t-0 { padding-top:    0; }
.p-r-0 { padding-right:  0; }
.p-b-0 { padding-bottom: 0; }
.p-l-0 { padding-left:   0; }

.p-a { padding:        $spacer; }
.p-t { padding-top:    $spacer-y; }
.p-r { padding-right:  $spacer-x }
.p-b { padding-bottom: $spacer-y; }
.p-l { padding-left:   $spacer-x; }
.p-x {
  padding-right: $spacer-x;
  padding-left:  $spacer-x;
}
.p-y {
  padding-top:    $spacer-y;
  padding-bottom: $spacer-y;
}

.p-t-md { padding-top:    ($spacer-y * 1.5); }
.p-r-md { padding-right:  ($spacer-y * 1.5); }
.p-b-md { padding-bottom: ($spacer-y * 1.5); }
.p-l-md { padding-left:   ($spacer-y * 1.5); }
.p-x-md {
  padding-right: ($spacer-x * 1.5);
  padding-left:  ($spacer-x * 1.5);
}
.p-y-md {
  padding-top:    ($spacer-y * 1.5);
  padding-bottom: ($spacer-y * 1.5);
}

.p-t-lg { padding-top:    ($spacer-y * 3); }
.p-r-lg { padding-right:  ($spacer-y * 3); }
.p-b-lg { padding-bottom: ($spacer-y * 3); }
.p-l-lg { padding-left:   ($spacer-y * 3); }
.p-x-lg {
  padding-right: ($spacer-x * 3);
  padding-left:  ($spacer-x * 3);
}
.p-y-lg {
  padding-top:    ($spacer-y * 3);
  padding-bottom: ($spacer-y * 3);
}



// Positioning
.pos-f-t {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  z-index: $zindex-navbar-fixed;
}

// Always hide an element with the `hidden` HTML attribute (from PureCSS).
[hidden] {
  display: none !important;
}

.invisible {
  visibility: hidden;
}

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


//
// Text
//

// Alignment
.text-left           { text-align: left; }
.text-right          { text-align: right; }
.text-center         { text-align: center; }
.text-justify        { text-align: justify; }
.text-nowrap         { white-space: nowrap; }
.text-truncate       { @include text-truncate; }

// Transformation
.text-lowercase      { text-transform: lowercase; }
.text-uppercase      { text-transform: uppercase; }
.text-capitalize     { text-transform: capitalize; }


// Contextual colors
.text-muted {
  color: $text-muted;
}

@include text-emphasis-variant('.text-primary', $brand-primary);

@include text-emphasis-variant('.text-success', $state-success-text);

@include text-emphasis-variant('.text-info', $state-info-text);

@include text-emphasis-variant('.text-warning', $state-warning-text);

@include text-emphasis-variant('.text-danger', $state-danger-text);


// Contextual backgrounds
// For now we'll leave these alongside the text classes until v4 when we can
// safely shift things around (per SemVer rules).

// Inverse
// Todo: redo this as a proper class
.inverse {
  color: $gray-lighter;
  background-color: $gray-dark;
}

.bg-primary {
  // Given the contrast here, this is the only class to have its color inverted
  // automatically.
  color: #fff;
}

@include bg-variant('.bg-primary', $brand-primary);

@include bg-variant('.bg-success', $state-success-bg);

@include bg-variant('.bg-info', $state-info-bg);

@include bg-variant('.bg-warning', $state-warning-bg);

@include bg-variant('.bg-danger', $state-danger-bg);
