// UTILITY MIXINS // ————————————————–

// Clearfix // ——————– // For clearing floats like a boss h5bp.com/q @mixin clearfix {

zoom: 1;
&:before,
&:after {
  display: table;
  content: "";
  // Fixes Opera/contenteditable bug:
  // http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952
  line-height: 0;
}
&:after {
  clear: both;
}

}

@mixin need-dotted{

border-bottom: 1px dotted lighten($link-color, 50);
&:hover {
  border-bottom-style: solid;
}

} // Webkit-style focus // ——————– @mixin tab-focus() {

// Default
outline: thin dotted #333;
// Webkit
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;

}

// Center-align a block level element // ———————————- @mixin center-block() {

display: block;
margin-left: auto;
margin-right: auto;

}

// TYPOGRAPHY // ————————————————–

// Full-fat vertical rhythm // ———————— @mixin font-size($size) {

font-size: 0px + $size;
font-size: 0rem + $size / $doc-font-size;
line-height: 0 + round($doc-line-height / $size*10000) / 10000;
margin-bottom: 0px + $doc-line-height;
margin-bottom: 0rem + ($doc-line-height / $doc-font-size);

}

// Just the REMs // ————- @mixin font-rem($size) {

font-size: 0px + $size;
font-size: 0rem + $size / $doc-font-size;

}

// Just font-size and line-height // —————————— @mixin font($size) {

font-size: 0px + $size;
font-size: 0rem + $size / $doc-font-size;
line-height: 0 + round($doc-line-height / $size*10000) / 10000;

}

@mixin text-overflow($type: ellipsis) {

overflow: hidden;
text-overflow: $type;
white-space: nowrap;

}

// GRADIENTS // ————————————————–

@mixin horizontal($startColor : $white, $endColor : $lightergrey) {

background-color: $endColor;
background-image: -webkit-gradient(linear, 0 0, 100% 0, from($startColor), to($endColor)); // Safari 4+, Chrome 2+
background-image: -webkit-linear-gradient(left, $startColor, $endColor); // Safari 5.1+, Chrome 10+
background-image: -moz-linear-gradient(left, $startColor, $endColor); // FF 3.6+
background-image: -ms-linear-gradient(left, $startColor, $endColor); // IE10
background-image: -o-linear-gradient(left, $startColor, $endColor); // Opera 11.10
background-image: linear-gradient(left, $startColor, $endColor); // W3C
background-repeat: repeat-x;

}

@mixin vertical($startColor : $white, $endColor: $lightergrey) {

background-image: -webkit-gradient(linear, 0 0, 0 100%, from($startColor), to($endColor)); // Safari 4+, Chrome 2+
background-image: -webkit-linear-gradient(top, $startColor, $endColor); // Safari 5.1+, Chrome 10+
background-color: $endColor;
background-image: -moz-linear-gradient(top, $startColor, $endColor); // FF 3.6+
background-image: -ms-linear-gradient(top, $startColor, $endColor); // IE10
background-image: -o-linear-gradient(top, $startColor, $endColor); // Opera 11.10
background-image: linear-gradient(top, $startColor, $endColor); // W3C
background-repeat: repeat-x;

}

@mixin directional($startColor : $white, $endColor : $lightergrey, $deg : 45deg) {

background-color: $endColor;
background-image: -moz-linear-gradient($deg, $startColor, $endColor); // FF 3.6+
background-image: -ms-linear-gradient($deg, $startColor, $endColor); // IE10
background-image: -webkit-linear-gradient($deg, $startColor, $endColor); // Safari 5.1+, Chrome 10+
background-image: -o-linear-gradient($deg, $startColor, $endColor); // Opera 11.10
background-image: linear-gradient($deg, $startColor, $endColor); // W3C
background-repeat: repeat-x;

}

// .bordered(COLOR, COLOR, COLOR, COLOR); @mixin bordered($top-color: eee, $right-color: eee, $bottom-color: eee, $left-color: eee) {

