// Helper classes
@mixin h5bp-helpers {

  .hidden { @include h5bp-hidden; }

  .visuallyhidden { @include h5bp-visuallyhidden; }

  .invisible { @include h5bp-invisible; }

  .clearfix { @include h5bp-clearfix; }

}

// Hide from both screenreaders and browsers:
// http://juicystudio.com/article/screen-readers-display-none.php
@mixin h5bp-hidden {
  display: none !important;
  visibility: hidden;
}

// Hide only visually, but have it available for screenreaders:
// http://snook.ca/archives/html_and_css/hiding-content-for-accessibility
@mixin h5bp-visuallyhidden {
  border: 0;
  clip: rect(0 0 0 0);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;

  // Extends the .visuallyhidden class to allow the element to be focusable
  // when navigated to via the keyboard: https://www.drupal.org/node/897638
  &.focusable:active,
  &.focusable:focus {
    clip: auto;
    height: auto;
    margin: 0;
    overflow: visible;
    position: static;
    width: auto;
  }
}

// Hide visually and from screenreaders, but maintain layout
@mixin h5bp-invisible {
  visibility: hidden;
}

// Clearfix: contain floats
//
// For modern browsers
// 1. The space content is one way to avoid an Opera bug when the
//    `contenteditable` attribute is included anywhere else in the document.
//    Otherwise it causes space to appear at the top and bottom of elements
//    that receive the `clearfix` class.
// 2. The use of `table` rather than `block` is only necessary if using
//    `:before` to contain the top-margins of child elements.
@mixin h5bp-clearfix {
  &:before,
  &:after {
    content: " "; // 1
    display: table; // 2
  }

  &:after {
    clear: both;
  }
}
