//
// Responsive: Utility classes
// --------------------------------------------------


// IE10 Metro responsive
// Required for Windows 8 Metro split-screen snapping with IE10
//
// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
@-ms-viewport{
  width: device-width;
}

// IE10 on Windows Phone 8
// IE10 on WP8 doesn't report CSS pixels, but actual device pixels. In
// other words, say on a Lumia, you'll get 768px as the device width,
// meaning users will see the tablet styles and not phone styles.
//
// Alternatively you can override this with JS (see source below), but
// we won't be doing that here given our limited scope.
//
// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/
@media screen and (max-width: 400px) {
  @-ms-viewport{
    width: 320px;
  }
}

// Hide from screenreaders and browsers
// Credit: HTML5 Boilerplate
.hidden {
  display: none !important;
  visibility: hidden !important;
}

// Visibility utilities

.visible-xs {
  .responsive-invisibility();
  @media (max-width: @screen-xs-max) {
    .responsive-visibility();
  }
  &.visible-sm {
    @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
      .responsive-visibility();
    }
  }
  &.visible-md {
    @media (min-width: @screen-md) and (max-width: @screen-md-max) {
      .responsive-visibility();
    }
  }
  &.visible-lg {
    @media (min-width: @screen-lg) {
      .responsive-visibility();
    }
  }
}
.visible-sm {
  .responsive-invisibility();
  &.visible-xs {
    @media (max-width: @screen-xs-max) {
      .responsive-visibility();
    }
  }
  @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
    .responsive-visibility();
  }
  &.visible-md {
    @media (min-width: @screen-md) and (max-width: @screen-md-max) {
      .responsive-visibility();
    }
  }
  &.visible-lg {
    @media (min-width: @screen-lg) {
      .responsive-visibility();
    }
  }
}
.visible-md {
  .responsive-invisibility();
  &.visible-xs {
    @media (max-width: @screen-xs-max) {
      .responsive-visibility();
    }
  }
  &.visible-sm {
    @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
      .responsive-visibility();
    }
  }
  @media (min-width: @screen-md) and (max-width: @screen-md-max) {
    .responsive-visibility();
  }
  &.visible-lg {
    @media (min-width: @screen-lg) {
      .responsive-visibility();
    }
  }
}
.visible-lg {
  .responsive-invisibility();
  &.visible-xs {
    @media (max-width: @screen-xs-max) {
      .responsive-visibility();
    }
  }
  &.visible-sm {
    @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
      .responsive-visibility();
    }
  }
  &.visible-md {
    @media (min-width: @screen-md) and (max-width: @screen-md-max) {
      .responsive-visibility();
    }
  }
  @media (min-width: @screen-lg) {
    .responsive-visibility();
  }
}

.hidden-xs {
  .responsive-visibility();
  @media (max-width: @screen-xs-max) {
    .responsive-invisibility();
  }
  &.hidden-sm {
    @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
      .responsive-invisibility();
    }
  }
  &.hidden-md {
    @media (min-width: @screen-md) and (max-width: @screen-md-max) {
      .responsive-invisibility();
    }
  }
  &.hidden-lg {
    @media (min-width: @screen-lg) {
      .responsive-invisibility();
    }
  }
}
.hidden-sm {
  .responsive-visibility();
  &.hidden-xs {
    @media (max-width: @screen-xs-max) {
      .responsive-invisibility();
    }
  }
  @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
    .responsive-invisibility();
  }
  &.hidden-md {
    @media (min-width: @screen-md) and (max-width: @screen-md-max) {
      .responsive-invisibility();
    }
  }
  &.hidden-lg {
    @media (min-width: @screen-lg) {
      .responsive-invisibility();
    }
  }
}
.hidden-md {
  .responsive-visibility();
  &.hidden-xs {
    @media (max-width: @screen-xs-max) {
      .responsive-invisibility();
    }
  }
  &.hidden-sm {
    @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
      .responsive-invisibility();
    }
  }
  @media (min-width: @screen-md) and (max-width: @screen-md-max) {
    .responsive-invisibility();
  }
  &.hidden-lg {
    @media (min-width: @screen-lg) {
      .responsive-invisibility();
    }
  }
}
.hidden-lg {
  .responsive-visibility();
  &.hidden-xs {
    @media (max-width: @screen-xs-max) {
      .responsive-invisibility();
    }
  }
  &.hidden-sm {
    @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
      .responsive-invisibility();
    }
  }
  &.hidden-md {
    @media (min-width: @screen-md) and (max-width: @screen-md-max) {
      .responsive-invisibility();
    }
  }
  @media (min-width: @screen-lg) {
    .responsive-invisibility();
  }
}

// Print utilities
.visible-print {
  .responsive-invisibility();
}

@media print {
  .visible-print {
    .responsive-visibility();
  }
  .hidden-print {
    .responsive-invisibility();
  }
}