border-top: solid 1px $top-color;
border-left: solid 1px $left-color;
border-right: solid 1px $right-color;
border-bottom: solid 1px $bottom-color;

}

// ROUND CORNERS // ————————————————–

// .rounded(VALUE); @mixin rounded($radius:4px) {

-webkit-border-radius: $radius;
-moz-border-radius: $radius;
border-radius: $radius;

}

// .border-radius(VALUE,VALUE,VALUE,VALUE); @mixin border-radius($topright: 0, $bottomright: 0, $bottomleft: 0, $topleft: 0) {

-webkit-border-top-right-radius: $topright;
-webkit-border-bottom-right-radius: $bottomright;
-webkit-border-bottom-left-radius: $bottomleft;
-webkit-border-top-left-radius: $topleft;
-moz-border-radius-topright: $topright;
-moz-border-radius-bottomright: $bottomright;
-moz-border-radius-bottomleft: $bottomleft;
-moz-border-radius-topleft: $topleft;
border-top-right-radius: $topright;
border-bottom-right-radius: $bottomright;
border-bottom-left-radius: $bottomleft;
border-top-left-radius: $topleft;
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;

}

// .box-shadow(HORIZONTAL VERTICAL BLUR COLOR)) @mixin box-shadow($shadow: 0 1px 3px rgba(0,0,0,.25)) {

-webkit-box-shadow: $shadow;
-moz-box-shadow: $shadow;
box-shadow: $shadow;

}

// .drop-shadow(HORIZONTAL, VERTICAL, BLUR, ALPHA); @mixin drop-shadow($x-axis: 0, $y-axis: 1px, $blur: 2px, $alpha: 0.1) {

-webkit-box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha);
-moz-box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha);
box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha);

}

// .text-shadow(); @mixin text-shadow($shadow: 0 2px 3px rgba(0,0,0,.25)) {

text-shadow: $shadow;

}

// TRANSFORMATIONS // ————————————————–

// .rotate(VALUEdeg); @mixin rotate($deg) {

-webkit-transform: rotate($deg);
-moz-transform: rotate($deg);
-ms-transform: rotate($deg);
-o-transform: rotate($deg);
transform: rotate($deg);

}

// .scale(VALUE); @mixin scale($ratio) {

-webkit-transform: scale($ratio);
-moz-transform: scale($ratio);
-ms-transform: scale($ratio);
-o-transform: scale($ratio);
transform: scale($ratio);

}

@mixin transform($value) {

-webkit-transform: $value;
-moz-transform: $value;
-ms-transform: $value;
-o-transform: $value;
transform: $value;

}

// .skew(VALUE, VALUE); @mixin skew($x: 0, $y: 0) {

-webkit-transform: skew($x, $y);
-moz-transform: skew($x, $y);
-ms-transform: skew($x, $y);
-o-transform: skew($x, $y);
transform: skew($x, $y);

}

// .transition(PROPERTY DURATION DELAY(OPTIONAL) TIMING-FINCTION); @mixin transition($transition) {

-webkit-transition: $transition;
-moz-transition: $transition;
-ms-transition: $transition;
-o-transition: $transition;
transition: $transition;

}

// .translate(VALUE, VALUE) @mixin translate($x: 0, $y: 0) {

-webkit-transform: translate($x, $y);
-moz-transform: translate($x, $y);
-ms-transform: translate($x, $y);
-o-transform: translate($x, $y);
transform: translate($x, $y);

}

@mixin translate3d($x: 0, $y: 0, $z: 0) {

-webkit-transform: translate($x, $y, $z);
-moz-transform: translate($x, $y, $z);
-ms-transform: translate($x, $y, $z);
-o-transform: translate($x, $y, $z);
transform: translate($x, $y, $z);

}

@mixin animation($name, $duration: 300ms, $delay: 0, $ease: ease) {

-webkit-animation: $name $duration $delay $ease;
-moz-animation: $name $duration $delay $ease;
-ms-animation: $name $duration $delay $ease;

}

// BACKGROUND // ————————————————–

// .background-alpha(VALUE VALUE); @mixin background-alpha($color: $white, $alpha: 1) {

background-color: hsla(hue($color), saturation($color), lightness($color), $alpha);

}

// .background-size(VALUE VALUE); @mixin background-size($size) {

-webkit-background-size: $size;
-moz-background-size: $size;
-o-background-size: $size;
background-size: $size;

}

// .background-clip(VALUE); (border-box, padding-box, content-box) @mixin background-clip($clip) {

-webkit-background-clip: $clip;
-moz-background-clip: $clip;
background-clip: $clip;

}

// .box-sizing(VALUE); (border-box, padding-box, content-box) @mixin box-sizing($boxsize: border-box) {

-webkit-box-sizing: $boxsize;
-moz-box-sizing: $boxsize;
-ms-box-sizing: $boxsize;
box-sizing: $boxsize;

}

// For image replacement @mixin hide-text() {

text-indent: 100%;
white-space: nowrap;
overflow: hidden;

}

// Hide from visual and speaking browsers @mixin hidden() {

display: none !important;
visibility: hidden;

}

.hidden {

display: none;
visibility: hidden;

}

// Hide but maintain layout @mixin invisible() {

visibility: hidden;

}

// .resize(VALUE) (none, both, horizontal, vertical, inherit) @mixin resize($direction: both) {

resize: $direction;
overflow: auto;

}

// .userselect(VALUE) (all, element, none, text) @mixin user-select($select) {

-webkit-user-select: $select;
-moz-user-select: $select;
-o-user-select: $select;
user-select: $select;

}

// Hidden but available to speaking browsers @mixin visuallyhidden() {

overflow: hidden;
position: absolute;
clip: rect(0 0 0 0);
height: 1px;
width: 1px;
margin: -1px;
padding: 0;
border: 0;

}

// Make visuallyhidden focusable with a keyboard .visuallyhidden.focusable:active, .visuallyhidden.focusable:focus {

position: static;
clip: auto;
height: auto;
width: auto;
margin: 0;
overflow: visible;

}

@mixin flexbox {

display: -webkit-box;
display: -webkit-flex;
display: -moz-flex;
display: -ms-flexbox;
display: flex;

}

@mixin justify-content($value: flex-start) {

@if $value == flex-start {
  -webkit-box-pack: start;
  -ms-flex-pack: start;
} @else if $value == flex-end {
  -webkit-box-pack: end;
  -ms-flex-pack: end;
} @else if $value == space-between {
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
} @else if $value == space-around {
  -ms-flex-pack: distribute;
} @else {
  -webkit-box-pack: $value;
  -ms-flex-pack: $value;
}
-webkit-justify-content: $value;
-moz-justify-content: $value;
justify-content: $value;

}

@mixin align-items($value: stretch) {

@if $value == flex-start {
  -webkit-box-align: start;
  -ms-flex-align: start;
} @else if $value == flex-end {
  -webkit-box-align: end;
  -ms-flex-align: end;
} @else {
  -webkit-box-align: $value;
  -ms-flex-align: $value;
}
-webkit-align-items: $value;
-moz-align-items: $value;
align-items: $value;

}

@mixin flex-direction($value: row) {

@if $value == row-reverse {
  -webkit-box-direction: reverse;
  -webkit-box-orient: horizontal;
} @else if $value == column {
  -webkit-box-direction: normal;
  -webkit-box-orient: vertical;
} @else if $value == column-reverse {
  -webkit-box-direction: reverse;
  -webkit-box-orient: vertical;
} @else {
  -webkit-box-direction: normal;
  -webkit-box-orient: horizontal;
}
-webkit-flex-direction: $value;
-moz-flex-direction: $value;
-ms-flex-direction: $value;
flex-direction: $value;

}