/*! Theme: Foundry v1.12.0 */
// Libraries
/* scss-combine:../../node_modules/normalize.scss/normalize */
/*! normalize.scss v0.1.0 | MIT License | based on git.io/normalize */

/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent iOS text size adjust after orientation change, without disabling
 *    user zoom.
 */

html {
  font-family: sans-serif; /* 1 */
  -ms-text-size-adjust: 100%; /* 2 */
  -webkit-text-size-adjust: 100%; /* 2 */
}

/**
 * Remove default margin.
 */

body {
  margin: 0;
}

/* HTML5 display definitions
   ========================================================================== */

/**
 * Correct `block` display not defined for any HTML5 element in IE 8/9.
 * Correct `block` display not defined for `details` or `summary` in IE 10/11
 * and Firefox.
 * Correct `block` display not defined for `main` in IE 11.
 */

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block;
}

/**
 * 1. Correct `inline-block` display not defined in IE 8/9.
 * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
 */

audio,
canvas,
progress,
video {
  display: inline-block; /* 1 */
  vertical-align: baseline; /* 2 */
}

/**
 * Prevent modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */

audio:not([controls]) {
  display: none;
  height: 0;
}

/**
 * Address `[hidden]` styling not present in IE 8/9/10.
 * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
 */

[hidden],
template {
  display: none;
}

/* Links
   ========================================================================== */

/**
 * Remove the gray background color from active links in IE 10.
 */

a {
  background-color: transparent;
}

/**
 * Improve readability when focused and also mouse hovered in all browsers.
 */

a:active,
a:hover {
  outline: 0;
}

/* Text-level semantics
   ========================================================================== */

/**
 * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
 */

abbr[title] {
  border-bottom: 1px dotted;
}

/**
 * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
 */

b,
strong {
  font-weight: bold;
}

/**
 * Address styling not present in Safari and Chrome.
 */

dfn {
  font-style: italic;
}

/**
 * Address variable `h1` font-size and margin within `section` and `article`
 * contexts in Firefox 4+, Safari, and Chrome.
 */

h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

/**
 * Address styling not present in IE 8/9.
 */

mark {
  background: #ff0;
  color: #000;
}

/**
 * Address inconsistent and variable font size in all browsers.
 */

small {
  font-size: 80%;
}

/**
 * Prevent `sub` and `sup` affecting `line-height` in all browsers.
 */

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sup {
  top: -0.5em;
}

sub {
  bottom: -0.25em;
}

/* Embedded content
   ========================================================================== */

/**
 * Remove border when inside `a` element in IE 8/9/10.
 */

img {
  border: 0;
}

/**
 * Correct overflow not hidden in IE 9/10/11.
 */

svg:not(:root) {
  overflow: hidden;
}

/* Grouping content
   ========================================================================== */

/**
 * Address margin not present in IE 8/9 and Safari.
 */

figure {
  margin: 1em 40px;
}

/**
 * Address differences between Firefox and other browsers.
 */

hr {
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  height: 0;
}

/**
 * Contain overflow in all browsers.
 */

pre {
  overflow: auto;
}

/**
 * Address odd `em`-unit font size rendering in all browsers.
 */

code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}

/* Forms
   ========================================================================== */

/**
 * Known limitation: by default, Chrome and Safari on OS X allow very limited
 * styling of `select`, unless a `border` property is set.
 */

/**
 * 1. Correct color not being inherited.
 *    Known issue: affects color of disabled elements.
 * 2. Correct font properties not being inherited.
 * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
 */

button,
input,
optgroup,
select,
textarea {
  color: inherit; /* 1 */
  font: inherit; /* 2 */
  margin: 0; /* 3 */
}

/**
 * Address `overflow` set to `hidden` in IE 8/9/10/11.
 */

button {
  overflow: visible;
}

/**
 * Address inconsistent `text-transform` inheritance for `button` and `select`.
 * All other form control elements do not inherit `text-transform` values.
 * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
 * Correct `select` style inheritance in Firefox.
 */

button,
select {
  text-transform: none;
}

/**
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Correct inability to style clickable `input` types in iOS.
 * 3. Improve usability and consistency of cursor style between image-type
 *    `input` and others.
 */

button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button; /* 2 */
  cursor: pointer; /* 3 */
}

/**
 * Re-set default cursor for disabled elements.
 */

button[disabled],
html input[disabled] {
  cursor: default;
}

/**
 * Remove inner padding and border in Firefox 4+.
 */

button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}

/**
 * Address Firefox 4+ setting `line-height` on `input` using `!important` in
 * the UA stylesheet.
 */

input {
  line-height: normal;
}

/**
 * It's recommended that you don't attempt to style these elements.
 * Firefox's implementation doesn't respect box-sizing, padding, or width.
 *
 * 1. Address box sizing set to `content-box` in IE 8/9/10.
 * 2. Remove excess padding in IE 8/9/10.
 */

input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box; /* 1 */
  padding: 0; /* 2 */
}

/**
 * Fix the cursor style for Chrome's increment/decrement buttons. For certain
 * `font-size` values of the `input`, it causes the cursor style of the
 * decrement button to change from `default` to `text`.
 */

input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}

/**
 * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
 * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
 *    (include `-moz` to future-proof).
 */

input[type="search"] {
  -webkit-appearance: textfield; /* 1 */
  -moz-box-sizing: content-box;
  -webkit-box-sizing: content-box; /* 2 */
  box-sizing: content-box;
}

/**
 * Remove inner padding and search cancel button in Safari and Chrome on OS X.
 * Safari (but not Chrome) clips the cancel button when the search input has
 * padding (and `textfield` appearance).
 */

input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

/**
 * Define consistent border, margin, and padding.
 */

fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}

/**
 * 1. Correct `color` not being inherited in IE 8/9/10/11.
 * 2. Remove padding so people aren't caught out if they zero out fieldsets.
 */

legend {
  border: 0; /* 1 */
  padding: 0; /* 2 */
}

/**
 * Remove default vertical scrollbar in IE 8/9/10/11.
 */

textarea {
  overflow: auto;
}

/**
 * Don't inherit the `font-weight` (applied by a rule above).
 * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
 */

optgroup {
  font-weight: bold;
}

/* Tables
   ========================================================================== */

/**
 * Remove most spacing between table cells.
 */

table {
  border-collapse: collapse;
  border-spacing: 0;
}

td,
th {
  padding: 0;
}

/* scss-combine:../../node_modules/bc-baseline/baseline */
/* scss-combine:lib/extends */
%clearfix {
  *zoom: 1;

  &:before,
  &:after {
    display: table;
    content: "";
  }

  &:after {
    clear: both;
  }
}

%font-smoothing {
  -moz-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
}

/* scss-combine:lib/mixins */
@mixin media($max: false, $min: false) {
  @if $max {
    @if $min {
      @media screen and (max-width: $max - 1) and (min-width: $min) { @content; }
    } @else {
      @media screen and (max-width: $max - 1) { @content; }
    }
  } @else {
    @media screen and (min-width: $min) { @content; }
  }
}

@mixin hover($color, $property: color) {
  @if lightness($color) > 10% {
    #{$property}: darken($color,8%);
  } @else {
    #{$property}: lighten($color,10%);
  }
}

@mixin button-hover($color, $property: color) {
  @if lightness($color) > 20% {
    #{$property}: darken($color,5%);
  } @else {
    #{$property}: lighten($color,6%);
  }
}

@mixin retina {
  @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
    @content;
  }
}

/* scss-combine:lib/text-inputs */
// https://github.com/thoughtbot/bourbon/blob/master/app/assets/stylesheets/addons/_text-inputs.scss

@function assign-inputs($inputs, $pseudo: null) {
  $list: ();

  @each $input in $inputs {
    $input: unquote($input);
    $input: if($pseudo, $input + ":" + $pseudo, $input);
    $list: append($list, $input, comma);
  }

  @return $list;
}


$text-inputs-list: 'input[type="color"]',
                  'input[type="date"]',
                  'input[type="datetime"]',
                  'input[type="datetime-local"]',
                  'input[type="email"]',
                  'input[type="month"]',
                  'input[type="number"]',
                  'input[type="password"]',
                  'input[type="search"]',
                  'input[type="tel"]',
                  'input[type="text"]',
                  'input[type="time"]',
                  'input[type="url"]',
                  'input[type="week"]',
                  'input:not([type])',
                  'textarea';

$all-text-inputs:        assign-inputs($text-inputs-list);
$all-text-inputs-active: assign-inputs($text-inputs-list, active);
$all-text-inputs-focus:  assign-inputs($text-inputs-list, focus);
$all-text-inputs-hover:  assign-inputs($text-inputs-list, hover);


/* scss-combine:styles/general */
// scss-lint:disable VariableForProperty ColorVariable

// Box model
// See: http://www.paulirish.com/2012/box-sizing-border-box-ftw/

html {
  box-sizing: border-box;
}

*,
*:before,
*:after {
  box-sizing: inherit;
}

// - Links

a {
  text-decoration: none;
}

// - Headers

h1,
h2,
h3,
h4,
h5,
h6 {
  line-height: 1.25;
}

// - Basic elements

img {
  max-width: 100%;
}

ul,
ol,
dl {
  padding: 0;
  margin: 0;
}

ul {
  list-style: outside none;
}

ol {
  list-style: outside decimal;
}

li {

}

hr {
  height: 2px;
  border: 0;
}

blockquote {
  > *:first-child {
    margin-top: 0;
  }

  > *:last-child {
    margin-bottom: 0;
  }
}

figure {
  margin: 0;
}

iframe {
  max-width: 100%;
  border: 0;
}

pre {
  padding: 1em;
  background: #fafafa;
}

.show-for-sr {
  // scss-lint:disable ImportantRule
  position: absolute !important;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(1px, 1px, 1px, 1px);
}

/* scss-combine:styles/button */
.button {
  display: inline-block;
  line-height: normal;
  text-align: center;
  cursor: pointer;
  border: 0;
  border-radius: 0;
  -webkit-appearance: none;

  & + & {
    margin-left: 5px;
  }
}

/* scss-combine:styles/form */
// scss-lint:disable VariableForProperty ColorVariable


.form-fieldset {
  padding: 0;
  margin: 0;
  border: 0;
}

// - Fields, a wrapper for a label and input

.form-field {}

// - Labels

// <label class="form-label">
//   <div class="form-label-text">Label</div>
//   ... inputs ...
// </label>
.form-label {
  display: block;
}

.form-label-text,
.form-label-text-inline {
  display: inline-block;
}

// - Inputs

// text, email, password, search, telephone, tel, number, textarea, select
.form-input {
  display: block;
  border: 1px solid;
  border-color: inherit;
  border-radius: 0;
  box-sizing: border-box;

  &::placeholder { opacity: 0.8; }
}

textarea.form-input { resize: vertical; }

#{$all-text-inputs} {
  &.form-input {
    -webkit-appearance: none;
  }
}

// Wrapper for checkbox and radio inputs
// <div class="form-field form-inline">
//   <label class="form-label">
//     <span class="form-label-text">Check Me</span>
//     <input class="form-input" type="checkbox">
//   </label>
// </div>
.form-inline {
  .form-label-text {
    display: inline-block;
    vertical-align: middle;
  }

  .form-input {
    display: inline-block;
  }
}

/* scss-combine:styles/table */
table {
  margin: 1em 0;
  background: transparent;
  border: 1px solid;
  border-collapse: separate;
  border-top: 0;
  border-color: inherit;

  &.table-clean {
    border: 0;
    border-radius: 0;
  }
}

td,
th {
  padding: 20px;
  border-top: 1px solid;
  border-top-color: inherit;

  .table-clean & {
    border: 0;
  }
}

th {
  font-weight: bold;
}

td {
  border-left: 1px solid;
  border-left-color: inherit;

  &:first-child {
    border-left: 0;
  }
}


/* scss-combine:../../node_modules/bourbon/app/assets/stylesheets/bourbon */
// Bourbon 4.2.7
// http://bourbon.io
// Copyright 2011-2015 thoughtbot, inc.
// MIT License

/* scss-combine:settings/prefixer */
@charset "UTF-8";

/// Global variables to enable or disable vendor prefixes

$prefix-for-webkit:    true !default;
$prefix-for-mozilla:   true !default;
$prefix-for-microsoft: true !default;
$prefix-for-opera:     true !default;
$prefix-for-spec:      true !default;

/* scss-combine:settings/px-to-em */
$em-base: 16px !default;

/* scss-combine:settings/asset-pipeline */
@charset "UTF-8";

/// A global setting to enable or disable the `$asset-pipeline` variable for all functions that accept it.
///
/// @type Bool

$asset-pipeline: false !default;


/* scss-combine:functions/assign-inputs */
@function assign-inputs($inputs, $pseudo: null) {
  $list: ();

  @each $input in $inputs {
    $input: unquote($input);
    $input: if($pseudo, $input + ":" + $pseudo, $input);
    $list: append($list, $input, comma);
  }

  @return $list;
}

/* scss-combine:functions/contains */
@charset "UTF-8";

/// Checks if a list contains a value(s).
///
/// @access private
///
/// @param {List} $list
///   The list to check against.
///
/// @param {List} $values
///   A single value or list of values to check for.
///
/// @example scss - Usage
///   contains($list, $value)
///
/// @return {Bool}

@function contains($list, $values...) {
  @each $value in $values {
    @if type-of(index($list, $value)) != "number" {
      @return false;
    }
  }

  @return true;
}

/* scss-combine:functions/contains-falsy */
@charset "UTF-8";

/// Checks if a list does not contains a value.
///
/// @access private
///
/// @param {List} $list
///   The list to check against.
///
/// @return {Bool}

@function contains-falsy($list) {
  @each $item in $list {
    @if not $item {
      @return true;
    }
  }

  @return false;
}

/* scss-combine:functions/is-length */
@charset "UTF-8";

/// Checks for a valid CSS length.
///
/// @param {String} $value

@function is-length($value) {
  @return type-of($value) != "null" and (str-slice($value + "", 1, 4) == "calc"
       or index(auto inherit initial 0, $value)
       or (type-of($value) == "number" and not(unitless($value))));
}

/* scss-combine:functions/is-light */
@charset "UTF-8";

/// Programatically determines whether a color is light or dark.
///
/// @link http://robots.thoughtbot.com/closer-look-color-lightness
///
/// @param {Color (Hex)} $color
///
/// @example scss - Usage
///   is-light($color)
///
/// @return {Bool}

@function is-light($hex-color) {
  $-local-red: red(rgba($hex-color, 1));
  $-local-green: green(rgba($hex-color, 1));
  $-local-blue: blue(rgba($hex-color, 1));
  $-local-lightness: ($-local-red * 0.2126 + $-local-green * 0.7152 + $-local-blue * 0.0722) / 255;

  @return $-local-lightness > 0.6;
}

/* scss-combine:functions/is-number */
@charset "UTF-8";

/// Checks for a valid number.
///
/// @param {Number} $value
///
/// @require {function} contains

@function is-number($value) {
  @return contains("0" "1" "2" "3" "4" "5" "6" "7" "8" "9" 0 1 2 3 4 5 6 7 8 9, $value);
}

/* scss-combine:functions/is-size */
@charset "UTF-8";

/// Checks for a valid CSS size.
///
/// @param {String} $value
///
/// @require {function} contains
/// @require {function} is-length

@function is-size($value) {
  @return is-length($value)
          or contains("fill" "fit-content" "min-content" "max-content", $value);
}

/* scss-combine:functions/px-to-em */
// Convert pixels to ems
// eg. for a relational value of 12px write em(12) when the parent is 16px
// if the parent is another value say 24px write em(12, 24)

@function em($pxval, $base: $em-base) {
  @if not unitless($pxval) {
    $pxval: strip-units($pxval);
  }
  @if not unitless($base) {
    $base: strip-units($base);
  }
  @return ($pxval / $base) * 1em;
}

/* scss-combine:functions/px-to-rem */
// Convert pixels to rems
// eg. for a relational value of 12px write rem(12)
// Assumes $em-base is the font-size of <html>

@function rem($pxval) {
  @if not unitless($pxval) {
    $pxval: strip-units($pxval);
  }

  $base: $em-base;
  @if not unitless($base) {
    $base: strip-units($base);
  }
  @return ($pxval / $base) * 1rem;
}

/* scss-combine:functions/shade */
@charset "UTF-8";

/// Mixes a color with black.
///
/// @param {Color} $color
///
/// @param {Number (Percentage)} $percent
///   The amount of black to be mixed in.
///
/// @example scss - Usage
///   .element {
///     background-color: shade(#ffbb52, 60%);
///   }
///
/// @example css - CSS Output
///   .element {
///     background-color: #664a20;
///   }
///
/// @return {Color}

@function shade($color, $percent) {
  @return mix(#000, $color, $percent);
}

/* scss-combine:functions/strip-units */
@charset "UTF-8";

/// Strips the unit from a number.
///
/// @param {Number (With Unit)} $value
///
/// @example scss - Usage
///   $dimension: strip-units(10em);
///
/// @example css - CSS Output
///   $dimension: 10;
///
/// @return {Number (Unitless)}

@function strip-units($value) {
  @return ($value / ($value * 0 + 1));
}

/* scss-combine:functions/tint */
@charset "UTF-8";

/// Mixes a color with white.
///
/// @param {Color} $color
///
/// @param {Number (Percentage)} $percent
///   The amount of white to be mixed in.
///
/// @example scss - Usage
///   .element {
///     background-color: tint(#6ecaa6, 40%);
///   }
///
/// @example css - CSS Output
///   .element {
///     background-color: #a8dfc9;
///   }
///
/// @return {Color}

@function tint($color, $percent) {
  @return mix(#fff, $color, $percent);
}

/* scss-combine:functions/transition-property-name */
// Return vendor-prefixed property names if appropriate
// Example: transition-property-names((transform, color, background), moz) -> -moz-transform, color, background
//************************************************************************//
@function transition-property-names($props, $vendor: false) {
  $new-props: ();

  @each $prop in $props {
    $new-props: append($new-props, transition-property-name($prop, $vendor), comma);
  }

  @return $new-props;
}

@function transition-property-name($prop, $vendor: false) {
  // put other properties that need to be prefixed here aswell
  @if $vendor and $prop == transform {
    @return unquote('-'+$vendor+'-'+$prop);
  }
  @else {
    @return $prop;
  }
}

/* scss-combine:functions/unpack */
@charset "UTF-8";

/// Converts shorthand to the 4-value syntax.
///
/// @param {List} $shorthand
///
/// @example scss - Usage
///   .element {
///     margin: unpack(1em 2em);
///   }
///
/// @example css - CSS Output
///   .element {
///     margin: 1em 2em 1em 2em;
///   }

@function unpack($shorthand) {
  @if length($shorthand) == 1 {
    @return nth($shorthand, 1) nth($shorthand, 1) nth($shorthand, 1) nth($shorthand, 1);
  } @else if length($shorthand) == 2 {
    @return nth($shorthand, 1) nth($shorthand, 2) nth($shorthand, 1) nth($shorthand, 2);
  } @else if length($shorthand) == 3 {
    @return nth($shorthand, 1) nth($shorthand, 2) nth($shorthand, 3) nth($shorthand, 2);
  } @else {
    @return $shorthand;
  }
}

/* scss-combine:functions/modular-scale */
// Scaling Variables
$golden:           1.618;
$minor-second:     1.067;
$major-second:     1.125;
$minor-third:      1.2;
$major-third:      1.25;
$perfect-fourth:   1.333;
$augmented-fourth: 1.414;
$perfect-fifth:    1.5;
$minor-sixth:      1.6;
$major-sixth:      1.667;
$minor-seventh:    1.778;
$major-seventh:    1.875;
$octave:           2;
$major-tenth:      2.5;
$major-eleventh:   2.667;
$major-twelfth:    3;
$double-octave:    4;

$modular-scale-ratio: $perfect-fourth !default;
$modular-scale-base: em($em-base) !default;

@function modular-scale($increment, $value: $modular-scale-base, $ratio: $modular-scale-ratio) {
  $v1: nth($value, 1);
  $v2: nth($value, length($value));
  $value: $v1;

  // scale $v2 to just above $v1
  @while $v2 > $v1 {
    $v2: ($v2 / $ratio); // will be off-by-1
  }
  @while $v2 < $v1 {
    $v2: ($v2 * $ratio); // will fix off-by-1
  }

  // check AFTER scaling $v2 to prevent double-counting corner-case
  $double-stranded: $v2 > $v1;

  @if $increment > 0 {
    @for $i from 1 through $increment {
      @if $double-stranded and ($v1 * $ratio) > $v2 {
        $value: $v2;
        $v2: ($v2 * $ratio);
      } @else {
        $v1: ($v1 * $ratio);
        $value: $v1;
      }
    }
  }

  @if $increment < 0 {
    // adjust $v2 to just below $v1
    @if $double-stranded {
      $v2: ($v2 / $ratio);
    }

    @for $i from $increment through -1 {
      @if $double-stranded and ($v1 / $ratio) < $v2 {
        $value: $v2;
        $v2: ($v2 / $ratio);
      } @else {
        $v1: ($v1 / $ratio);
        $value: $v1;
      }
    }
  }

  @return $value;
}


/* scss-combine:helpers/convert-units */
//************************************************************************//
// Helper function for str-to-num fn.
// Source: http://sassmeister.com/gist/9647408
//************************************************************************//
@function _convert-units($number, $unit) {
  $strings: "px", "cm", "mm", "%", "ch", "pica", "in", "em", "rem", "pt", "pc", "ex", "vw", "vh", "vmin", "vmax", "deg", "rad", "grad", "turn";
  $units:   1px, 1cm, 1mm, 1%, 1ch, 1pica, 1in, 1em, 1rem, 1pt, 1pc, 1ex, 1vw, 1vh, 1vmin, 1vmax, 1deg, 1rad, 1grad, 1turn;
  $index: index($strings, $unit);

  @if not $index {
    @warn "Unknown unit `#{$unit}`.";
    @return false;
  }

  @if type-of($number) != "number" {
    @warn "`#{$number} is not a number`";
    @return false;
  }

  @return $number * nth($units, $index);
}

/* scss-combine:helpers/directional-values */
@charset "UTF-8";

/// Directional-property mixins are shorthands for writing properties like the following
///
/// @ignore You can also use `false` instead of `null`.
///
/// @param {List} $vals
///   List of directional values
///
/// @example scss - Usage
///   .element {
///     @include border-style(dotted null);
///     @include margin(null 0 10px);
///   }
///
/// @example css - CSS Output
///   .element {
///     border-bottom-style: dotted;
///     border-top-style: dotted;
///     margin-bottom: 10px;
///     margin-left: 0;
///     margin-right: 0;
///   }
///
/// @require {function} contains-falsy
///
/// @return {List}

@function collapse-directionals($vals) {
  $output: null;

  $a: nth($vals, 1);
  $b: if(length($vals) < 2, $a, nth($vals, 2));
  $c: if(length($vals) < 3, $a, nth($vals, 3));
  $d: if(length($vals) < 2, $a, nth($vals, if(length($vals) < 4, 2, 4)));

  @if $a == 0 { $a: 0; }
  @if $b == 0 { $b: 0; }
  @if $c == 0 { $c: 0; }
  @if $d == 0 { $d: 0; }

  @if $a == $b and $a == $c and $a == $d { $output: $a;          }
  @else if $a == $c and $b == $d         { $output: $a $b;       }
  @else if $b == $d                      { $output: $a $b $c;    }
  @else                                  { $output: $a $b $c $d; }

  @return $output;
}

/// Output directional properties, for instance `margin`.
///
/// @access private
///
/// @param {String} $pre
///   Prefix to use
/// @param {String} $suf
///   Suffix to use
/// @param {List} $vals
///   List of values
///
/// @require {function} collapse-directionals
/// @require {function} contains-falsy

@mixin directional-property($pre, $suf, $vals) {
  // Property Names
  $top:    $pre + "-top"    + if($suf, "-#{$suf}", "");
  $bottom: $pre + "-bottom" + if($suf, "-#{$suf}", "");
  $left:   $pre + "-left"   + if($suf, "-#{$suf}", "");
  $right:  $pre + "-right"  + if($suf, "-#{$suf}", "");
  $all:    $pre +             if($suf, "-#{$suf}", "");

  $vals: collapse-directionals($vals);

  @if contains-falsy($vals) {
    @if nth($vals, 1) { #{$top}: nth($vals, 1); }

    @if length($vals) == 1 {
      @if nth($vals, 1) { #{$right}: nth($vals, 1); }
    } @else {
      @if nth($vals, 2) { #{$right}: nth($vals, 2); }
    }

    @if length($vals) == 2 {
      @if nth($vals, 1) { #{$bottom}: nth($vals, 1); }
      @if nth($vals, 2) { #{$left}:   nth($vals, 2); }
    } @else if length($vals) == 3 {
      @if nth($vals, 3) { #{$bottom}: nth($vals, 3); }
      @if nth($vals, 2) { #{$left}:   nth($vals, 2); }
    } @else if length($vals) == 4 {
      @if nth($vals, 3) { #{$bottom}: nth($vals, 3); }
      @if nth($vals, 4) { #{$left}:   nth($vals, 4); }
    }
  } @else {
    #{$all}: $vals;
  }
}

/* scss-combine:helpers/font-source-declaration */
// Used for creating the source string for fonts using @font-face
// Reference: http://goo.gl/Ru1bKP

@function font-url-prefixer($asset-pipeline) {
  @if $asset-pipeline == true {
    @return font-url;
  } @else {
    @return url;
  }
}

@function font-source-declaration(
  $font-family,
  $file-path,
  $asset-pipeline,
  $file-formats,
  $font-url) {

  $src: ();

  $formats-map: (
    eot:   "#{$file-path}.eot?#iefix" format("embedded-opentype"),
    woff2: "#{$file-path}.woff2" format("woff2"),
    woff:  "#{$file-path}.woff" format("woff"),
    ttf:   "#{$file-path}.ttf" format("truetype"),
    svg:   "#{$file-path}.svg##{$font-family}" format("svg")
  );

  @each $key, $values in $formats-map {
    @if contains($file-formats, $key) {
      $file-path: nth($values, 1);
      $font-format: nth($values, 2);

      @if $asset-pipeline == true {
        $src: append($src, font-url($file-path) $font-format, comma);
      } @else {
        $src: append($src, url($file-path) $font-format, comma);
      }
    }
  }

  @return $src;
}

/* scss-combine:helpers/gradient-positions-parser */
@function _gradient-positions-parser($gradient-type, $gradient-positions) {
  @if $gradient-positions
  and ($gradient-type == linear)
  and (type-of($gradient-positions) != color) {
    $gradient-positions: _linear-positions-parser($gradient-positions);
  }
  @else if $gradient-positions
  and ($gradient-type == radial)
  and (type-of($gradient-positions) != color) {
    $gradient-positions: _radial-positions-parser($gradient-positions);
  }
  @return $gradient-positions;
}

/* scss-combine:helpers/linear-angle-parser */
// Private function for linear-gradient-parser
@function _linear-angle-parser($image, $first-val, $prefix, $suffix) {
  $offset: null;
  $unit-short:  str-slice($first-val, str-length($first-val) - 2, str-length($first-val));
  $unit-long:   str-slice($first-val, str-length($first-val) - 3, str-length($first-val));

  @if ($unit-long == "grad") or
      ($unit-long == "turn") {
    $offset: if($unit-long == "grad", -100grad * 3, -0.75turn);
  }

  @else if ($unit-short == "deg") or
           ($unit-short == "rad") {
    $offset: if($unit-short == "deg", -90 * 3, 1.6rad);
  }

  @if $offset {
    $num: _str-to-num($first-val);

    @return (
      webkit-image: -webkit- + $prefix + ($offset - $num) + $suffix,
      spec-image: $image
    );
  }
}

/* scss-combine:helpers/linear-gradient-parser */
@function _linear-gradient-parser($image) {
  $image: unquote($image);
  $gradients: ();
  $start: str-index($image, "(");
  $end: str-index($image, ",");
  $first-val: str-slice($image, $start + 1, $end - 1);

  $prefix: str-slice($image, 1, $start);
  $suffix: str-slice($image, $end, str-length($image));

  $has-multiple-vals: str-index($first-val, " ");
  $has-single-position: unquote(_position-flipper($first-val) + "");
  $has-angle: is-number(str-slice($first-val, 1, 1));

  @if $has-multiple-vals {
    $gradients: _linear-side-corner-parser($image, $first-val, $prefix, $suffix, $has-multiple-vals);
  }

  @else if $has-single-position != "" {
    $pos: unquote($has-single-position + "");

    $gradients: (
      webkit-image: -webkit- + $image,
      spec-image: $prefix + "to " + $pos + $suffix
    );
  }

  @else if $has-angle {
    // Rotate degree for webkit
    $gradients: _linear-angle-parser($image, $first-val, $prefix, $suffix);
  }

  @else {
    $gradients: (
      webkit-image: -webkit- + $image,
      spec-image: $image
    );
  }

  @return $gradients;
}

/* scss-combine:helpers/linear-positions-parser */
@function _linear-positions-parser($pos) {
  $type: type-of(nth($pos, 1));
  $spec: null;
  $degree: null;
  $side: null;
  $corner: null;
  $length: length($pos);
  // Parse Side and corner positions
  @if ($length > 1) {
    @if nth($pos, 1) == "to" { // Newer syntax
      $side: nth($pos, 2);

      @if $length == 2 { // eg. to top
        // Swap for backwards compatibility
        $degree: _position-flipper(nth($pos, 2));
      }
      @else if $length == 3 { // eg. to top left
        $corner: nth($pos, 3);
      }
    }
    @else if $length == 2 { // Older syntax ("top left")
      $side: _position-flipper(nth($pos, 1));
      $corner: _position-flipper(nth($pos, 2));
    }

    @if ("#{$side} #{$corner}" == "left top") or ("#{$side} #{$corner}" == "top left") {
      $degree: _position-flipper(#{$side}) _position-flipper(#{$corner});
    }
    @else if ("#{$side} #{$corner}" == "right top") or ("#{$side} #{$corner}" == "top right") {
      $degree: _position-flipper(#{$side}) _position-flipper(#{$corner});
    }
    @else if ("#{$side} #{$corner}" == "right bottom") or ("#{$side} #{$corner}" == "bottom right") {
      $degree: _position-flipper(#{$side}) _position-flipper(#{$corner});
    }
    @else if ("#{$side} #{$corner}" == "left bottom") or ("#{$side} #{$corner}" == "bottom left") {
      $degree: _position-flipper(#{$side}) _position-flipper(#{$corner});
    }
    $spec: to $side $corner;
  }
  @else if $length == 1 {
    // Swap for backwards compatibility
    @if $type == string {
      $degree: $pos;
      $spec: to _position-flipper($pos);
    }
    @else {
      $degree: -270 - $pos; //rotate the gradient opposite from spec
      $spec: $pos;
    }
  }
  $degree: unquote($degree + ",");
  $spec:   unquote($spec + ",");
  @return $degree $spec;
}

@function _position-flipper($pos) {
  @return if($pos == left, right, null)
         if($pos == right, left, null)
         if($pos == top, bottom, null)
         if($pos == bottom, top, null);
}

/* scss-combine:helpers/linear-side-corner-parser */
// Private function for linear-gradient-parser
@function _linear-side-corner-parser($image, $first-val, $prefix, $suffix, $has-multiple-vals) {
  $val-1: str-slice($first-val, 1, $has-multiple-vals - 1);
  $val-2: str-slice($first-val, $has-multiple-vals + 1, str-length($first-val));
  $val-3: null;
  $has-val-3: str-index($val-2, " ");

  @if $has-val-3 {
    $val-3: str-slice($val-2, $has-val-3 + 1, str-length($val-2));
    $val-2: str-slice($val-2, 1, $has-val-3 - 1);
  }

  $pos: _position-flipper($val-1) _position-flipper($val-2) _position-flipper($val-3);
  $pos: unquote($pos + "");

  // Use old spec for webkit
  @if $val-1 == "to" {
    @return (
      webkit-image: -webkit- + $prefix + $pos + $suffix,
      spec-image: $image
    );
  }

  // Bring the code up to spec
  @else {
    @return (
      webkit-image: -webkit- + $image,
      spec-image: $prefix + "to " + $pos + $suffix
    );
  }
}

/* scss-combine:helpers/radial-arg-parser */
@function _radial-arg-parser($g1, $g2, $pos, $shape-size) {
  @each $value in $g1, $g2 {
    $first-val: nth($value, 1);
    $pos-type:  type-of($first-val);
    $spec-at-index: null;

    // Determine if spec was passed to mixin
    @if type-of($value) == list {
      $spec-at-index: if(index($value, at), index($value, at), false);
    }
    @if $spec-at-index {
      @if $spec-at-index > 1 {
        @for $i from 1 through ($spec-at-index - 1) {
          $shape-size: $shape-size nth($value, $i);
        }
        @for $i from ($spec-at-index + 1) through length($value) {
          $pos: $pos nth($value, $i);
        }
      }
      @else if $spec-at-index == 1 {
        @for $i from ($spec-at-index + 1) through length($value) {
          $pos: $pos nth($value, $i);
        }
      }
      $g1: null;
    }

    // If not spec calculate correct values
    @else {
      @if ($pos-type != color) or ($first-val != "transparent") {
        @if ($pos-type == number)
        or ($first-val == "center")
        or ($first-val == "top")
        or ($first-val == "right")
        or ($first-val == "bottom")
        or ($first-val == "left") {

          $pos: $value;

          @if $pos == $g1 {
            $g1: null;
          }
        }

        @else if
           ($first-val == "ellipse")
        or ($first-val == "circle")
        or ($first-val == "closest-side")
        or ($first-val == "closest-corner")
        or ($first-val == "farthest-side")
        or ($first-val == "farthest-corner")
        or ($first-val == "contain")
        or ($first-val == "cover") {

          $shape-size: $value;

          @if $value == $g1 {
            $g1: null;
          }

          @else if $value == $g2 {
            $g2: null;
          }
        }
      }
    }
  }
  @return $g1, $g2, $pos, $shape-size;
}

/* scss-combine:helpers/radial-positions-parser */
@function _radial-positions-parser($gradient-pos) {
  $shape-size: nth($gradient-pos, 1);
  $pos:        nth($gradient-pos, 2);
  $shape-size-spec: _shape-size-stripper($shape-size);

  $pre-spec: unquote(if($pos, "#{$pos}, ", null))
             unquote(if($shape-size, "#{$shape-size},", null));
  $pos-spec: if($pos, "at #{$pos}", null);

  $spec: "#{$shape-size-spec} #{$pos-spec}";

  // Add comma
  @if ($spec != "  ") {
    $spec: "#{$spec},";
  }

  @return $pre-spec $spec;
}

/* scss-combine:helpers/radial-gradient-parser */
@function _radial-gradient-parser($image) {
  $image: unquote($image);
  $gradients: ();
  $start: str-index($image, "(");
  $end: str-index($image, ",");
  $first-val: str-slice($image, $start + 1, $end - 1);

  $prefix: str-slice($image, 1, $start);
  $suffix: str-slice($image, $end, str-length($image));

  $is-spec-syntax: str-index($first-val, "at");

  @if $is-spec-syntax and $is-spec-syntax > 1 {
    $keyword: str-slice($first-val, 1, $is-spec-syntax - 2);
    $pos: str-slice($first-val, $is-spec-syntax + 3, str-length($first-val));
    $pos: append($pos, $keyword, comma);

    $gradients: (
      webkit-image: -webkit- + $prefix + $pos + $suffix,
      spec-image: $image
    );
  }

  @else if $is-spec-syntax == 1 {
    $pos: str-slice($first-val, $is-spec-syntax + 3, str-length($first-val));

    $gradients: (
      webkit-image: -webkit- + $prefix + $pos + $suffix,
      spec-image: $image
    );
  }

  @else if str-index($image, "cover") or str-index($image, "contain") {
    @warn "Radial-gradient needs to be updated to conform to latest spec.";

    $gradients: (
      webkit-image: null,
      spec-image: $image
    );
  }

  @else {
    $gradients: (
      webkit-image: -webkit- + $image,
      spec-image: $image
    );
  }

  @return $gradients;
}

/* scss-combine:helpers/render-gradients */
// User for linear and radial gradients within background-image or border-image properties

@function _render-gradients($gradient-positions, $gradients, $gradient-type, $vendor: false) {
  $pre-spec: null;
  $spec: null;
  $vendor-gradients: null;
  @if $gradient-type == linear {
    @if $gradient-positions {
      $pre-spec: nth($gradient-positions, 1);
      $spec:     nth($gradient-positions, 2);
    }
  }
  @else if $gradient-type == radial {
    $pre-spec: nth($gradient-positions, 1);
    $spec:     nth($gradient-positions, 2);
  }

  @if $vendor {
    $vendor-gradients: -#{$vendor}-#{$gradient-type}-gradient(#{$pre-spec} $gradients);
  }
  @else if $vendor == false {
    $vendor-gradients: "#{$gradient-type}-gradient(#{$spec} #{$gradients})";
    $vendor-gradients: unquote($vendor-gradients);
  }
  @return $vendor-gradients;
}

/* scss-combine:helpers/shape-size-stripper */
@function _shape-size-stripper($shape-size) {
  $shape-size-spec: null;
  @each $value in $shape-size {
    @if ($value == "cover") or ($value == "contain") {
      $value: null;
    }
    $shape-size-spec: "#{$shape-size-spec} #{$value}";
  }
  @return $shape-size-spec;
}

/* scss-combine:helpers/str-to-num */
//************************************************************************//
// Helper function for linear/radial-gradient-parsers.
// Source: http://sassmeister.com/gist/9647408
//************************************************************************//
@function _str-to-num($string) {
  // Matrices
  $strings: "0" "1" "2" "3" "4" "5" "6" "7" "8" "9";
  $numbers:  0   1   2   3   4   5   6   7   8   9;

  // Result
  $result: 0;
  $divider: 0;
  $minus: false;

  // Looping through all characters
  @for $i from 1 through str-length($string) {
    $character: str-slice($string, $i, $i);
    $index: index($strings, $character);

    @if $character == "-" {
      $minus: true;
    }

    @else if $character == "." {
      $divider: 1;
    }

    @else {
      @if not $index {
        $result: if($minus, $result * -1, $result);
        @return _convert-units($result, str-slice($string, $i));
      }

      $number: nth($numbers, $index);

      @if $divider == 0 {
        $result: $result * 10;
      }

      @else {
        // Move the decimal dot to the left
        $divider: $divider * 10;
        $number: $number / $divider;
      }

      $result: $result + $number;
    }
  }
  @return if($minus, $result * -1, $result);
}


/* scss-combine:css3/animation */
// http://www.w3.org/TR/css3-animations/#the-animation-name-property-
// Each of these mixins support comma separated lists of values, which allows different transitions for individual properties to be described in a single style rule. Each value in the list corresponds to the value at that same position in the other properties.

@mixin animation($animations...) {
  @include prefixer(animation, $animations, webkit moz spec);
}

@mixin animation-name($names...) {
  @include prefixer(animation-name, $names, webkit moz spec);
}

@mixin animation-duration($times...) {
  @include prefixer(animation-duration, $times, webkit moz spec);
}

@mixin animation-timing-function($motions...) {
  // ease | linear | ease-in | ease-out | ease-in-out
  @include prefixer(animation-timing-function, $motions, webkit moz spec);
}

@mixin animation-iteration-count($values...) {
  // infinite | <number>
  @include prefixer(animation-iteration-count, $values, webkit moz spec);
}

@mixin animation-direction($directions...) {
  // normal | alternate
  @include prefixer(animation-direction, $directions, webkit moz spec);
}

@mixin animation-play-state($states...) {
  // running | paused
  @include prefixer(animation-play-state, $states, webkit moz spec);
}

@mixin animation-delay($times...) {
  @include prefixer(animation-delay, $times, webkit moz spec);
}

@mixin animation-fill-mode($modes...) {
  // none | forwards | backwards | both
  @include prefixer(animation-fill-mode, $modes, webkit moz spec);
}

/* scss-combine:css3/appearance */
@mixin appearance($value) {
  @include prefixer(appearance, $value, webkit moz ms o spec);
}

/* scss-combine:css3/backface-visibility */
@mixin backface-visibility($visibility) {
  @include prefixer(backface-visibility, $visibility, webkit spec);
}

/* scss-combine:css3/background */
//************************************************************************//
// Background property for adding multiple backgrounds using shorthand
// notation.
//************************************************************************//

@mixin background($backgrounds...) {
  $webkit-backgrounds: ();
  $spec-backgrounds: ();

  @each $background in $backgrounds {
    $webkit-background: ();
    $spec-background: ();
    $background-type: type-of($background);

    @if $background-type == string or $background-type == list {
      $background-str: if($background-type == list, nth($background, 1), $background);

      $url-str:       str-slice($background-str, 1, 3);
      $gradient-type: str-slice($background-str, 1, 6);

      @if $url-str == "url" {
        $webkit-background: $background;
        $spec-background:   $background;
      }

      @else if $gradient-type == "linear" {
        $gradients: _linear-gradient-parser("#{$background}");
        $webkit-background: map-get($gradients, webkit-image);
        $spec-background:   map-get($gradients, spec-image);
      }

      @else if $gradient-type == "radial" {
        $gradients: _radial-gradient-parser("#{$background}");
        $webkit-background: map-get($gradients, webkit-image);
        $spec-background:   map-get($gradients, spec-image);
      }

      @else {
        $webkit-background: $background;
        $spec-background:   $background;
      }
    }

    @else {
      $webkit-background: $background;
      $spec-background:   $background;
    }

    $webkit-backgrounds: append($webkit-backgrounds, $webkit-background, comma);
    $spec-backgrounds:   append($spec-backgrounds,   $spec-background,   comma);
  }

  background: $webkit-backgrounds;
  background: $spec-backgrounds;
}

/* scss-combine:css3/background-image */
//************************************************************************//
// Background-image property for adding multiple background images with
// gradients, or for stringing multiple gradients together.
//************************************************************************//

@mixin background-image($images...) {
  $webkit-images: ();
  $spec-images: ();

  @each $image in $images {
    $webkit-image: ();
    $spec-image: ();

    @if (type-of($image) == string) {
      $url-str:       str-slice($image, 1, 3);
      $gradient-type: str-slice($image, 1, 6);

      @if $url-str == "url" {
        $webkit-image: $image;
        $spec-image:   $image;
      }

      @else if $gradient-type == "linear" {
        $gradients: _linear-gradient-parser($image);
        $webkit-image:  map-get($gradients, webkit-image);
        $spec-image:    map-get($gradients, spec-image);
      }

      @else if $gradient-type == "radial" {
        $gradients: _radial-gradient-parser($image);
        $webkit-image: map-get($gradients, webkit-image);
        $spec-image:   map-get($gradients, spec-image);
      }
    }

    $webkit-images: append($webkit-images, $webkit-image, comma);
    $spec-images:   append($spec-images,   $spec-image,   comma);
  }

  background-image: $webkit-images;
  background-image: $spec-images;
}

/* scss-combine:css3/border-image */
@mixin border-image($borders...) {
  $webkit-borders: ();
  $spec-borders: ();

  @each $border in $borders {
    $webkit-border: ();
    $spec-border: ();
    $border-type: type-of($border);

    @if $border-type == string or list {
      $border-str: if($border-type == list, nth($border, 1), $border);

      $url-str:       str-slice($border-str, 1, 3);
      $gradient-type: str-slice($border-str, 1, 6);

      @if $url-str == "url" {
        $webkit-border: $border;
        $spec-border:   $border;
      }

      @else if $gradient-type == "linear" {
        $gradients: _linear-gradient-parser("#{$border}");
        $webkit-border: map-get($gradients, webkit-image);
        $spec-border:   map-get($gradients, spec-image);
      }

      @else if $gradient-type == "radial" {
        $gradients: _radial-gradient-parser("#{$border}");
        $webkit-border: map-get($gradients, webkit-image);
        $spec-border:   map-get($gradients, spec-image);
      }

      @else {
        $webkit-border: $border;
        $spec-border:   $border;
      }
    }

    @else {
      $webkit-border: $border;
      $spec-border:   $border;
    }

    $webkit-borders: append($webkit-borders, $webkit-border, comma);
    $spec-borders:   append($spec-borders,   $spec-border,   comma);
  }

  -webkit-border-image: $webkit-borders;
          border-image: $spec-borders;
          border-style: solid;
}

//Examples:
// @include border-image(url("image.png"));
// @include border-image(url("image.png") 20 stretch);
// @include border-image(linear-gradient(45deg, orange, yellow));
// @include border-image(linear-gradient(45deg, orange, yellow) stretch);
// @include border-image(linear-gradient(45deg, orange, yellow) 20 30 40 50 stretch round);
// @include border-image(radial-gradient(top, cover, orange, yellow, orange));

/* scss-combine:css3/calc */
@mixin calc($property, $value) {
  #{$property}: -webkit-calc(#{$value});
  #{$property}: calc(#{$value});
}

/* scss-combine:css3/columns */
@mixin columns($arg: auto) {
  // <column-count> || <column-width>
  @include prefixer(columns, $arg, webkit moz spec);
}

@mixin column-count($int: auto) {
  // auto || integer
  @include prefixer(column-count, $int, webkit moz spec);
}

@mixin column-gap($length: normal) {
  // normal || length
  @include prefixer(column-gap, $length, webkit moz spec);
}

@mixin column-fill($arg: auto) {
  // auto || length
  @include prefixer(column-fill, $arg, webkit moz spec);
}

@mixin column-rule($arg) {
  // <border-width> || <border-style> || <color>
  @include prefixer(column-rule, $arg, webkit moz spec);
}

@mixin column-rule-color($color) {
  @include prefixer(column-rule-color, $color, webkit moz spec);
}

@mixin column-rule-style($style: none) {
  // none | hidden | dashed | dotted | double | groove | inset | inset | outset | ridge | solid
  @include prefixer(column-rule-style, $style, webkit moz spec);
}

@mixin column-rule-width ($width: none) {
  @include prefixer(column-rule-width, $width, webkit moz spec);
}

@mixin column-span($arg: none) {
  // none || all
  @include prefixer(column-span, $arg, webkit moz spec);
}

@mixin column-width($length: auto) {
  // auto || length
  @include prefixer(column-width, $length, webkit moz spec);
}

/* scss-combine:css3/filter */
@mixin filter($function: none) {
  // <filter-function> [<filter-function]* | none
  @include prefixer(filter, $function, webkit spec);
}

/* scss-combine:css3/flex-box */
// CSS3 Flexible Box Model and property defaults

// Custom shorthand notation for flexbox
@mixin box($orient: inline-axis, $pack: start, $align: stretch) {
  @include display-box;
  @include box-orient($orient);
  @include box-pack($pack);
  @include box-align($align);
}

@mixin display-box {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox; // IE 10
  display: box;
}

@mixin box-orient($orient: inline-axis) {
// horizontal|vertical|inline-axis|block-axis|inherit
  @include prefixer(box-orient, $orient, webkit moz spec);
}

@mixin box-pack($pack: start) {
// start|end|center|justify
  @include prefixer(box-pack, $pack, webkit moz spec);
  -ms-flex-pack: $pack; // IE 10
}

@mixin box-align($align: stretch) {
// start|end|center|baseline|stretch
  @include prefixer(box-align, $align, webkit moz spec);
  -ms-flex-align: $align; // IE 10
}

@mixin box-direction($direction: normal) {
// normal|reverse|inherit
  @include prefixer(box-direction, $direction, webkit moz spec);
  -ms-flex-direction: $direction; // IE 10
}

@mixin box-lines($lines: single) {
// single|multiple
  @include prefixer(box-lines, $lines, webkit moz spec);
}

@mixin box-ordinal-group($int: 1) {
  @include prefixer(box-ordinal-group, $int, webkit moz spec);
  -ms-flex-order: $int; // IE 10
}

@mixin box-flex($value: 0) {
  @include prefixer(box-flex, $value, webkit moz spec);
  -ms-flex: $value; // IE 10
}

@mixin box-flex-group($int: 1) {
  @include prefixer(box-flex-group, $int, webkit moz spec);
}

// CSS3 Flexible Box Model and property defaults
// Unified attributes for 2009, 2011, and 2012 flavours.

// 2009 - display (box | inline-box)
// 2011 - display (flexbox | inline-flexbox)
// 2012 - display (flex | inline-flex)
@mixin display($value) {
// flex | inline-flex
  @if $value == "flex" {
    // 2009
    display: -webkit-box;
    display: -moz-box;
    display: box;

    // 2012
    display: -webkit-flex;
    display: -moz-flex;
    display: -ms-flexbox; // 2011 (IE 10)
    display: flex;
  } @else if $value == "inline-flex" {
    display: -webkit-inline-box;
    display: -moz-inline-box;
    display: inline-box;

    display: -webkit-inline-flex;
    display: -moz-inline-flex;
    display: -ms-inline-flexbox;
    display: inline-flex;
  } @else {
    display: $value;
  }
}

// 2009 - box-flex (integer)
// 2011 - flex (decimal | width decimal)
// 2012 - flex (integer integer width)
@mixin flex($value) {

  // Grab flex-grow for older browsers.
  $flex-grow: nth($value, 1);

  // 2009
  @include prefixer(box-flex, $flex-grow, webkit moz spec);

  // 2011 (IE 10), 2012
  @include prefixer(flex, $value, webkit moz ms spec);
}

// 2009 - box-orient ( horizontal | vertical | inline-axis | block-axis)
//      - box-direction (normal | reverse)
// 2011 - flex-direction (row | row-reverse | column | column-reverse)
// 2012 - flex-direction (row | row-reverse | column | column-reverse)
@mixin flex-direction($value: row) {

  // Alt values.
  $value-2009: $value;
  $value-2011: $value;
  $direction: normal;

  @if $value == row {
    $value-2009: horizontal;
  } @else if $value == "row-reverse" {
    $value-2009: horizontal;
    $direction: reverse;
  } @else if $value == column {
    $value-2009: vertical;
  } @else if $value == "column-reverse" {
    $value-2009: vertical;
    $direction: reverse;
  }

  // 2009
  @include prefixer(box-orient, $value-2009, webkit moz spec);
  @include prefixer(box-direction, $direction, webkit moz spec);

  // 2012
  @include prefixer(flex-direction, $value, webkit moz spec);

  // 2011 (IE 10)
  -ms-flex-direction: $value;
}

// 2009 - box-lines (single | multiple)
// 2011 - flex-wrap (nowrap | wrap | wrap-reverse)
// 2012 - flex-wrap (nowrap | wrap | wrap-reverse)
@mixin flex-wrap($value: nowrap) {
  // Alt values
  $alt-value: $value;
  @if $value == nowrap {
    $alt-value: single;
  } @else if $value == wrap {
    $alt-value: multiple;
  } @else if $value == "wrap-reverse" {
    $alt-value: multiple;
  }

  @include prefixer(box-lines, $alt-value, webkit moz spec);
  @include prefixer(flex-wrap, $value, webkit moz ms spec);
}

// 2009 - TODO: parse values into flex-direction/flex-wrap
// 2011 - TODO: parse values into flex-direction/flex-wrap
// 2012 - flex-flow (flex-direction || flex-wrap)
@mixin flex-flow($value) {
  @include prefixer(flex-flow, $value, webkit moz spec);
}

// 2009 - box-ordinal-group (integer)
// 2011 - flex-order (integer)
// 2012 - order (integer)
@mixin order($int: 0) {
  // 2009
  @include prefixer(box-ordinal-group, $int, webkit moz spec);

  // 2012
  @include prefixer(order, $int, webkit moz spec);

  // 2011 (IE 10)
  -ms-flex-order: $int;
}

// 2012 - flex-grow (number)
@mixin flex-grow($number: 0) {
  @include prefixer(flex-grow, $number, webkit moz spec);
  -ms-flex-positive: $number;
}

// 2012 - flex-shrink (number)
@mixin flex-shrink($number: 1) {
  @include prefixer(flex-shrink, $number, webkit moz spec);
  -ms-flex-negative: $number;
}

// 2012 - flex-basis (number)
@mixin flex-basis($width: auto) {
  @include prefixer(flex-basis, $width, webkit moz spec);
  -ms-flex-preferred-size: $width;
}

// 2009 - box-pack (start | end | center | justify)
// 2011 - flex-pack (start | end | center | justify)
// 2012 - justify-content (flex-start | flex-end | center | space-between | space-around)
@mixin justify-content($value: flex-start) {

  // Alt values.
  $alt-value: $value;
  @if $value == "flex-start" {
    $alt-value: start;
  } @else if $value == "flex-end" {
    $alt-value: end;
  } @else if $value == "space-between" {
    $alt-value: justify;
  } @else if $value == "space-around" {
    $alt-value: distribute;
  }

  // 2009
  @include prefixer(box-pack, $alt-value, webkit moz spec);

  // 2012
  @include prefixer(justify-content, $value, webkit moz ms o spec);

  // 2011 (IE 10)
  -ms-flex-pack: $alt-value;
}

// 2009 - box-align (start | end | center | baseline | stretch)
// 2011 - flex-align (start | end | center | baseline | stretch)
// 2012 - align-items (flex-start | flex-end | center | baseline | stretch)
@mixin align-items($value: stretch) {

  $alt-value: $value;

  @if $value == "flex-start" {
    $alt-value: start;
  } @else if $value == "flex-end" {
    $alt-value: end;
  }

  // 2009
  @include prefixer(box-align, $alt-value, webkit moz spec);

  // 2012
  @include prefixer(align-items, $value, webkit moz ms o spec);

  // 2011 (IE 10)
  -ms-flex-align: $alt-value;
}

// 2011 - flex-item-align (auto | start | end | center | baseline | stretch)
// 2012 - align-self (auto | flex-start | flex-end | center | baseline | stretch)
@mixin align-self($value: auto) {

  $value-2011: $value;
  @if $value == "flex-start" {
    $value-2011: start;
  } @else if $value == "flex-end" {
    $value-2011: end;
  }

  // 2012
  @include prefixer(align-self, $value, webkit moz spec);

  // 2011 (IE 10)
  -ms-flex-item-align: $value-2011;
}

// 2011 - flex-line-pack (start | end | center | justify | distribute | stretch)
// 2012 - align-content (flex-start | flex-end | center | space-between | space-around | stretch)
@mixin align-content($value: stretch) {

  $value-2011: $value;
  @if $value == "flex-start" {
    $value-2011: start;
  } @else if $value == "flex-end" {
    $value-2011: end;
  } @else if $value == "space-between" {
    $value-2011: justify;
  } @else if $value == "space-around" {
    $value-2011: distribute;
  }

  // 2012
  @include prefixer(align-content, $value, webkit moz spec);

  // 2011 (IE 10)
  -ms-flex-line-pack: $value-2011;
}

/* scss-combine:css3/font-face */
@mixin font-face(
  $font-family,
  $file-path,
  $weight: normal,
  $style: normal,
  $asset-pipeline: $asset-pipeline,
  $file-formats: eot woff2 woff ttf svg) {

  $font-url-prefix: font-url-prefixer($asset-pipeline);

  @font-face {
    font-family: $font-family;
    font-style: $style;
    font-weight: $weight;

    src: font-source-declaration(
      $font-family,
      $file-path,
      $asset-pipeline,
      $file-formats,
      $font-url-prefix
    );
  }
}

/* scss-combine:css3/font-feature-settings */
@mixin font-feature-settings($settings...) {
  @if length($settings) == 0 { $settings: none; }
  @include prefixer(font-feature-settings, $settings, webkit moz ms spec);
}

/* scss-combine:css3/hidpi-media-query */
// HiDPI mixin. Default value set to 1.3 to target Google Nexus 7 (http://bjango.com/articles/min-device-pixel-ratio/)
@mixin hidpi($ratio: 1.3) {
  @media only screen and (-webkit-min-device-pixel-ratio: $ratio),
  only screen and (min--moz-device-pixel-ratio: $ratio),
  only screen and (-o-min-device-pixel-ratio: #{$ratio}/1),
  only screen and (min-resolution: round($ratio * 96dpi)),
  only screen and (min-resolution: $ratio * 1dppx) {
    @content;
  }
}

/* scss-combine:css3/hyphens */
@mixin hyphens($hyphenation: none) {
  // none | manual | auto
  @include prefixer(hyphens, $hyphenation, webkit moz ms spec);
}

/* scss-combine:css3/image-rendering */
@mixin image-rendering ($mode:auto) {

  @if ($mode == crisp-edges) {
    -ms-interpolation-mode: nearest-neighbor; // IE8+
    image-rendering: -moz-crisp-edges;
    image-rendering: -o-crisp-edges;
    image-rendering: -webkit-optimize-contrast;
    image-rendering: crisp-edges;
  }

  @else {
    image-rendering: $mode;
  }
}

/* scss-combine:css3/keyframes */
// Adds keyframes blocks for supported prefixes, removing redundant prefixes in the block's content
@mixin keyframes($name) {
  $original-prefix-for-webkit:    $prefix-for-webkit;
  $original-prefix-for-mozilla:   $prefix-for-mozilla;
  $original-prefix-for-microsoft: $prefix-for-microsoft;
  $original-prefix-for-opera:     $prefix-for-opera;
  $original-prefix-for-spec:      $prefix-for-spec;

  @if $original-prefix-for-webkit {
    @include disable-prefix-for-all();
    $prefix-for-webkit: true !global;
    @-webkit-keyframes #{$name} {
      @content;
    }
  }

  @if $original-prefix-for-mozilla {
    @include disable-prefix-for-all();
    $prefix-for-mozilla: true !global;
    @-moz-keyframes #{$name} {
      @content;
    }
  }

  $prefix-for-webkit:    $original-prefix-for-webkit    !global;
  $prefix-for-mozilla:   $original-prefix-for-mozilla   !global;
  $prefix-for-microsoft: $original-prefix-for-microsoft !global;
  $prefix-for-opera:     $original-prefix-for-opera     !global;
  $prefix-for-spec:      $original-prefix-for-spec      !global;

  @if $original-prefix-for-spec {
    @keyframes #{$name} {
      @content;
    }
  }
}

/* scss-combine:css3/linear-gradient */
@mixin linear-gradient($pos, $g1, $g2: null,
                       $g3: null, $g4: null,
                       $g5: null, $g6: null,
                       $g7: null, $g8: null,
                       $g9: null, $g10: null,
                       $fallback: null) {
  // Detect what type of value exists in $pos
  $pos-type: type-of(nth($pos, 1));
  $pos-spec: null;
  $pos-degree: null;

  // If $pos is missing from mixin, reassign vars and add default position
  @if ($pos-type == color) or (nth($pos, 1) == "transparent")  {
    $g10: $g9; $g9: $g8; $g8: $g7; $g7: $g6; $g6: $g5;
    $g5: $g4; $g4: $g3; $g3: $g2; $g2: $g1; $g1: $pos;
    $pos: null;
  }

  @if $pos {
    $positions: _linear-positions-parser($pos);
    $pos-degree: nth($positions, 1);
    $pos-spec:   nth($positions, 2);
  }

  $full: $g1, $g2, $g3, $g4, $g5, $g6, $g7, $g8, $g9, $g10;

  // Set $g1 as the default fallback color
  $fallback-color: nth($g1, 1);

  // If $fallback is a color use that color as the fallback color
  @if (type-of($fallback) == color) or ($fallback == "transparent") {
    $fallback-color: $fallback;
  }

  background-color: $fallback-color;
  background-image: -webkit-linear-gradient($pos-degree $full); // Safari 5.1+, Chrome
  background-image: unquote("linear-gradient(#{$pos-spec}#{$full})");
}

/* scss-combine:css3/perspective */
@mixin perspective($depth: none) {
  // none | <length>
  @include prefixer(perspective, $depth, webkit moz spec);
}

@mixin perspective-origin($value: 50% 50%) {
  @include prefixer(perspective-origin, $value, webkit moz spec);
}

/* scss-combine:css3/placeholder */
@mixin placeholder {
  $placeholders: ":-webkit-input" ":-moz" "-moz" "-ms-input";
  @each $placeholder in $placeholders {
    &:#{$placeholder}-placeholder {
      @content;
    }
  }
}

/* scss-combine:css3/radial-gradient */
// Requires Sass 3.1+
@mixin radial-gradient($g1, $g2,
                       $g3: null, $g4: null,
                       $g5: null, $g6: null,
                       $g7: null, $g8: null,
                       $g9: null, $g10: null,
                       $pos: null,
                       $shape-size: null,
                       $fallback: null) {

  $data: _radial-arg-parser($g1, $g2, $pos, $shape-size);
  $g1:  nth($data, 1);
  $g2:  nth($data, 2);
  $pos: nth($data, 3);
  $shape-size: nth($data, 4);

  $full: $g1, $g2, $g3, $g4, $g5, $g6, $g7, $g8, $g9, $g10;

  // Strip deprecated cover/contain for spec
  $shape-size-spec: _shape-size-stripper($shape-size);

  // Set $g1 as the default fallback color
  $first-color: nth($full, 1);
  $fallback-color: nth($first-color, 1);

  @if (type-of($fallback) == color) or ($fallback == "transparent") {
    $fallback-color: $fallback;
  }

  // Add Commas and spaces
  $shape-size: if($shape-size, "#{$shape-size}, ", null);
  $pos:        if($pos, "#{$pos}, ", null);
  $pos-spec:   if($pos, "at #{$pos}", null);
  $shape-size-spec: if(($shape-size-spec != " ") and ($pos == null), "#{$shape-size-spec}, ", "#{$shape-size-spec} ");

  background-color:  $fallback-color;
  background-image: -webkit-radial-gradient(#{$pos}#{$shape-size}#{$full});
  background-image: radial-gradient(#{$shape-size-spec}#{$pos-spec}#{$full});
}

/* scss-combine:css3/selection */
@charset "UTF-8";

/// Outputs the spec and prefixed versions of the `::selection` pseudo-element.
///
/// @param {Bool} $current-selector [false]
///   If set to `true`, it takes the current element into consideration.
///
/// @example scss - Usage
///   .element {
///     @include selection(true) {
///       background-color: #ffbb52;
///     }
///   }
///
/// @example css - CSS Output
///   .element::-moz-selection {
///     background-color: #ffbb52;
///   }
///
///   .element::selection {
///     background-color: #ffbb52;
///   }

@mixin selection($current-selector: false) {
  @if $current-selector {
    &::-moz-selection {
      @content;
    }

    &::selection {
      @content;
    }
  } @else {
    ::-moz-selection {
      @content;
    }

    ::selection {
      @content;
    }
  }
}

/* scss-combine:css3/text-decoration */
@mixin text-decoration($value) {
// <text-decoration-line> || <text-decoration-style> || <text-decoration-color>
  @include prefixer(text-decoration, $value, moz);
}

@mixin text-decoration-line($line: none) {
// none || underline || overline || line-through
  @include prefixer(text-decoration-line, $line, moz);
}

@mixin text-decoration-style($style: solid) {
// solid || double || dotted || dashed || wavy
  @include prefixer(text-decoration-style, $style, moz webkit);
}

@mixin text-decoration-color($color: currentColor) {
// currentColor || <color>
  @include prefixer(text-decoration-color, $color, moz);
}

/* scss-combine:css3/transform */
@mixin transform($property: none) {
  // none | <transform-function>
  @include prefixer(transform, $property, webkit moz ms o spec);
}

@mixin transform-origin($axes: 50%) {
  // x-axis - left | center | right  | length | %
  // y-axis - top  | center | bottom | length | %
  // z-axis -                          length
  @include prefixer(transform-origin, $axes, webkit moz ms o spec);
}

@mixin transform-style($style: flat) {
  @include prefixer(transform-style, $style, webkit moz ms o spec);
}

/* scss-combine:css3/transition */
// Shorthand mixin. Supports multiple parentheses-deliminated values for each variable.
// Example: @include transition (all 2s ease-in-out);
//          @include transition (opacity 1s ease-in 2s, width 2s ease-out);
//          @include transition-property (transform, opacity);

@mixin transition($properties...) {
  // Fix for vendor-prefix transform property
  $needs-prefixes: false;
  $webkit: ();
  $moz: ();
  $spec: ();

  // Create lists for vendor-prefixed transform
  @each $list in $properties {
    @if nth($list, 1) == "transform" {
      $needs-prefixes: true;
      $list1: -webkit-transform;
      $list2: -moz-transform;
      $list3: ();

      @each $var in $list {
        $list3: join($list3, $var);

        @if $var != "transform" {
          $list1: join($list1, $var);
          $list2: join($list2, $var);
        }
      }

      $webkit: append($webkit, $list1);
      $moz:    append($moz,    $list2);
      $spec:   append($spec,   $list3);
    } @else {
      $webkit: append($webkit, $list, comma);
      $moz:    append($moz,    $list, comma);
      $spec:   append($spec,   $list, comma);
    }
  }

  @if $needs-prefixes {
    -webkit-transition: $webkit;
       -moz-transition: $moz;
            transition: $spec;
  } @else {
    @if length($properties) >= 1 {
      @include prefixer(transition, $properties, webkit moz spec);
    } @else {
      $properties: all 0.15s ease-out 0s;
      @include prefixer(transition, $properties, webkit moz spec);
    }
  }
}

@mixin transition-property($properties...) {
  -webkit-transition-property: transition-property-names($properties, "webkit");
     -moz-transition-property: transition-property-names($properties, "moz");
          transition-property: transition-property-names($properties, false);
}

@mixin transition-duration($times...) {
  @include prefixer(transition-duration, $times, webkit moz spec);
}

@mixin transition-timing-function($motions...) {
  // ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier()
  @include prefixer(transition-timing-function, $motions, webkit moz spec);
}

@mixin transition-delay($times...) {
  @include prefixer(transition-delay, $times, webkit moz spec);
}

/* scss-combine:css3/user-select */
@mixin user-select($value: none) {
  @include prefixer(user-select, $value, webkit moz ms spec);
}


/* scss-combine:addons/border-color */
@charset "UTF-8";

/// Provides a quick method for targeting `border-color` on specific sides of a box. Use a `null` value to “skip” a side.
///
/// @param {Arglist} $vals
///   List of arguments
///
/// @example scss - Usage
///   .element {
///     @include border-color(#a60b55 #76cd9c null #e8ae1a);
///   }
///
/// @example css - CSS Output
///   .element {
///     border-left-color: #e8ae1a;
///     border-right-color: #76cd9c;
///     border-top-color: #a60b55;
///   }
///
/// @require {mixin} directional-property
///
/// @output `border-color`

@mixin border-color($vals...) {
  @include directional-property(border, color, $vals...);
}

/* scss-combine:addons/border-radius */
@charset "UTF-8";

/// Provides a quick method for targeting `border-radius` on both corners on the side of a box.
///
/// @param {Number} $radii
///   List of arguments
///
/// @example scss - Usage
///   .element-one {
///     @include border-top-radius(5px);
///   }
///
///   .element-two {
///     @include border-left-radius(3px);
///   }
///
/// @example css - CSS Output
///   .element-one {
///     border-top-left-radius: 5px;
///     border-top-right-radius: 5px;
///   }
///
///   .element-two {
///     border-bottom-left-radius: 3px;
///     border-top-left-radius: 3px;
///   }
///
/// @output `border-radius`

@mixin border-top-radius($radii) {
  border-top-left-radius: $radii;
  border-top-right-radius: $radii;
}

@mixin border-right-radius($radii) {
  border-bottom-right-radius: $radii;
  border-top-right-radius: $radii;
}

@mixin border-bottom-radius($radii) {
  border-bottom-left-radius: $radii;
  border-bottom-right-radius: $radii;
}

@mixin border-left-radius($radii) {
  border-bottom-left-radius: $radii;
  border-top-left-radius: $radii;
}

/* scss-combine:addons/border-style */
@charset "UTF-8";

/// Provides a quick method for targeting `border-style` on specific sides of a box. Use a `null` value to “skip” a side.
///
/// @param {Arglist} $vals
///   List of arguments
///
/// @example scss - Usage
///   .element {
///     @include border-style(dashed null solid);
///   }
///
/// @example css - CSS Output
///   .element {
///     border-bottom-style: solid;
///     border-top-style: dashed;
///   }
///
/// @require {mixin} directional-property
///
/// @output `border-style`

@mixin border-style($vals...) {
  @include directional-property(border, style, $vals...);
}

/* scss-combine:addons/border-width */
@charset "UTF-8";

/// Provides a quick method for targeting `border-width` on specific sides of a box. Use a `null` value to “skip” a side.
///
/// @param {Arglist} $vals
///   List of arguments
///
/// @example scss - Usage
///   .element {
///     @include border-width(1em null 20px);
///   }
///
/// @example css - CSS Output
///   .element {
///     border-bottom-width: 20px;
///     border-top-width: 1em;
///   }
///
/// @require {mixin} directional-property
///
/// @output `border-width`

@mixin border-width($vals...) {
  @include directional-property(border, width, $vals...);
}

/* scss-combine:addons/buttons */
@charset "UTF-8";

/// Generates variables for all buttons. Please note that you must use interpolation on the variable: `#{$all-buttons}`.
///
/// @example scss - Usage
///   #{$all-buttons} {
///     background-color: #f00;
///   }
///
///   #{$all-buttons-focus},
///   #{$all-buttons-hover} {
///     background-color: #0f0;
///   }
///
///   #{$all-buttons-active} {
///     background-color: #00f;
///   }
///
/// @example css - CSS Output
///   button,
///   input[type="button"],
///   input[type="reset"],
///   input[type="submit"] {
///     background-color: #f00;
///   }
///
///   button:focus,
///   input[type="button"]:focus,
///   input[type="reset"]:focus,
///   input[type="submit"]:focus,
///   button:hover,
///   input[type="button"]:hover,
///   input[type="reset"]:hover,
///   input[type="submit"]:hover {
///     background-color: #0f0;
///   }
///
///   button:active,
///   input[type="button"]:active,
///   input[type="reset"]:active,
///   input[type="submit"]:active {
///     background-color: #00f;
///   }
///
/// @require assign-inputs
///
/// @type List
///
/// @todo Remove double assigned variables (Lines 59–62) in v5.0.0

$buttons-list: 'button',
               'input[type="button"]',
               'input[type="reset"]',
               'input[type="submit"]';

$all-buttons:        assign-inputs($buttons-list);
$all-buttons-active: assign-inputs($buttons-list, active);
$all-buttons-focus:  assign-inputs($buttons-list, focus);
$all-buttons-hover:  assign-inputs($buttons-list, hover);

$all-button-inputs:        $all-buttons;
$all-button-inputs-active: $all-buttons-active;
$all-button-inputs-focus:  $all-buttons-focus;
$all-button-inputs-hover:  $all-buttons-hover;

/* scss-combine:addons/clearfix */
@charset "UTF-8";

/// Provides an easy way to include a clearfix for containing floats.
///
/// @link http://cssmojo.com/latest_new_clearfix_so_far/
///
/// @example scss - Usage
///   .element {
///     @include clearfix;
///   }
///
/// @example css - CSS Output
///   .element::after {
///     clear: both;
///     content: "";
///     display: table;
///   }

@mixin clearfix {
  &::after {
    clear: both;
    content: "";
    display: table;
  }
}

/* scss-combine:addons/ellipsis */
@charset "UTF-8";

/// Truncates text and adds an ellipsis to represent overflow.
///
/// @param {Number} $width [100%]
///   Max-width for the string to respect before being truncated
///
/// @example scss - Usage
///   .element {
///     @include ellipsis;
///   }
///
/// @example css - CSS Output
///   .element {
///     display: inline-block;
///     max-width: 100%;
///     overflow: hidden;
///     text-overflow: ellipsis;
///     white-space: nowrap;
///     word-wrap: normal;
///   }

@mixin ellipsis($width: 100%) {
  display: inline-block;
  max-width: $width;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  word-wrap: normal;
}

/* scss-combine:addons/font-stacks */
@charset "UTF-8";

/// Georgia font stack.
///
/// @type List

$georgia: "Georgia", "Cambria", "Times New Roman", "Times", serif;

/// Helvetica font stack.
///
/// @type List

$helvetica: "Helvetica Neue", "Helvetica", "Roboto", "Arial", sans-serif;

/// Lucida Grande font stack.
///
/// @type List

$lucida-grande: "Lucida Grande", "Tahoma", "Verdana", "Arial", sans-serif;

/// Monospace font stack.
///
/// @type List

$monospace: "Bitstream Vera Sans Mono", "Consolas", "Courier", monospace;

/// Verdana font stack.
///
/// @type List

$verdana: "Verdana", "Geneva", sans-serif;

/* scss-combine:addons/hide-text */
/// Hides the text in an element, commonly used to show an image. Some elements will need block-level styles applied.
///
/// @link http://zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement
///
/// @example scss - Usage
///   .element {
///     @include hide-text;
///   }
///
/// @example css - CSS Output
///   .element {
///     overflow: hidden;
///     text-indent: 101%;
///     white-space: nowrap;
///   }
///
/// @todo Remove height argument in v5.0.0

@mixin hide-text($height: null) {
  overflow: hidden;
  text-indent: 101%;
  white-space: nowrap;

  @if $height {
    @warn "The `hide-text` mixin has changed and no longer requires a height. The height argument will no longer be accepted in v5.0.0";
  }
}

/* scss-combine:addons/margin */
@charset "UTF-8";

/// Provides a quick method for targeting `margin` on specific sides of a box. Use a `null` value to “skip” a side.
///
/// @param {Arglist} $vals
///   List of arguments
///
/// @example scss - Usage
///   .element {
///     @include margin(null 10px 3em 20vh);
///   }
///
/// @example css - CSS Output
///   .element {
///     margin-bottom: 3em;
///     margin-left: 20vh;
///     margin-right: 10px;
///   }
///
/// @require {mixin} directional-property
///
/// @output `margin`

@mixin margin($vals...) {
  @include directional-property(margin, false, $vals...);
}

/* scss-combine:addons/padding */
@charset "UTF-8";

/// Provides a quick method for targeting `padding` on specific sides of a box. Use a `null` value to “skip” a side.
///
/// @param {Arglist} $vals
///   List of arguments
///
/// @example scss - Usage
///   .element {
///     @include padding(12vh null 10px 5%);
///   }
///
/// @example css - CSS Output
///   .element {
///     padding-bottom: 10px;
///     padding-left: 5%;
///     padding-top: 12vh;
///   }
///
/// @require {mixin} directional-property
///
/// @output `padding`

@mixin padding($vals...) {
  @include directional-property(padding, false, $vals...);
}

/* scss-combine:addons/position */
@charset "UTF-8";

/// Provides a quick method for setting an element’s position. Use a `null` value to “skip” a side.
///
/// @param {Position} $position [relative]
///   A CSS position value
///
/// @param {Arglist} $coordinates [null null null null]
///   List of values that correspond to the 4-value syntax for the edges of a box
///
/// @example scss - Usage
///   .element {
///     @include position(absolute, 0 null null 10em);
///   }
///
/// @example css - CSS Output
///   .element {
///     left: 10em;
///     position: absolute;
///     top: 0;
///   }
///
/// @require {function} is-length
/// @require {function} unpack

@mixin position($position: relative, $coordinates: null null null null) {
  @if type-of($position) == list {
    $coordinates: $position;
    $position: relative;
  }

  $coordinates: unpack($coordinates);

  $offsets: (
    top:    nth($coordinates, 1),
    right:  nth($coordinates, 2),
    bottom: nth($coordinates, 3),
    left:   nth($coordinates, 4)
  );

  position: $position;

  @each $offset, $value in $offsets {
    @if is-length($value) {
      #{$offset}: $value;
    }
  }
}

/* scss-combine:addons/prefixer */
@charset "UTF-8";

/// A mixin for generating vendor prefixes on non-standardized properties.
///
/// @param {String} $property
///   Property to prefix
///
/// @param {*} $value
///   Value to use
///
/// @param {List} $prefixes
///   Prefixes to define
///
/// @example scss - Usage
///   .element {
///     @include prefixer(border-radius, 10px, webkit ms spec);
///   }
///
/// @example css - CSS Output
///   .element {
///     -webkit-border-radius: 10px;
///     -moz-border-radius: 10px;
///     border-radius: 10px;
///   }
///
/// @require {variable} $prefix-for-webkit
/// @require {variable} $prefix-for-mozilla
/// @require {variable} $prefix-for-microsoft
/// @require {variable} $prefix-for-opera
/// @require {variable} $prefix-for-spec

@mixin prefixer($property, $value, $prefixes) {
  @each $prefix in $prefixes {
    @if $prefix == webkit {
      @if $prefix-for-webkit {
        -webkit-#{$property}: $value;
      }
    } @else if $prefix == moz {
      @if $prefix-for-mozilla {
        -moz-#{$property}: $value;
      }
    } @else if $prefix == ms {
      @if $prefix-for-microsoft {
        -ms-#{$property}: $value;
      }
    } @else if $prefix == o {
      @if $prefix-for-opera {
        -o-#{$property}: $value;
      }
    } @else if $prefix == spec {
      @if $prefix-for-spec {
        #{$property}: $value;
      }
    } @else  {
      @warn "Unrecognized prefix: #{$prefix}";
    }
  }
}

@mixin disable-prefix-for-all() {
  $prefix-for-webkit:    false !global;
  $prefix-for-mozilla:   false !global;
  $prefix-for-microsoft: false !global;
  $prefix-for-opera:     false !global;
  $prefix-for-spec:      false !global;
}

/* scss-combine:addons/retina-image */
@mixin retina-image($filename, $background-size, $extension: png, $retina-filename: null, $retina-suffix: _2x, $asset-pipeline: $asset-pipeline) {
  @if $asset-pipeline {
    background-image: image-url("#{$filename}.#{$extension}");
  } @else {
    background-image:       url("#{$filename}.#{$extension}");
  }

  @include hidpi {
    @if $asset-pipeline {
      @if $retina-filename {
        background-image: image-url("#{$retina-filename}.#{$extension}");
      } @else {
        background-image: image-url("#{$filename}#{$retina-suffix}.#{$extension}");
      }
    } @else {
      @if $retina-filename {
        background-image: url("#{$retina-filename}.#{$extension}");
      } @else {
        background-image: url("#{$filename}#{$retina-suffix}.#{$extension}");
      }
    }

    background-size: $background-size;
  }
}

/* scss-combine:addons/size */
@charset "UTF-8";

/// Sets the `width` and `height` of the element.
///
/// @param {List} $size
///   A list of at most 2 size values.
///
///   If there is only a single value in `$size` it is used for both width and height. All units are supported.
///
/// @example scss - Usage
///   .first-element {
///     @include size(2em);
///   }
///
///   .second-element {
///     @include size(auto 10em);
///   }
///
/// @example css - CSS Output
///   .first-element {
///     width: 2em;
///     height: 2em;
///   }
///
///   .second-element {
///     width: auto;
///     height: 10em;
///   }
///
/// @todo Refactor in 5.0.0 to use a comma-separated argument

@mixin size($value) {
  $width: nth($value, 1);
  $height: $width;

  @if length($value) > 1 {
    $height: nth($value, 2);
  }

  @if is-size($height) {
    height: $height;
  } @else {
    @warn "`#{$height}` is not a valid length for the `$height` parameter in the `size` mixin.";
  }

  @if is-size($width) {
    width: $width;
  } @else {
    @warn "`#{$width}` is not a valid length for the `$width` parameter in the `size` mixin.";
  }
}

/* scss-combine:addons/text-inputs */
@charset "UTF-8";

/// Generates variables for all text-based inputs. Please note that you must use interpolation on the variable: `#{$all-text-inputs}`.
///
/// @example scss - Usage
///   #{$all-text-inputs} {
///     border: 1px solid #f00;
///   }
///
///   #{$all-text-inputs-focus},
///   #{$all-text-inputs-hover} {
///     border: 1px solid #0f0;
///   }
///
///   #{$all-text-inputs-active} {
///     border: 1px solid #00f;
///   }
///
/// @example css - CSS Output
///   input[type="color"],
///   input[type="date"],
///   input[type="datetime"],
///   input[type="datetime-local"],
///   input[type="email"],
///   input[type="month"],
///   input[type="number"],
///   input[type="password"],
///   input[type="search"],
///   input[type="tel"],
///   input[type="text"],
///   input[type="time"],
///   input[type="url"],
///   input[type="week"],
///   textarea {
///     border: 1px solid #f00;
///   }
///
///   input[type="color"]:focus,
///   input[type="date"]:focus,
///   input[type="datetime"]:focus,
///   input[type="datetime-local"]:focus,
///   input[type="email"]:focus,
///   input[type="month"]:focus,
///   input[type="number"]:focus,
///   input[type="password"]:focus,
///   input[type="search"]:focus,
///   input[type="tel"]:focus,
///   input[type="text"]:focus,
///   input[type="time"]:focus,
///   input[type="url"]:focus,
///   input[type="week"]:focus,
///   textarea:focus,
///   input[type="color"]:hover,
///   input[type="date"]:hover,
///   input[type="datetime"]:hover,
///   input[type="datetime-local"]:hover,
///   input[type="email"]:hover,
///   input[type="month"]:hover,
///   input[type="number"]:hover,
///   input[type="password"]:hover,
///   input[type="search"]:hover,
///   input[type="tel"]:hover,
///   input[type="text"]:hover,
///   input[type="time"]:hover,
///   input[type="url"]:hover,
///   input[type="week"]:hover,
///   textarea:hover {
///     border: 1px solid #0f0;
///   }
///
///   input[type="color"]:active,
///   input[type="date"]:active,
///   input[type="datetime"]:active,
///   input[type="datetime-local"]:active,
///   input[type="email"]:active,
///   input[type="month"]:active,
///   input[type="number"]:active,
///   input[type="password"]:active,
///   input[type="search"]:active,
///   input[type="tel"]:active,
///   input[type="text"]:active,
///   input[type="time"]:active,
///   input[type="url"]:active,
///   input[type="week"]:active,
///   textarea:active {
///     border: 1px solid #00f;
///   }
///
/// @require assign-inputs
///
/// @type List

$text-inputs-list: 'input[type="color"]',
                   'input[type="date"]',
                   'input[type="datetime"]',
                   'input[type="datetime-local"]',
                   'input[type="email"]',
                   'input[type="month"]',
                   'input[type="number"]',
                   'input[type="password"]',
                   'input[type="search"]',
                   'input[type="tel"]',
                   'input[type="text"]',
                   'input[type="time"]',
                   'input[type="url"]',
                   'input[type="week"]',
                   'input:not([type])',
                   'textarea';

$all-text-inputs:        assign-inputs($text-inputs-list);
$all-text-inputs-active: assign-inputs($text-inputs-list, active);
$all-text-inputs-focus:  assign-inputs($text-inputs-list, focus);
$all-text-inputs-hover:  assign-inputs($text-inputs-list, hover);

/* scss-combine:addons/timing-functions */
@charset "UTF-8";

/// CSS cubic-bezier timing functions. Timing functions courtesy of jquery.easie (github.com/jaukia/easie)
///
/// Timing functions are the same as demoed here: http://jqueryui.com/resources/demos/effect/easing.html
///
/// @type cubic-bezier

$ease-in-quad:      cubic-bezier(0.550,  0.085, 0.680, 0.530);
$ease-in-cubic:     cubic-bezier(0.550,  0.055, 0.675, 0.190);
$ease-in-quart:     cubic-bezier(0.895,  0.030, 0.685, 0.220);
$ease-in-quint:     cubic-bezier(0.755,  0.050, 0.855, 0.060);
$ease-in-sine:      cubic-bezier(0.470,  0.000, 0.745, 0.715);
$ease-in-expo:      cubic-bezier(0.950,  0.050, 0.795, 0.035);
$ease-in-circ:      cubic-bezier(0.600,  0.040, 0.980, 0.335);
$ease-in-back:      cubic-bezier(0.600, -0.280, 0.735, 0.045);

$ease-out-quad:     cubic-bezier(0.250,  0.460, 0.450, 0.940);
$ease-out-cubic:    cubic-bezier(0.215,  0.610, 0.355, 1.000);
$ease-out-quart:    cubic-bezier(0.165,  0.840, 0.440, 1.000);
$ease-out-quint:    cubic-bezier(0.230,  1.000, 0.320, 1.000);
$ease-out-sine:     cubic-bezier(0.390,  0.575, 0.565, 1.000);
$ease-out-expo:     cubic-bezier(0.190,  1.000, 0.220, 1.000);
$ease-out-circ:     cubic-bezier(0.075,  0.820, 0.165, 1.000);
$ease-out-back:     cubic-bezier(0.175,  0.885, 0.320, 1.275);

$ease-in-out-quad:  cubic-bezier(0.455,  0.030, 0.515, 0.955);
$ease-in-out-cubic: cubic-bezier(0.645,  0.045, 0.355, 1.000);
$ease-in-out-quart: cubic-bezier(0.770,  0.000, 0.175, 1.000);
$ease-in-out-quint: cubic-bezier(0.860,  0.000, 0.070, 1.000);
$ease-in-out-sine:  cubic-bezier(0.445,  0.050, 0.550, 0.950);
$ease-in-out-expo:  cubic-bezier(1.000,  0.000, 0.000, 1.000);
$ease-in-out-circ:  cubic-bezier(0.785,  0.135, 0.150, 0.860);
$ease-in-out-back:  cubic-bezier(0.680, -0.550, 0.265, 1.550);

/* scss-combine:addons/triangle */
@mixin triangle($size, $color, $direction) {
  $width: nth($size, 1);
  $height: nth($size, length($size));
  $foreground-color: nth($color, 1);
  $background-color: if(length($color) == 2, nth($color, 2), transparent);
  height: 0;
  width: 0;

  @if ($direction == up) or ($direction == down) or ($direction == right) or ($direction == left) {
    $width: $width / 2;
    $height: if(length($size) > 1, $height, $height/2);

    @if $direction == up {
      border-bottom: $height solid $foreground-color;
      border-left: $width solid $background-color;
      border-right: $width solid $background-color;
    } @else if $direction == right {
      border-bottom: $width solid $background-color;
      border-left: $height solid $foreground-color;
      border-top: $width solid $background-color;
    } @else if $direction == down {
      border-left: $width solid $background-color;
      border-right: $width solid $background-color;
      border-top: $height solid $foreground-color;
    } @else if $direction == left {
      border-bottom: $width solid $background-color;
      border-right: $height solid $foreground-color;
      border-top: $width solid $background-color;
    }
  } @else if ($direction == up-right) or ($direction == up-left) {
    border-top: $height solid $foreground-color;

    @if $direction == up-right {
      border-left:  $width solid $background-color;
    } @else if $direction == up-left {
      border-right: $width solid $background-color;
    }
  } @else if ($direction == down-right) or ($direction == down-left) {
    border-bottom: $height solid $foreground-color;

    @if $direction == down-right {
      border-left:  $width solid $background-color;
    } @else if $direction == down-left {
      border-right: $width solid $background-color;
    }
  } @else if ($direction == inset-up) {
    border-color: $background-color $background-color $foreground-color;
    border-style: solid;
    border-width: $height $width;
  } @else if ($direction == inset-down) {
    border-color: $foreground-color $background-color $background-color;
    border-style: solid;
    border-width: $height $width;
  } @else if ($direction == inset-right) {
    border-color: $background-color $background-color $background-color $foreground-color;
    border-style: solid;
    border-width: $width $height;
  } @else if ($direction == inset-left) {
    border-color: $background-color $foreground-color $background-color $background-color;
    border-style: solid;
    border-width: $width $height;
  }
}

/* scss-combine:addons/word-wrap */
@charset "UTF-8";

/// Provides an easy way to change the `word-wrap` property.
///
/// @param {String} $wrap [break-word]
///   Value for the `word-break` property.
///
/// @example scss - Usage
///   .wrapper {
///     @include word-wrap(break-word);
///   }
///
/// @example css - CSS Output
///   .wrapper {
///     overflow-wrap: break-word;
///     word-break: break-all;
///     word-wrap: break-word;
///   }

@mixin word-wrap($wrap: break-word) {
  overflow-wrap: $wrap;
  word-wrap: $wrap;

  @if $wrap == break-word {
    word-break: break-all;
  } @else {
    word-break: $wrap;
  }
}


/* scss-combine:bourbon-deprecated-upcoming */
// The following features have been deprecated and will be removed in the next MAJOR version release

@mixin inline-block {
  display: inline-block;

  @warn "The inline-block mixin is deprecated and will be removed in the next major version release";
}

@mixin button ($style: simple, $base-color: #4294f0, $text-size: inherit, $padding: 7px 18px) {

  @if type-of($style) == string and type-of($base-color) == color {
    @include buttonstyle($style, $base-color, $text-size, $padding);
  }

  @if type-of($style) == string and type-of($base-color) == number {
    $padding: $text-size;
    $text-size: $base-color;
    $base-color: #4294f0;

    @if $padding == inherit {
      $padding: 7px 18px;
    }

    @include buttonstyle($style, $base-color, $text-size, $padding);
  }

  @if type-of($style) == color and type-of($base-color) == color {
    $base-color: $style;
    $style: simple;
    @include buttonstyle($style, $base-color, $text-size, $padding);
  }

  @if type-of($style) == color and type-of($base-color) == number {
    $padding: $text-size;
    $text-size: $base-color;
    $base-color: $style;
    $style: simple;

    @if $padding == inherit {
      $padding: 7px 18px;
    }

    @include buttonstyle($style, $base-color, $text-size, $padding);
  }

  @if type-of($style) == number {
    $padding: $base-color;
    $text-size: $style;
    $base-color: #4294f0;
    $style: simple;

    @if $padding == #4294f0 {
      $padding: 7px 18px;
    }

    @include buttonstyle($style, $base-color, $text-size, $padding);
  }

  &:disabled {
    cursor: not-allowed;
    opacity: 0.5;
  }

  @warn "The button mixin is deprecated and will be removed in the next major version release";
}

// Selector Style Button
@mixin buttonstyle($type, $b-color, $t-size, $pad) {
  // Grayscale button
  @if $type == simple and $b-color == grayscale($b-color) {
    @include simple($b-color, true, $t-size, $pad);
  }

  @if $type == shiny and $b-color == grayscale($b-color) {
    @include shiny($b-color, true, $t-size, $pad);
  }

  @if $type == pill and $b-color == grayscale($b-color) {
    @include pill($b-color, true, $t-size, $pad);
  }

  @if $type == flat and $b-color == grayscale($b-color) {
    @include flat($b-color, true, $t-size, $pad);
  }

  // Colored button
  @if $type == simple {
    @include simple($b-color, false, $t-size, $pad);
  }

  @else if $type == shiny {
    @include shiny($b-color, false, $t-size, $pad);
  }

  @else if $type == pill {
    @include pill($b-color, false, $t-size, $pad);
  }

  @else if $type == flat {
    @include flat($b-color, false, $t-size, $pad);
  }
}

// Simple Button
@mixin simple($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) {
  $color:         hsl(0, 0, 100%);
  $border:        adjust-color($base-color, $saturation:  9%,  $lightness: -14%);
  $inset-shadow:  adjust-color($base-color, $saturation: -8%,  $lightness:  15%);
  $stop-gradient: adjust-color($base-color, $saturation:  9%,  $lightness: -11%);
  $text-shadow:   adjust-color($base-color, $saturation:  15%, $lightness: -18%);

  @if is-light($base-color) {
    $color:       hsl(0, 0, 20%);
    $text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%);
  }

  @if $grayscale == true {
    $border:        grayscale($border);
    $inset-shadow:  grayscale($inset-shadow);
    $stop-gradient: grayscale($stop-gradient);
    $text-shadow:   grayscale($text-shadow);
  }

  border: 1px solid $border;
  border-radius: 3px;
  box-shadow: inset 0 1px 0 0 $inset-shadow;
  color: $color;
  display: inline-block;
  font-size: $textsize;
  font-weight: bold;
  @include linear-gradient ($base-color, $stop-gradient);
  padding: $padding;
  text-decoration: none;
  text-shadow: 0 1px 0 $text-shadow;
  background-clip: padding-box;

  &:hover:not(:disabled) {
    $base-color-hover:    adjust-color($base-color, $saturation: -4%, $lightness: -5%);
    $inset-shadow-hover:  adjust-color($base-color, $saturation: -7%, $lightness:  5%);
    $stop-gradient-hover: adjust-color($base-color, $saturation:  8%, $lightness: -14%);

    @if $grayscale == true {
      $base-color-hover:    grayscale($base-color-hover);
      $inset-shadow-hover:  grayscale($inset-shadow-hover);
      $stop-gradient-hover: grayscale($stop-gradient-hover);
    }

    @include linear-gradient ($base-color-hover, $stop-gradient-hover);

    box-shadow: inset 0 1px 0 0 $inset-shadow-hover;
    cursor: pointer;
  }

  &:active:not(:disabled),
  &:focus:not(:disabled) {
    $border-active:       adjust-color($base-color, $saturation: 9%, $lightness: -14%);
    $inset-shadow-active: adjust-color($base-color, $saturation: 7%, $lightness: -17%);

    @if $grayscale == true {
      $border-active:       grayscale($border-active);
      $inset-shadow-active: grayscale($inset-shadow-active);
    }

    border: 1px solid $border-active;
    box-shadow: inset 0 0 8px 4px $inset-shadow-active, inset 0 0 8px 4px $inset-shadow-active;
  }
}

// Shiny Button
@mixin shiny($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) {
  $color:         hsl(0, 0, 100%);
  $border:        adjust-color($base-color, $red: -117, $green: -111, $blue: -81);
  $border-bottom: adjust-color($base-color, $red: -126, $green: -127, $blue: -122);
  $fourth-stop:   adjust-color($base-color, $red: -79,  $green: -70,  $blue: -46);
  $inset-shadow:  adjust-color($base-color, $red:  37,  $green:  29,  $blue:  12);
  $second-stop:   adjust-color($base-color, $red: -56,  $green: -50,  $blue: -33);
  $text-shadow:   adjust-color($base-color, $red: -140, $green: -141, $blue: -114);
  $third-stop:    adjust-color($base-color, $red: -86,  $green: -75,  $blue: -48);

  @if is-light($base-color) {
    $color:       hsl(0, 0, 20%);
    $text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%);
  }

  @if $grayscale == true {
    $border:        grayscale($border);
    $border-bottom: grayscale($border-bottom);
    $fourth-stop:   grayscale($fourth-stop);
    $inset-shadow:  grayscale($inset-shadow);
    $second-stop:   grayscale($second-stop);
    $text-shadow:   grayscale($text-shadow);
    $third-stop:    grayscale($third-stop);
  }

  @include linear-gradient(top, $base-color 0%, $second-stop 50%, $third-stop 50%, $fourth-stop 100%);

  border: 1px solid $border;
  border-bottom: 1px solid $border-bottom;
  border-radius: 5px;
  box-shadow: inset 0 1px 0 0 $inset-shadow;
  color: $color;
  display: inline-block;
  font-size: $textsize;
  font-weight: bold;
  padding: $padding;
  text-align: center;
  text-decoration: none;
  text-shadow: 0 -1px 1px $text-shadow;

  &:hover:not(:disabled) {
    $first-stop-hover:  adjust-color($base-color, $red: -13, $green: -15, $blue: -18);
    $second-stop-hover: adjust-color($base-color, $red: -66, $green: -62, $blue: -51);
    $third-stop-hover:  adjust-color($base-color, $red: -93, $green: -85, $blue: -66);
    $fourth-stop-hover: adjust-color($base-color, $red: -86, $green: -80, $blue: -63);

    @if $grayscale == true {
      $first-stop-hover:  grayscale($first-stop-hover);
      $second-stop-hover: grayscale($second-stop-hover);
      $third-stop-hover:  grayscale($third-stop-hover);
      $fourth-stop-hover: grayscale($fourth-stop-hover);
    }

    @include linear-gradient(top, $first-stop-hover  0%,
                                  $second-stop-hover 50%,
                                  $third-stop-hover  50%,
                                  $fourth-stop-hover 100%);
    cursor: pointer;
  }

  &:active:not(:disabled),
  &:focus:not(:disabled) {
    $inset-shadow-active: adjust-color($base-color, $red: -111, $green: -116, $blue: -122);

    @if $grayscale == true {
      $inset-shadow-active: grayscale($inset-shadow-active);
    }

    box-shadow: inset 0 0 20px 0 $inset-shadow-active;
  }
}

// Pill Button
@mixin pill($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) {
  $color:         hsl(0, 0, 100%);
  $border-bottom: adjust-color($base-color, $hue:  8, $saturation: -11%, $lightness: -26%);
  $border-sides:  adjust-color($base-color, $hue:  4, $saturation: -21%, $lightness: -21%);
  $border-top:    adjust-color($base-color, $hue: -1, $saturation: -30%, $lightness: -15%);
  $inset-shadow:  adjust-color($base-color, $hue: -1, $saturation: -1%,  $lightness:  7%);
  $stop-gradient: adjust-color($base-color, $hue:  8, $saturation:  14%, $lightness: -10%);
  $text-shadow:   adjust-color($base-color, $hue:  5, $saturation: -19%, $lightness: -15%);

  @if is-light($base-color) {
    $color:       hsl(0, 0, 20%);
    $text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%);
  }

  @if $grayscale == true {
    $border-bottom: grayscale($border-bottom);
    $border-sides:  grayscale($border-sides);
    $border-top:    grayscale($border-top);
    $inset-shadow:  grayscale($inset-shadow);
    $stop-gradient: grayscale($stop-gradient);
    $text-shadow:   grayscale($text-shadow);
  }

  border: 1px solid $border-top;
  border-color: $border-top $border-sides $border-bottom;
  border-radius: 16px;
  box-shadow: inset 0 1px 0 0 $inset-shadow;
  color: $color;
  display: inline-block;
  font-size: $textsize;
  font-weight: normal;
  line-height: 1;
  @include linear-gradient ($base-color, $stop-gradient);
  padding: $padding;
  text-align: center;
  text-decoration: none;
  text-shadow: 0 -1px 1px $text-shadow;
  background-clip: padding-box;

  &:hover:not(:disabled) {
    $base-color-hover:    adjust-color($base-color,                                $lightness: -4.5%);
    $border-bottom:       adjust-color($base-color, $hue:  8, $saturation:  13.5%, $lightness: -32%);
    $border-sides:        adjust-color($base-color, $hue:  4, $saturation: -2%,    $lightness: -27%);
    $border-top:          adjust-color($base-color, $hue: -1, $saturation: -17%,   $lightness: -21%);
    $inset-shadow-hover:  adjust-color($base-color,           $saturation: -1%,    $lightness:  3%);
    $stop-gradient-hover: adjust-color($base-color, $hue:  8, $saturation: -4%,    $lightness: -15.5%);
    $text-shadow-hover:   adjust-color($base-color, $hue:  5, $saturation: -5%,    $lightness: -22%);

    @if $grayscale == true {
      $base-color-hover:    grayscale($base-color-hover);
      $border-bottom:       grayscale($border-bottom);
      $border-sides:        grayscale($border-sides);
      $border-top:          grayscale($border-top);
      $inset-shadow-hover:  grayscale($inset-shadow-hover);
      $stop-gradient-hover: grayscale($stop-gradient-hover);
      $text-shadow-hover:   grayscale($text-shadow-hover);
    }

    @include linear-gradient ($base-color-hover, $stop-gradient-hover);

    background-clip: padding-box;
    border: 1px solid $border-top;
    border-color: $border-top $border-sides $border-bottom;
    box-shadow: inset 0 1px 0 0 $inset-shadow-hover;
    cursor: pointer;
    text-shadow: 0 -1px 1px $text-shadow-hover;
  }

  &:active:not(:disabled),
  &:focus:not(:disabled) {
    $active-color:         adjust-color($base-color, $hue: 4,  $saturation: -12%,  $lightness: -10%);
    $border-active:        adjust-color($base-color, $hue: 6,  $saturation: -2.5%, $lightness: -30%);
    $border-bottom-active: adjust-color($base-color, $hue: 11, $saturation:  6%,   $lightness: -31%);
    $inset-shadow-active:  adjust-color($base-color, $hue: 9,  $saturation:  2%,   $lightness: -21.5%);
    $text-shadow-active:   adjust-color($base-color, $hue: 5,  $saturation: -12%,  $lightness: -21.5%);

    @if $grayscale == true {
      $active-color:         grayscale($active-color);
      $border-active:        grayscale($border-active);
      $border-bottom-active: grayscale($border-bottom-active);
      $inset-shadow-active:  grayscale($inset-shadow-active);
      $text-shadow-active:   grayscale($text-shadow-active);
    }

    background: $active-color;
    border: 1px solid $border-active;
    border-bottom: 1px solid $border-bottom-active;
    box-shadow: inset 0 0 6px 3px $inset-shadow-active;
    text-shadow: 0 -1px 1px $text-shadow-active;
  }
}

// Flat Button
@mixin flat($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) {
  $color:         hsl(0, 0, 100%);

  @if is-light($base-color) {
    $color:       hsl(0, 0, 20%);
  }

  background-color: $base-color;
  border-radius: 3px;
  border: 0;
  color: $color;
  display: inline-block;
  font-size: $textsize;
  font-weight: bold;
  padding: $padding;
  text-decoration: none;
  background-clip: padding-box;

  &:hover:not(:disabled){
    $base-color-hover:    adjust-color($base-color, $saturation: 4%, $lightness: 5%);

    @if $grayscale == true {
      $base-color-hover: grayscale($base-color-hover);
    }

    background-color: $base-color-hover;
    cursor: pointer;
  }

  &:active:not(:disabled),
  &:focus:not(:disabled) {
    $base-color-active: adjust-color($base-color, $saturation: -4%, $lightness: -5%);

    @if $grayscale == true {
      $base-color-active: grayscale($base-color-active);
    }

    background-color: $base-color-active;
    cursor: pointer;
  }
}

// Flexible grid
@function flex-grid($columns, $container-columns: $fg-max-columns) {
  $width: $columns * $fg-column + ($columns - 1) * $fg-gutter;
  $container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter;
  @return percentage($width / $container-width);

  @warn "The flex-grid function is deprecated and will be removed in the next major version release";
}

// Flexible gutter
@function flex-gutter($container-columns: $fg-max-columns, $gutter: $fg-gutter) {
  $container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter;
  @return percentage($gutter / $container-width);

  @warn "The flex-gutter function is deprecated and will be removed in the next major version release";
}

@function grid-width($n) {
  @return $n * $gw-column + ($n - 1) * $gw-gutter;

  @warn "The grid-width function is deprecated and will be removed in the next major version release";
}

@function golden-ratio($value, $increment) {
  @return modular-scale($increment, $value, $ratio: $golden);

  @warn "The golden-ratio function is deprecated and will be removed in the next major version release. Please use the modular-scale function, instead.";
}

@mixin box-sizing($box) {
  @include prefixer(box-sizing, $box, webkit moz spec);

  @warn "The box-sizing mixin is deprecated and will be removed in the next major version release. This property can now be used un-prefixed.";
}


/* scss-combine:../../node_modules/bourbon-neat/app/assets/stylesheets/neat */
// Neat 1.8.0
// http://neat.bourbon.io
// Copyright 2012-2015 thoughtbot, inc.
// MIT License

// Helpers
/* scss-combine:neat-helpers */
// Mixins
/* scss-combine:mixins/clearfix */
@charset "UTF-8";

/// Provides an easy way to include a clearfix for containing floats.
///
/// @link http://goo.gl/yP5hiZ
///
/// @example scss
///   .element {
///     @include clearfix;
///   }
///
/// @example css
///   .element::after {
///     clear: both;
///     content: "";
///     display: block;
///   }

@mixin clearfix {
  &::after {
    clear: both;
    content: "";
    display: block;
  }
}


// Functions
/* scss-combine:functions/private */
// Not function for Libsass compatibility
// https://github.com/sass/libsass/issues/368
@function is-not($value) {
  @return if($value, false, true);
}

// Checks if a number is even
@function is-even($int) {
  @return $int % 2 == 0;
}

// Checks if an element belongs to a list or not
@function belongs-to($tested-item, $list) {
  @return is-not(not-belongs-to($tested-item, $list));
}

@function not-belongs-to($tested-item, $list) {
  @return is-not(index($list, $tested-item));
}

// Contains display value
@function contains-display-value($query) {
  @return belongs-to(table, $query)
       or belongs-to(block, $query)
       or belongs-to(inline-block, $query)
       or belongs-to(inline, $query);
}

// Parses the first argument of span-columns()
@function container-span($span: $span) {
  @if length($span) == 3 {
    $container-columns: nth($span, 3);
    @return $container-columns;
  } @else if length($span) == 2 {
    $container-columns: nth($span, 2);
    @return $container-columns;
  }

  @return $grid-columns;
}

@function container-shift($shift: $shift) {
  $parent-columns: $grid-columns !default !global;

  @if length($shift) == 3 {
    $container-columns: nth($shift, 3);
    @return $container-columns;
  } @else if length($shift) == 2 {
    $container-columns: nth($shift, 2);
    @return $container-columns;
  }

  @return $parent-columns;
}

// Generates a striped background
@function gradient-stops($grid-columns, $color: $visual-grid-color) {
  $transparent: transparent;

  $column-width: flex-grid(1, $grid-columns);
  $gutter-width: flex-gutter($grid-columns);
  $column-offset: $column-width;

  $values: ($transparent 0, $color 0);

  @for $i from 1 to $grid-columns*2 {
    @if is-even($i) {
      $values: append($values, $transparent $column-offset, comma);
      $values: append($values, $color $column-offset, comma);
      $column-offset: $column-offset + $column-width;
    } @else {
      $values: append($values, $color $column-offset, comma);
      $values: append($values, $transparent $column-offset, comma);
      $column-offset: $column-offset + $gutter-width;
    }
  }

  @return $values;
}

// Layout direction
@function get-direction($layout, $default) {
  $direction: null;

  @if to-upper-case($layout) == "LTR" or to-upper-case($layout) == "RTL" {
    $direction: direction-from-layout($layout);
  } @else {
    $direction: direction-from-layout($default);
  }

  @return $direction;
}

@function direction-from-layout($layout) {
  $direction: null;

  @if to-upper-case($layout) == "LTR" {
    $direction: right;
  } @else {
    $direction: left;
  }

  @return $direction;
}

@function get-opposite-direction($direction) {
  $opposite-direction: left;

  @if $direction == "left" {
    $opposite-direction: right;
  }

  @return $opposite-direction;
}

/* scss-combine:functions/new-breakpoint */
@charset "UTF-8";

/// Returns a media context (media query / grid context) that can be stored in a variable and passed to `media()` as a single-keyword argument. Media contexts defined using `new-breakpoint` are used by the visual grid, as long as they are defined before importing Neat.
///
/// @param {List} $query
///   A list of media query features and values. Each `$feature` should have a corresponding `$value`.
///
///   If there is only a single `$value` in `$query`, `$default-feature` is going to be used.
///
///   The number of total columns in the grid can be set by passing `$columns` at the end of the list (overrides `$total-columns`). For a list of valid values for `$feature`, click [here](http://www.w3.org/TR/css3-mediaqueries/#media1).
///
/// @param {Number (unitless)} $total-columns [$grid-columns]
///   - Number of columns to use in the new grid context. Can be set as a shorthand in the first parameter.
///
/// @example scss - Usage
///   $mobile: new-breakpoint(max-width 480px 4);
///
///   .element {
///     @include media($mobile) {
///       @include span-columns(4);
///     }
///   }
///
/// @example css - CSS Output
///   @media screen and (max-width: 480px) {
///     .element {
///       display: block;
///       float: left;
///       margin-right: 7.42297%;
///       width: 100%;
///     }
///     .element:last-child {
///       margin-right: 0;
///     }
///   }

@function new-breakpoint($query: $feature $value $columns, $total-columns: $grid-columns) {
  @if length($query) == 1 {
    $query: $default-feature nth($query, 1) $total-columns;
  } @else if is-even(length($query)) {
    $query: append($query, $total-columns);
  }

  @if is-not(belongs-to($query, $visual-grid-breakpoints)) {
    $visual-grid-breakpoints: append($visual-grid-breakpoints, $query, comma) !global;
  }

  @return $query;
}


// Settings
/* scss-combine:settings/grid */
@charset "UTF-8";

/// Sets the relative width of a single grid column. The unit used should be the same one used to define `$gutter`. Set with a `!global` flag.
///
/// @type Number (Unit)

$column: 4.2358em !default;

/// Sets the relative width of a single grid gutter. The unit used should be the same one used to define `$column`. Set with the `!global` flag.
///
/// @type Number (Unit)

$gutter: 1.618em !default;

/// Sets the total number of columns in the grid. Its value can be overridden inside a media query using the `media()` mixin. Set with the `!global` flag.
///
/// @type Number (Unitless)

$grid-columns: 12 !default;

/// Sets the max-width property of the element that includes `outer-container()`. Set with the `!global` flag.
///
/// @type Number (Unit)
///
$max-width: 1200px !default;

/// When set to true, it sets the box-sizing property of all elements to `border-box`. Set with a `!global` flag.
///
/// @type Bool
///
/// @example css - CSS Output
///   html {
///     box-sizing: border-box; }
///
///   *, *::after, *::before {
///     box-sizing: inherit;
///   }

$border-box-sizing: true !default;

/// Sets the default [media feature](http://www.w3.org/TR/css3-mediaqueries/#media) that `media()` and `new-breakpoint()` revert to when only a breakpoint value is passed. Set with a `!global` flag.
///
/// @type String

$default-feature: min-width; // Default @media feature for the breakpoint() mixin

///Sets the default layout direction of the grid. Can be `LTR` or `RTL`. Set with a `!global` flag.
///
///@type String

$default-layout-direction: LTR !default;

/* scss-combine:settings/visual-grid */
@charset "UTF-8";

/// Displays the visual grid when set to true. The overlaid grid may be few pixels off depending on the browser's rendering engine and pixel rounding algorithm. Set with the `!global` flag.
///
/// @type Bool

$visual-grid: false !default;

/// Sets the visual grid color. Set with `!global` flag.
///
/// @type Color

$visual-grid-color: #eee !default;

/// Sets the `z-index` property of the visual grid. Can be `back` (behind content) or `front` (in front of content). Set with `!global` flag.
///
/// @type String

$visual-grid-index: back !default;

/// Sets the opacity property of the visual grid. Set with `!global` flag.
///
/// @type Number (unitless)

$visual-grid-opacity: 0.4 !default;

$visual-grid-breakpoints: () !default;

/* scss-combine:settings/disable-warnings */
@charset "UTF-8";

/// Disable all deprecation warnings. Defaults to `false`. Set with a `!global` flag.
///
/// @type Bool

$disable-warnings: false !default;

@mixin -neat-warn($message) {
  @if $disable-warnings == false {
    @warn "#{$message}";
  }
}



// Grid
/* scss-combine:grid/private */
$parent-columns: $grid-columns !default;
$fg-column: $column;
$fg-gutter: $gutter;
$fg-max-columns: $grid-columns;
$container-display-table: false !default;
$layout-direction: LTR !default;

@function flex-grid($columns, $container-columns: $fg-max-columns) {
  $width: $columns * $fg-column + ($columns - 1) * $fg-gutter;
  $container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter;
  @return percentage($width / $container-width);
}

@function flex-gutter($container-columns: $fg-max-columns, $gutter: $fg-gutter) {
  $container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter;
  @return percentage($gutter / $container-width);
}

@function grid-width($n) {
  @return $n * $gw-column + ($n - 1) * $gw-gutter;
}

@function get-parent-columns($columns) {
  @if $columns != $grid-columns {
    $parent-columns: $columns !global;
  } @else {
    $parent-columns: $grid-columns !global;
  }

  @return $parent-columns;
}

@function is-display-table($container-is-display-table, $display) {
  @return $container-is-display-table == true or $display == table;
}

/* scss-combine:grid/box-sizing */
@charset "UTF-8";

@if $border-box-sizing == true {
  html { // http://bit.ly/1qk2tVR
    box-sizing: border-box;
  }

  * {
    &,
    &::after,
    &::before {
      box-sizing: inherit;
    }
  }
}

/* scss-combine:grid/omega */
@charset "UTF-8";

/// Removes the element's gutter margin, regardless of its position in the grid hierarchy or display property. It can target a specific element, or every `nth-child` occurrence. Works only with `block` layouts.
///
/// @param {List} $query [block]
///   List of arguments. Supported arguments are `nth-child` selectors (targets a specific pseudo element) and `auto` (targets `last-child`).
///
///   When passed an `nth-child` argument of type `*n` with `block` display, the omega mixin automatically adds a clear to the `*n+1` th element. Note that composite arguments such as `2n+1` do not support this feature.
///
///   **Deprecation warning**: The omega mixin will no longer take a `$direction` argument. To change the layout direction, use `row($direction)` or set `$default-layout-direction` instead.
///
/// @example scss - Usage
///   .element {
///     @include omega;
///   }
///
///   .nth-element {
///     @include omega(4n);
///   }
///
/// @example css - CSS Output
///   .element {
///     margin-right: 0;
///   }
///
///   .nth-element:nth-child(4n) {
///     margin-right: 0;
///   }
///
///   .nth-element:nth-child(4n+1) {
///     clear: left;
///   }

@mixin omega($query: block, $direction: default) {
  $table: belongs-to(table, $query);
  $auto: belongs-to(auto, $query);

  @if $direction != default {
    @include -neat-warn("The omega mixin will no longer take a $direction argument. To change the layout direction, use the direction(){...} mixin.");
  } @else {
    $direction: get-direction($layout-direction, $default-layout-direction);
  }

  @if $table {
    @include -neat-warn("The omega mixin no longer removes padding in table layouts.");
  }

  @if length($query) == 1 {
    @if $auto {
      &:last-child {
        margin-#{$direction}: 0;
      }
    }

    @else if contains-display-value($query) and $table == false {
      margin-#{$direction}: 0;
    }

    @else {
      @include nth-child($query, $direction);
    }
  } @else if length($query) == 2 {
    @if $auto {
      &:last-child {
        margin-#{$direction}: 0;
      }
    } @else {
      @include nth-child(nth($query, 1), $direction);
    }
  } @else {
    @include -neat-warn("Too many arguments passed to the omega() mixin.");
  }
}

@mixin nth-child($query, $direction) {
  $opposite-direction: get-opposite-direction($direction);

  &:nth-child(#{$query}) {
    margin-#{$direction}: 0;
  }

  @if type-of($query) == number and unit($query) == "n" {
    &:nth-child(#{$query}+1) {
      clear: $opposite-direction;
    }
  }
}

/* scss-combine:grid/outer-container */
@charset "UTF-8";

/// Makes an element a outer container by centering it in the viewport, clearing its floats, and setting its `max-width`.
/// Although optional, using `outer-container` is recommended. The mixin can be called on more than one element per page, as long as they are not nested.
///
/// @param {Number [unit]} $local-max-width [$max-width]
///   Max width to be applied to the element. Can be a percentage or a measure.
///
/// @example scss - Usage
///   .element {
///     @include outer-container(100%);
///   }
///
/// @example css - CSS Output
///   .element {
///     max-width: 100%;
///     margin-left: auto;
///     margin-right: auto;
///   }
///
///   .element::after {
///     clear: both;
///     content: "";
///     display: table;
///   }

@mixin outer-container($local-max-width: $max-width) {
  @include clearfix;
  max-width: $local-max-width;
  margin: {
    left: auto;
    right: auto;
  }
}

/* scss-combine:grid/span-columns */
@charset "UTF-8";

/// Specifies the number of columns an element should span. If the selector is nested the number of columns of its parent element should be passed as an argument as well.
///
/// @param {List} $span
///   A list containing `$columns`, the unitless number of columns the element spans (required), and `$container-columns`, the number of columns the parent element spans (optional).
///
///   If only one value is passed, it is assumed that it's `$columns` and that that `$container-columns` is equal to `$grid-columns`, the total number of columns in the grid.
///
///   The values can be separated with any string such as `of`, `/`, etc.
///
///   `$columns` also accepts decimals for when it's necessary to break out of the standard grid. E.g. Passing `2.4` in a standard 12 column grid will divide the row into 5 columns.
///
/// @param {String} $display [block]
///   Sets the display property of the element. By default it sets the display property of the element to `block`.
///
///   If passed `block-collapse`, it also removes the margin gutter by adding it to the element width.
///
///   If passed `table`, it sets the display property to `table-cell` and calculates the width of the element without taking gutters into consideration. The result does not align with the block-based grid.
///
/// @example scss - Usage
///   .element {
///     @include span-columns(6);
///
///    .nested-element {
///      @include span-columns(2 of 6);
///    }
///  }
///
/// @example css - CSS Output
///   .element {
///     display: block;
///     float: left;
///     margin-right: 2.35765%;
///     width: 48.82117%;
///   }
///
///   .element:last-child {
///     margin-right: 0;
///   }
///
///   .element .nested-element {
///     display: block;
///     float: left;
///     margin-right: 4.82916%;
///     width: 30.11389%;
///   }
///
///   .element .nested-element:last-child {
///     margin-right: 0;
///   }

@mixin span-columns($span: $columns of $container-columns, $display: block) {
  $columns: nth($span, 1);
  $container-columns: container-span($span);

  $parent-columns: get-parent-columns($container-columns) !global;

  $direction: get-direction($layout-direction, $default-layout-direction);
  $opposite-direction: get-opposite-direction($direction);

  $display-table: is-display-table($container-display-table, $display);

  @if $display-table  {
    display: table-cell;
    width: percentage($columns / $container-columns);
  } @else {
    float: #{$opposite-direction};

    @if $display != no-display {
      display: block;
    }

    @if $display == collapse {
      @include -neat-warn("The 'collapse' argument will be deprecated. Use 'block-collapse' instead.");
    }

    @if $display == collapse or $display == block-collapse {
      width: flex-grid($columns, $container-columns) + flex-gutter($container-columns);

      &:last-child {
        width: flex-grid($columns, $container-columns);
      }

    } @else {
      margin-#{$direction}: flex-gutter($container-columns);
      width: flex-grid($columns, $container-columns);

      &:last-child {
        margin-#{$direction}: 0;
      }
    }
  }
}

/* scss-combine:grid/row */
@charset "UTF-8";

/// Designates the element as a row of columns in the grid layout. It clears the floats on the element and sets its display property. Rows can't be nested, but there can be more than one row element—with different display properties—per layout.
///
/// @param {String} $display [default]
///  Sets the display property of the element and the display context that will be used by its children. Can be `block` or `table`.
///
/// @param {String} $direction [$default-layout-direction]
///  Sets the layout direction. Can be `LTR` (left-to-right) or `RTL` (right-to-left).
///
/// @example scss - Usage
///  .element {
///    @include row();
///  }
///
/// @example css - CSS Output
///  .element {
///    *zoom: 1;
///    display: block;
///  }
///
/// .element:before, .element:after {
///   content: " ";
///   display: table;
/// }
///
/// .element:after {
///   clear: both;
/// }

@mixin row($display: default, $direction: $default-layout-direction) {
  @if $direction != $default-layout-direction {
    @include -neat-warn("The $direction argument will be deprecated in future versions in favor of the direction(){...} mixin.");
  }

  $layout-direction: $direction !global;

  @if $display != default {
    @include -neat-warn("The $display argument will be deprecated in future versions in favor of the display(){...} mixin.");
  }

  @if $display == table {
    display: table;
    @include fill-parent;
    table-layout: fixed;
    $container-display-table: true !global;
  } @else {
    @include clearfix;
    display: block;
    $container-display-table: false !global;
  }
}

/* scss-combine:grid/shift */
@charset "UTF-8";

/// Translates an element horizontally by a number of columns. Positive arguments shift the element to the active layout direction, while negative ones shift it to the opposite direction.
///
/// @param {Number (unitless)} $n-columns [1]
///   Number of columns by which the element shifts.
///
/// @example scss - Usage
///   .element {
///     @include shift(-3);
///   }
///
/// @example css - CSS output
///   .element {
///     margin-left: -25.58941%;
///   }

@mixin shift($n-columns: 1) {
  @include shift-in-context($n-columns);
}

/// Translates an element horizontally by a number of columns, in a specific nesting context.
///
/// @param {List} $shift
///   A list containing the number of columns to shift (`$columns`) and the number of columns of the parent element (`$container-columns`).
///
///   The two values can be separated with any string such as `of`, `/`, etc.
///
/// @example scss - Usage
///   .element {
///     @include shift(-3 of 6);
///   }
///
/// @example css - CSS output
///   .element {
///     margin-left: -52.41458%;
///   }

@mixin shift-in-context($shift: $columns of $container-columns) {
  $n-columns: nth($shift, 1);
  $parent-columns: container-shift($shift) !global;

  $direction: get-direction($layout-direction, $default-layout-direction);
  $opposite-direction: get-opposite-direction($direction);

  margin-#{$opposite-direction}: $n-columns * flex-grid(1, $parent-columns) + $n-columns * flex-gutter($parent-columns);

  // Reset nesting context
  $parent-columns: $grid-columns !global;
}

/* scss-combine:grid/pad */
@charset "UTF-8";

/// Adds padding to the element.
///
/// @param {List} $padding [flex-gutter()]
///   A list of padding value(s) to use. Passing `default` in the list will result in using the gutter width as a padding value.
///
/// @example scss - Usage
///   .element {
///     @include pad(30px -20px 10px default);
///   }
///
/// @example css - CSS Output
///   .element {
///     padding: 30px -20px 10px 2.35765%;
///   }

@mixin pad($padding: flex-gutter()) {
  $padding-list: null;
  @each $value in $padding {
    $value: if($value == 'default', flex-gutter(), $value);
    $padding-list: join($padding-list, $value);
  }
  padding: $padding-list;
}

/* scss-combine:grid/fill-parent */
@charset "UTF-8";

/// Forces the element to fill its parent container.
///
/// @example scss - Usage
///   .element {
///     @include fill-parent;
///   }
///
/// @example css - CSS Output
///   .element {
///     width: 100%;
///     box-sizing: border-box;
///   }

@mixin fill-parent() {
  width: 100%;

  @if $border-box-sizing == false {
    box-sizing: border-box;
  }
}

/* scss-combine:grid/media */
@charset "UTF-8";

/// Outputs a media-query block with an optional grid context (the total number of columns used in the grid).
///
/// @param {List} $query
///   A list of media query features and values, where each `$feature` should have a corresponding `$value`.
///   For a list of valid values for `$feature`, click [here](http://www.w3.org/TR/css3-mediaqueries/#media1).
///
///   If there is only a single `$value` in `$query`, `$default-feature` is going to be used.
///
///   The number of total columns in the grid can be set by passing `$columns` at the end of the list (overrides `$total-columns`).
///
///
/// @param {Number (unitless)} $total-columns [$grid-columns]
///   - Number of columns to use in the new grid context. Can be set as a shorthand in the first parameter.
///
/// @example scss - Usage
///   .responsive-element {
///      @include media(769px) {
///        @include span-columns(6);
///      }
///   }
///
///  .new-context-element {
///    @include media(min-width 320px max-width 480px, 6) {
///      @include span-columns(6);
///    }
///  }
///
/// @example css - CSS Output
///  @media screen and (min-width: 769px) {
///    .responsive-element {
///      display: block;
///      float: left;
///      margin-right: 2.35765%;
///      width: 48.82117%;
///    }
///
///    .responsive-element:last-child {
///      margin-right: 0;
///    }
///  }
///
///  @media screen and (min-width: 320px) and (max-width: 480px) {
///    .new-context-element {
///      display: block;
///      float: left;
///      margin-right: 4.82916%;
///      width: 100%;
///    }
///
///    .new-context-element:last-child {
///      margin-right: 0;
///    }
///  }

@mixin media($query: $feature $value $columns, $total-columns: $grid-columns) {
  @if length($query) == 1 {
    @media screen and ($default-feature: nth($query, 1)) {
      $default-grid-columns: $grid-columns;
      $grid-columns: $total-columns !global;
      @content;
      $grid-columns: $default-grid-columns !global;
    }
  } @else {
    $loop-to: length($query);
    $media-query: "screen and ";
    $default-grid-columns: $grid-columns;
    $grid-columns: $total-columns !global;

    @if is-not(is-even(length($query))) {
      $grid-columns: nth($query, $loop-to) !global;
      $loop-to: $loop-to - 1;
    }

    $i: 1;
    @while $i <= $loop-to {
      $media-query: $media-query + "(" + nth($query, $i) + ": " + nth($query, $i + 1) + ") ";

      @if ($i + 1) != $loop-to {
        $media-query: $media-query + "and ";
      }

      $i: $i + 2;
    }

    @media #{$media-query} {
      @content;
      $grid-columns: $default-grid-columns !global;
    }
  }
}

/* scss-combine:grid/to-deprecate */
@charset "UTF-8";

@mixin breakpoint($query:$feature $value $columns, $total-columns: $grid-columns) {
  @include -neat-warn("The breakpoint() mixin was renamed to media() in Neat 1.0. Please update your project with the new syntax before the next version bump.");

  @if length($query) == 1 {
    @media screen and ($default-feature: nth($query, 1)) {
      $default-grid-columns: $grid-columns;
      $grid-columns: $total-columns;
      @content;
      $grid-columns: $default-grid-columns;
    }
  } @else if length($query) == 2 {
    @media screen and (nth($query, 1): nth($query, 2)) {
      $default-grid-columns: $grid-columns;
      $grid-columns: $total-columns;
      @content;
      $grid-columns: $default-grid-columns;
    }
  } @else if length($query) == 3 {
    @media screen and (nth($query, 1): nth($query, 2)) {
      $default-grid-columns: $grid-columns;
      $grid-columns: nth($query, 3);
      @content;
      $grid-columns: $default-grid-columns;
    }
  } @else if length($query) == 4 {
    @media screen and (nth($query, 1): nth($query, 2)) and (nth($query, 3): nth($query, 4)) {
      $default-grid-columns: $grid-columns;
      $grid-columns: $total-columns;
      @content;
      $grid-columns: $default-grid-columns;
    }
  } @else if length($query) == 5 {
    @media screen and (nth($query, 1): nth($query, 2)) and (nth($query, 3): nth($query, 4)) {
      $default-grid-columns: $grid-columns;
      $grid-columns: nth($query, 5);
      @content;
      $grid-columns: $default-grid-columns;
    }
  } @else {
    @include -neat-warn("Wrong number of arguments for breakpoint(). Read the documentation for more details.");
  }
}

@mixin nth-omega($nth, $display: block, $direction: default) {
  @include -neat-warn("The nth-omega() mixin is deprecated. Please use omega() instead.");
  @include omega($nth $display, $direction);
}

/// Resets the active display property to `block`. Particularly useful when changing the display property in a single row.
///
/// @example scss - Usage
///   .element {
///     @include row(table);
///     // Context changed to table display
///   }
///
///   @include reset-display;
///   // Context is reset to block display

@mixin reset-display {
  $container-display-table: false !global;
  @include -neat-warn("Resetting $display will be deprecated in future versions in favor of the display(){...} mixin.");
}

/// Resets the active layout direction to the default value set in `$default-layout-direction`. Particularly useful when changing the layout direction in a single row.
///
/// @example scss - Usage
///   .element {
///     @include row($direction: RTL);
///     // Context changed to right-to-left
///   }
///
///   @include reset-layout-direction;
///   // Context is reset to left-to-right

@mixin reset-layout-direction {
  $layout-direction: $default-layout-direction !global;
  @include -neat-warn("Resetting $direction will be deprecated in future versions in favor of the direction(){...} mixin.");
}

/// Resets both the active layout direction and the active display property.
///
/// @example scss - Usage
///   .element {
///     @include row(table, RTL);
///     // Context changed to table table and right-to-left
///   }
///
///   @include reset-all;
///   // Context is reset to block display and left-to-right

@mixin reset-all {
  @include reset-display;
  @include reset-layout-direction;
}

/* scss-combine:grid/visual-grid */
@charset "UTF-8";

@mixin grid-column-gradient($values...) {
  background-image: -webkit-linear-gradient(left, $values);
  background-image: -moz-linear-gradient(left, $values);
  background-image: -ms-linear-gradient(left, $values);
  background-image: -o-linear-gradient(left, $values);
  background-image: unquote("linear-gradient(to left, #{$values})");
}

@if $visual-grid == true or $visual-grid == yes {
  body:before {
    @include grid-column-gradient(gradient-stops($grid-columns));
    content: "";
    display: inline-block;
    height: 100%;
    left: 0;
    margin: 0 auto;
    max-width: $max-width;
    opacity: $visual-grid-opacity;
    pointer-events: none;
    position: fixed;
    right: 0;
    width: 100%;

    @if $visual-grid-index == back {
      z-index: -1;
    }

    @else if $visual-grid-index == front {
      z-index: 9999;
    }

    @each $breakpoint in $visual-grid-breakpoints {
      @if $breakpoint {
        @include media($breakpoint) {
          @include grid-column-gradient(gradient-stops($grid-columns));
        }
      }
    }
  }
}

/* scss-combine:grid/display-context */
@charset "UTF-8";

/// Changes the display property used by other mixins called in the code block argument.
///
/// @param {String} $display [block]
///   Display value to be used within the block. Can be `table` or `block`.
///
/// @example scss
///   @include display-context(table) {
///    .display-table {
///      @include span-columns(6);
///     }
///   }
///
/// @example css
///   .display-table {
///      display: table-cell;
///      ...
///   }

@mixin display-context($display: block) {
  $scope-display: $container-display-table;
  $container-display-table: $display == table !global;

  @content;

  $container-display-table: $scope-display !global;
}

/* scss-combine:grid/direction-context */
@charset "UTF-8";

/// Changes the direction property used by other mixins called in the code block argument.
///
/// @param {String} $direction [left-to-right]
///   Layout direction to be used within the block. Can be `left-to-right` or `right-to-left`.
///
/// @example scss - Usage
///   @include direction-context(right-to-left) {
///    .right-to-left-block {
///      @include span-columns(6);
///     }
///   }
///
/// @example css - CSS Output
///   .right-to-left-block {
///     float: right;
///      ...
///   }

@mixin direction-context($direction: left-to-right) {
  $scope-direction: $layout-direction;

  @if to-lower-case($direction) == "left-to-right" {
    $layout-direction: LTR !global;
  } @else if to-lower-case($direction) == "right-to-left" {
    $layout-direction: RTL !global;
  }

  @content;

  $layout-direction: $scope-direction !global;
}


/* scss-combine:../../node_modules/bourbon-neat/app/assets/stylesheets/neat-helpers */
// Mixins
/* scss-combine:mixins/clearfix */
@charset "UTF-8";

/// Provides an easy way to include a clearfix for containing floats.
///
/// @link http://goo.gl/yP5hiZ
///
/// @example scss
///   .element {
///     @include clearfix;
///   }
///
/// @example css
///   .element::after {
///     clear: both;
///     content: "";
///     display: block;
///   }

@mixin clearfix {
  &::after {
    clear: both;
    content: "";
    display: block;
  }
}


// Functions
/* scss-combine:functions/private */
// Not function for Libsass compatibility
// https://github.com/sass/libsass/issues/368
@function is-not($value) {
  @return if($value, false, true);
}

// Checks if a number is even
@function is-even($int) {
  @return $int % 2 == 0;
}

// Checks if an element belongs to a list or not
@function belongs-to($tested-item, $list) {
  @return is-not(not-belongs-to($tested-item, $list));
}

@function not-belongs-to($tested-item, $list) {
  @return is-not(index($list, $tested-item));
}

// Contains display value
@function contains-display-value($query) {
  @return belongs-to(table, $query)
       or belongs-to(block, $query)
       or belongs-to(inline-block, $query)
       or belongs-to(inline, $query);
}

// Parses the first argument of span-columns()
@function container-span($span: $span) {
  @if length($span) == 3 {
    $container-columns: nth($span, 3);
    @return $container-columns;
  } @else if length($span) == 2 {
    $container-columns: nth($span, 2);
    @return $container-columns;
  }

  @return $grid-columns;
}

@function container-shift($shift: $shift) {
  $parent-columns: $grid-columns !default !global;

  @if length($shift) == 3 {
    $container-columns: nth($shift, 3);
    @return $container-columns;
  } @else if length($shift) == 2 {
    $container-columns: nth($shift, 2);
    @return $container-columns;
  }

  @return $parent-columns;
}

// Generates a striped background
@function gradient-stops($grid-columns, $color: $visual-grid-color) {
  $transparent: transparent;

  $column-width: flex-grid(1, $grid-columns);
  $gutter-width: flex-gutter($grid-columns);
  $column-offset: $column-width;

  $values: ($transparent 0, $color 0);

  @for $i from 1 to $grid-columns*2 {
    @if is-even($i) {
      $values: append($values, $transparent $column-offset, comma);
      $values: append($values, $color $column-offset, comma);
      $column-offset: $column-offset + $column-width;
    } @else {
      $values: append($values, $color $column-offset, comma);
      $values: append($values, $transparent $column-offset, comma);
      $column-offset: $column-offset + $gutter-width;
    }
  }

  @return $values;
}

// Layout direction
@function get-direction($layout, $default) {
  $direction: null;

  @if to-upper-case($layout) == "LTR" or to-upper-case($layout) == "RTL" {
    $direction: direction-from-layout($layout);
  } @else {
    $direction: direction-from-layout($default);
  }

  @return $direction;
}

@function direction-from-layout($layout) {
  $direction: null;

  @if to-upper-case($layout) == "LTR" {
    $direction: right;
  } @else {
    $direction: left;
  }

  @return $direction;
}

@function get-opposite-direction($direction) {
  $opposite-direction: left;

  @if $direction == "left" {
    $opposite-direction: right;
  }

  @return $opposite-direction;
}

/* scss-combine:functions/new-breakpoint */
@charset "UTF-8";

/// Returns a media context (media query / grid context) that can be stored in a variable and passed to `media()` as a single-keyword argument. Media contexts defined using `new-breakpoint` are used by the visual grid, as long as they are defined before importing Neat.
///
/// @param {List} $query
///   A list of media query features and values. Each `$feature` should have a corresponding `$value`.
///
///   If there is only a single `$value` in `$query`, `$default-feature` is going to be used.
///
///   The number of total columns in the grid can be set by passing `$columns` at the end of the list (overrides `$total-columns`). For a list of valid values for `$feature`, click [here](http://www.w3.org/TR/css3-mediaqueries/#media1).
///
/// @param {Number (unitless)} $total-columns [$grid-columns]
///   - Number of columns to use in the new grid context. Can be set as a shorthand in the first parameter.
///
/// @example scss - Usage
///   $mobile: new-breakpoint(max-width 480px 4);
///
///   .element {
///     @include media($mobile) {
///       @include span-columns(4);
///     }
///   }
///
/// @example css - CSS Output
///   @media screen and (max-width: 480px) {
///     .element {
///       display: block;
///       float: left;
///       margin-right: 7.42297%;
///       width: 100%;
///     }
///     .element:last-child {
///       margin-right: 0;
///     }
///   }

@function new-breakpoint($query: $feature $value $columns, $total-columns: $grid-columns) {
  @if length($query) == 1 {
    $query: $default-feature nth($query, 1) $total-columns;
  } @else if is-even(length($query)) {
    $query: append($query, $total-columns);
  }

  @if is-not(belongs-to($query, $visual-grid-breakpoints)) {
    $visual-grid-breakpoints: append($visual-grid-breakpoints, $query, comma) !global;
  }

  @return $query;
}


// Settings
/* scss-combine:settings/grid */
@charset "UTF-8";

/// Sets the relative width of a single grid column. The unit used should be the same one used to define `$gutter`. Set with a `!global` flag.
///
/// @type Number (Unit)

$column: 4.2358em !default;

/// Sets the relative width of a single grid gutter. The unit used should be the same one used to define `$column`. Set with the `!global` flag.
///
/// @type Number (Unit)

$gutter: 1.618em !default;

/// Sets the total number of columns in the grid. Its value can be overridden inside a media query using the `media()` mixin. Set with the `!global` flag.
///
/// @type Number (Unitless)

$grid-columns: 12 !default;

/// Sets the max-width property of the element that includes `outer-container()`. Set with the `!global` flag.
///
/// @type Number (Unit)
///
$max-width: 1200px !default;

/// When set to true, it sets the box-sizing property of all elements to `border-box`. Set with a `!global` flag.
///
/// @type Bool
///
/// @example css - CSS Output
///   html {
///     box-sizing: border-box; }
///
///   *, *::after, *::before {
///     box-sizing: inherit;
///   }

$border-box-sizing: true !default;

/// Sets the default [media feature](http://www.w3.org/TR/css3-mediaqueries/#media) that `media()` and `new-breakpoint()` revert to when only a breakpoint value is passed. Set with a `!global` flag.
///
/// @type String

$default-feature: min-width; // Default @media feature for the breakpoint() mixin

///Sets the default layout direction of the grid. Can be `LTR` or `RTL`. Set with a `!global` flag.
///
///@type String

$default-layout-direction: LTR !default;

/* scss-combine:settings/visual-grid */
@charset "UTF-8";

/// Displays the visual grid when set to true. The overlaid grid may be few pixels off depending on the browser's rendering engine and pixel rounding algorithm. Set with the `!global` flag.
///
/// @type Bool

$visual-grid: false !default;

/// Sets the visual grid color. Set with `!global` flag.
///
/// @type Color

$visual-grid-color: #eee !default;

/// Sets the `z-index` property of the visual grid. Can be `back` (behind content) or `front` (in front of content). Set with `!global` flag.
///
/// @type String

$visual-grid-index: back !default;

/// Sets the opacity property of the visual grid. Set with `!global` flag.
///
/// @type Number (unitless)

$visual-grid-opacity: 0.4 !default;

$visual-grid-breakpoints: () !default;

/* scss-combine:settings/disable-warnings */
@charset "UTF-8";

/// Disable all deprecation warnings. Defaults to `false`. Set with a `!global` flag.
///
/// @type Bool

$disable-warnings: false !default;

@mixin -neat-warn($message) {
  @if $disable-warnings == false {
    @warn "#{$message}";
  }
}


/* scss-combine:../../node_modules/hmps-animate.scss/animate */
@charset "UTF-8";
//-----------------------------------------------------------------------//
// ANIMATE.SCSS
//
// With animate.scss you can create beatiful and engaging animation without
// barely touching any code. Just include a mixin and your good to go!

// DOCUMENATION:
// Check out the GitHub repo for docs on how to use animate.scss
//
// CREDIT:
// @daneden for the original concept in animate.css
// @jackilyn for the scss port of Daniel's work
//
// LICENSE:
// WFTPL - http://www.wtfpl.net/
//
// Version: 1.0.1
//-----------------------------------------------------------------------//

//-----------------------------------------------------------------------//
// This is the main file for animate.scss. All partials and helpers will
// be pulled into this file by the code below. If you want to decrease
// the size of this file you can comment out sections below, but remember
// that due to the nature of mixins it won't hurt your actual performance
// to leave it all in here!
//
// So, without further ado, let's get started!
//-----------------------------------------------------------------------//

//-----------------------------------------------------------------------//
// VARIABLES
//
// First, we'll set up some sensible defaults for the helper functions.
// These are prefixed global- to separate them from the variables used
// in each mixin.
//-----------------------------------------------------------------------//

$global-duration: 		1s 		!default;
$global-function: 		ease 	!default;
$global-delay: 			.2s 	!default;
$global-count:			1 		!default;
$global-fill: 			both 	!default;
$global-visibility: 	hidden 	!default;

$prefixes: (webkit moz ms o spec);

$prefix-for-webkit:		true !default;
$prefix-for-mozilla:	true !default;
$prefix-for-microsoft:	true !default;
$prefix-for-opera:		true !default;
$prefix-for-spec:		true !default; // required for keyframe mixin

//-----------------------------------------------------------------------//
// HELPERS
// These are functions that are called from the mixins to setup stuff
// like duration, fill-mode etc.
//-----------------------------------------------------------------------//

/* scss-combine:partials/helpers */
//-----------------------------------------------------------------------//
// HELPERS
//
// These are functions that are called from the mixins to setup stuff
// like duration, fill-mode etc.
//
// Credit to @jackilyn who first drafted these over at
// https://github.com/jackilyn/animate.scss
//-----------------------------------------------------------------------//

@mixin animation($animations...) {
	@include prefixer(animation, $animations, webkit moz spec);
}

//-----------------------------------------------------------------------//
// @animation-name	Sets the animation name. Required
//-----------------------------------------------------------------------//
@mixin animation-name($animation-name) {
	@include prefixer(animation-name, $animation-name, $prefixes);
}

//-----------------------------------------------------------------------//
// @duration		Specifies how many seconds or milliseconds an animation takes
//							to complete one cycle. Default 0
//-----------------------------------------------------------------------//
@mixin duration($duration: 1s) {
	@include prefixer(animation-duration, $duration, $prefixes);
}

//-----------------------------------------------------------------------//
// @delay				Specifies when the animation will start. Default 0
//-----------------------------------------------------------------------//
@mixin delay($delay: .2s) {
	@include prefixer(animation-delay, $delay, $prefixes);
}

//-----------------------------------------------------------------------//
// @function		Describes how the animation will progress over one cycle of its
//							duration. Default "ease"
//-----------------------------------------------------------------------//
@mixin function($function: ease) {
	@include prefixer(animation-timing-function, $function, $prefixes);
}

//-----------------------------------------------------------------------//
// @count				Specifies the number of times an animation is played. Default 1
//							This basically isn't supported anywhere right now but its still
//							in here for future use.
//-----------------------------------------------------------------------//
@mixin count($count: 1) {
	animation-iteration-count: 1;
}

//-----------------------------------------------------------------------//
// @fill-mode		Specifies whether the effects of an animation are apparent
//							before the animation starts and after it ends.
//-----------------------------------------------------------------------//
@mixin fill-mode($fill: both) {
	@include prefixer(animation-fill-mode, $fill, $prefixes);
}

//-----------------------------------------------------------------------//
// @visibility	Determines whether or not a transformed element is visible when
// 							it is not facing the screen.
//-----------------------------------------------------------------------//
@mixin visibility($visibility: hidden) {
	@include prefixer(animation-backface-visibility, $visibility, $prefixes);
}

//-----------------------------------------------------------------------//
// @transform	Sets the tranform property
//-----------------------------------------------------------------------//
@mixin transform($property: none) {
	@include prefixer(transform, $property, $prefixes);
}

//-----------------------------------------------------------------------//
// @transform-origin	Sets the origin for 3d-animations
//-----------------------------------------------------------------------//
@mixin transform-origin($transform-origin: center center) {
	@include prefixer(transform-origin, $transform-origin, $prefixes);
}

//-----------------------------------------------------------------------//
// @transform-style
//-----------------------------------------------------------------------//
@mixin transform-style($transform-style: flat) {
	@include prefixer(transform-style, $transform-style, $prefixes);
}

//-----------------------------------------------------------------------//
// @keyframes
//-----------------------------------------------------------------------//

@mixin keyframes($name) {
	$original-prefix-for-webkit:		$prefix-for-webkit;
	$original-prefix-for-mozilla:		$prefix-for-mozilla;
	$original-prefix-for-microsoft:	$prefix-for-microsoft;
	$original-prefix-for-opera:			$prefix-for-opera;
	$original-prefix-for-spec:			$prefix-for-spec;

	@if $original-prefix-for-webkit {
		@include disable-prefix-for-all();
		$prefix-for-webkit: true !global;
		@-webkit-keyframes #{$name} {
			@content;
		}
	}
	@if $original-prefix-for-mozilla {
		@include disable-prefix-for-all();
		$prefix-for-mozilla: true !global;
		@-moz-keyframes #{$name} {
			@content;
		}
	}
	@if $original-prefix-for-opera {
		@include disable-prefix-for-all();
		$prefix-for-opera: true !global;
		@-o-keyframes #{$name} {
			@content;
		}
	}

	@if $original-prefix-for-spec {
		@include disable-prefix-for-all();
		// Newish Blink browsers recognize the unprefixed @keyframe but still needs the -webkit prefix for transitions
		$prefix-for-webkit: true !global;
		$prefix-for-spec: true !global;
		@keyframes #{$name} {
			@content;
		}
	}

	$prefix-for-webkit:			$original-prefix-for-webkit !global;
	$prefix-for-mozilla:		$original-prefix-for-mozilla !global;
	$prefix-for-microsoft:	$original-prefix-for-microsoft !global;
	$prefix-for-opera:			$original-prefix-for-opera !global;
	$prefix-for-spec:				$original-prefix-for-spec !global;
}

@mixin prefixer ($property, $value, $prefixes) {
	@each $prefix in $prefixes {
		@if $prefix == webkit {
			@if $prefix-for-webkit {
				-webkit-#{$property}: $value;
			}
		}
		@else if $prefix == moz {
			@if $prefix-for-mozilla {
				-moz-#{$property}: $value;
			}
		}
		@else if $prefix == ms {
			@if $prefix-for-microsoft {
				-ms-#{$property}: $value;
			}
		}
		@else if $prefix == o {
			@if $prefix-for-opera {
				-o-#{$property}: $value;
			}
		}
		@else if $prefix == spec {
			@if $prefix-for-spec {
				#{$property}: $value;
			}
		}
		@else  {
			@warn "Unrecognized prefix: #{$prefix}";
		}
	}
}

@mixin disable-prefix-for-all() {
	$prefix-for-webkit:    false !global;
	$prefix-for-mozilla:   false !global;
	$prefix-for-microsoft: false !global;
	$prefix-for-opera:     false !global;
	$prefix-for-spec:      false !global;
}

// There's a small bug in webkit that requires a CSS3 property to be set on an element.
// Read more about it at http://bit.ly/NEdoDq
body {
	-webkit-backface-visibility: hidden;
}

//-----------------------------------------------------------------------//
// NUTS 'N BOLTS
// These are the partials that contain the actual mixins.
//-----------------------------------------------------------------------//

/* scss-combine:partials/bounce */
@mixin bounce($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(bounce $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(bounce) {
			0%, 20%, 50%, 80%, 100% {
				@include transform(translateY(0px));
			}
			40% {
				@include transform(translateY(-30px));
			}
			60% {
				@include transform(translateY(-15px));
			}
		}
	}
}

/* scss-combine:partials/bounceIn */
@mixin bounceIn($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(bounceIn $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(bounceIn) {
				0% {
						opacity: 0;
						@include transform(scale(.3));
				}
				50% {
						opacity: 1;
						@include transform(scale(1.05));
				}
				70% {
						@include transform(scale(.9));
				}
				100% {
						@include transform(scale(1));
				}
		}
	}
}
/* scss-combine:partials/bounceInDown */
@mixin bounceInDown($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(bounceInDown $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(bounceInDown) {
			0% {
				opacity: 0;
				@include transform(translateY(-2000px));
			}
			60% {
				opacity: 1;
				@include transform(translateY(30px));
			}
			80% {
				@include transform(translateY(-10px));
			}
			100% {
				@include transform(translateY(0px));
			}
		}
	}
}
/* scss-combine:partials/bounceInLeft */
@mixin bounceInLeft($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(bounceInLeft $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(bounceInLeft) {
			0% {
				opacity: 0;
				@include transform(translateX(-2000px));
			}
			60% {
				opacity: 1;
				@include transform(translateX(30px));
			}
			80% {
				@include transform(translateX(-10px));
			}
			100% {
				@include transform(translateX(0));
			}
		}
	}
}
/* scss-combine:partials/bounceInRight */
@mixin bounceInRight($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(bounceInRight $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(bounceInRight) {
			0% {
				opacity: 0;
				@include transform(translateX(2000px));
			}
			60% {
				opacity: 1;
				@include transform(translateX(-30px));
			}
			80% {
				@include transform(translateX(10px));
			}
			100% {
				@include transform(translateX(0));
			}
		}
	}
}
/* scss-combine:partials/bounceInUp */
@mixin bounceInUp($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(bounceInUp $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(bounceInUp) {
			0% {
				opacity: 0;
				@include transform(translateY(2000px));
			}
			60% {
				opacity: 1;
				@include transform(translateY(-30px));
			}
			80% {
				@include transform(translateY(10px));
			}
			100% {
				@include transform(translateY(0px));
			}
		}
	}
}

/* scss-combine:partials/bounceOut */
@mixin bounceOut($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(bounceOut $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(bounceOut) {
			0% {
				@include transform(scale(1));
			}
			25% {
				@include transform(scale(.95));
			}
			50% {
				opacity: 1;
				@include transform(scale(1.1));
			}
			100% {
				opacity: 0;
				@include transform(scale(.3));
			}
		}
	}
}
/* scss-combine:partials/bounceOutDown */
@mixin bounceOutDown($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(bounceOutDown $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(bounceOutDown) {
			0% {
				@include transform(translateY(0));
			}
			20% {
				opacity: 1;
				@include transform(translateY(-20px));
			}
			100% {
				opacity: 0;
				@include transform(translateY(2000px));
			}
		}
	}
}
/* scss-combine:partials/bounceOutLeft */
@mixin bounceOutLeft($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(bounceOutLeft $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(bounceOutLeft) {
			0% {
				@include transform(translateX(0));
			}
			20% {
				opacity: 1;
				@include transform(translateX(20px));
			}
			100% {
				opacity: 0;
				@include transform(translateX(-2000px));
			}
		}
	}
}
/* scss-combine:partials/bounceOutRight */
@mixin bounceOutRight($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(bounceOutRight $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(bounceOutRight) {
			0% {
				@include transform(translateX(0));
			}
			20% {
				opacity: 1;
				@include transform(translateX(-20px));
			}
			100% {
				opacity: 0;
				@include transform(translateX(2000px));
			}
		}
	}
}
/* scss-combine:partials/bounceOutUp */
@mixin bounceOutUp($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(bounceOutUp $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(bounceOutUp) {
			0% {
				@include transform(translateY(0));
			}
			20% {
				opacity: 1;
				@include transform(translateY(20px));
			}
			100% {
				opacity: 0;
				@include transform(translateY(-2000px));
			}
		}
	}
}

/* scss-combine:partials/fadeIn */
@mixin fadeIn($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(fadeIn $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(fadeIn) {
			0% {opacity: 0;}
			100% {opacity: 1;}
		}
	}
}
/* scss-combine:partials/fadeInDown */
@mixin fadeInDown($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(fadeInDown $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(fadeInDown) {
			0% {
				opacity: 0;
				@include transform(translateY(-20px));
			}
			100% {
				opacity: 1;
				@include transform(translateY(0));
			}
		}
	}
}
/* scss-combine:partials/fadeInDownBig */
@mixin fadeInDownBig($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(fadeInDownBig $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(fadeInDownBig) {
			0% {
				opacity: 0;
				@include transform(translateY(-2000px));
			}
			100% {
				opacity: 1;
				@include transform(translateY(0));
			}
		}
	}
}
/* scss-combine:partials/fadeInLeft */
@mixin fadeInLeft($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(fadeInLeft $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(fadeInLeft) {
			0% {
				opacity: 0;
				@include transform(translateX(-20px));
			}
			100% {
				opacity: 1;
				@include transform(translateX(0));
			}
		}
	}
}
/* scss-combine:partials/fadeInLeftBig */
@mixin fadeInLeftBig($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(fadeInLeftBig $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(fadeInLeftBig) {
			0% {
				opacity: 0;
				@include transform(translateX(-2000px));
			}
			100% {
				opacity: 1;
				@include transform(translateX(0));
			}
		}
	}
}
/* scss-combine:partials/fadeInRight */
@mixin fadeInRight($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(fadeInRight $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(fadeInRight) {
			0% {
				opacity: 0;
				@include transform(translateX(20px));
			}
			100% {
				opacity: 1;
				@include transform(translateX(0));
			}
		}
	}
}
/* scss-combine:partials/fadeInRightBig */
@mixin fadeInRightBig($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(fadeInRightBig $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(fadeInRightBig) {
			0% {
				opacity: 0;
				@include transform(translateX(2000px));
			}
			100% {
				opacity: 1;
				@include transform(translateX(0));
			}
		}
	}
}
/* scss-combine:partials/fadeInUp */
@mixin fadeInUp($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(fadeInUp $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(fadeInUp) {
			0% {
				opacity: 0;
				@include transform(translateY(20px));
			}
			100% {
				opacity: 1;
				@include transform(translateY(0));
			}
		}
	}
}
/* scss-combine:partials/fadeInUpBig */
@mixin fadeInUpBig($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(fadeInUpBig $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(fadeInUpBig) {
			0% {
				opacity: 0;
				@include transform(translateY(2000px));
			}
			100% {
				opacity: 1;
				@include transform(translateY(0));
			}
		}
	}
}

/* scss-combine:partials/fadeOut */
@mixin fadeOut($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(fadeOut $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(fadeOut) {
			0% {opacity: 1;}
			100% {opacity: 0;}
		}
	}
}
/* scss-combine:partials/fadeOutDown */
@mixin fadeOutDown($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(fadeOutDown $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(fadeOutDown) {
			0% {
				opacity: 1;
				@include transform(translateY(0));
			}
			100% {
				opacity: 0;
				@include transform(translateY(20px));
			}
		}
	}
}
/* scss-combine:partials/fadeOutDownBig */
@mixin fadeOutDownBig($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(fadeOutDownBig $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(fadeOutDownBig) {
			0% {
				opacity: 1;
				@include transform(translateY(0));
			}
			100% {
				opacity: 0;
				@include transform(translateY(2000px));
			}
		}
	}
}
/* scss-combine:partials/fadeOutUp */
@mixin fadeOutUp($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(fadeOutUp $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(fadeOutUp) {
			0% {
				opacity: 1;
				@include transform(translateY(0));
			}
			100% {
				opacity: 0;
				@include transform(translateY(-20px));
			}
		}
	}
}
/* scss-combine:partials/fadeOutUpBig */
@mixin fadeOutUpBig($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(fadeOutUpBig $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(fadeOutUpBig) {
			0% {
				opacity: 1;
				@include transform(translateY(0));
			}
			100% {
				opacity: 0;
				@include transform(translateY(-2000px));
			}
		}
	}
}
/* scss-combine:partials/fadeOutLeft */
@mixin fadeOutLeft($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(fadeOutLeft $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(fadeOutLeft) {
			0% {
				opacity: 0;
				@include transform(translateX(0));
			}
			100% {
				opacity: 1;
				@include transform(translateX(-20px));
			}
		}
	}
}
/* scss-combine:partials/fadeOutLeftBig */
@mixin fadeOutLeftBig($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(fadeOutLeftBig $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(fadeOutLeftBig) {
			0% {
				opacity: 0;
				@include transform(translateX(0));
			}
			100% {
				opacity: 1;
				@include transform(translateX(-2000px));
			}
		}
	}
}
/* scss-combine:partials/fadeOutRight */
@mixin fadeOutRight($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(fadeOutRight $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(fadeOutRight) {
			0% {
				opacity: 0;
				@include transform(translateX(0));
			}
			100% {
				opacity: 1;
				@include transform(translateX(20px));
			}
		}
	}
}
/* scss-combine:partials/fadeOutRightBig */
@mixin fadeOutRightBig($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(fadeOutRightBig $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(fadeOutRightBig) {
			0% {
				opacity: 0;
				@include transform(translateX(0));
			}
			100% {
				opacity: 1;
				@include transform(translateX(2000px));
			}
		}
	}
}

/* scss-combine:partials/flip */
@mixin flip($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include transform-style(preserve-3d);
	@include animation(flip $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(flip) {
			0% {
				@include transform(perspective(400px) rotateY(0));
				animation-timing-function: ease-out;
			}
			40% {
				@include transform(perspective(400px) translateZ(150px) rotateY(170deg));
				animation-timing-function: ease-out;
			}
			50% {
				@include transform(perspective(400px) translateZ(150px) rotateY(190deg) scale(1));
				animation-timing-function: ease-in;
			}
			80% {
				@include transform(perspective(400px) rotateY(360deg) scale(.95));
				animation-timing-function: ease-in;
			}
			100% {
				@include transform(perspective(400px) scale(1));
				animation-timing-function: ease-in;
			}
		}
	}
}

/* scss-combine:partials/flipInX */
@mixin flipInX($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(flipInX $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(flipInX) {
			0% {
				@include transform(perspective(400px) rotateX(90deg));
				opacity: 0;
			}
			40% {
				@include transform(perspective(400px) rotateX(-10deg));
				animation-timing-function: ease-out;
			}
			70% {
				@include transform(perspective(400px) rotateX(10deg));
				animation-timing-function: ease-in;
				opacity: 1;
			}
			100% {
				@include transform(perspective(400px) rotateX(0deg));
			}
		}
	}
}
/* scss-combine:partials/flipInY */
@mixin flipInY($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(flipInY $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(flipInY) {
			0% {
				@include transform(perspective(400px) rotateY(90deg));
				opacity: 0;
			}
			40% {
				@include transform(perspective(400px) rotateY(-10deg));
				animation-timing-function: ease-out;
			}
			70% {
				@include transform(perspective(400px) rotateY(10deg));
				animation-timing-function: ease-in;
				opacity: 1;
			}
			100% {
				@include transform(perspective(400px) rotateY(0deg));
			}
		}
	}
}
/* scss-combine:partials/flipOutX */
@mixin flipOutX($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(flipOutX $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(flipOutX) {
			0% {
				@include transform(perspective(400px) rotateX(0deg));
				opacity: 1;
			}
			100% {
				@include transform(perspective(400px) rotateX(90deg));
				opacity: 0;
			}
		}
	}
}
/* scss-combine:partials/flipOutY */
@mixin flipOutY($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(flipOutY $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(flipOutY) {
			0% {
				@include transform(perspective(400px) rotateY(0deg));
				opacity: 1;
			}
			100% {
				@include transform(perspective(400px) rotateY(90deg));
				opacity: 0;
			}
		}
	}
}

/* scss-combine:partials/hingeLeft */
@mixin hingeLeft($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(hingeLeft $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(hingeLeft) {
			0% {
				@include transform(rotate(0));
				@include transform-origin(top left);
				animation-timing-function: ease-in-out;
			}
			20%, 60% {
				@include transform(rotate(80deg));
				@include transform-origin(top left);
				animation-timing-function: ease-in-out;
			}
			40% {
				@include transform(rotate(60deg));
				@include transform-origin(top left);
				animation-timing-function: ease-in-out;
			}
			80% {
				@include transform(rotate(60deg) translateY(0));
				opacity: 1;
				@include transform-origin(top left);
				animation-timing-function: ease-in-out;
			}
			100% {
				@include transform(translateY(700px));
				opacity: 0;
			}
		}
	}
}
/* scss-combine:partials/hingeRight */
@mixin hingeRight($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(hingeRight $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(hingeRight) {
			0% {
				@include transform(rotate(0));
				@include transform-origin(top right);
				animation-timing-function: ease-in-out;
			}
			20%, 60% {
				@include transform(rotate(-80deg));
				@include transform-origin(top right);
				animation-timing-function: ease-in-out;
			}
			40% {
				@include transform(rotate(-60deg));
				@include transform-origin(top right);
				animation-timing-function: ease-in-out;
			}
			80% {
				@include transform(rotate(-60deg) translateY(0));
				opacity: 1;
				@include transform-origin(top right);
				animation-timing-function: ease-in-out;
			}
			100% {
				@include transform(translateY(700px));
				opacity: 0;
			}
		}
	}
}

/* scss-combine:partials/lightSpeedIn */
@mixin lightSpeedIn($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(lightSpeedIn $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(lightSpeedIn) {
			0% {
				@include transform(translateX(2000px) skewX(-30deg));
				opacity: 0;
			}
			60% {
				@include transform(translateX(-50px) skewX(30deg));
				opacity: 1;
			}
			80% {
				@include transform(translateX(0) skewX(-15deg));
			}
			100% {
				@include transform(translateX(0) skewX(0deg));
			}
		}
	}
}
/* scss-combine:partials/lightSpeedOut */
@mixin lightSpeedOut($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(lightSpeedOut $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(lightSpeedOut) {
			0% {
				@include transform(translateX(0) skewX(0));
				opacity: 1;
			}
			100% {
				@include transform(translateX(2000px) skewX(30deg));
				opacity: 0;
			}
		}
	}
}

/* scss-combine:partials/pulse */
@mixin pulse($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(pulse $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(pulse) {
			0% {
				@include transform(scale(1));
			}
			50% {
				@include transform(scale(1.1));
			}
			100% {
				@include transform(scale(1));
			}
		}
	}
}

/* scss-combine:partials/rollIn */
@mixin rollIn($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(rollIn $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(rollIn) {
			0% {
				opacity: 0;
				@include transform(translateX(-100%) rotate(-120deg));
			}
			100% {
				opacity: 1;
				@include transform(translateX(0px) rotate(0deg));
			}
		}
	}
}
/* scss-combine:partials/rollOut */
@mixin rollOut($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(rollOut $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(rollOut) {
			0% {
				opacity: 1;
				@include transform(translateX(0) rotate(0));
			}
			100% {
				opacity: 0;
				@include transform(translateX(-100%) rotate(-120deg));
			}
		}
	}
}

/* scss-combine:partials/rotateIn */
@mixin rotateIn($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(rotateIn $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(rotateIn) {
			0% {
				@include transform(rotate(-200deg));
				opacity: 0;
			}
			100% {
				@include transform(rotate(0));
				opacity: 1;
			}
		}
	}
}
/* scss-combine:partials/rotateInDownLeft */
@mixin rotateInDownLeft($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(rotateInDownLeft $duration $function $delay $count $fill);
	@include transform-origin(left bottom);
	@include visibility($visibility);

	@at-root {
		@include keyframes(rotateInDownLeft) {
			0% {
				@include transform(rotate(-90deg));
				opacity: 0;
			}
			100% {
				@include transform(rotate(0));
				opacity: 1;
			}
		}
	}
}
/* scss-combine:partials/rotateInDownRight */
@mixin rotateInDownRight($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(rotateInDownRight $duration $function $delay $count $fill);
	@include transform-origin(right bottom);
	@include visibility($visibility);

	@at-root {
		@include keyframes(rotateInDownRight) {
			0% {
				@include transform(rotate(90deg));
				opacity: 0;
			}
			100% {
				@include transform(rotate(0));
				opacity: 1;
			}
		}
	}
}
/* scss-combine:partials/rotateInUpLeft */
@mixin rotateInUpLeft($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(rotateInUpLeft $duration $function $delay $count $fill);
	@include transform-origin(left top);
	@include visibility($visibility);

	@at-root {
		@include keyframes(rotateInUpLeft) {
			0% {
				@include transform(rotate(90deg));
				opacity: 0;
			}
			100% {
				@include transform(rotate(0));
				opacity: 1;
			}
		}
	}
}
/* scss-combine:partials/rotateInUpRight */
@mixin rotateInUpRight($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(rotateInUpRight $duration $function $delay $count $fill);
	@include transform-origin(right top);
	@include visibility($visibility);

	@at-root {
		@include keyframes(rotateInUpRight) {
			0% {
				@include transform(rotate(-90deg));
				opacity: 0;
			}
			100% {
				@include transform(rotate(0));
				opacity: 1;
			}
		}
	}
}

/* scss-combine:partials/rotateOut */
@mixin rotateOut($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(rotateOut $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(rotateOut) {
			0% {
				@include transform(rotate(0));
				opacity: 1;
			}
			100% {
				@include transform(rotate(-200deg));
				opacity: 0;
			}
		}
	}
}
/* scss-combine:partials/rotateOutDownLeft */
@mixin rotateOutDownLeft($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(rotateOutDownLeft $duration $function $delay $count $fill);
	@include transform-origin(left bottom);
	@include visibility($visibility);

	@at-root {
		@include keyframes(rotateOutDownLeft) {
			0% {
				@include transform(rotate(0));
				opacity: 1;
			}
			100% {
				@include transform(rotate(90deg));
				opacity: 0;
			}
		}
	}
}
/* scss-combine:partials/rotateOutDownRight */
@mixin rotateOutDownRight($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(rotateOutDownRight $duration $function $delay $count $fill);
	@include transform-origin(right bottom);
	@include visibility($visibility);

	@at-root {
		@include keyframes(rotateOutDownRight) {
			0% {
				@include transform(rotate(0));
				opacity: 1;
			}
			100% {
				@include transform(rotate(-90deg));
				opacity: 0;
			}
		}
	}
}
/* scss-combine:partials/rotateOutUpLeft */
@mixin rotateOutUpLeft($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(rotateOutUpLeft $duration $function $delay $count $fill);
	@include transform-origin(left top);
	@include visibility($visibility);

	@at-root {
		@include keyframes(rotateOutUpLeft) {
			0% {
				@include transform(rotate(0));
				opacity: 1;
			}
			100% {
				@include transform(rotate(90deg));
				opacity: 0;
			}
		}
	}
}
/* scss-combine:partials/rotateOutUpRight */
@mixin rotateOutUpRight($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(rotateOutUpRight $duration $function $delay $count $fill);
	@include transform-origin(right top);
	@include visibility($visibility);

	@at-root {
		@include keyframes(rotateOutUpRight) {
			0% {
				@include transform(rotate(0));
				opacity: 1;
			}
			100% {
				@include transform(rotate(-90deg));
				opacity: 0;
			}
		}
	}
}

/* scss-combine:partials/slideInDown */
@mixin slideInDown($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(slideInDown $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(slideInDown) {
			0% {
				opacity: 0;
				@include transform(translateY(-2000px));
			}
			100% {
				opacity: 1;
				@include transform(translateY(0));
			}
		}
	}
}
/* scss-combine:partials/slideInLeft */
@mixin slideInLeft($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(slideInLeft $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(slideInLeft) {
			0% {
				opacity: 0;
				@include transform(translateX(2000px));
			}
			100% {
				opacity: 1;
				@include transform(translateX(0));
			}
		}
	}
}
/* scss-combine:partials/slideInRight */
@mixin slideInRight($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(slideInRight $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(slideInRight) {
			0% {
				opacity: 0;
				@include transform(translateX(-2000px));
			}
			100% {
				opacity: 1;
				@include transform(translateX(0));
			}
		}
	}
}
/* scss-combine:partials/slideInUp */
@mixin slideInUp($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(slideInUp $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(slideInUp) {
			0% {
				opacity: 0;
				@include transform(translateY(2000px));
			}
			100% {
				opacity: 1;
				@include transform(translateY(0));
			}
		}
	}
}

/* scss-combine:partials/slideOutDown */
@mixin slideOutDown($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(slideOutDown $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(slideOutDown) {
			0% {
				opacity: 1;
				@include transform(translateY(0));
			}
			100% {
				opacity: 0;
				@include transform(translateY(2000px));
			}
		}
	}
}
/* scss-combine:partials/slideOutLeft */
@mixin slideOutLeft($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(slideOutLeft $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(slideOutLeft) {
			0% {
				opacity: 1;
				@include transform(translateX(0));
			}
			100% {
				opacity: 0;
				@include transform(translateX(-2000px));
			}
		}
	}
}
/* scss-combine:partials/slideOutRight */
@mixin slideOutRight($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(slideOutRight $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(slideOutRight) {
			0% {
				opacity: 1;
				@include transform(translateX(0));
			}
			100% {
				opacity: 0;
				@include transform(translateX(2000px));
			}
		}
	}
}
/* scss-combine:partials/slideOutUp */
@mixin slideOutUp($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(slideOutUp $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(slideOutUp) {
			0% {
				opacity: 1;
				@include transform(translateY(0));
			}
			100% {
				opacity: 0;
				@include transform(translateY(-2000px));
			}
		}
	}
}

/* scss-combine:partials/shake */
@mixin shake($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(shake $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(shake) {
			0%, 100% {
				@include transform(translateX(0));
			}
			10%, 30%, 50%, 70%, 90% {
				@include transform(translateX(-6px));
			}
			20%, 40%, 60%, 80% {
				@include transform(translateX(6px));
			}
		}
	}
}
/* scss-combine:partials/swing */
@mixin swing($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(swing $duration $function $delay $count $fill);
	@include transform-origin(top center);
	@include visibility($visibility);

	@at-root {
		@include keyframes(swing) {
			20% {
				@include transform(rotate(15deg));
			}
			40% {
				@include transform(rotate(-10deg));
			}
			60% {
				@include transform(rotate(5deg));
			}
			80% {
				@include transform(rotate(-5deg));
			}
			100% {
				@include transform(rotate(0deg));
			}
		}
	}
}
/* scss-combine:partials/tada */
@mixin tada($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(tada $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(tada) {
			0% {
				@include transform(scale(1));
			}
			10%, 20% {
				@include transform(scale(0.9) rotate(-3deg));
			}
			30%, 50%, 70%, 90% {
				@include transform(scale(1.1) rotate(3deg));
			}
			40%, 60%, 80% {
				@include transform(scale(1.1) rotate(-3deg));
			}
			100% {
				@include transform(scale(1) rotate(0));
			}
		}
	}
}
/* scss-combine:partials/wiggle */
@mixin wiggle($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(wiggle $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(wiggle) {
			0% {  @include transform(skewX(0deg)); }
			10% { @include transform(skewX(-8deg)); }
			20% { @include transform(skewX(7deg)); }
			30% { @include transform(skewX(-6deg)); }
			40% { @include transform(skewX(5deg)); }
			50% { @include transform(skewX(-4deg)); }
			60% { @include transform(skewX(3deg)); }
			70% { @include transform(skewX(-2deg)); }
			80% { @include transform(skewX(1deg)); }
			90% { @include transform(skewX(0deg)); }
			100% { @include transform(skewX(0deg)); }
		}
	}
}
/* scss-combine:partials/wobble */
@mixin wobble($duration: $global-duration, $function: $global-function, $delay: $global-delay, $count: $global-count, $fill: $global-fill, $visibility: $global-visibility) {
	@include animation(wobble $duration $function $delay $count $fill);
	@include visibility($visibility);

	@at-root {
		@include keyframes(wobble) {
			0% {@include transform(translateX(0%));}
			15% {@include transform(translateX(-25%) rotate(-5deg));}
			30% {@include transform(translateX(20%) rotate(3deg));}
			45% {@include transform(translateX(-15%) rotate(-3deg));}
			60% {@include transform(translateX(10%) rotate(2deg));}
			75% {@include transform(translateX(-5%) rotate(-1deg));}
			100% {@include transform(translateX(0%));}
		}
	}
}

// Modules
/* scss-combine:../../node_modules/bc-modal/dist/scss/modal */
.modal-overlay {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 980;
  background-color: rgba(#000, 0.3);
  display: none;
  opacity: 0;

  &.animating,
  &.visible {
    display: block;
    transition: opacity 0.3s ease;
  }

  &.visible {
    opacity: 1;
  }
}

.modal-wrapper {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1000;
  display: none;
  overflow: hidden;
  -webkit-overflow-scrolling: touch;
  outline: 0;
  opacity: 0;

  &.animating,
  &.visible {
    display: block;
    transition: opacity 0.2s ease;
  }

  &.animating-in {
    transition-delay: 0.1s;
  }

  &.visible {
    overflow-x: hidden;
    overflow-y: auto;
    opacity: 1;
  }
}

.modal {
  position: relative;
  margin-left: auto;
  margin-right: auto;
}


// Settings
/* scss-combine:variables */
// Grid
@if (stencilString("container-width") == "small")       { $max-width: 1024px; }
@if (stencilString("container-width") == "medium")      { $max-width: 1280px; }
@if (stencilString("container-width") == "large")       { $max-width: 1440px; }
@if (stencilString("container-width") == "full-width")  { $max-width: 9999px; }

$gutter: 15px;

// TODO: Move this back to baseline (which wont load?)
@mixin media($max: false, $min: false) {
  @if $max {
    @if $min {
      @media screen and (max-width: $max - 1) and (min-width: $min) { @content; }
    } @else {
      @media screen and (max-width: $max - 1) { @content; }
    }
  } @else {
    @media screen and (min-width: $min) { @content; }
  }
}

// breakpoints
$small: 420px;
$medium: 770px;
$large: 1040px;
$xlarge: 1280px;

// Bourbon Breakpoints
$break-xl: new-breakpoint(min-width 1280px);
$break-l: new-breakpoint(max-width 1280px);
$break-m: new-breakpoint(max-width 1060px);
$break-ms: new-breakpoint(max-width 960px);
$break-s: new-breakpoint(max-width 720px);
$break-sx: new-breakpoint(max-width 500px);

// Transitions
$ease-out-quad: cubic-bezier(0.250,0.460,0.450,0.940);

/* scss-combine:user-settings */
// scss-lint:disable NameFormat, StringQuotes
$container-width: stencilString('container-width');

// Accents
$accent-color: stencilColor('accent-color');
$border-color: stencilColor('border-color');
$light-color: stencilColor('light-color');
$light-accent-color: stencilColor('light-accent-color');
$dark-color: stencilColor('dark-color');
$dark-accent-color: stencilColor('dark-accent-color');

// Body
$body-background-color: stencilColor('body-background-color');
$body-color: stencilColor('body-color');
$body-font: stencilFontFamily('body-font');

// Homepage
$featured-products-background-color: stencilColor('featured-products-background-color');
$popular-products-background-color: stencilColor('popular-products-background-color');
$new-products-background-color: stencilColor('new-products-background-color');

// Product Page
$related-products-background-color: stencilColor('related-products-background-color');

// Header
$navigation-padding: stencilNumber('navigation-padding');
$header-background-color: stencilColor('header-background-color');
$banner-background-color: stencilColor('banner-background-color');

// Footer
$footer-background-color: stencilColor('footer-background-color');
$footer-color: stencilColor('footer-color');

// Carousel
$carousel-heading-font: stencilFontFamily('carousel-heading-font');
$carousel-heading-font-size: stencilNumber('carousel-heading-font-size');
$carousel-caption-font: stencilFontFamily('carousel-caption-font');
$carousel-caption-font-size: stencilNumber('carousel-caption-font-size');
$carousel-color: stencilColor('carousel-color');
$carousel-background-color: stencilColor('carousel-background-color');
$carousel-button-color: stencilColor('carousel-button-color');
$carousel-button-background-color: stencilColor('carousel-button-background-color');
$carousel-nav-color: stencilColor('carousel-nav-color');

// Typography
$font-size: stencilNumber('font-size');
$heading-font: stencilFontFamily('heading-font');
$heading-color: stencilColor('heading-color');
$heading-size: stencilNumber('heading-size');
$section-heading-font: stencilFontFamily('section-heading-font');
$page-heading-size: stencilNumber('page-heading-size');
$section-title-color: stencilColor('section-title-color');
$error-color: stencilColor('error-color');
$success-color: stencilColor('success-color');
$disabled-color: stencilColor('disabled-color');

// Navigation
$navigation-font: stencilFontFamily('navigation-font');
$navigation-size: stencilNumber('navigation-size');
$navigation-color: stencilColor('navigation-color');
$navigation-hover-color: stencilColor('navigation-hover-color');

// Forms
$input-background-color: stencilColor('input-background-color');
$input-color: stencilColor('input-color');
$input-border-color: stencilColor('input-border-color');

// Buttons
$button-font: stencilFontFamily('button-font');
$primary-button-text-color: stencilColor('primary-button-text-color');
$primary-button-background-color: stencilColor('primary-button-background-color');
$primary-button-hover: stencilColor('primary-button-hover');
$secondary-button-text-color: stencilColor('secondary-button-text-color');
$secondary-button-background-color: stencilColor('secondary-button-background-color');
$secondary-button-hover: stencilColor('secondary-button-hover');
$disabled-button-text-color: stencilColor('disabled-button-text-color');
$disabled-button-background-color: stencilColor('disabled-button-background-color');

// Meta
$meta-font: stencilFontFamily('meta-font');
$meta-size: stencilNumber('meta-size');
$meta-color: stencilColor('meta-color');


// Helpers
/* scss-combine:lib/mixins */
// Breakpoints
@mixin breakpoint($point) {
  @if $point == s-up {
    @include media($min: $small) { @content; }
  }
  @if $point == s-only {
    @include media($max: $small) { @content; }
  }
  @if $point == m-up {
    @include media($min: $medium) { @content; }
  }
  @if $point == m-only {
    @include media($max: $medium) { @content; }
  }
  @if $point == l-up {
    @include media($min: $large) { @content; }
  }
  @if $point == l-only {
    @include media($max: $large) { @content; }
  }
  @if $point == xl-up {
    @include media($min: $xlarge) { @content; }
  }
  @if $point == xl-only {
    @include media($max: $xlarge) { @content; }
  }
}

// Mini-grid
@mixin row($context, $local-gutter: $gutter) {
  margin-left: $local-gutter / ($context + $local-gutter) / 2 * -100%;
  margin-right: $local-gutter / ($context + $local-gutter) / 2 * -100%;
}

@mixin fluid-width($width, $context, $local-gutter: $gutter) {
  width: $width / ($context + $local-gutter) * 100%;
  margin-left: $local-gutter / ($context + $local-gutter) / 2 * 100%;
  margin-right: $local-gutter / ($context + $local-gutter) / 2 * 100%;
}

// Retina Devices
@mixin retina {
  @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
    @content;
  }
}

// Opacity
@mixin opacity($opacity) {
  opacity: $opacity;
  $opacity-ie: $opacity * 100;
  filter: alpha(opacity=$opacity-ie); //IE8
}

// Centerer
@mixin centerer {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

// Coverer
@mixin coverer {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

// Maintain Aspect Ratio
// @include maintain-ratio(16 9);
@mixin maintain-ratio($ratio: 1 1) {
  @if length($ratio) < 2 or length($ratio) > 2 {
    @warn "$ratio must be a list with two values.";
  }
 
  $width: 100%;
  $height: percentage(nth($ratio, 2) / nth($ratio, 1));
  
  width: $width;
  height: 0;
  padding-bottom: $height;
}

/// Triangle helper mixin
/// @param {Direction} $direction - Triangle direction, either `top`, `right`, `bottom` or `left`
/// @param {Color} $color [currentcolor] - Triangle color 
/// @param {Length} $size [1em] - Triangle size
@mixin triangle($direction, $color: currentcolor, $size: 1em) {
  @if not index(top right bottom left, $direction) {
    @error "Direction must be either `top`, `right`, `bottom` or `left`.";
  }

  width: 0;
  height: 0;
  content: "";
  z-index: 2;
  border-#{opposite-position($direction)}: ($size * 1.5) solid $color;
  
  $perpendicular-borders: $size solid transparent;
  
  @if $direction == top or $direction == bottom {
    border-right: $perpendicular-borders;
    border-left: $perpendicular-borders;
  } @else if $direction == right or $direction == left {
    border-top: $perpendicular-borders;
    border-bottom: $perpendicular-borders;
  }
}

/* scss-combine:lib/extends */
%heading-text-treatment {
  font-family: $heading-font;
  font-weight: 400;
  letter-spacing: 0.05em;
  color: $heading-color;
  text-transform: uppercase;
}

%section-title-text-treatment {
  font-family: $section-heading-font;
  font-weight: 400;
  letter-spacing: 0.05em;
  color: $section-title-color;
  text-transform: uppercase;
}

%button-reset {
  padding: 0;
  background: transparent;
  border: 0;
  appearance: normal;

  &:focus {
    outline: none;
  }
}

/* scss-combine:lib/functions */
// REM Calc
// scss-lint:disable ZeroUnit, NameFormat
$rem-base: 16px !default;

@function strip-unit($num) {
  @return $num / ($num * 0 + 1);
}

@function convert-to-rem($value, $base-value: $rem-base) {
  $value: strip-unit($value) / strip-unit($base-value) * 1rem;
  @if ($value == 0rem) { $value: 0; } // Turn 0rem into 0
  @return $value;
}

@function rem-calc($values, $base-value: $rem-base) {
  $max: length($values);
  @if $max == 1 { @return convert-to-rem(nth($values, 1), $base-value); }
  $remValues: ();
  @for $i from 1 through $max {
    $remValues: append($remValues, convert-to-rem(nth($values, $i), $base-value));
  }
  @return $remValues;
}

// Contrast Color Mix
@function contrast($color, $percent: 6%) {
  @if (lightness($color) > 65) {
    @return shade($color, $percent);
  } @else {
    @return tint($color, $percent);
  }
}

// Invert & Tint Color Mix
@function inversion($color, $shift: false, $percent: 30%) {
  $inverted-color: invert($color);
  $final-color: desaturate($inverted-color, 100%);

  @if ($shift == lighten) {
    @return lighten($final-color, $percent);
  } @else {
    @return darken($final-color, $percent);
  }
}


// General
/* scss-combine:general/fonts */
[class^="icon-"],
[class*=" icon-"] {
  font-family: "form-icons";
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  text-transform: none;
  speak: none;
  font-variant: normal;

}

.icon-facebook::before { content: "\e600"; }
.icon-google::before { content: "\e601"; }
.icon-instagram::before { content: "\e602"; }
.icon-pinterest::before { content: "\e603"; }
.icon-rss::before { content: "\e604"; }
.icon-tumblr::before { content: "\e605"; }
.icon-twitter::before { content: "\e606"; }
.icon-youtube::before { content: "\e607"; }
.icon-arrow-left::before { content: "\e608"; }
.icon-arrow-right::before { content: "\e609"; }
.icon-cart::before { content: "\e60a"; }
.icon-search::before { content: "\e60b"; }
.icon-user::before { content: "\e60c"; }
.icon-mail::before { content: "\e60d"; }
.icon-print::before { content: "\e60e"; }
.icon-star::before { content: "\e60f"; }
.icon-star-half::before { content: "\e610"; }
.icon-menu::before { content: "\e611"; }
.icon-close-circle::before { content: "\e612"; }
.icon-close::before { content: "\e613"; }
.icon-linkedin::before { content: "\e614"; }
.icon-minus::before { content: "\e615"; }
.icon-plus::before { content: "\e616"; }
.icon-stumble-upon::before { content: "\e617"; }
.icon-heart::before { content: "\e618"; }
.icon-loop::before { content: "\e901"; }
.icon-cog::before { content: "\e902"; }
.icon-mastercard::before { content: "\e903"; }
.icon-americanexpress::before { content: "\e904"; }
.icon-paypal::before { content: "\e905"; }
.icon-visa::before { content: "\e906"; }
.icon-interac::before { content: "\e907"; }
.icon-discover::before { content: "\e908"; }
.icon-apple-pay::before { content: "\e900"; }

/* scss-combine:general/general */
html { background-color: $footer-background-color; }

body {
  //scss-lint:disable ImportantRule
  margin-top: 0 !important;
  font-family: $body-font;
  font-size: $font-size;
  line-height: 1.666;
  color: $body-color;
  background-color: $body-background-color;

  &.scroll-locked {
    overflow: hidden;

    @include breakpoint(m-only) { overflow: visible; }
  }

  &.mobile-nav-open {
    position: fixed;
    width: 100%;
    height: 100%;
    overflow: hidden;

    @include breakpoint(l-up) {
      position: static;
      overflow: auto;
    }
  }
}

a {
  color: $accent-color;
  transition: color 0.2s $ease-out-quad;

  &:hover { @include hover($accent-color); }
}

// scss-lint:disable SingleLinePerSelector
h1, h2, h3, h4, h5, h6 {
  @extend %heading-text-treatment;
  line-height: 1.25;
}

h1 { font-size: 36px; }
h2 { font-size: 28px; }
h3 { font-size: 20px; }
h4 { font-size: 18px; }
h5 { font-size: 14px; }
h6 { font-size: 14px; }

p {
  margin-top: 15px;
  margin-bottom: 15px;
}

.page-title {
  //scss-lint:disable NameFormat
  @extend %heading-text-treatment, %wrapper, %full-width;
  font-family: $heading-font;
  font-size: $page-heading-size;

  @if (stencilFontFamily("heading-font") == "Lora") { font-weight: 600; }
  @if (stencilFontFamily("heading-font") == "Raleway") { font-weight: 300; }

  &.centered {
    display: inline-block;
    margin-top: 0;
    margin-bottom: $gutter * 2;
    color: $body-color;
    text-transform: none;

    @include breakpoint(l-only) { margin-bottom: $gutter * 2; }
    @include breakpoint(l-only) { margin-bottom: $gutter; }

    &::after {
      display: block;
      width: 100%;
      height: 1px;
      min-width: ($max-width / 10);
      margin-top: 15px;
      background-color: $border-color;
      content: "";
    }
  }
}

.section-title {
  //scss-lint:disable NameFormat
  @extend %section-title-text-treatment;
  padding-bottom: 35px;
  margin-top: 0;
  font-family: $section-heading-font;
  font-size: $heading-size;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: 3px;
  text-align: center;

  @if (stencilFontFamily("section-heading-font") == "Dosis") { font-weight: 700; }

  .has-description & { padding-bottom: 15px; }
}

.section-description {
  @include outer-container;
  text-align: center;

  > p {
    width: 65%;
    margin: 0 auto 60px;
  }
}

hr { background: $border-color; }

ol { padding-left: 1.5em; }

cite { color: $meta-color; }

button {
  border: 0;
  outline: 0;
}

.hidden { display: none; }

.sr-only { @extend .show-for-sr; }

/* scss-combine:general/scaffolding */
// Layout Blocks
.layout-block {
  padding-top: 75px;
  padding-bottom: 75px;
  -webkit-font-smoothing: antialiased;
  border-bottom: 1px solid $border-color;

  @include breakpoint(l-only) {
    padding-top: 50px;
    padding-bottom: 50px;
  }

  &.no-border {
    padding-bottom: 0;
    border-bottom: 0;

    +.layout-block {
      padding-top: 0;
    }
  }

  &:last-of-type {
    border-bottom: 0;
  }

  &.featured-products,
  &.popular-products,
  &.new-products,
  &.related-products {
    //scss-lint:disable SelectorDepth
    padding-bottom: calc(75px - #{$gutter}*4);

    @include breakpoint(l-only) { padding-bottom: calc(50px - #{$gutter}*3); }
    @include breakpoint(m-only) { padding-bottom: calc(50px - #{$gutter}*2); }
  }

  &.featured-products {
    background-color: $featured-products-background-color;

    .section-title,
    .product-grid-item-details h3 a,
    .product-grid-item-price,
    .price-tax-label { color: contrast($featured-products-background-color, 100%); }
  }

  &.popular-products {
    background-color: $popular-products-background-color;

    .section-title,
    .product-grid-item-details h3 a,
    .product-grid-item-price,
    .price-tax-label { color: contrast($popular-products-background-color, 100%); }
  }

  &.new-products {
    background-color: $new-products-background-color;

    .section-title,
    .product-grid-item-details h3 a,
    .product-grid-item-price,
    .price-tax-label { color: contrast($new-products-background-color, 100%); }
  }

  &.related-products {
    background-color: $related-products-background-color;

    .section-title,
    .product-grid-item-details h3 a,
    .product-grid-item-price,
    .price-tax-label { color: contrast($related-products-background-color, 100%); }
  }
}

.layout-wrapper { @include outer-container; }

/* scss-combine:general/pagination */
.pagination-container {
  @include outer-container;
  display: block;
  width: 100%;
  overflow: hidden;

  .pagination {
    position: relative;
    padding-top: $gutter * 2;
    padding-bottom: 12px;
    text-align: center;
    border-top: 1px solid $border-color;
  }
}

.pagination-list {
  display: inline-block;

  @include breakpoint(l-only) {
    position: relative;
    left: 50%;
    float: left;
  }
}

.pagination-number {
  display: inline-block;
  padding: 0 10px;
  vertical-align: top;

  @include media($max: $small) { display: none; }

  &.pagination-current {
    font-weight: bolder;
    font-size: 17px;
    border-left: 1px solid $border-color;
    border-right: 1px solid $border-color;
    padding: 0 15px;
  }

  a {
    color: $body-color;

    &:hover { @include hover($body-color); }
  }
}

.pagination-item {
  display: inline-block;
  font-size: 13px;
  line-height: 13px;
  letter-spacing: 2px;
  color: $body-color;
  text-align: center;
  text-transform: uppercase;
  transition: color 0.2s $ease-out-quad;

  &.next {
    position: absolute;
    top: $gutter * 2;
    right: 0;
    padding-left: 12px;

    i {
      padding-left: 5px;
    }
  }

  &.previous {
    position: absolute;
    top: $gutter * 2;
    left: 0;
    padding-right: 12px;

    i {
      padding-right: 5px;
    }
  }

  span {
    display: inline-block;
  }

  &.current a {
    color: $light-color;
    background-color: $accent-color;
    border-color: $accent-color;
  }

  i {
    color: $dark-color;
  }
}

/* scss-combine:general/button */
.button {
  padding: 13px 20px;
  font-family: $button-font;
  font-size: 13px;
  font-weight: 400;
  line-height: 13px;
  letter-spacing: 0.1em;
  color: $primary-button-text-color;
  text-transform: uppercase;
  background-color: $primary-button-background-color;
  border: 1px solid $primary-button-background-color;
  border-radius: 3px;
  transition: all 0.3s $ease-out-quad;

  &:hover {
    color: $primary-button-text-color;
    background-color: $primary-button-hover;
    border-color: $primary-button-hover;
  }

  &.button-alt {
    font-weight: 600;
    color: $secondary-button-text-color;
    background-color: $body-background-color;
    border-color: $secondary-button-background-color;

    &:hover {
      color: $secondary-button-hover;
      border-color: $secondary-button-hover;
    }
  }

  &.disabled {
    color: $disabled-button-text-color;
    pointer-events: none;
    cursor: default;
    background-color: $disabled-button-background-color;
    opacity: 0.5;

    + .spinner { display: none; }
  }

  &.button-small {
    padding: 8px 12px;
    font-size: 12px;
  }

  &.button-large {
    padding: 20px 40px;
    font-size: 16px;
  }

  &:focus { outline: none; }
}

.text-button {
  padding: 0;
  font-size: $meta-size;
  letter-spacing: 0.1em;
  color: $primary-button-background-color;
  text-transform: uppercase;
  background: none;
  border: 0;
  outline: 0;
  transition: all 0.3s $ease-out-quad;

  &:hover { color: $primary-button-hover; }
}

/* scss-combine:general/form */
// Forms
.form-input {
  display: block;
  padding: 5px 10px;
  line-height: 1.8;
  color: $input-color;
  background: $input-background-color;
  border-color: $input-border-color;
  border-radius: 3px;
  transition: border-color 0.2s $ease-out-quad;

  &::placeholder { color: lighten($input-color,20%); }

  &:focus { outline: none; }

  &[type='text'],
  &[type='email'],
  &[type='number'],
  &[type='password'] {
    height: 43px;
    min-width: 220px;

    @include breakpoint(xl-only) { min-width: 180px; }
  }

  &[type='number'] {
    width: 75px;
    min-width: 0;
  }

  &.bottom-border {
    position: relative;
    top: -1px;
    border: 0;
    border-bottom: 1px solid $input-border-color;

    &:focus { border-bottom-color: $accent-color; }
  }
}

.form-field {
  position: relative;

  textarea { width: 100%; }
}

// Form Elements
.form-error {
  color: $error-color;
  border: 1px solid $error-color;

  &::placeholder { color: lighten($error-color,30%); }
}

.form-error-message { color: $error-color; }

// Select wrapping
.form-select-wrapper {
  $input-height: 43px;
  position: relative;
  display: block;
  width: 100%;
  height: $input-height;
  min-width: 220px;
  padding: 0 15px;
  font-size: $font-size;
  line-height: $input-height - 2px;
  color: lighten($input-color, 20%);
  text-align: left;
  cursor: pointer;
  background-color: $input-background-color;
  border: 1px solid $input-border-color;

  @include breakpoint(xl-only) { min-width: 180px; }

  &:after {
    position: absolute;
    top: 50%;
    right: 17px;
    width: 7px;
    height: 7px;
    margin-top: -5px;
    border-top: 1px solid $heading-color;
    border-right: 1px solid $heading-color;
    content: "";
    transform: rotate(135deg);
  }

  select {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 2;
    width: 100%;
    height: 100%;
    cursor: pointer;
    opacity: 0;
    appearance: none;
  }

  option { color: $body-color; }
}

// File Wrapper
.form-file-wrapper {
  position: relative;
  display: block;
  width: 100%;
  padding: 0;
  overflow: hidden;
  font-size: $font-size;
  line-height: normal;
  color: lighten($input-color,20%);
  text-align: left;
  cursor: pointer;
  background-color: $input-background-color;
  border: 1px solid $input-border-color;

  &:before {
    @extend .button;
    position: absolute;
    top: 0;
    right: 0;
    height: 51px;
    padding: 0 30px;
    line-height: 49px;
    background-color: $accent-color;
    border-radius: 0 3px 3px 0;
    content: attr(data-button-label);
  }

  &:hover:before { background-color: lighten($accent-color, 10%); }

  .form-file {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 2;
    width: 100%;
    height: 100%;
    cursor: pointer;
    opacity: 0;
    appearance: none;
  }
}

.form-file-types {
  display: block;
  margin-top: 5px;
  font-size: $meta-size;
  font-style: italic;
  color: $meta-color;
}

// Radio / Checkbox
.form-field-radio,
.form-field-checkbox {

  .form-radio,
  .form-checkbox { @extend .show-for-sr; }

  .form-label-text {
    position: relative;

    &:before {
      position: relative;
      top: 4px;
      display: inline-block;
      width: 20px;
      height: 20px;
      margin-right: 10px;
      background-color: $input-background-color;
      border: 1px solid $input-border-color;
      content: "";
    }

    &:after {
      position: absolute;
      content: "";
    }
  }
}

.form-field-radio {
  .form-label-text {
    &:before { border-radius: 100%; }

    &:after {
      top: 10px;
      left: 6px;
      width: 8px;
      height: 8px;
      border-radius: 100%;
    }
  }

  .form-radio:checked + .form-label-text:after { background-color: $accent-color; }
}

.form-field-checkbox {
  .form-label-text:after {
    top: 8px;
    left: 7px;
    width: 6px;
    height: 9px;
    transform: rotate(45deg);
  }

  .form-checkbox:checked + .form-label-text:after {
    border: solid $accent-color;
    border-width: 0 2px 2px 0;
  }
}

// General Page Forms (contact, gift certificates, etc)
.page-form {
  .form { margin: $gutter 0; }

  .form-field {
    float: left;
    width: 100%;
    margin-top: 20px;

    &:first-of-type { margin-bottom: 0; }

    .form-input { width: 100%; }

    .form-inline-message {
      float: left;
      width: 100%;
      padding: 5px 0 15px;
      font-size: $meta-size;
      color: $error-color;
    }
  }

  .form-field-control {
    float: left;
    width: 100%;
  }

  .form-field-title {
    float: left;
    width: 100%;
    margin-bottom: 6px;
    font-weight: normal;
  }

  .form-actions {
    float: left;
    margin: $gutter 0;

    .button {
      display: inline-block;
      margin: 0 10px $gutter 0;

      @include breakpoint(m-only) {
        width: 100%;
        margin: 5px 0;

        //scss-lint:disable NestingDepth
        &:nth-child(2) {
          @extend .button-alt;
        }
      }
    }
  }

  .form-field-captcha {
    //scss-lint:disable NestingDepth, SelectorDepth
    float: left;
    width: 100%;
    margin-bottom: 15px;

    @include breakpoint(m-only) {
      font-size: 0;

      .form-label,
      .captcha-note { font-size: $font-size; }
    }

    .captcha-image {
      display: inline-block;
      padding: 5px;
      margin: 15px 15px 0 0;
      vertical-align: middle;
      background-color: rgba($input-border-color, 0.5);
      border: 1px solid $input-border-color;
      border-radius: 4px;

      @include breakpoint(m-only) {
        width: 48%;
        margin-right: 4%;
      }

      img {
        display: block;
        height: 75px;

        @include breakpoint(m-only) {
          width: 100%;
          height: auto;
        }
      }
    }

    .form-field-control {
      display: inline-block;
      float: none;
      width: auto;
      margin-right: 0;
      vertical-align: middle;

      @include breakpoint(m-only) { width: 48%; }

      .form-input {
        width: 150px;
        min-width: 0;

        @include breakpoint(m-only) {
          width: 100%;
          font-size: $font-size;
        }
      }
    }

    + .form-field { @extend %clearfix; }
  }
}

/* scss-combine:general/table */
table {
  color: $body-color;
  border-color: $border-color;
}

th {
  @extend %heading-text-treatment;
  color: $input-color;
  background: $input-background-color;
}

/* scss-combine:general/modals */
.modal-overlay { background-color: rgba($accent-color, 0.85); }

.modal {
  max-width: 1060px;
  max-height: 90%;
  padding: $gutter * 2;
  overflow-y: scroll;
  background: $light-color;

  @include breakpoint(l-only) {
    margin-right: 20px;
    margin-left: 20px;
  }

  // scss-lint:disable ImportantRule
  @include breakpoint(s-only) { margin-top: 20px !important; }
}

.modal-content {
  position: relative;
  background: $body-background-color;

  // scss-lint:disable VariableForProperty
  .modal-close {
    position: absolute;
    top: 0;
    right: 0;
    font-size: $font-size;
    line-height: $font-size;
    color: rgba($body-color, 0.5);

    // scss-lint:disable VariableForProperty
    &:hover { color: rgba($body-color, 0.8); }
  }
}

/* scss-combine:general/rte */
// RTE Page Content
.rte {
  ol {
    padding-left: rem-calc(35);
    margin-bottom: rem-calc(20);
  }

  ul {
    padding-left: rem-calc(35);
    margin-bottom: rem-calc(20);
    list-style: disc;
  }

  img {
    display: block;
    max-width: 100%;
    height: auto;
  }

  .page-feed {
    padding: 0;
    margin: ($gutter * 2) 0;
    list-style: none;
    border: 1px solid $border-color;

    h5 {
      display: inline-block;
      margin: 0;
      border-bottom: 1px solid $heading-color;
    }

    li {
      //scss-lint:disable NestingDepth
      padding: $gutter;

      &:nth-child(even) {
        background-color: darken($body-background-color, 3%);
      }

      > *:last-child { margin-bottom: 0; }
    }
  }
}

/* scss-combine:general/loading */
.spinner {
  //scss-lint:disable VendorPrefix, NestingDepth
  position: absolute;
  top: 50%;
  width: 26px;
  height: 26px;
  margin: -13px 0 0 -13px;
  transition: right 0.4s $ease-out-quad;
  -webkit-backface-visibility: hidden;

  .quick-shop-wrapper > & {
    position: absolute;
    left: 50%;
    width: 46px;
    height: 46px;
    margin: -23px 0 0 -23px;
  }

  .disabled & { display: none; }

  .product-add-button-wrapper & {
    right: 20px;
    left: auto;
    z-index: -1;

    &.visible {
      right: -30px;

      .quick-shop & { right: -40px; }
    }
  }

  .spinner-circle {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    -webkit-backface-visibility: hidden;

    &:before {
      display: block;
      width: 11%;
      height: 22%;
      margin: 0 auto;
      background-color: $accent-color;
      border-radius: 100%;
      content: "";
      animation: spinner-circleFadeDelay 1.2s infinite ease-in-out both;
      -webkit-backface-visibility: hidden;

      .quick-shop-wrapper > & {
        width: 6%;
        background-color: mix($accent-color, $light-color, 50%);
      }
    }

    &.spinner-circle2    { transform: rotate(30deg); }
    &.spinner-circle3    { transform: rotate(60deg); }
    &.spinner-circle4    { transform: rotate(90deg); }
    &.spinner-circle5    { transform: rotate(120deg); }
    &.spinner-circle6    { transform: rotate(150deg); }
    &.spinner-circle7    { transform: rotate(180deg); }
    &.spinner-circle8    { transform: rotate(210deg); }
    &.spinner-circle9    { transform: rotate(240deg); }
    &.spinner-circle10   { transform: rotate(270deg); }
    &.spinner-circle11   { transform: rotate(300deg); }
    &.spinner-circle12   { transform: rotate(330deg); }

    &.spinner-circle2:before   { animation-delay: -1.1s; }
    &.spinner-circle3:before   { animation-delay: -1s; }
    &.spinner-circle4:before   { animation-delay: -0.9s; }
    &.spinner-circle5:before   { animation-delay: -0.8s; }
    &.spinner-circle6:before   { animation-delay: -0.7s; }
    &.spinner-circle7:before   { animation-delay: -0.6s; }
    &.spinner-circle8:before   { animation-delay: -0.5s; }
    &.spinner-circle9:before   { animation-delay: -0.4s; }
    &.spinner-circle10:before  { animation-delay: -0.3s; }
    &.spinner-circle11:before  { animation-delay: -0.2s; }
    &.spinner-circle12:before  { animation-delay: -0.1s; }
  }
}

@keyframes spinner-circleFadeDelay {
  0%, 39%, 100% { opacity: 0; }
  40% { opacity: 1; }
}


// Module overrides
/* scss-combine:modules/flickity */
// *! Flickity v1.1.1
// http://flickity.metafizzy.co

.flickity-enabled {
  position: relative;

  &.is-draggable {
    user-select: none;
    tap-highlight-color: transparent;

    .flickity-viewport {
      //scss-lint:disable DuplicateProperty, NestingDepth
      cursor: move;
      cursor: grab;

      &.is-pointer-down { cursor: grabbing; }
    }
  }

  &:focus { outline: none; }
}

.flickity-viewport {
  position: relative;
  height: 100%;
  overflow: hidden;
}

.flickity-slider {
  position: absolute;
  width: 100%;
  height: 100%;
}

.flickity-prev-next-button {
  position: absolute;
  top: 50%;
  width: 45px;
  height: 45px;
  cursor: pointer;
  background: transparent;
  background-color: $light-color;
  border: 0;
  border-radius: 50%;
  transform: translateY(-50%);

  &:hover { background: transparent; }
  &.previous { left: 10px; }
  &.next { right: 10px; }

  &:focus {
    outline: none;
    box-shadow: 0 0 0 5px $accent-color;
  }

  &:active { opacity: 0.6; }

  &:disabled {
    cursor: auto;
    opacity: 0.3;
  }

  svg {
    position: absolute;
    top: 20%;
    left: 20%;
    width: 60%;
    height: 60%;
  }

  .arrow { fill: $dark-color; }

  .no-svg {
    font-size: 25px;
    color: $dark-color;
  }
}

/* scss-combine:modules/carousel */
// Carousel
.carousel-wrap {
  padding: 0 0 ($gutter * 2);
  background-color: transparent;
  border-bottom-width: 0;

  @include breakpoint(l-only) { padding-bottom: 0; }

  &.slide-fixed {
    padding-bottom: 0;
    background-color: $carousel-background-color;
    border-bottom-width: 1px;

    @include breakpoint(l-only) { border-bottom-width: 0; }
  }
}

.carousel {
  position: relative;
  width: 100%;
  transition: all 0.3s $ease-out-quad;

  @include breakpoint(m-only) {
    // scss-lint:disable ImportantRule
    height: auto !important;
    margin-bottom: 0;
    background-color: darken($body-background-color, 3%);
  }

  .slide-fixed & {
    @include outer-container;
    padding: $gutter * 2;

    @include breakpoint(l-only) {
      max-width: 100%;
      padding: 0;
      margin-top: 0;
    }
  }

  img { display: none; }
}

.flickity-viewport {
  height: 0;
  overflow: hidden;
  transition: height 0.4s $ease-out-quad;

  @include breakpoint(m-only) { margin-bottom: 0; }

  .slide-fixed & { margin-bottom: 0; }

  img { display: block; }
}

.carousel-slides {
  *,
  ~ * {
    opacity: 0;
    visibility: hidden;
  }

  &.flickity-enabled *,
  &.flickity-enabled ~ * {
    opacity: 1;
    visibility: visible;
  }
}

// Carousel Item
.carousel-item {
  position: relative;
  display: block;
  width: 100%;
  transition: transform 0.4s $ease-out-quad;

  &.is-selected {
    //scss-lint:disable NestingDepth
    + .carousel-item {
      height: 100%;

      .carousel-item-image { display: none; }

      img,
      .carousel-item-image { height: 100%; }
    }
  }

  figure { width: 100%; }
  img { width: 100%; }
}

// Caption
.carousel-item-info {
  position: absolute;
  top: 0;
  width: 100%;
  height: 100%;
  transition: all 0.3s $ease-out-quad;

  @include breakpoint(m-only) {
    position: relative;
    background-color: darken($body-background-color, 5%);
    border-top: 0;
  }
}

.carousel-item-info-container {
  display: table;
  width: 100%;
  height: 100%;
}

.carousel-item-info-align {
  display: table-cell;
  text-align: center;
  vertical-align: middle;

  > :first-child { margin-top: 30px; }
  > :last-child { margin-bottom: 33px; }
}

.carousel-item-heading {
  //scss-lint:disable NameFormat
  width: 100%;
  padding: 0 10%;
  margin: $gutter auto;
  font-family: $carousel-heading-font;
  font-size: $carousel-heading-font-size;
  font-weight: 400;
  line-height: 1;
  color: $carousel-color;
  text-transform: none;
  transform: translateY(-10px);
  transition: all 0.7s $ease-out-quad;
  transition-delay: 0.3s;

  @if (stencilFontFamily("carousel-heading-font") == "Dosis") {
    font-weight: 700;
    text-transform: uppercase;
  }

  @if (stencilFontFamily("carousel-heading-font") == "Raleway") { font-weight: 300; }

  @include breakpoint(xl-only) { font-size: 55px; }
  @include breakpoint(l-only) { font-size: 45px; }

  @include breakpoint(m-only) {
    position: relative;
    display: inline-block;
    padding: 0 4%;
    margin: ($gutter / 2) auto;
    font-size: 25px;
    color: $dark-color;
    transform: translateY(0);
  }

  @include breakpoint(s-only) { font-size: 20px; }

  .slide-fixed & {
    font-size: 45px;

    @include breakpoint(xl-only)  { font-size: $carousel-heading-font-size / 1.3; }
    @include breakpoint(l-only)   { font-size: $carousel-heading-font-size / 1.6; }
    @include breakpoint(m-only)   { font-size: 25px; }
  }

  .is-selected & { transform: translateY(0); }
}

.carousel-item-text {
  //scss-lint:disable NameFormat
  width: 100%;
  padding: 0 10%;
  margin: $gutter auto;
  font-family: $carousel-caption-font;
  font-size: $carousel-caption-font-size;
  font-weight: 300;
  line-height: 1;
  letter-spacing: 0.05em;
  color: $carousel-color;
  transform: translateY(10px);
  transition: all 0.7s $ease-out-quad;
  transition-delay: 0.3s;

  @if (stencilFontFamily("carousel-caption-font") == "Lora") {
    font-weight: 700;
    text-transform: uppercase;
  }

  @if (stencilFontFamily("carousel-caption-font") == "Raleway") { font-weight: 300; }

  @include breakpoint(xl-only) { font-size: $carousel-caption-font-size / 1.3; }
  @include breakpoint(l-only) { font-size: $carousel-caption-font-size / 1.6; }
  @include breakpoint(m-only) { font-size: 17px; }

  @include breakpoint(m-only) {
    display: inline-block;
    padding: 0 4%;
    margin: ($gutter / 2) auto;
    font-size: 15px;
    color: $dark-color;
    transform: translateY(0);
  }

  .is-selected & { transform: translateY(0); }
}

.carousel-item-button {
  padding: 23px 55px;
  margin: $gutter auto;
  color: $carousel-button-color;
  background-color: $carousel-button-background-color;
  border-color: $carousel-button-background-color;
  transform: translateY(30px);
  transition: transform 0.7s $ease-out-quad 0.3s, background-color 0.4s $ease-out-quad, border-color 0.4s $ease-out-quad, color 0.4s $ease-out-quad;

  @include breakpoint(xl-only) { padding: 19px 45px; }
  @include breakpoint(l-only) { padding: 15px 35px; }

  @include breakpoint(m-only) {
    padding: 12px 20px;
    margin: ($gutter / 2) auto;
    transform: translateY(0);
  }

  &:hover {
    color: $carousel-button-color;
    background-color: darken($carousel-button-background-color, 10%);
    border-color: darken($carousel-button-background-color, 10%);
  }

  .is-selected & { transform: translateY(0); }
}

// Nav Arrows
.carousel-navigation {
  position: absolute;
  top: 50%;
  left: 0;
  z-index: 30;
  width: 100%;
  margin-top: -35px;

  @include breakpoint(m-only) {
    top: 20px;
    margin-top: 0;
  }
}

.carousel-navigation-item {
  position: absolute;
  font-size: 50px;
  color: $carousel-nav-color;
  cursor: pointer;
  transition: color 0.4s $ease-out-quad;

  @include breakpoint(m-only) { font-size: 30px; }

  @include breakpoint(l-up) {
    &:hover { color: $accent-color; }
  }

  &.carousel-previous {
    left: 50px;

    @include breakpoint(l-only) { left: 15px; }
  }

  &.carousel-next {
    right: 50px;

    @include breakpoint(l-only) { right: 15px; }
  }
}

// Pagination
.flickity-page-dots {
  position: relative;
  bottom: 0;
  width: 100%;
  padding: 0;
  margin-top: 25px;
  text-align: center;

  @include breakpoint(m-only) { display: none; }

  .slide-fixed & {
    position: absolute;
    bottom: 25px;
    margin-top: 0;
  }

  .dot {
    display: inline-block;
    width: rem-calc(10);
    height: rem-calc(10);
    margin: rem-calc(0 5);
    cursor: pointer;
    background-color: rgba($accent-color, 0.25);
    border-radius: 50%;

    .slide-fixed & { background-color: rgba($light-color, 0.4); }

    &.is-selected {
      //scss-lint:disable NestingDepth
      background-color: $accent-color;

      .slide-fixed & { background-color: $light-color; }
    }
  }
}

// Optional Fade Transition
.fade-transition {
  //scss-lint:disable ImportantRule
  .flickity-slider {
    background-color: $body-background-color;
    transform: none !important;
  }

  .carousel-item {
    left: 0 !important;
    background-color: $body-background-color;
    opacity: 0;
    transition: opacity 0.6s ease-in-out;

    &.is-selected {
      z-index: 10; 
      opacity: 1;
    }
  }
}

/* scss-combine:modules/tabs */
.tab-title {
  display: inline-block;
  margin-right: 20px;
  vertical-align: middle;

  &:last-child {
    margin-right: 0;
  }

  &.active > a {
    color: $accent-color;
    border-bottom-color: $accent-color;
  }

  > a {
    display: inline-block;
    padding-bottom: 6px;
    color: $heading-color;
    border-bottom-color: transparent;
    border-bottom-style: solid;
    border-bottom-width: 1px;

    &:hover {
      color: $accent-color;
    }
  }
}

.tabs-content-panel {
  display: none;

  &.active {
    display: block;
  }
}

.tabs-content {
  padding-top: $gutter * 2;
  padding-bottom: $gutter * 2;

  .quick-shop & {
    padding-bottom: 0;
  }

  p {
    margin-top: 0;
  }
}


// Accounts
/* scss-combine:account/variables */
$account-link-color: $navigation-color;
$account-light-color: $light-color;
$account-accent-color: $accent-color;
$account-border-color: $border-color;
$account-gutter: $gutter*2;
$account-font-size: $font-size;
$account-border-radius: 4px;
$account-text-color: $body-color;
$account-card-background-color: $body-background-color;
$account-alert-error-color: $error-color;
$account-alert-success-color: $success-color;

/* scss-combine:core/account */
// Default Variables

$account-link-color: #888 !default;
$account-light-color: #fff !default;
$account-accent-color: #5dc5e3 !default;
$account-border-color: #e4e4e4 !default;
$account-gutter: 30px !default;
$account-font-size: 15px !default;
$account-border-radius: 0 !default;
$account-text-color: #5f5f5f !default;

$account-card-background-color: #f5f5f5 !default;

$giftcard-nav-use-default-styles: true !default;

$account-breakpoint-x-small: 400px !default; // the account table columns change to full-width
$account-breakpoint-small: 620px !default; // menu changes from full-width to column
$account-breakpoint-medium: 900px !default; // menu changes from 35% to 25% width

// Internal Variables

$account-font-size-heading: $account-font-size + 2 !default;

$account-text-color-light: lighten($account-text-color,20%) !default;

$account-gutter-inner: $account-gutter / 2 !default;

$auth-gutter: $account-gutter !default;
$auth-font-size: $account-font-size !default;

// Imports

/* scss-combine:account/components/layout */
.account-wrapper {
  @extend %clearfix;
  font-size: $account-font-size;
}

.account-nav,
.account-body {
  vertical-align: top;
}

.account-body {
  @media screen and (min-width: $account-breakpoint-small) {
    float: right;
    width: 65%;
    padding-left: $account-gutter-inner;
  }

  @media screen and (min-width: $account-breakpoint-medium) {
    width: 75%;
  }

  > :first-child {
    margin-top: 0;
  }

  .account-nav-hidden & {
    float: none;
    width: 100%;
    padding-left: 0;
    margin-left: 0;
  }
}

.account-nav {
  @media screen and (max-width: $account-breakpoint-small - 1) {
    margin-bottom: $account-gutter;
  }

  @media screen and (min-width: $account-breakpoint-small) {
    float: left;
    width: 35%;
    padding-right: $account-gutter-inner;
  }

  @media screen and (min-width: $account-breakpoint-medium) {
    width: 25%;
  }
}

/* scss-combine:account/components/forms */
.account-wrapper {
  .form-label-text {
    display: inline-block;
    width: 100%;
    margin-bottom: 5px;
  }

  .form-field-checkbox,
  .form-field-radio {
    .form-label-text { width: auto; }
  }

  .form-field {
    margin-bottom: $account-gutter-inner;
  }

  .form-input {
    width: 100%;

    &.account-form-half {
      width: 50%;
    }
  }

  .form-actions {
    clear: both;
  }
}

.account-form-column-container {
  @extend %clearfix;

  .form-field {
    @media screen and (min-width: 480px) {
      float: left;
      width: 50%;

      &:nth-child(odd) { padding-right: $account-gutter-inner; }
      &:nth-child(even) { padding-left: $account-gutter-inner; }
    }
  }
}

/* scss-combine:account/components/table */
.account-wrapper {
  table {
    width: 100%;
    margin-top: $account-gutter-inner;
    margin-bottom: $account-gutter-inner;
  }

  td,
  th {
    padding: $account-gutter-inner;
  }
}

.account-table-tight {
  th,
  td {
    padding: 10px 0;
    border-bottom: 1px solid $account-border-color;
  }
}

/* scss-combine:account/components/list */
// Layout
// Each list item has 3 sections: thumbnail, body, and badge.

.account-items {
  margin-bottom: $account-gutter;
}

.account-item {
  position: relative;
  display: table;
  width: 100%;
  border-bottom: 1px solid $account-border-color;

  &:first-of-type {
    border-top: 1px solid $account-border-color;
  }
}

.account-item-thumbnail,
.account-item-body,
.account-item-badge,
.account-item-actions {
  padding-top: $account-gutter-inner;
  padding-bottom: $account-gutter-inner;

  @media screen and (min-width: $account-breakpoint-x-small) {
    display: table-cell;
    vertical-align: top;
  }
}

// Link
// Makes the entire item clickable

.account-item-link {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 100;
}

// Thumbnail

.account-item-thumbnail {
  min-width: 100px;

  img {
    height: auto;
    max-width: 100px;
  }
}

// Body

.account-item-body {
  width: 100%;

  @media screen and (min-width: $account-breakpoint-x-small) {
    .account-item-thumbnail + & {
      padding-left: $account-gutter-inner;
    }
  }
}

.account-item-title {
  margin-top: 3px;
  font-size: $account-font-size;

  a {
    color: inherit;
  }
}

.account-item-title-large {
  font-size: $account-font-size * 1.2;
}

.account-item-description {
  margin-top: 0;
  margin-bottom: 5px;
  color: $account-text-color;
}

.account-item-details {
  @extend %clearfix;
  font-size: $account-font-size;
  color: $account-text-color;
}

.account-item-detail {
  float: left;
  margin-top: $account-gutter-inner;
  margin-right: $account-gutter;
}

//scss-lint:disable VariableForProperty
.account-item-detail-title {
  display: block;
  margin-top: 0;
  margin-bottom: 3px;
  font-size: 12px;
  font-weight: normal;
  letter-spacing: 1px;
  color: mix($account-light-color,$account-text-color,60%);
  text-transform: uppercase;
}

// Badge

.account-item-badge,
.account-item-actions {
  white-space: nowrap;
}

/* scss-combine:account/components/header */
.account-header {
  display: table;
  width: 100%;
  margin-bottom: $account-gutter-inner;
}

.account-heading,
.account-toolbar {
  display: table-cell;
  vertical-align: baseline;
}

.account-toolbar {
  text-align: right;

  * {
    display: inline;
  }
}

.account-tool {
  position: relative;
  z-index: 10;
  display: inline-block;
  padding: 0;
  background: transparent;
  margin-left: 10px;
  cursor: pointer;
  color: inherit;
  border: 0;

  &:hover { color: $account-link-color; }

  &:focus { outline: 0; }
}

/* scss-combine:account/components/navigation */
.account-nav-list {
  padding: 0;
  margin-bottom: $account-gutter-inner;
  list-style: none;
  border: 1px solid $account-border-color;
  border-radius: $account-border-radius;
}

.account-nav-item {
  color: $account-link-color;
  border-top: 1px solid $account-border-color;

  &:first-child {
    border-top: 0;
  }

  &.is-active {
    color: $account-accent-color;
    border-left: 3px solid $account-accent-color;
  }
}

.account-nav-link {
  display: block;
  padding: 15px;
  color: inherit;
}

.account-nav-badge {
  float: right;
}

/* scss-combine:account/components/pagination */
.account-wrapper .pagination {
  margin-top: $account-gutter-inner;
}

/* scss-combine:account/components/card */
%account-card-style {
  background: $account-card-background-color;

  .form-input {
    background-color: $account-light-color;
  }
}

.account-card {
  @extend %account-card-style;
  padding: $account-gutter-inner;
  margin: $account-gutter-inner 0;
  border-radius: $account-border-radius;
}

/* scss-combine:account/components/toggle */
// Set the initial toggle state to hidden
.account-toggle-hidden {
  display: none;
}

/* scss-combine:account/components/status */
// Status
// A label used to mark the status of an item

.account-status {
  padding: 6px 10px 5px;
  margin: 0;
  font-size: 12px;
  font-weight: normal;
  line-height: 1;
  letter-spacing: 1px;
  color: $account-light-color;
  text-align: center;
  text-transform: uppercase;
  background: #8e8e8e; // TODO: Colors for each status
}

/* scss-combine:account/components/shipments */
// Shipments
// A list of shipments made for an order. Shown on the Order Details page.

.account-shipments {
  margin-bottom: $account-gutter;
}

.account-shipments-table {
  th,
  td {
    padding: 10px 0;
    text-align: left;
  }

  th {
    padding: $account-gutter-inner 0 0;
    border-top: 1px solid $account-border-color;
  }

  // Override default margins
  .account-wrapper & {
    margin-top: 0;
    margin-bottom: 0;
  }
}


/* scss-combine:account/pages/address */
// Address List

.account-page-add-address {
  .account-content {
    padding-top: $account-gutter-inner;
    border-top: 1px solid $account-border-color;
  }
}

.account-address-detail {
  display: block;
}

// Add Address

.account-address-form {
  padding-top: $account-gutter-inner;

  @media screen and (min-width: $account-breakpoint-medium) {
    .form-field {
      float: left;
      width: 50%;
      padding-right: $account-gutter-inner;

      &:nth-of-type(2n) {
        padding-right: 0;
        padding-left: $account-gutter-inner;
      }
    }
  }

  .form-actions {
    padding-top: $account-gutter-inner;
  }
}

/* scss-combine:account/pages/orders-receipt */
.account-page-orders-receipt .account-content {
  padding-top: $account-gutter-inner;
  border-top: 1px solid $account-border-color;
}

// Summary

.account-receipt-summaries {
  @extend %clearfix;
}

.account-receipt-summary {
  float: left;
  width: 33%;
  padding-right: $account-gutter;
}

.account-receipt-summary-title {
  margin-top: 5px;
  margin-bottom: 10px;
  font-size: $account-font-size;
}

.account-receipt-summary-address {
  line-height: 1.5;
}

.account-receipt-detail {
  margin-bottom: 5px;
}

.account-receipt-detail-title {
  color: $account-text-color-light;
}

// Comments

.account-receipt-comments {
  white-space: pre-line;
}

// Receipt Items (products)

.account-receipt-items {
  padding-top: $account-gutter-inner;
}

.account-receipt-download {
  margin: 10px 0;
}

// Totals

.account-receipt-totals {
  display: table;
  width: 50%;
  margin-left: 50%;
}

.account-receipt-total {
  display: table-row;
  margin-bottom: $account-gutter-inner;
}

.account-receipt-total-title,
.account-receipt-total-value {
  display: table-cell;
  padding-top: $account-gutter-inner;
  padding-bottom: $account-gutter-inner;
  border-top: 1px solid $account-border-color;

  .account-receipt-total:first-of-type & {
    border-top: 0;
  }
}

.account-receipt-total-title {
  font-weight: normal;
  letter-spacing: 1px;
  color: $account-text-color-light;
}

.account-receipt-total-value {
  text-align: right;
}

/* scss-combine:account/pages/recent-items */

/* scss-combine:account/pages/returns */
// Return form

.account-return-table {
  th {
    text-align: left;

    &:last-of-type {
      text-align: right;
    }
  }

  .form-field {
    margin-bottom: 0;
  }
}

.account-return-fields {
  margin-top: $account-gutter;

  .form-field-select {
    width: 50%;
  }
}

/* scss-combine:account/pages/wishlists */
.account-wishlists {
  margin-bottom: 30px;
}

/* scss-combine:account/pages/messages */
// Listing

.account-messages-table.table-clean {
  border-bottom: 1px solid $account-border-color;

  td {
    padding-right: 0;
    padding-left: 0;
    vertical-align: top;
    border-top: 1px solid $account-border-color;
  }
}

.account-messages-table-date {
  width: 22%;
  text-align: right;
}

.account-message-subject {
  margin-top: 0;
  margin-bottom: 10px;
  font-size: $account-font-size-heading;
  font-weight: 500;

  .account-message-is-reply &:before {
    padding-right: 5px;
    content: "\21c9";
  }

  .account-message-is-read & {
    color: $account-text-color-light;
  }
}

.account-message-content {
  padding-right: $account-gutter;
  font-size: $account-font-size;
  line-height: 1.5;
  color: $account-text-color;
  white-space: pre-line;

  .account-message-is-read & {
    color: lighten($account-text-color-light,10%);
  }
}

.account-message-date {
  color: $account-text-color-light;
}

// Form

.account-messages-form-subject {
  width: 50%;
}

/* scss-combine:account/pages/download */
// List

.account-download {
  padding: $account-gutter-inner 0 0;
  margin: $account-gutter-inner 0;
  border-top: 1px solid $account-border-color;
}

.account-download-title {
  margin: 0;
  font-size: 1em;
}

.account-download-link {
  color: inherit;
  text-decoration: underline;
}

.account-download-filename {
  font-size: 1.2em;
}

.account-download-filesize {
  padding-left: 5px;
  font-weight: normal;
  color: $account-text-color-light;
}

.account-download-description {
  padding-top: 10px;
  padding-bottom: 10px;
}

.account-download-expiry {
  font-size: 0.9em;
  color: $account-text-color-light;
}

.account-download-expiry-item {
  display: block;
  padding-bottom: 5px;

  &:last-of-type {
    padding-bottom: 0;
  }
}

// Gallery

.account-downloads-gallery-image {
  text-align: center;
}

.account-downloads-gallery-thumbs {
  @extend %clearfix;
  text-align: center;
}

.account-downloads-gallery-thumb {
  display: inline-block;
  width: 10%;
  height: 10%;
  padding: 0 2px;
  vertical-align: middle;
  cursor: pointer;

  img {
    width: 100%;
    height: auto;
  }
}

/* scss-combine:account/pages/invoice */
.account-invoice-date {
  margin-top: -20px;
  font-size: $account-font-size;
}

// Address

.account-invoice-addresses {
  @extend %clearfix;
  margin-top: $account-gutter;
  margin-bottom: $account-gutter;
}

.account-invoice-address {
  float: left;
  margin-right: $account-gutter;
}

.account-invoice-address-title {
  margin-top: 5px;
  margin-bottom: 10px;
  font-size: $account-font-size;
}

.account-invoice-address-body {
  line-height: 1.5;
}

// List

.account-invoice-table {
  .account-wrapper & {
    margin-bottom: 0;
  }

  th,
  td {
    padding-right: $account-gutter-inner;
    text-align: left;
    vertical-align: top;

    &:nth-of-type(0n+3) {
      width: 10%;
    }

    &:last-of-type {
      width: 160px;
      padding-right: 0;
      text-align: right;
    }
  }

  td:first-of-type {
    width: 60px + 25px;
  }
}

.account-invoice-item-thumbnail {
  width: 60px;
  height: auto;
}

.account-invoice-item-name {
  margin-bottom: 5px;
  font-weight: bold;
}

.account-invoice-total-title {
  font-weight: bold;
}

// Totals

.account-invoice-totals {
  .account-wrapper & {
    width: auto;
    margin-top: 0;
    margin-left: auto;
  }

  th,
  td {
    padding-right: $account-gutter-inner;

    &:last-of-type {
      width: 160px;
      padding-right: 0;
      text-align: right;
    }
  }
}

/* scss-combine:account/pages/settings */
.account-page-settings {
  .alert:first-of-type {
    margin-top: 0;
  }

  .account-content {
    padding-top: $account-gutter-inner;
    border-top: 1px solid $account-border-color;
  }
}

.account-settings-form {
  @extend %clearfix;
  padding-top: $account-gutter-inner;

  .form-field {
    float: left;
    width: 50%;
    padding-right: $account-gutter-inner / 2;
    vertical-align: top;

    &:nth-of-type(2n+0) {
      padding-right: 0;
      padding-left: $account-gutter-inner / 2;
    }
  }

  .form-actions {
    padding-top: $account-gutter-inner;
  }
}


/* scss-combine:account/pages/auth-login */

.account-page-login .alert {
  max-width: 860px;
  margin-top: 0;
  margin-right: auto;
  margin-bottom: $account-gutter;
  margin-left: auto;
}

.account-login-wrapper {
  max-width: 860px;
  margin-right: auto;
  margin-left: auto;

  @media screen and (min-width: $account-breakpoint-small) {
    display: table;
    width: 100%;
    table-layout: fixed;
  }
}

.account-page-login .account-sub-heading {
  margin: 0 0 20px;
}

.account-login,
.account-create {
  @media screen and (min-width: $account-breakpoint-small) {
    display: table-cell;
    vertical-align: top;
  }
}

// Login Form

.account-login {
  @media screen and (max-width: $account-breakpoint-small - 1) {
    margin-bottom: $account-gutter;
  }

  @media screen and (min-width: $account-breakpoint-small) {
    padding: $account-gutter-inner (30px + $account-gutter-inner) $account-gutter-inner 0;
  }
}

.account-login-button {
  margin-right: $account-gutter-inner;
}

// New Account

.account-create {
  padding: $account-gutter-inner;
  background: $account-card-background-color;
}

.account-create-intro {
  &:empty {
    display: none;
  }
}

.account-create-facts {
  padding-left: 20px;
  margin-bottom: 30px;
  list-style: disc;

  li:empty {
    display: none;
  }
}

/* scss-combine:account/pages/auth-forgot */
.account-page-forgot .account-body {
  width: 100%;
  max-width: 600px;
  margin-right: auto;
  margin-left: auto;
  text-align: center;
  float: none;
}

.account-forgot-form {
  display: table;
  width: 100%;
  margin-top: $account-gutter;

  .form-field,
  .form-actions {
    display: table-cell;
    text-align: left;
    vertical-align: bottom;
  }

  .form-actions {
    width: 1px;
    padding-left: 10px;
  }
}

/* scss-combine:account/pages/auth-create */
.account-page-create {
  .account-header {
    padding-bottom: $account-gutter-inner;
    margin-bottom: $account-gutter;
    border-bottom: 1px solid $account-border-color;
  }

  .account-body {
    max-width: 860px;
    margin-right: auto;
    margin-left: auto;
  }
}

.account-create-form {

  @media screen and (min-width: $account-breakpoint-small) {
    .form-field {
      float: left;
      width: 50%;
      padding-right: $account-gutter-inner;

      &:nth-of-type(2n) {
        padding-right: 0;
        padding-left: $account-gutter-inner;
      }
    }
  }
}

.account-create-details,
.account-create-address {
  @extend %clearfix;
  padding-bottom: $account-gutter-inner;
  margin-bottom: $account-gutter;
  border-bottom: 1px solid $account-border-color;
}

.account-create-form-actions {
  text-align: center;
}

.account-create-captcha {
  display: inline-block;
  vertical-align: middle;

  @media screen and (max-width: $account-breakpoint-small - 1) {
    margin-bottom: $account-gutter-inner;
  }

  @media screen and (min-width: $account-breakpoint-small) {
    margin-right: $account-gutter-inner;
  }
}

/* scss-combine:account/pages/auth-created */
.account-page-created .account-body {
  float: none;
  width: 100%;
  max-width: 600px;
  margin-right: auto;
  margin-left: auto;
  text-align: center;

  p {
    margin-bottom: $account-gutter;
    line-height: 1.5;
  }

  em {
    font-family: monospace;
    font-style: normal;
    font-weight: bold;
    background: $account-card-background-color;
  }
}

/* scss-combine:account/pages/auth-new-password */
.account-page-new-password .account-content {
  width: 100%;
  max-width: 400px;
  margin-right: auto;
  margin-left: auto;
}

.new-password-requirements {
  margin-bottom: $account-gutter;
  text-align: center;
}


/* scss-combine:account/pages/gift-certificate */
// (optional) gift card nav

@if ($giftcard-nav-use-default-styles) {
  .giftcard-nav {
    padding: $account-gutter * 2;
    margin-bottom: $account-gutter * 2;
    text-align: center;
  }

  .giftcard-nav-item {
    display: inline-block;
    margin: 0 1em;
    color: $account-link-color;

    &.is-active { color: $account-text-color; }
  }
}

.giftcard-heading-container {
  margin-bottom: $account-gutter * 2;
  text-align: center;
}


// Purchase

.giftcard-form-help-message {
  display: block;
  margin-top: 6px;
}

.giftcard-form-preview {
  iframe { width: 100%; }
}

.giftcard-single-theme {
  display: none;
}


// Check balance

.giftcard-balance-container {
  max-width: 600px;
  margin: 0 auto;
}

.form-giftcard-balance {
  position: relative;

  .form-field-title {
    position: absolute;
    left: -9999px;
  }

  .form-field-control {
    display: block;

    @media screen and (min-width: 600px + ($account-gutter-inner * 2)) {
      margin-right: calc(30% + #{$account-gutter-inner});
    }
  }

  .form-actions {
    @media screen and (min-width: 600px + ($account-gutter-inner * 2)) {
      position: absolute;
      top: 0;
      right: 0;
      width: 30%;
    }
  }

  .button {
    width: 100%;
  }
}


// Redeem

.giftcard-redeem-steps {
  line-height: 1.5;

  li { margin-bottom: 0.75em; }
}


/* scss-combine:account/account */
// Account Overrides
.account-nav { text-align: left; }

.account-content {
  //scss-lint:disable ImportantRule
  padding-top: 0 !important;
  border-top: 0 !important;

  // Forms
  > .form {
    margin: 0;

    .form-label {
      width: 100%;
      font-size: $font-size;
    }
  }

  .form-actions {
    padding: 0;
    margin: ($gutter * 2) 0 0;
    border: 0;
  }

  // Forgot password form
  .account-forgot-form {
    display: block;

    .form-field {
      display: inline-block;
      width: 100%;
      text-align: center;
    }

    .form-actions {
      //scss-lint:disable SelectorDepth, NestingDepth
      display: inline-block;
      float: none;
      width: 35%;

      .button {
        display: block;
        margin: 0 auto;
      }
    }
  }

  // Recently Viewed Products
  .account-product-wrapper {
    margin-right: -20px;
    margin-left: -20px;
  }

  .product-grid-item {
    &:nth-child(4n + 1) { clear: left; }

    @include fluid-width(200, 920, 40);

    @include breakpoint(xl-only) {
      @include fluid-width(200, 680, 40);

      &:nth-child(4n + 1) { clear: none; }
      &:nth-child(3n + 1) { clear: left; }
    }

    @include breakpoint(l-only) {
      @include fluid-width(200, 440, 40);

      &:nth-child(3n + 1) { clear: none; }
      &:nth-child(2n + 1) { clear: left; }
    }

    .product-item-compare,
    .quick-shop-trigger { display: none; }
  }

  .g-recaptcha > div {
    margin: 0 auto;
  }
}

// Layout
.account-body {
  float: left;
  margin-left: 0;
}

.account-header > .account-heading { display: none; }

// Products Grid
.price-rrp { text-decoration: line-through; }

// Login Screen
.account-login,
.account-create {
  @include breakpoint(m-only) {
    display: block;
    float: left;
    width: 100%;
    padding-left: 0;
  }

  .account-login-form .form-field:first-child { margin-top: 0; }
}
/* scss-combine:account/auth */
// Login Page
.account-page-login { text-align: left; }


// Components
/* scss-combine:components/header */
.main-header {
  position: relative;
  z-index: 15;
  -webkit-font-smoothing: antialiased;
  background-color: $header-background-color;

  @include breakpoint(l-up) { padding-top: ($gutter * 2) + 10px; }
  @include breakpoint(l-only) { z-index: 2; }

  &.header-alternate { padding-top: 0; }
}

.header-topbar {
  width: 100%;
  height: 50px;
  background-color: darken($header-background-color, 8%);

  @include breakpoint(l-only) {
    height: 45px;
    background-color: transparent;
  }

  .header-topbar-inner {
    @include outer-container;
    height: 50px;
    padding: 0 $gutter * 2;
    font-size: 0;

    @include breakpoint(l-only) { height: 45px; }
  }
}

.header-inner {
  @include outer-container;
  position: relative;
  z-index: 0;

  .logo-center & {
    font-size: 0;
    text-align: center;
  }
}

.header-branding {
  @include span-columns(4);
  padding-top: 0;
  padding-bottom: 0;
  padding-left: $gutter * 2;
  margin-top: 0;
  margin-bottom: $gutter * 2;

  @include breakpoint(l-only) {
    @include span-columns(12);
    @include omega();
    padding-top: $gutter * 2;
    padding-bottom: $gutter * 2;
    padding-left: 0;
    margin-top: 45px;
    margin-bottom: 0;
  }

  .js & {
    visibility: hidden;

    &.show-branding { visibility: visible; }
  }

  .navigation-alternate & {
    display: inline-block;
    float: none;
    width: 20%;
    padding-right: $gutter * 2;
    padding-left: 0;
    margin: ($gutter * 2) 0;
    vertical-align: middle;

    @include breakpoint(l-only) { display: none; }
  }

  .navigation-alternate.navigation-left & {
    //scss-lint:disable SelectorDepth
    padding-right: $gutter * 2;

    .header-branding-logo img { float: right; }
  }

  .navigation-alternate.navigation-center & {
    padding-right: 0;
    text-align: center;

    .header-branding-logo {
      display: inline-block;
      text-align: center;
    }
  }

  .logo-right & {
    @include omega();
    float: right;
    padding-right: $gutter * 2;
    padding-left: 0;

    .header-branding-logo {
      float: right;

      @include breakpoint(l-only) { float: none; }
    }
  }

  .logo-center & {
    display: inline-block;
    float: none;
    width: 30%;
    padding-left: 0;
    margin-right: 0;
    margin-left: 35%;
    text-align: center;

    @include breakpoint(l-only) {
      width: 100%;
      margin-left: 0;
    }
  }
}

.header-branding-logo {
  float: left;

  @include breakpoint(l-only) {
    display: block;
    float: none;
    text-align: center;
  }

  .logo-center & {
    display: inline-block;
    float: none;
  }

  .navigation-alternate & {
    width: 100%;
    text-align: left;
  }

  img {
    display: block;

    @include breakpoint(l-only) {
      display: inline-block;
      margin-bottom: -6px;
    }

    .logo-center & {
      @include breakpoint(l-only) { margin-bottom: 0; }
    }

    .logo-center.header-alternate & {
      @include breakpoint(l-only) { margin-bottom: -6px; }
    }

    .navigation-alternate & {
      display: inline-block;
      margin-bottom: -3px;
    }

    .retina-logo & {
      max-width: 200px;
      max-height: 85px;

      @include breakpoint(s-only) { max-width: 180px; }
    }
  }
}

.header-branding-text {
  margin: 0;
  font-family: $body-font;
  font-weight: 300;
  line-height: 36px;

  @include breakpoint(l-only) { text-align: center; }

  .logo-right & {
    text-align: right;

    @include breakpoint(l-only) { text-align: center; }
  }

  .navigation-left & {
    float: right;
    text-align: right;
  }

  a { color: $heading-color; }

  a:hover { text-decoration: none; }
}

.mobile-header-branding {
  display: none;
  padding: ($gutter * 2) 0;
  text-align: center;

  @include breakpoint(l-only) { display: block; }
}

.header-currency-selector {
  @include span-columns(3);
  @include omega();
  position: relative;
  right: - $navigation-padding;

  @include breakpoint(l-only) { display: none; }

  .header-alternate & {
    right: auto;
    display: inline-block;
    float: left;
    width: 20%;
    height: 50px;
    text-align: left;
    vertical-align: middle;

    @include breakpoint(l-only) { display: none; }
  }

  .form-select-wrapper {
    display: inline-block;
    float: right;
    width: auto;
    min-width: 0;
    padding: 0 20px 0 0;
    color: $navigation-color;
    text-align: right;
    background-color: transparent;
    border-color: transparent;
    transition: color 0.2s $ease-out-quad;

    &:hover { color: $navigation-hover-color; }

    .header-alternate & {
      float: left;
      height: 50px;
      font-size: $meta-size;
      font-weight: bold;
      line-height: 48px;
      letter-spacing: 0.5px;
      text-align: left;
    }

    &::after {
      //scss-lint:disable NestingDepth
      right: 2px;
      border-color: $navigation-color;

      .header-alternate & {
        top: 48%;
        right: 0;
        float: left;
        margin-left: 10px;
        border-color: mix(darken($header-background-color, 10%), $navigation-color, 50%);
      }
    }
  }
}

/* scss-combine:components/header-tools */
//scss-lint:disable NestingDepth
.header-tools {
  @include span-columns(8);
  @include omega();
  position: relative;
  height: auto;
  padding-right: $gutter * 2;

  @include breakpoint(l-only) {
    @include span-columns(12);
    position: absolute;
    top: 0;
    left: 0;
    height: 45px;
    line-height: 45px;
    border-bottom: 1px solid darken($header-background-color, 18%);
  }

  .header-alternate & {
    display: inline-block;
    float: none;
    width: 80%;
    padding: 0;
    text-align: right;
    vertical-align: middle;

    @include breakpoint(l-only) {
      width: 100%;
      text-align: left;
    }
  }

  .logo-right & {
    float: left;
    padding-right: 0;
    padding-left: $gutter * 2;

    @include breakpoint(l-only) { padding-left: 0; }

    .header-tools-inner { float: left; }
  }

  .header-alternate.logo-right & {
    .header-tools-inner {
      float: right;

      @include breakpoint(l-only) { float: left; }
    }
  }

  .logo-center & {
    display: inline-block;
    float: none;
    width: 35%;
    padding-right: 0;
    font-size: $font-size;
    vertical-align: top;

    @include breakpoint(l-only) { width: 100%; }
  }

  .header-alternate.logo-center & {
    width: 80%;

    @include breakpoint(l-only) { width: 100%; }
  }

  .cart-count {
    position: absolute;
    top: 3px;
    left: 13px;
    display: block;
    width: 14px;
    height: 14px;
    font-size: 10px;
    font-weight: 400;
    line-height: 14px;
    color: $light-color;
    text-align: center;
    background-color: $accent-color;
    border-radius: 50%;

    .header-alternate & {
      position: absolute;
      top: 50%;
      left: 0;
      width: 16px;
      height: 16px;
      margin-top: -8px;
      font-size: 11px;
      line-height: 16px;
      color: $accent-color;
      background-color: $light-color;
    }
  }
}

.header-tools-inner {
  @include breakpoint(l-up) { float: right; }

  .header-alternate & {
    display: inline-block;
    float: none;
  }

  .logo-center & { padding-right: $gutter * 2; }

  .header-alternate.logo-center & { padding-right: 0; }
}

.header-tools-item {
  position: relative;
  z-index: inherit;
  float: left;
  height: 30px;
  line-height: 30px;
  border: 1px solid $header-background-color;
  border-left-color: darken($header-background-color, 18%);

  @include breakpoint(l-only) {
    display: none;

    &.navigation-toggle-mobile-container { display: block; }
  }

  .header-alternate & {
    height: 50px;
    font-size: $meta-size;
    line-height: 50px;
    border: 0;
  }

  &.cart-toggle {

    &.has-cart-items {
      .header-alternate & { margin-left: 13px; }
    }

    &.visible {
      position: relative;
      top: -10px;
      height: 50px;
      line-height: 50px;

      .header-alternate & {
        top: auto;
        height: 50px;
        line-height: 50px;
        background-color: transparent;
        border: 0;
      }

      .cart-count {
        top: 13px;

        .header-alternate & { top: 50%; }
      }
    }
  }

  &.visible {
    background-color: $body-background-color;
    border: 1px solid $border-color;
    border-bottom-color: $body-background-color;

    // scss-lint:disable UnnecessaryParentReference
    & + li {
      z-index: -1;

      .header-alternate & { z-index: 1; }
    }
  }

  // skipping the mobile nav toggle
  &:nth-child(2) { border: 0; }

  &:last-child {
    margin-left: -1px;

    a { padding-right: 0; }
	}

  &.navigation-toggle-mobile-container {
    float: left;
    border: 0;

    @include breakpoint(l-up) { display: none; }
  }

  &:focus {
    border: 0;
    outline: 0;
  }

  .search-form-wrapper {
    display: none;
    margin-right: 20px;

    &.visible {
      display: inline-block;
      float: right;
      vertical-align: middle;
    }

    .header-alternate & {
      width: 200px;
      font-size: 14px;
    }
  }

  .search-input {
    position: relative;
    top: -7px;
    width: 100%;
    height: 45px;
    padding: 6px 10px;
    line-height: 45px;
    background-color: transparent;
    border: 1px solid $border-color;
    border-radius: 3px;
    box-sizing: border-box;

    .header-alternate & {
      top: 1px;
      height: 35px;
      line-height: 35px;
      border-color: darken($header-background-color, 18%);
    }

    &::placeholder { color: $navigation-color; }

    &:focus {
      color: $navigation-color;
      border-color: darken($header-background-color, 18%);
      outline: none;
    }
  }

  .search-submit {
    @extend %button-reset;
    position: absolute;
    top: 2px;
    right: 35px;
    color: $navigation-color;
  }

  > a {
    position: relative;
    padding: 10px 20px;

    .label {
      margin-left: 12px;
      font-size: $meta-size;
      font-weight: bold;
      letter-spacing: 0.5px;
      color: $navigation-color;
      text-transform: uppercase;
      transition: color 0.2s $ease-out-quad;
    }

    &:hover .label { color: $navigation-hover-color; }

    .hidden { display: none; }

    [class^="icon"] {
      //scss-lint:disable SelectorDepth
      position: relative;
      top: 2px;
      width: 12px;
      height: 12px;
      color: $navigation-color;

      .header-alternate & { color: mix(darken($header-background-color, 10%), $navigation-color, 50%); }
  	}
	}
}

.search-toggle > a {
  .main-header:not(.header-alternate) & { padding-left: 0; }
}

/* scss-combine:components/cart/cart-preview */
.cart-preview-wrap {
  position: absolute;
  top: 48px;
  right: -1px;
  z-index: -1;
  display: none;
  width: 360px;
  text-align: left;
  background-color: $body-background-color;
  border: 1px solid $border-color;

  &.visible { display: block; }

  .header-alternate & {
    top: 50px;
    z-index: 1;
    border-top: 0;
  }
}

.cart-preview-title {
  padding: 20px;
  margin-bottom: 20px;
  border-bottom: 1px solid $border-color;
}

.cart-preview-body { padding: 20px; }

.cart-preview-list {
  height: auto;
  max-height: 250px;
  overflow-y: scroll;
}

.cart-preview-list-item {
  display: block;
  float: left;
  width: 100%;
  margin-bottom: 15px;

  &:last-child { margin-bottom: 0; }
}

.cart-preview-list-item-image-wrap { @include span-columns(3); }

.cart-preview-list-item-image {
  @include maintain-ratio(1 1);
  position: relative;
  max-width: 100%;
  overflow: hidden;
  border: 1px solid darken($body-background-color, 15%);

  a {
    @include coverer;
    float: left;
    width: 100%;
    margin: 0 auto;
    overflow: hidden;

    img {
      @include centerer;
      position: relative;
      display: block;
      height: 100%;
      max-width: none;
    }
  }
}

.cart-preview-list-item-details {
  @include span-columns(9);
  padding-left: 10px;
}

.cart-preview-list-item-name {
  margin-bottom: 5px;
  font-size: 15px;
  line-height: 1.5em;
}

.cart-preview-list-item-price {
  font-size: 15px;
  line-height: 15px;
}

.cart-preview-list-item-price-quantity {
  position: relative;
  top: -1px;
  display: inline-block;
  padding: 4px 6px;
  margin-left: 5px;
  font-size: 11px;
  line-height: 10px;
  color: $meta-color;
  text-align: center;
  border: 1px solid darken($body-background-color, 15%);
  border-radius: 4px;
}

.cart-preview-subtotal {
  padding: 20px;
  padding-bottom: 23px;
  font-size: $font-size;
  line-height: $font-size;
  border-top: 1px solid darken($body-background-color, 15%);

  .label,
  .total {
    display: inline-block;
    vertical-align: middle;
  }

  .label::after { content: ":"; }

  .total {
    float: right;
    font-weight: bold;
  }
}

.cart-preview-footer {
  float: left;
  width: 100%;
  padding: 20px;
  text-align: left;
  background-color: darken($body-background-color, 2%);
  border-top: 1px solid darken($body-background-color, 15%);

  .button {
    float: left;
    width: 48%;
    margin-left: 0;

    &:first-of-type { margin-right: 2%; }
    &:last-of-type { margin-left: 2%; }
  }
}

.cart-preview-empty {
  padding: 40px;
  font-size: $font-size;
  line-height: $font-size;
  text-align: center;
}

/* scss-combine:components/cart/apple-pay */
.apple-pay-checkout-button {
  display: none;
  width: 100%;
  height: 40px;
  margin-top: $gutter;
  cursor: pointer;
  background: {
    position: 50% 50%;
    repeat: no-repeat;
    size: 100% 60%;
  }
  border-radius: 5px;
  box-sizing: border-box;

  //scss-lint:disable ColorVariable, ColorKeyword, NameFormat
  @if stencilString("style_apple_pay_button") == "white" {
    background-color: white;
    background-image: -webkit-named-image(apple-pay-logo-black);
  } @else if stencilString("style_apple_pay_button") == "white-border" {
    background-color: white;
    background-image: -webkit-named-image(apple-pay-logo-black);
    border: 0.5px solid black;
  } @else {
    background-color: black;
    background-image: -webkit-named-image(apple-pay-logo-white);
  }

  .apple-pay-supported & { display: block; }
}

/* scss-combine:components/sub-header */
.sub-header {
  @include outer-container;
  padding-right: $gutter * 2;
  padding-left: $gutter * 2;
  overflow: hidden;

  @include breakpoint(l-only) {
    padding-right: 20px;
    padding-left: 20px;
    text-align: center;
  }
}

.breadcrumb-container {
  @include span-columns(12);
  padding-top: $gutter * 2;
}

.breadcrumb-item {
  display: inline-block;
  font-size: $navigation-size;
  color: $accent-color;

  &:after {
    display: inline-block;
    padding-right: 8px;
    padding-left: 6px;
    color: $border-color;
    content: "/";
  }

  &:last-child:after {
    content: none;
  }
}

/* scss-combine:components/footer */
.main-footer {
  -webkit-font-smoothing: antialiased;
  background-color: $footer-background-color;
  border-top: 1px solid $border-color;

  @include breakpoint(l-only) { padding-bottom: 0; }

  .container {
    @include outer-container;
    padding-top: 50px;
    padding-right: $gutter * 2;
    padding-bottom: 50px;
    padding-left: $gutter * 2;

    @include breakpoint(l-only) {
      padding-right: 0;
      padding-left: 0;
    }
  }
}

.footer-left {
  @include span-columns(8);

  @include breakpoint(l-only) {
    @include span-columns(12);
    margin-bottom: 10px;
  }
}

.footer-right {
  @include span-columns(4);

  @include breakpoint(l-only) {
    @include span-columns(12);
  }
}

.footer-navigation {
  @include span-columns(3);
  float: left;

  @include breakpoint(xl-only) {
    @include span-columns(4);
  }

  @include breakpoint(l-only) {
    width: 100%;
    margin-right: 0;
    margin-bottom: 50px;
    text-align: center;
  }
}

.footer-navigation-list-item {
  //scss-lint:disable VariableForProperty
  > a {
    display: block;
    padding: 12px 0;
    font-family: $navigation-font;
    font-size: $navigation-size;
    line-height: $navigation-size;
    color: rgba($footer-color, 0.85);
    text-transform: capitalize;

    &:hover { color: $footer-color; }

    [class^="icon"] { padding-right: 6px; }
  }

  &:last-child a { padding-bottom: 0; }
}

.footer-description {
  @include span-columns(6);
  display: block;
  float: left;
  padding-right: 15%;

  @include breakpoint(xl-only) {
    @include span-columns(4);
    padding-right: 0;
  }

  @include breakpoint(l-only) {
    width: 100%;
    padding-right: 0;
    text-align: center;

    p {
      padding-right: 10%;
      padding-left: 10%;
      margin-top: 10px;
    }
  }

  p { color: $footer-color; }
}

.footer-currency-selector {
  display: none;
  float: left;
  width: 100%;
  text-align: center;

  @include breakpoint(l-only) { display: block; }

  .footer-currency-selector-title { color: $footer-color; }

  .form-select-wrapper {
    display: inline-block;
    width: auto;
    min-width: 0;
    padding-right: 40px;
    color: $footer-color;
    background-color: $footer-background-color;

    &::after { border-color: $footer-color; }
  }
}

.footer-newsletter {
  width: 100%;

  @include breakpoint(l-only) {
    padding-top: ($gutter * 4);
    padding-bottom: ($gutter * 5);
    margin-top: 30px;
    text-align: center;
    background-color: darken($accent-color, 3%);

    .footer-section-title { color: $light-color; }
  }
}

.footer-newsletter-form {
  @include breakpoint(l-only) {
    padding-right: 10%;
    padding-left: 10%;
  }

  .newsletter-signup-email {
    display: inline-block;
    width: 73%;
    min-width: 0;
    margin-right: 2%;

    @include breakpoint(m-only) { width: 63%;}
  }

  .newsletter-signup-submit {
    //scss-lint:disable NestingDepth
    display: inline-block;
    width: 25%;

    @include breakpoint(m-only) { width: 35%;}

    input {
      height: 43px;

      @if (lightness($footer-background-color) > 50) {
        background-color: $primary-button-background-color;
        border-color: $primary-button-background-color;

        &:hover {
          background-color: $primary-button-hover;
          border-color: $primary-button-hover;
        }
      } @else {
        background-color: mix($footer-background-color, $footer-color, 80%);
        border-color: mix($footer-background-color, $footer-color, 80%);

        &:hover {
          background-color: mix($footer-background-color, $footer-color, 90%);
          border-color: mix($footer-background-color, $footer-color, 90%);
        }
      }
    }
  }
}

.footer-section-title {
  //scss-lint:disable NameFormat
  margin-top: 0;
  font-size: 16px;
  line-height: 16px;
  color: $footer-color;

  @if (stencilFontFamily("heading-font") == "Lora") {
    font-weight: 600;
    text-transform: capitalize;
  }
}

.footer-payment-icons {
  float: left;
  width: 100%;
  margin-top: $gutter * 2;
  text-align: right;

  @include breakpoint(l-only) {
    padding-bottom: 55px;
    margin-top: 0;
    text-align: center;
    background-color: darken($accent-color, 3%);
  }
}

.footer-payment-icons-list {
  float: left;
  width: 100%;

  li {
    display: inline-block;
    margin-right: 10px;
    font-size: 25px;
    color: rgba($footer-color, 0.4);

    &:last-of-type { margin-right: 0; }
  }
}

// Footer Credits
.footer-attribution,
.footer-copyright {
  float: left;
  width: 100%;
  margin-top: 5px;
  color: rgba($footer-color, 0.4);
  text-align: right;

  @include breakpoint(l-only) {
    padding: 0 10%;
    margin-top: 0;
    text-align: center;
    background-color: darken($accent-color, 3%);
  }

  a {
    color: rgba($footer-color, 0.4);
    border-bottom: 1px solid rgba($footer-color, 0.2);

    &:hover { color: $footer-color; }
  }
}

.footer-copyright {
  margin: 0;

  @include breakpoint(l-only) { padding-bottom: $gutter * 2; }

  p { margin: 0; }
}

// Footer contact
.footer-contact {
  letter-spacing: 0.05em;
  color: rgba($footer-color, 0.4);
  text-align: center;
  background-color: darken($footer-background-color, 5%);

  > * {
    display: inline-block;
    margin: $gutter ($gutter / 2);
    vertical-align: middle;

    &:nth-child(2)::before {
      position: relative;
      top: -2px;
      margin-right: $gutter / 1.5;
      font-size: 11px;
      color: rgba($footer-color, 0.2);
      content: "\2022";
    }
  }
}

/* scss-combine:components/banners */
$page-banner-border: darken($banner-background-color, 18%);

.page-banner {
  letter-spacing: 1px;
  color: $light-color;
  background-color: $banner-background-color;
}

.page-banner-inner {
  padding: ($gutter * 2) 0;
  text-align: center;
  border-top: 1px solid $page-banner-border;
  border-right: 0;
  border-left: 0;

  &:first-of-type {
    border-top: 0;

    .page-banner-bottom & { border-top: 1px solid $page-banner-border; }
  }

  &:last-of-type {
    border-bottom: 1px solid $page-banner-border;

    .page-banner-bottom & { border-bottom: 0; }
  }

  > .banner {
    @include outer-container();

    .full-width-banners & {
      max-width: 100%;
      padding: 0 ($gutter * 2);
    }
  }

  .rte img {
    display: block;
    max-width: 100%;
    height: auto;
  }

  p {
    &:first-of-type { margin-top: 0; }
    &:last-of-type { margin-bottom: 0; }
  }
}

.shipping-banner {
  color: $light-color;
  background-color: rgba($success-color, 0.6);

  .page-banner-inner {
    border-top: 1px solid $success-color;

    &:last-of-type { border-bottom: 1px solid $success-color; }
  }
}

/* scss-combine:components/alerts */
// Alert Messages
.alert {
  position: relative;
  letter-spacing: 1px;
  color: $light-color;
  transition: opacity 0.3s ease;

  @include breakpoint(m-only) { text-align: center; }

  &.dismissed { opacity: 0; }

  &.hidden { display: none; }

  .narrow & { text-align: center; }

  .alert-dismiss {
    position: absolute;
    top: 10px;
    right: 10px;
    color: inherit;
    cursor: pointer;
    opacity: 0.8;

    &:hover { opacity: 1; }

    svg {
      display: block;
      width: 13px;
      height: 13px;
      fill: $light-color;
    }
  }

  &.alert-success,
  &.alert-error,
  &.alert-info {
    padding: 15px 20px;
    margin: $gutter 0;
    border: 1px solid $border-color;

    .quick-shop & { margin: 0 0 20px; }
  }

  &.alert-success {
    background-color: rgba($success-color, 0.6);
    border-color: $success-color;
  }

  &.alert-error {
    background-color: rgba($error-color, 0.6);
    border-color: $error-color;
  }

  &.alert-info {
    background-color: rgba($accent-color, 0.6);
    border-color: $accent-color;
  }

  a {
    color: $light-color;
    text-decoration: underline;
  }
}

/* scss-combine:components/faceted-search */
.faceted-search {
  padding-right: 30px;

  @include breakpoint(l-only) {
    display: none;
    padding-right: 0;
    text-align: center;

    &.visible {
      display: block;
    }
  }
}

.faceted-sidebar-toggle {
  display: none;
  margin-bottom: 50px;

  @include breakpoint(l-only) {
    display: inline-block;
  }
}

.faceted-search-title {
  margin-top: 0;
  margin-bottom: 5px;
  font-size: $font-size;
}

.faceted-search-filter {
  margin-bottom: $gutter * 3;
}

.faceted-search-item {

  @include breakpoint(l-only) {
    max-width: 280px;
    margin: 0 auto;
    border-top: 1px solid rgba($border-color, 0.5);

    &:first-of-type {
      border-top: 0;
    }
  }

  a {
    position: relative;
    display: inline-block;
    vertical-align: middle;

    @include breakpoint(l-only) {
      width: 100%;
    }
  }

  .facet-checkbox {
    display: inline-block;
    margin-top: 2px;
    margin-right: 10px;
    vertical-align: middle;

    @include breakpoint(l-only) {
      position: absolute;
      top: 10px;
      left: 10px;
    }
  }

  .faceted-search-item-label {
    position: relative;
    display: inline-block;
    max-width: 100%;
    padding-right: 50px;
    line-height: inherit;
    vertical-align: middle;

    @include breakpoint(l-only) {
      position: static;
      max-width: 240px;
      padding: 5px 0;
    }
  }

  // scss-lint:disable VariableForProperty
  .faceted-search-item-count {
    position: absolute;
    right: 0;
    bottom: 0;
    width: 40px;
    color: rgba($dark-accent-color,0.5);

    @include breakpoint(l-only) {
      position: absolute;
      top: 10px;
      right: 7px;
      width: auto;
      font-size: 14px;
      line-height: 1;
    }
  }
}

// price range
.facet-range-input-group {
  @extend %clearfix;
  position: relative;
  padding-top: 10px;
  padding-right: 80px;

  @include breakpoint(l-only) {
    max-width: 290px;
    margin: 0 auto;
  }
}

.facet-range-inputs {
  .form-field {
    float: left;
    width: 48%;

    &:last-child {
      float: right;
    }

    .form-input {
      width: 100%;
      height: 41px;
      min-height: 0;

      // scss-lint:disable NestingDepth
      &:focus {
        border-color: $accent-color;
        outline: none;
      }
    }
  }
}

.facet-submit {
  position: absolute;
  top: 10px;
  right: 0;
  width: 70px;
  height: 40px;
  padding-right: 0;
  padding-left: 0;
  font-family: $body-font;
  font-size: 13px;
  letter-spacing: 0;
  text-transform: none;
}


// star rating
.facet-rating {
  .star {
    font-size: 12px;
    color: $border-color;

    &.checked {
      color: $accent-color;
    }
  }
}

.facet-selected-filters {
  padding-bottom: 25px;
  margin-bottom: 30px;
  border-bottom: 1px solid $border-color;

  .clear-all {
    display: inline-block;
    width: 100%;
    padding: 2px;
    clear: both;
    font-size: 14px;
    color: $accent-color;
  }
}

.selected-filter-items {
  float: left;
  width: 100%;
  margin-bottom: 18px;
}

.selected-filter-item {
  @extend %ellipsis;
  position: relative;
  display: inline-block;
  float: left;
  padding: 10px 15px;
  margin: 0 7px 7px 0;
  font-size: 13px;
  color: $body-color;
  background-color: darken(mix($body-background-color, $border-color), 2%);
  border-radius: 4px;
  transition: all 0.2s $ease-out-quad;

  .remove {
    position: relative;
    top: 1px;
    padding-left: 7px;
    font-size: 17px;
    line-height: 17px;
    color: $dark-color;
    transition: all 0.2s $ease-out-quad;
  }

  &:hover {
    color: $light-color;
    background-color: $accent-color;

    .remove {
      color: $light-color;
    }
  }
}

/* scss-combine:components/sorting */
// Facet Sorting
.sorting {
  padding-right: 30px;

  @include breakpoint(l-only) { padding-right: 0; }

  .form-label { @extend .show-for-sr; }
}

.sorting-title {
  margin-top: 0;
  margin-bottom: 5px;
  font-size: $font-size;
}

.product-sort-select { margin-bottom: $gutter * 3; }

// Sorting
.product-grid-sorting {
  position: relative;
  margin-bottom: $gutter * 3;

  @include breakpoint(m-only) { margin-bottom: 20px; }

  &:before {
    position: absolute;
    top: 50%;
    display: block;
    width: 100%;
    height: 1px;
    border-bottom: 1px solid $border-color;
    content: "";
  }

  .sorting {
    padding-right: 0;
    margin-top: -$gutter * 2;
    text-align: center;
  }

  .product-sort-select {
    position: relative;
    z-index: 1;
    display: inline-block;
    width: 33.333%;
    padding: $gutter * 2;
    margin-bottom: 0;
    background-color: $body-background-color;

    @include breakpoint(l-only) { width: 50%; }

    @include breakpoint(m-only) {
      width: 100%;
      padding: 0;
    }
  }

  .form-select-wrapper {
    height: 60px;
    line-height: 58px;
    background-color: $body-background-color;
    border-color: $border-color;
  }

  .sorting-title { @extend .show-for-sr; }
}


// Navigation
/* scss-combine:components/navigation/nav-common */
.navigation-wrap {
  float: left;
  width: 100%;
  font-family: $navigation-font;
  background-color: $header-background-color;
}

.navigation {
  @include outer-container;
  padding-right: $gutter * 2;
  padding-left: $gutter * 2;

  @include breakpoint(l-only) {
    padding-right: 20px;
    padding-left: 20px;
  }

  a {
    display: block;
    font-size: $navigation-size;
    line-height: $navigation-size;
    color: $navigation-color;
  }
}

.nav-menu {
  @include span-columns(9, block-collapse);
  padding: 0;
  list-style-type: none;

  @include breakpoint(l-only) {
    //scss-lint:disable ImportantRule - overwriting the Bourbon block-collapse
    width: 100% !important;
  }

  .menu-open & { display: block; }
}

.nav-menu-item {
  position: relative;
  float: left;
  width: 100%;
  border: 1px solid $header-background-color;
  transition: color 0.2s $ease-out-quad;

  > a {
    position: relative;
    padding: $navigation-padding;
    border-bottom: 1px solid transparent;
  }

  > a:hover { color: $navigation-hover-color; }

  > .nav-icon { display: none; }
}

// scss-lint:disable MergeableSelector
.nav-menu-item.has-dropdown {
  position: relative;

  > a {
    padding-right: 40px;

    &::after {
      position: absolute;
      top: 50%;
      right: 0;
      width: 0;
      height: 0;
      margin-top: -2px;
      margin-right: 15px;
      border-top: 5px solid $navigation-color;
      border-right: 5px solid transparent;
      border-left: 5px solid transparent;
      content: "";
      transition: border-color 0.2s $ease-out-quad;
    }

    &:hover::after { border-top-color: $navigation-hover-color; }
  }

  .mobile & > ul { display: none; }
  .mobile &.menu-open > ul { display: block; }
}

// scss-lint:disable MergeableSelector
.nav-menu-item.menu-open {
  z-index: 15;
  border-color: darken($header-background-color, 18%);

  > a {
    position: relative;
    z-index: 2;
    color: $navigation-hover-color;
    background-color: $header-background-color;
    border-bottom: 1px solid $header-background-color;

    &::after { border-top-color: $navigation-hover-color; }
  }
}

.nav-submenu {
  @include opacity(0);
  @include transition(all, 0.1s, ease-in-out);
  position: relative;
  top: 100%;
  display: none;
  padding-top: $navigation-padding;
  padding-bottom: $navigation-padding;
  background-color: $header-background-color;
  visibility: hidden;

  &.visible {
    @include opacity(1);
    display: block;
    visibility: visible;
  }

  a {
    display: block;
    padding: 10px $navigation-padding;

    .has-dropdown & {
      padding-right: $navigation-padding + 20;
    }
  }
}

.nav-submenu-item.has-dropdown {
  > a { position: relative; }

  &.menu-open {
    > a::after {
      border-left-color: $accent-color;
      transform: rotate(90deg);
    }
  }

  &:first-child {
    > a::after { margin-top: -5px; }
  }
}

.navigation-tier-tertiary {
  @include transition(all, 0.1s, ease-in-out);
  position: relative;
  height: 0;
  padding-top: 0;
  padding-bottom: 0;
  margin-top: 0;
  margin-bottom: 0;
  overflow: hidden;
  background-color: darken($header-background-color, 5%);
  transition: all 0.4s $ease-out-quad;

  .menu-open > & {
    height: auto;
    padding-top: 10px;
    padding-bottom: 10px;
    margin-top: 10px;
    margin-bottom: 10px;
  }
}

.nav-icon {
  position: absolute;
  top: 8px;
  right: $navigation-padding;
  left: auto;
  width: rem-calc(20);
  height: rem-calc(20);
  margin-top: rem-calc(0);
  font-size: rem-calc(8);
  text-align: center;
  cursor: pointer;

  @include breakpoint(l-only) {
    right: $gutter + 10;
    color: contrast($header-background-color, 35%);
  }

  &::before {
    display: block;
    margin-top: 7px;
  }

  &:hover { color: $navigation-hover-color; }
}

.js .nav-menu {
  visibility: hidden;

  &.show-menu { visibility: visible; }
}

/* scss-combine:components/navigation/nav-mobile */
@include breakpoint(l-only) {
  .navigation-wrap {
    position: fixed;
    top: 0;
    z-index: 10;
    height: 100vh;
    padding: 0;
    overflow: hidden;
    background-color: rgba($dark-color, 0.7);
    opacity: 0;
    transition: all 0.4s $ease-out-quad;

    @include breakpoint(l-up) {
      background: transparent;
      opacity: 0;
    }

    .mobile-nav-open & { opacity: 1; }

    .mobile-nav-closed & {
      z-index: -2;
      background: transparent;
    }
  }

  .navigation {
    position: relative;
    top: 0;
    left: 0;
    z-index: -1;
    width: 450px;
    height: 100vh;
    padding: 0;
    margin: 0;
    overflow: hidden;
    background-color: $header-background-color;
    transform: translateX(-450px);
    transition: all 0.2s $ease-out-quad;

    > .navigation-toggle-mobile-wrapper {
      width: 100%;
      padding-top: 12px;
      line-height: 20px;
      text-align: right;
    }

    .mobile-nav-open & {
      z-index: 2;
      overflow-y: scroll;
      transform: translateX(0);
    }
  }

  .mobile-actions {
    @include outer-container;
    padding-right: 30px;
    padding-left: 30px;
    border-bottom: 1px solid darken($header-background-color, 18%);

    .mobile-action-item {
      @include span-columns(4, block-collapse);
      padding-top: 20px;
      padding-bottom: 20px;
      text-align: center;
      border-left: 1px solid darken($header-background-color, 18%);

      &:first-child { border: 0; }

      a { line-height: 24px; }
    }

    .cart-count-preview {
      > a,
      .cart-preview { display: inline-block; }

      .cart-count {
        position: relative;
        top: -3px;
        display: inline-block;
        width: 16px;
        height: 16px;
        margin-left: 3px;
        font-size: 11px;
        font-weight: 400;
        line-height: 16px;
        color: $light-color;
        text-align: center;
        background-color: $accent-color;
        border-radius: 50%;
      }
    }
  }

  .nav-menu {
    position: absolute;
    top: 50;
    z-index: 1;
    width: 100%;
    height: 100%;
    max-width: 450px;
    padding: 0;
  }

  .nav-menu-item {
    border: 0;

    &.menu-open {
      margin-bottom: -1px;
      background: contrast($header-background-color, 3%);
      border: 0;

      > a {
        margin-bottom: 20px;
        color: $navigation-color;
        background-color: transparent;
        border: 0;
        border-top: 1px solid transparent;
        border-bottom: 1px solid contrast($header-background-color, 25%);

        // scss-lint:disable NestingDepth, ImportantRule
        &::after { border-top-color: contrast($header-background-color, 35%) !important; }
      }

      > .nav-icon { display: none; }
    }

    &:first-child a { border-top: 0; }

    > a {
      padding-top: 30px;
      padding-right: 20px;
      padding-bottom: 30px;
      padding-left: 20px;
      margin-right: 30px;
      margin-left: 30px;
      border-top: 1px solid darken($header-background-color, 18%);
      transition: none;

      @include breakpoint(m-only) {
        padding-top: 20px;
        padding-bottom: 20px;
      }
    }
  }

  .nav-submenu {
    padding-top: 0;
    padding-bottom: 30px;
    background: transparent;

    @include breakpoint(m-only) { padding-bottom: 20px; }
  }

  .nav-submenu-item .nav-submenu-item { padding-left: 10px; }

  .nav-submenu-item > a {
    padding-top: 5px;
    padding-right: 20px;
    padding-bottom: 5px;
    padding-left: 20px;
    margin-right: 30px;
    margin-left: 30px;
    color: $navigation-color;
  }

  .nav-submenu-item.has-dropdown {
    position: relative;

    > a::after {
      right: auto;
      left: auto;
      margin-top: -5px;
      margin-left: 15px;
      border-left-color: $navigation-color;
    }

    &.menu-open {
      > a::after { border-left-color: $navigation-hover-color; }
    }

    .nav-icon {
      top: 4px;
      right: $navigation-padding + 25;
    }
  }

  .navigation-tier-tertiary {
    padding-top: 0;
    padding-bottom: 0;
    margin-top: 0;
    margin-bottom: 0;
    background-color: $navigation-hover-color;
    transition: none;

    .menu-open > & {
      padding-top: 20px;
      padding-bottom: 20px;
      margin-top: 20px;
      margin-bottom: 20px;
    }
  }

  .navigation-tier-tertiary-item {
    > a {
      padding-right: 20px;
      padding-left: 20px;
      margin-right: 30px;
      margin-left: 30px;
      color: $light-color;
    }
  }

  .mobile-branding {
    width: 100%;
    padding-top: 0;
    padding-right: 50px;
    padding-bottom: 30px;
    padding-left: 50px;
    text-align: center;
    border-bottom: 1px solid darken($header-background-color, 18%);

    > .header-branding-logo {
      max-width: 100%;
      text-align: center;

      img { display: inline-block; }
    }

    > .header-branding-text a {
      font-size: 25px;
      line-height: 25px;
    }
  }

  .search-form-wrapper {
    display: none;
    padding: 10px 40px;
    background-color: darken($header-background-color, 18%);
    border-bottom: 1px darken($header-background-color, 18%);

    &.visible { display: block; }

    .search-input {
      width: 100%;
      padding-top: 10px;
      padding-right: 20px;
      padding-bottom: 10px;
      padding-left: 20px;
      border: 1px solid $border-color;
      border-radius: 4px;
      box-sizing: border-box;

      &:focus {
        border: 1px solid $navigation-hover-color;
        outline: none;
      }
    }
  }

  .navigation-toggle-mobile-wrapper {
    position: relative;
    display: inline-block;
    padding-top: 0;
    padding-right: 20px;
    padding-bottom: 0;
    padding-left: 20px;
    font-size: 25px;
    line-height: 45px;
    vertical-align: top;
    background-color: transparent;
    border: 0;

    &.close { font-size: 20px; }

    > span {
      position: relative;
      top: 1px;
      color: $navigation-color;
    }
  }

  .main-header,
  .main-content,
  .main-footer,
  .page-banner {
    transform: translateX(0);
    transition: all 0.2s $ease-out-quad;
  }

  .mobile-nav-open {
    .main-header,
    .main-content,
    .main-footer,
    .page-banner { transform: translateX(450px); }
  }
}

@include breakpoint(m-only) {
  .navigation {
    width: 300px;
    transform: translateX(-300px);
  }

  .nav-menu { max-width: 300px; }

  .mobile-nav-open {
    .main-header,
    .main-content,
    .main-footer,
    .page-banner { transform: translateX(300px); }
  }
}

/* scss-combine:components/navigation/nav-desktop */
@include breakpoint(l-up) {

  .navigation-wrap {
    position: relative;
    float: none;
    height: auto;
    padding-bottom: ($gutter * 2) - $navigation-padding + 10px;
    overflow: visible;
    border-bottom: 1px solid darken($header-background-color, 18%);

    &.navigation-alternate { padding-bottom: 0; }
  }

  .navigation {
    position: relative;

    .navigation-alternate & { font-size: 0; }
    .navigation-alternate.navigation-left & { padding: 0 0 0 15px; }

    .navigation-alternate.navigation-center & {
      padding: 0;
      text-align: center;
    }
  }

  .mobile-actions,
  .navigation-toggle-mobile-wrapper,
  .mobile-search-wrapper,
  .mobile-branding,
  .navigation .mobile-list-item { display: none; }

  .nav-menu {
    margin-left: -$navigation-padding;

    .navigation-alternate & {
      position: relative;
      right: -$navigation-padding;
      display: inline-block;
      float: none;
      width: 80%;
      margin-left: 0;
      text-align: right;
      vertical-align: middle;
    }

    .navigation-center & {
      right: auto;
      width: 100%;
      text-align: center;
    }

    .navigation-left.navigation-alternate & {
      right: 0;
      text-align: left;
    }

    > li {
      width: auto;
      margin-right: 10px;

      .navigation-alternate & {
        //scss-lint:disable NestingDepth
        display: inline-block;
        float: none;

        &.mobile-list-item { display: none; }
        &:nth-last-child(2) { margin-right: 0; }
      }
    }
  }

  .nav-submenu {
    position: absolute;
    min-width: calc(180px + #{$navigation-size * 3} + #{$navigation-padding});
    margin: -1px 0 0 -1px;
    border: 1px solid darken($header-background-color, 18%);

    .navigation-alternate & { text-align: left; }

    > li > a:hover { color: $navigation-hover-color; }

    //tertiary
    .nav-submenu {
      position: absolute;
      top: 0;

      &.fly-right {
        left: 239px;
      }

      &.fly-left {
        right: 239px;
      }
    }
  }

  .nav-submenu-item {
    position: relative;
  }

  .nav-submenu-item.menu-open {
    > a { color: $navigation-hover-color; }
  }
}


// Products
/* scss-combine:components/products/product-grid */
// Container
.product-grid-container {
  @include outer-container;
  padding-right: $gutter * 2;
  padding-left: $gutter * 2;

  @include breakpoint(l-only) {
    padding-right: 20px;
    padding-left: 20px;
  }
}

// Header
.product-grid-header {
  padding-bottom: 0;
  border-bottom: 0;

  &.has-sidebar {
    padding-bottom: 75px;
    border-bottom: 1px solid $border-color;
  }
}

// Sidebar
.product-grid-sidebar {
  @include span-columns(3);

  @include breakpoint(l-only) {
    @include span-columns(12);
    margin-right: 0;
    text-align: center;
  }
}

// List
.product-grid { overflow: hidden; }

.product-grid-list {
  @include span-columns(12);
  position: relative;
  overflow: hidden;

  .has-sidebar & {
    @include span-columns(9);
    padding-left: 10px;

    @include breakpoint(l-only) {
      @include span-columns(12);
      padding-left: 0;
    }
  }
}

.product-grid-list-items {
  position: relative;

  @include breakpoint(l-only) {
    @include row(1260, 130);
  }

  @include breakpoint(m-only) {
    @include row(1260, 120);
  }

  &.row-of-five   { @include row(1260, 70); }
  &.row-of-four   { @include row(1260, 92); }
  &.row-of-three  { @include row(1260, 130); }
  &.row-of-two    { @include row(1260, 120); }

  //scss-lint:disable DeclarationOrder
  @include breakpoint(l-only) {
    &.row-of-three,
    &.row-of-five {
      @include row(1260, 92);
    }
  }

  .has-sidebar & {
    @include row(1260, 130);
  }
}

// Grid
.product-grid-item {
  // scss-lint:disable DeclarationOrder
  position: relative;
  float: left;
  margin-bottom: $gutter * 4;

  // Product Per Row
  .row-of-five & {
    @include fluid-width(200, 1280, 70); // 4-col

    &:nth-child(4n + 1) { clear: none; }
    &:nth-child(5n + 1) { clear: none; }

    /* scss-combine:product_grid_breakpoints */
// Products Per Row Breakpoints
@include breakpoint(l-only) {
  @include fluid-width(200, 740, 70); // 3-col
  margin-bottom: $gutter * 3;

  &:nth-child(2n + 1) { clear: none; }
  &:nth-child(3n + 1) { clear: left; }
  &:nth-child(4n + 1) { clear: none; }
  &:nth-child(5n + 1) { clear: none; }

}

@include breakpoint(m-only) {
  @include fluid-width(200, 435, 35); // 2-col
  margin-bottom: $gutter * 2;

  &:nth-child(2n + 1) { clear: left; }
  &:nth-child(3n + 1) { clear: none; }
}

  }

  .row-of-four & {
    @include fluid-width(200, 1010, 70); // 4-col

    &:nth-child(3n + 1) { clear: none; }
    &:nth-child(4n + 1) { clear: left; }

    /* scss-combine:product_grid_breakpoints */
// Products Per Row Breakpoints
@include breakpoint(l-only) {
  @include fluid-width(200, 740, 70); // 3-col
  margin-bottom: $gutter * 3;

  &:nth-child(2n + 1) { clear: none; }
  &:nth-child(3n + 1) { clear: left; }
  &:nth-child(4n + 1) { clear: none; }
  &:nth-child(5n + 1) { clear: none; }

}

@include breakpoint(m-only) {
  @include fluid-width(200, 435, 35); // 2-col
  margin-bottom: $gutter * 2;

  &:nth-child(2n + 1) { clear: left; }
  &:nth-child(3n + 1) { clear: none; }
}

  }

  .row-of-three & {
    @include fluid-width(200, 740, 70); // 3-col

    &:nth-child(2n + 1) { clear: none; }
    &:nth-child(3n + 1) { clear: left; }

    /* scss-combine:product_grid_breakpoints */
// Products Per Row Breakpoints
@include breakpoint(l-only) {
  @include fluid-width(200, 740, 70); // 3-col
  margin-bottom: $gutter * 3;

  &:nth-child(2n + 1) { clear: none; }
  &:nth-child(3n + 1) { clear: left; }
  &:nth-child(4n + 1) { clear: none; }
  &:nth-child(5n + 1) { clear: none; }

}

@include breakpoint(m-only) {
  @include fluid-width(200, 435, 35); // 2-col
  margin-bottom: $gutter * 2;

  &:nth-child(2n + 1) { clear: left; }
  &:nth-child(3n + 1) { clear: none; }
}

  }

  .row-of-two & {
    @include fluid-width(200, 435, 35); // 2-col

    &:nth-child(2n + 1) { clear: left; }
    &:nth-child(3n + 1) { clear: none; }

    /* scss-combine:product_grid_breakpoints */
// Products Per Row Breakpoints
@include breakpoint(l-only) {
  @include fluid-width(200, 740, 70); // 3-col
  margin-bottom: $gutter * 3;

  &:nth-child(2n + 1) { clear: none; }
  &:nth-child(3n + 1) { clear: left; }
  &:nth-child(4n + 1) { clear: none; }
  &:nth-child(5n + 1) { clear: none; }

}

@include breakpoint(m-only) {
  @include fluid-width(200, 435, 35); // 2-col
  margin-bottom: $gutter * 2;

  &:nth-child(2n + 1) { clear: left; }
  &:nth-child(3n + 1) { clear: none; }
}

  }

  // Grid Sidebar
  .has-sidebar & {
    @include fluid-width(200, 740, 70); // 3-col

    &:nth-child(2n + 1) { clear: none; }
    &:nth-child(3n + 1) { clear: left; }

    @include breakpoint(m-only) {
      @include fluid-width(200, 435, 35); // 2-col

      &:nth-child(2n + 1) { clear: left; }
      &:nth-child(3n + 1) { clear: none; }
    }
  }
}

.product-grid-no-results {
  @include fluid-width(200, 200, 0); // 2-col
  padding-bottom: $gutter * 3;
  text-align: center;
}

// Thumbnail
.product-grid-item-thumbnail {
  @include maintain-ratio(1 1);
  position: relative;
  max-width: 100%;
  margin: 0 auto;
  overflow: hidden;
  text-align: center;
  background-color: transparent;
  transition: all 0.5s $ease-out-quad;
  backface-visibility: hidden;

  &.aspect-one-by-one     { @include maintain-ratio(1 1); }
  &.aspect-four-by-five   { @include maintain-ratio(4 5); }
  &.aspect-two-by-three   { @include maintain-ratio(2 3); }
  &.aspect-three-by-two   { @include maintain-ratio(3 2); }

  &:hover {
    background-color: $dark-color;

    > a {
      opacity: 0.8;
      transform: scale(1.05);
    }
  }

  > a {
    float: left;
    width: 100%;
    margin: 0 auto;
    overflow: hidden;
    text-align: center;
    background-position: center center;
    background-size: cover;
    opacity: 1;
    transform: scale(1);
    transition: all 0.5s $ease-out-quad;
    backface-visibility: hidden;

    &.cropped-thumbnail-block { @include coverer; }

    .cropped-thumbnail-image {
      @include centerer;
      height: auto;
      max-width: none;
    }

    img { display: none; }

    .no-image { background-color: $light-color; }
  }
}

// Ratings
.product-grid-item-rating-wrap {
  position: absolute;
  top: 0;
  width: 100%;
  text-align: center;

  .product-grid-item-rating {
    position: relative;
    top: -45px;
    opacity: 0;
    transition: all 0.5s $ease-out-quad;

    .product-grid-item-thumbnail:hover & {
      top: $gutter;
      opacity: 1;
    }

    .star { color: $accent-color; }
    .star-empty { color: $light-color; }

    &.no-rating {
      font-size: 12px;
      letter-spacing: 1px;
      color: $light-color;
      text-shadow: 0 0 9px rgba($dark-color, 0.7);
      text-transform: uppercase;
    }
  }
}

// Sale / Sold Out
.product-grid-item-sale-badge {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 140px;
  height: 45px;
  margin: -25px 0 0 -70px;
  line-height: 45px;
  color: $heading-color;
  background-color: $light-color;
  border-radius: 3px;
  opacity: 1;
  visibility: visible;
  transition: all 0.2s $ease-out-quad;
  backface-visibility: hidden;

  .product-grid-item-thumbnail:hover & {
    opacity: 0;
    visibility: hidden;
  }
}

// Compare
.product-item-compare,
.compare-remove-wrap {
  position: absolute;
  bottom: 0;
  width: 100%;
  text-align: center;

  @include breakpoint(m-only) { display: none; }

  > .form-field-checkbox,
  .compare-remove {
    position: relative;
    bottom: -$gutter * 3;
    display: inline-block;
    padding-top: 5px;
    padding-right: 12px;
    padding-bottom: 7px;
    padding-left: 12px;
    font-size: 14px;
    line-height: 14px;
    color: $light-color;
    cursor: pointer;
    opacity: 0;
    transition: all 0.5s $ease-out-quad;

    .form-label-text {
      //scss-lint:disable NestingDepth
      padding-left: 0;
      font-family: $heading-font;
      font-style: normal;
      font-weight: 400;
      letter-spacing: 1px;
      color: $light-color;
      text-transform: uppercase;

      &::before {
        background-color: transparent;
        border: 2px solid $light-color;
      }
    }

    .icon-close {
      padding-left: 5px;
      font-size: 12px;
    }

    .product-grid-item-thumbnail:hover & {
      bottom: $gutter;
      opacity: 1;
    }
  }

  .input-checkbox {
    display: inline-block;
    vertical-align: middle;
  }

  .form-label-text {
    padding-left: 4px;
    vertical-align: middle;
  }
}

// Details
.product-grid-item-details {
  width: 90%;
  margin: 0 auto;
  text-align: center;

  h3 {
    margin-bottom: 5px;
    font-family: $body-font;
    font-size: $font-size * 1.1;
    font-weight: 400;
    text-transform: capitalize;

    a {
      color: $dark-color;
    }
  }

  p {
    margin-top: 5px;
    font-size: 13px;
    font-weight: 400;
  }
}

// Price
.product-grid-item-price {
  font-size: $font-size;
  color: $accent-color;
  text-transform: capitalize;

  // scss-lint:disable VariableForProperty
  .price-rrp {
    padding-right: 10px;
    color: rgba($dark-color, 0.5);
    text-decoration: line-through;
  }

  .price-tax-label {
    display: block;
    font-size: $meta-size;
    font-weight: lighter;
    color: $meta-color;
  }
}

/* scss-combine:components/products/product-images */
// Product Images
.product-slideshow {
  padding-right: 35px;
  transform: translate3d(0, 0, 0);

  @include breakpoint(m-only) {
    padding-right: 0;
    margin-bottom: $gutter * 2;
    text-align: center;
  }
}

.product-slideshow-images {
  position: relative;
  min-height: 20px;

  .spinner {
    @include centerer();
    top: 300px;
    opacity: 1;
    visibility: visible;
    transition: opacity 0.3s $ease-out-quad;

    @include breakpoint(m-only) { display: none; }

    .quick-shop & { display: none; }
  }

  &.flickity-enabled {
    > .product-single-sale-badge { display: block; }

    > .spinner {
      opacity: 0;
      visibility: hidden;
    }
  }

  .product-single-sale-badge {
    position: absolute;
    top: $gutter;
    left: $gutter;
    z-index: 10;
    display: none;
    padding: 10px 20px;
    letter-spacing: 0.1em;
    color: contrast($accent-color, 90%);
    text-transform: uppercase;
    background-color: $accent-color;
  }

  img {
    display: none;
    width: 100%;
    height: auto;
  }

  .flickity-viewport {
    margin-bottom: 0;

    img {
      display: block;
      padding-left: 2px;
    }
  }

  .flickity-page-dots {
    position: absolute;
    bottom: $gutter / 2;
    display: none;

    .visible-controls & { display: block; }
  }

  .flickity-prev-next-button {
    display: none;
    background-color: transparent;

    &:hover .arrow { fill: contrast($accent-color, 30%); }

    .visible-controls & { display: block; }
  }

  .arrow {
    transition: fill 0.3s $ease-out-quad;
    fill: $accent-color;
  }
}

// Product Thumbnails
.product-thumbnails {
  @extend %clearfix;
  display: none;
  padding-left: 2px;
  margin-right: - $gutter / 2;
  margin-left: - $gutter / 2;

  @include breakpoint(m-only) {
    margin-bottom: $gutter / 2;
    font-size: 0;
  }

  .flickity-enabled + & { display: block; }
}

.product-thumbnail {
  @include maintain-ratio(1 1);
  display: inline-block;
  float: left;
  width: calc(25% - #{$gutter});
  padding-bottom: calc(25% - #{$gutter});
  margin-top: $gutter;
  margin-right: $gutter / 2;
  margin-left: $gutter / 2;
  cursor: pointer;
  background-color: transparent;
  background-position: 50% 50%;
  background-size: cover;
  transition: opacity 0.2s $ease-out-quad;

  @include breakpoint(m-only) {
    display: inline-block;
    float: none;
    margin: 10px 5px;
    vertical-align: top;
  }

  &:hover { opacity: 0.75; }
}

/* scss-combine:components/products/product-details */
// Product Details
.product-details {
  float: left;
  width: 100%;

  @include breakpoint(m-only) {
    margin-bottom: $gutter;
    text-align: center;
  }

  .button:last-child { margin-right: 0; }
}

.single-product-alerts {
  > [class*="alert-"]:first-child { margin-top: 0; }
  > [class*="alert-"]:last-child { margin-bottom: 30px; }
}

.single-product-information {
  float: left;
  width: 100%;
  padding-bottom: $gutter * 2;
  margin-bottom: $gutter * 2;
  border-bottom: 1px solid $border-color;

  @include breakpoint(m-only) { text-align: center; }
}

// Price & RRP & Saved
.single-product-price {
  float: left;
  width: 100%;
  margin-top: 0;
  margin-bottom: $gutter;
  font-size: 20px;
  font-weight: 300;
  line-height: 20px;
  color: $accent-color;
  text-transform: capitalize;

  @include breakpoint(xl-only) { margin-bottom: 30px; }

  @include breakpoint(m-only) { text-align: center; }

  span {
    display: inline-block;
    vertical-align: middle;

    @include breakpoint(m-only) { display: block; }
  }

  .price-rrp {
    position: relative;
    padding: 0 5px;
    font-size: 15px;
    line-height: 25px;
    color: $meta-color;

    @include breakpoint(m-only) { display: inline-block; }

    &:after {
      position: absolute;
      top: 50%;
      right: 0;
      left: 0;
      border-bottom: 1px solid $meta-color;
      content: "";
    }
  }

  .price-saved {
    padding-left: 0;
    font-size: 15px;
    color: $meta-color;
  }
}

// Product Title
.single-product-title {
  float: left;
  width: 100%;
  margin: 0;
  text-transform: none;

  @include breakpoint(l-only) { font-size: 25px; }

  @include breakpoint(m-only) {
    font-size: 20px;
    text-align: center;
  }
}

// Product Rating
.single-product-rating {
  float: left;
  width: 100%;
  margin-top: $gutter;

  @include breakpoint(m-only) { text-align: center; }
}

// Product Wishlist Button
.single-product-add-to-wishlist {
  float: left;
  width: 100%;
  margin-top: $gutter;
  font-weight: $meta-size;

  @include breakpoint(m-only) { text-align: center; }

  [class*=icon] {
    position: relative;
    top: 1px;
    margin-right: 5px;
    font-size: 11px;
  }
}

// Product Sharing Buttons
.single-product-sharing {
  float: left;
  width: 100%;
  margin-top: $gutter;
  margin-bottom: 5px;

  @include breakpoint(m-only) { text-align: center; }

  .sharing-buttons { display: inline-block; }
}

// Product Brand Name
.single-product-brand {
  float: left;
  width: 100%;
  margin-top: $gutter;
}

// Product Meta Info
.single-product-meta-item {
  float: left;
  width: 100%;
  margin-top: $gutter;
}

.single-product-meta-item-label {
  padding-right: 5px;
  font-size: $meta-size;
  letter-spacing: 0.1em;
  color: $meta-color;
  text-transform: uppercase;
}

.single-product-meta-item-value {
  margin-top: $gutter;
  font-size: $font-size;

  .single-product-meta-item-bulk-discounts & {
    .quick-shop & {
      display: none;
    }
  }
}

// scss-lint:disable IdSelector
#product-bulk-pricing-modal {
  display: none;

  .quick-shop & {
    position: relative;
    display: block;
  }

  .modal-title {
    .quick-shop & {
      display: none;
    }
  }
}

// Form
.single-product-form {
  float: left;
  width: 100%;

  @include breakpoint(m-only) { text-align: center; }
}

.single-product-add-to-cart {
  position: relative;
  display: inline-block;
  font-size: 0;

  .button {
    position: relative;
    z-index: 10;
    margin-right: 10px;
  }
}

.view-product-button {
  display: none;

  .quick-shop & { display: inline-block; }
}

.single-product-tabs { margin-top: 60px; }

.product-video-container {
  width: 100%;
  margin-bottom: $gutter;

  iframe {
    display: block;
    width: 100%;
    min-height: 300px;

    @include breakpoint(l-only) { min-height: 250px; }
    @include breakpoint(m-only) { min-height: 200px; }
  }
}

/* scss-combine:components/products/product-options */
// Product options
$product-option-size: 35px;

.product-options,
.product-customizations {
  @include breakpoint(m-only) { text-align: center; }

  .form-field {
    @include breakpoint(m-only) {
      width: 100%;
      padding: 0 20px;
    }
  }

  .form-field-options,
  .form-field-customizations { margin-bottom: 30px; }

  .form-field-title {
    display: block;
    padding-bottom: 8px;
    font-size: $meta-size;
    letter-spacing: 0.1em;
    color: $meta-color;
    text-transform: uppercase;

    @include breakpoint(m-only) { text-align: center; }
  }

  .form-select-wrapper { border-radius: 4px; }
}

// Text Area
.form-field-textarea {
  textarea { width: 100%; }
}

// Radio Fields
.form-field-radio {
  .form-label {
    display: inline-block;

    &:hover {
      cursor: pointer;
      user-select: none;
    }
  }

  .form-input {
    display: inline-block;

    &:hover {
      cursor: pointer;
      user-select: none;
    }
  }

  .form-label-text {
    margin: 0 10px 0 3px;
    font-style: italic;
    color: $meta-color;
    text-transform: capitalize;
  }
}

// File Upload Fields
.form-file-wrapper,
.form-selected-file {
  height: 53px;
  padding: 0 7px;
  line-height: 50px;
  border-radius: 4px;

  &::after {
    height: 53px;
    padding: 0 25px;
    font-size: $font-size;
    line-height: 50px;
    border: 0;
    border-radius: 0 4px 4px 0;
  }
}

// Inline Fields
.form-field-inline {
  .form-field-title,
  .form-field-control {
    display: inline-block;
    padding-bottom: 0;
    vertical-align: middle;

    @include breakpoint(m-only) {
      display: block;
      text-align: center;
    }
  }

  .form-field-title {
    padding-right: 20px;

    @include breakpoint(m-only) {
      padding-right: 0;
      margin-bottom: 10px;
    }
  }

  .form-input {
    @include breakpoint(m-only) { display: inline-block; }
  }
}

// Checkboxes
.form-field-checkbox {
  .form-checkbox {
    display: inline-block;

    &:hover { cursor: pointer; }
  }

  .form-label-text {
    font-style: italic;
    color: $meta-color;
    text-transform: capitalize;
    user-select: none;

    &:hover { cursor: pointer; }
  }
}

// Dates
.form-field-date {

  .form-field-control {
    @extend %clearfix;
    display: block;
    margin-right: -5px;
    margin-left: -5px;
  }

  .form-date-year,
  .form-date-month,
  .form-date-day {
    display: block;
    float: left;
    width: calc(33.3333% - 10px);
    margin-right: 5px;
    margin-left: 5px;
  }

  .form-select-wrapper { min-width: 0; }
}

// Rectangles
.form-field-rectangle {
  font-size: 0;

  .form-field-control { margin-bottom: - 10px; }

  .form-input { @extend .show-for-sr; }

  .rectangle {
    display: inline-block;
    margin-right: 10px;
    margin-bottom: 10px;
    user-select: none;

    @include breakpoint(m-only) {
      margin-right: 5px;
      margin-left: 5px;
    }
  }

  .rectangle-text {
    display: block;
    height: $product-option-size;
    min-width: $product-option-size;
    padding: 0 10px;
    overflow: hidden;
    font-size: $font-size;
    line-height: $product-option-size - 3;
    color: $input-color;
    text-align: center;
    text-overflow: ellipsis;
    white-space: nowrap;
    cursor: pointer;
    border: 1px solid $input-border-color;
    border-radius: 4px;
    transition: all 0.2s $ease-out-quad;
  }

  .form-input:focus + .rectangle-text { color: $dark-color; }

  .form-input:checked + .rectangle-text {
    color: $accent-color;
    border-color: $accent-color;
  }

  .form-input:hover + .rectangle-text {
    color: $dark-color;
    border-color: $dark-color;
  }
}

// Swatches
.form-field-swatch {
  .form-field-control {
    @extend %clearfix;
    display: inline-block;
    margin: -7px 0;
  }

  .form-input,
  .form-label-text { @extend .show-for-sr; }

  .swatch-wrap {
    position: relative;
    float: left;
    width: $product-option-size;
    height: $product-option-size;
    margin: 7px 15px 7px 0;

    @include breakpoint(m-only) {
      display: inline-block;
      float: none;
      margin: 6px 7px;
    }

    &:last-of-type { margin-right: 0; }

    //scss-lint:disable NestingDepth
    .swatch {
      position: relative;
      display: block;
      width: $product-option-size;
      height: $product-option-size;
      padding: 0;
      margin-right: 10px;
      cursor: pointer;
      transition: all 0.4s $ease-out-quad;
      user-select: none;

      &::before {
        position: absolute;
        top: 0;
        left: 0;
        z-index: 2;
        display: block;
        width: $product-option-size;
        height: $product-option-size;
        content: "";
        box-shadow: inset 0 0 0 1px $border-color;
        transition: all 0.2s $ease-out-quad;
      }

      &::after {
        position: absolute;
        top: 0;
        left: 0;
        z-index: 1;
        display: block;
        width: $product-option-size;
        height: $product-option-size;
        content: "";
        box-shadow: inset 0 0 0 3px $light-color;
        transition: all 0.2s $ease-out-quad;
      }
    }

    .form-input:hover + .swatch {
      &::before { box-shadow: inset 0 0 0 1px $accent-color; }
      &::after { box-shadow: inset 0 0 0 4px $light-color; }
    }

    .form-input:checked + .swatch {
      &::before { box-shadow: inset 0 0 0 1px $dark-color; }
      &::after { box-shadow: inset 0 0 0 4px $light-color; }
    }
  }

  .swatch-color {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background-size: cover;
  }

  .swatch-value {
    margin: 7px 0 7px 10px;
    font-style: italic;
    color: $meta-color;
    text-transform: capitalize;

    @include breakpoint(m-only) {
      display: block;
      margin-top: 10px;
    }
  }

  .two-colors {
    .secondary { top: 50%; }
  }

  .three-colors {
    .secondary { top: 33.33%; }
    .tertiary { top: 66.66%; }
  }

  .swatch-pattern-expanded {
    position: absolute;
    bottom: calc(100% + #{$gutter});
    left: 50%;
    z-index: 5;
    display: none;
    padding: 3px;
    background-color: $light-color;
    border: 1px solid $accent-color;
    border-radius: 3px;
    transform: translateX(-50%);

    @include breakpoint(m-only) {
      //scss-lint:disable ImportantRule - Override desktop hover display
      display: none !important;
    }

    img {
      display: block;
      width: 150px;
      max-width: none;
    }
  }

  .swatch-wrap:hover .swatch-pattern-expanded { display: block; }
}

// Product Pick
.form-field-product-list {
  width: 100%;

  .form-field-control {
    background-color: $input-background-color;
    border: 1px solid $input-border-color;
    border-radius: 4px;

    @include breakpoint(m-only) {
      text-align: left;
    }
  }
}

.product-picklist-item,
.product-picklist-no-image {
  position: relative;
  padding: 20px;

  @include breakpoint(m-only) {
    padding-bottom: 20px;
    margin-bottom: 20px;
  }

  &::after {
    position: absolute;
    bottom: 0;
    left: 0;
    display: block;
    width: 100%;
    border-top: 1px solid $input-border-color;
    content: "";
  }

  &:last-child {
    &::after { display: none; }
  }

  .product-picklist-image-wrap {
    padding: 5px;
    border: 1px solid $input-border-color;
    border-radius: 3px;
    transition: all 0.2s $ease-out-quad;
  }

  img {
    display: block;
    opacity: 1;
    transition: all 0.2s $ease-out-quad;
  }

  &:hover {
    cursor: pointer;

    img { opacity: 0.7; }
  }
}

.form-input.product-picklist-radio,
.product-picklist-item-body,
.product-picklist-image-wrap,
.product-picklist-label-text {
  display: inline-block;
  vertical-align: middle;
}

.product-picklist-radio:checked {
  + .product-picklist-item-body {
    color: $accent-color;

    .product-picklist-image-wrap { border-color: $accent-color; }

    .form-label-text {
      color: $accent-color;

      //scss-lint:disable NestingDepth
      &::after { background-color: $accent-color; }
    }
  }
}

.product-picklist-item-body {
  &.picklist-none {
    margin-top: -10px;
    font-style: normal;
  }
}

.product-picklist-label-text {
  margin-left: 10px;
  font-style: italic;
}

.product-picklist-image-wrap {
  max-width: 75px;
  margin-right: 10px;
}

.product-picklist-image { display: block; }

// Product Events
.product-event.form-field {
  padding-right: 0;
  padding-left: 0;

  .form-field-control {
    @extend %clearfix;
    display: block;
    margin-right: -5px;
    margin-left: -5px;

    @include breakpoint(m-only) {
      margin-right: 0;
      margin-left: 0;
    }
  }

  .form-select-wrapper {
    float: left;
    width: calc(33.3333% - 10px);
    margin-right: 5px;
    margin-bottom: 10px;
    margin-left: 5px;

    @include breakpoint(m-only) {
      float: none;
      width: 50%;
      margin-right: 0;
      margin-left: 0;
    }
  }
}

.product-event-bounds {
  display: block;
  font-size: $meta-size;
  font-weight: lighter;
  color: $meta-color;
}

// Product Quantity
.product-quantity {
  margin-bottom: 30px;

  .form-field-title {
    display: inline-block;
    padding-right: 20px;
    font-size: $meta-size;
    letter-spacing: 0.1em;
    color: $meta-color;
    text-transform: uppercase;
    vertical-align: middle;

    @include breakpoint(m-only) {
      display: block;
      padding-right: 0;
      padding-bottom: 8px;
    }
  }

  .quantity-input-wrap {
    display: inline-block;
    vertical-align: middle;

    @include breakpoint(m-only) { margin-left: -15px; }

    .form-input {
      width: 70px;
      min-width: 0;

      //scss-lint:disable NestingDepth
      &::-webkit-outer-spin-button,
      &::-webkit-inner-spin-button {
        margin: 0;
        -webkit-appearance: none;
      }
    }
  }

  .product-quantity-toggle-wrapper {
    position: absolute;
    top: 5px;
    left: 75px;
  }

  .form-field-control { position: relative; }

  .quantity-toggle {
    display: block;
    width: 16px;
    height: 16px;
    padding: 0;
    margin: 0;
    letter-spacing: 0;
    text-align: center;
  }

  .quantity-decrement { margin-top: 2px; }

  .increment-icon,
  .decrement-icon {
    position: relative;
    top: -1px;
    font-size: 8px;
    line-height: 16px;
  }

  .increment-icon { left: 0.5px; }
}

.option-unavailable {
  opacity: 0.5;

  .form-label-text { text-decoration: line-through; }
}

/* scss-combine:components/products/product-reviews */
// Reviews List
.reviews-header {
  padding-bottom: $gutter;
  margin-bottom: $gutter * 3;
  border-bottom: 1px solid $border-color;
}

.reviews-header-summary {
  display: inline-block;
  width: 100%;
  vertical-align: middle;

  .rating-stars {
    display: inline-block;
    padding-right: 20px;
    line-height: 1;
    vertical-align: middle;

    @include breakpoint(l-only) { display: block; }
  }

  .review-link { margin-left: 4px; }
}

.review-link { margin-top: $gutter; }

// Review Items
.review-item {
  @extend %clearfix;
  float: left;
  width: 100%;
  padding-top: $gutter * 2;
  padding-bottom: $gutter * 2;
  border-top: 1px solid $border-color;

  &:first-of-type {
    padding-top: 0;
    border-top: 0;
  }
}

.review-item-header {
  @include span-columns(9);

  @include breakpoint(l-only) {
    @include span-columns(12);
  }
}

.review-item-stars {
  @include span-columns(3);
  @include omega();

  @include breakpoint(l-only) {
    @include span-columns(12);
  }

  .rating-stars {
    float: right;

    @include breakpoint(l-only) {
      float: none;
      margin-bottom: $gutter;
    }
  }
}

.review-item-body {
  float: left;
  width: 100%;
  margin-bottom: 0;
}

.review-item-title {
  margin-top: 0;
  margin-bottom: 5px;
  font-size: $font-size;
}

// scss-lint:disable VariableForProperty
.review-meta {
  display: inline-block;
  margin-bottom: $gutter;
  color: rgba($meta-color, 0.75);
}

.reviews-rating-summary {
  display: inline-block;
  vertical-align: middle;

  @include breakpoint(l-only) { padding-left: 0; }
}

// Review Modal
.review-modal-container { display: none; }

.review-image-column {
  @include span-columns(6);
  padding-right: 8px;

  @include breakpoint(m-only) { display: none; }
}

// Review Content
.review-image-container {
  position: relative;
  text-align: center;

  .review-image {
    display: block;
    width: 100%;
  }
}

.review-image-caption {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  padding: $gutter;
  padding-bottom: $gutter + 5px;
  text-align: center;
  background-color: rgba($body-background-color, 0.95);
}

.review-form-column {
  @include span-columns(6);
  margin-right: 0;

  @include breakpoint(m-only) {
    @include span-columns(12);
  }
}

.review-form-heading {
  margin-top: 0;
  margin-bottom: $gutter;

  @include breakpoint(s-only) { font-size: $font-size; }
}

.write-review-form {
  //scss-lint:disable IdSelector, SelectorFormat
  .form-field {
    margin-bottom: $gutter;

    &.review-form-stars {
      padding-bottom: $gutter;
      border-bottom: 1px solid $border-color;

      //scss-lint:disable NestingDepth
      .form-inline-message { display: block; }
    }

    &#revfromname {
      @include span-columns(6);
      float: left;

      @include breakpoint(s-only) {
        @include span-columns(12);
      }
    }

    &#rating-email {
      @include span-columns(6);
      @include omega();
      float: left;

      @include breakpoint(s-only) {
        @include span-columns(12);
      }
    }

    &.form-field-submit {
      margin-top: 10px;
      text-align: center;
    }

    .review-form-submit { display: inline-block; }

    .form-inline-message {
      font-size: 12px;
      color: $error-color;
    }
  }

  .review-form-captcha {
    text-align: center;

    #recaptcha_widget_div { display: inline-block; }
  }

  .form-label { width: 100%; }

  .form-label-text {
    padding-bottom: 5px;
    color: $accent-color;
  }

  .form-input { width: 100%; }
}

// Rating Stars (clickable)
.input-stars {
  position: relative;
  display: inline-block;

  &.form-field-error { padding-bottom: 20px; }

  .star {
    display: inline-block;
    float: right;
    padding-right: 5px;
    cursor: pointer;

    &:hover .icon-star,
    &:hover ~ .star .icon-star {
      color: $accent-color;
    }
  }

  .icon-star {
    width: 22px;
    height: 22px;
    color: rgba($body-color, 0.4);
  }

  > input:checked {
    ~ label .icon-star {
      color: $accent-color;
    }
  }
}

// Rating Stars (display only)
.rating-stars {
  .star {
    display: inline-block;
    vertical-align: middle;
  }

  &.stars-small   { font-size: 12px; }
  &.stars-medium  { font-size: 17px; }
  &.stars-large   { font-size: 22px; }

  .star-empty { color: rgba($body-color, 0.2); }
  .star-full  { color: $accent-color; }
}

/* scss-combine:components/products/quick-shop */
// Quickshop
.quick-shop-trigger {
  position: absolute;
  top: 50%;
  left: 50%;
  display: none;
  width: 140px;
  height: 45px;
  margin: -25px 0 0 -70px;
  -webkit-font-smoothing: subpixel-antialiased;
  line-height: 45px;
  color: $light-color;
  text-align: center;
  cursor: pointer;
  background-color: transparent;
  border-radius: 3px;
  opacity: 0;
  visibility: hidden;
  transform: translateY(35%);
  transition: all 0.5s $ease-out-quad;
  transition-delay: 0.2s;
  backface-visibility: hidden;

  .quickshop-enabled & {
    display: inline-block;

    @include breakpoint(m-only) { display: none; }
  }

  .product-grid-item-thumbnail:hover & {
    background-color: rgba($accent-color, 0.8);
    opacity: 1;
    visibility: visible;
    transform: translateY(0%);

    &:hover { background-color: $accent-color; }
  }
}

// Overlay
.quick-shop-wrapper {
  @include coverer();
  position: fixed;
  z-index: 15000;
  background-color: rgba($accent-color, 0.85);
  opacity: 0;
  visibility: hidden;
  transition: all 0.2s $ease-out-quad;

  @include breakpoint(m-only) { display: none; }

  &.visible {
    opacity: 1;
    visibility: visible;
  }
}

// Container
.quick-shop {
  //scss-lint:disable NameFormat
  @include centerer();
  z-index: 1000;
  width: 100%;
  max-width: $max-width - ($gutter * 4);
  max-height: calc(100% - #{$gutter * 6});
  padding: $gutter * 2 $gutter * 2 0;
  overflow-y: scroll;
  background-color: $body-background-color;
  opacity: 0;
  transition: opacity 0.4s $ease-out-quad;

  @if (stencilString("container-width") == "full-width") {
    max-width: calc(100% - #{$gutter * 6});
    max-height: calc(100% - #{$gutter * 6});
  }

  @include breakpoint(xl-only) { max-width: calc(100% - #{$gutter * 4}); }
  @include breakpoint(m-only) { display: none; }

  &.visible { opacity: 1; }

  .single-product-slideshow-wrapper {
    @include span-columns(6);
    margin-bottom: $gutter * 2;
  }

  .single-product-slideshow-image { margin-bottom: 0; }
  .product-details-wrapper {
    @include span-columns(6);
    margin-bottom: $gutter * 2;
  }

  .product-thumbnails {
    @extend %clearfix;
    display: block;
    padding-left: 2px;
    margin-right: -8px;
    margin-left: -8px;

    .product-thumbnail {
      //scss-lint:disable NestingDepth, SelectorDepth
      display: block;
      float: left;
      width: calc(25% - 16px);
      margin: 16px 8px 0;

      img { width: 100%;}
    }
  }
}

// Close Button
.quick-shop-close {
  @extend %button-reset;
  position: absolute;
  top: $gutter;
  right: $gutter;
  z-index: 2000;
  font-size: 25px;
  line-height: 1;
  color: $accent-color;

  @media screen and (max-width: $max-width) {
  }
}


// Pages
/* scss-combine:pages/page */
.page-container {
  @include outer-container;
  padding-right: $gutter * 2;
  padding-left: $gutter * 2;

  @include breakpoint(l-only) {
    padding-right: 20px;
    padding-left: 20px;
  }

  .narrow {
    @include span-columns(8);
    @include shift(2);

    @include breakpoint(m-only) {
      @include span-columns(12);
      @include shift(0);
    }
  }
}

.page-header {
  @include outer-container;
  margin-bottom: $gutter * 3;
  text-align: center;
}

.page-heading { margin-top: 0; }

/* scss-combine:pages/product */
// Product Page
.single-product-wrap {
  @include outer-container;
  padding-right: $gutter * 2;
  padding-left: $gutter * 2;

  @include breakpoint(l-only) {
    padding-right: 20px;
    padding-left: 20px;
  }
}

// Product Column Left
.single-product-left {
  @include span-columns(6);

  @include breakpoint(m-only) {
    @include span-columns(12);
  }
}

// Product Column Right
.single-product-right {
  @include span-columns(6);

  @include breakpoint(m-only) {
    @include span-columns(12);
  }
}

/* scss-combine:pages/category */
// Details
.category-details { @include outer-container; }

.category-details-wrap {
  display: table;
  width: 100%;
  max-width: $max-width + ($gutter * 4);
  border-collapse: separate;
  border-spacing: 30px 0;
  table-layout: fixed;

  @include breakpoint(xl-only) {
    padding-right: $gutter * 2;
    padding-left: $gutter * 2;
    margin-right: 0;
    margin-left: 0;
    border-spacing: 0;
  }

  @include breakpoint(l-only) {
    display: block;
    padding-right: 20px;
    padding-left: 20px;
  }
}

.category-details-row {
  display: table-row;

  @include breakpoint(l-only) { display: block; }
}

.category-image,
.category-info {
  display: table-cell;
  width: 50%;
  padding-right: $gutter * 2;
  vertical-align: middle;

  @include breakpoint(xl-only) { padding-right: $gutter * 2.5; }

  @include breakpoint(l-only) {
    display: block;
    width: 100%;
    padding-right: 0;
  }
}

.category-info {
  padding-right: 0;

  @include breakpoint(xl-only) { padding-left: 0; }

  @include breakpoint(l-only) {
    padding-top: $gutter * 3;
    padding-bottom: $gutter;
    padding-left: 0;
  }

  @include breakpoint(m-only) { padding-top: $gutter; }

  .has-image & {
    padding-left: $gutter * 2;

    @include breakpoint(xl-only) { padding-left: $gutter * 3 - 5px; }
    @include breakpoint(l-only) { padding-left: 0; }
  }

  p:last-of-type { margin-bottom: 0; }
}

.category-image {
  @include breakpoint(l-only) { text-align: center; }

  img {
    display: block;

    @include breakpoint(l-only) { display: inline-block; }
  }
}

.category-title {
  //scss-lint:disable NameFormat
  margin-bottom: 0;
  font-size: $page-heading-size;
  text-transform: capitalize;

  @if (stencilFontFamily("heading-font") == "Lora") { font-weight: 600; }

  @include breakpoint(l-only) { font-size: 25px; }
  @include breakpoint(m-only) { font-size: 20px; }

  .has-description & { margin-bottom: 20px; }
}

.category-title,
.category-description {
  width: 66%;
  margin-top: 0;

  @include breakpoint(xl-only) { width: 100%; }

  @include breakpoint(l-only) {
    padding-right: 5%;
    padding-left: 5%;
    text-align: center;
  }

  .has-image & { width: 100%; }

  img { display: none; }
}

.progress-overlay {
  position: absolute;
  top: 0;
  display: none;
  width: 100%;
  height: 100%;
  background-color: rgba($body-background-color, 0.85);

  &.visible { display: block; }

  .inner {
    position: absolute;
    top: 150px;
    left: 50%;
    display: block;
    width: 60px;
    height: 60px;
    margin-top: -30px;
    margin-left: -30px;
    background-color: $body-background-color;
    border: 1px solid $border-color;
    border-radius: 50%;
  }

  .spinner {
    right: auto;
    left: 50%;
    width: 26px;
    height: 26px;
    margin: -13px 0 0 -13px;
  }
}

// Facets
.facet-filter-wrapper {
  display:none;

  &.is-open {
    display:block;
  }
}

.faceted-show-more-button {
  display: block;
  padding-top: 10px;
  font-weight: 700;

  .toggle-link-text-on {
    display:none;
  }
}

.facet-filter-wrapper {
  display:none;

  &.is-open {
    display:block;
  }
}

.faceted-search-option-columns {
  display: none;
}
/* scss-combine:pages/blog */
// Container
.blog-container {
  @include outer-container;
  padding-right: $gutter * 2;
  padding-left: $gutter * 2;
  text-align: center;

  @include breakpoint(l-only) {
    padding-right: 20px;
    padding-left: 20px;
  }
}

// Posts
.blog-list {
  @include span-columns(8);
  @include shift(2);

  @include breakpoint(l-only) {
    width: 100%;
    margin-left: 0;
  }
}

.blog-post {
  @include outer-container;

  @include breakpoint(l-only) {
    padding: 2%;
  }

  &:first-child {
    .blog-post-title {
      margin-top: 0;
    }
  }

  &:last-child {
    .blog-post-content {
      border-bottom-width: 0;
    }
  }
}

// Author

// Post Thumbnail
.blog-post-thumbnail {
  float: left;
  width: 100%;
  margin-top: 8px;
  margin-bottom: 25px;

  > img {
    display: block;
    width: 100%;
    height: auto;
  }
}

// Post Content
.blog-post-content {
  width: 100%;
  padding-bottom: $gutter * 4;
  text-align: left;
  border-bottom: 1px solid $border-color;

  @include breakpoint(m-only) {
    padding-bottom: $gutter * 2;
  }

  &.summary {
    float: left;
    width: 100%;
    text-align: center;

    p {
      @include breakpoint(m-only) {
        margin: 0;
      }
    }
  }

  p {
    float: left;
    width: 100%;
  }

  iframe {
    display: block;
    margin: 0 auto;
  }

  img {
    display: block;
    width: 110%;
    height: auto;
    max-width: 110%;
    margin: 30px 0 0 -5%;

    @include breakpoint(l-only) {
      width: 100%;
      margin-left: 0;
    }
  }

  > *:first-child {
    //scss-lint:disable ImportantRule
    margin-top: 8px !important;

    img {
      margin-top: 0;
    }
  }
}

.blog-post-title {
  width: 100%;
  margin-top: 60px;
  margin-bottom: 10px;
  font-size: 20px;
  text-align: center;

  @include breakpoint(xl-only) {
    margin-top: 20px;
    font-size: 20px;
  }

  @include breakpoint(l-only) {
    @include span-columns(12);
    @include shift(0);
    @include omega();
  }

  .single-post & {
    margin-top: 0;
  }

  a {
    padding: 0 7px 2px;
    color: $heading-color;
    border-bottom: 1px solid transparent;
    transition: border-bottom-color 0.4s $ease-out-quad;

    &:hover { border-bottom-color: $accent-color; }
  }
}

.blog-post-meta {
  margin-bottom: 20px;
  color: $meta-color;
  text-align: center;
}

.blog-post-date,
.blog-post-author {
  display: inline-block;
  vertical-align: middle;
}

.blog-post-author:before {
  position: relative;
  top: -2px;
  padding: 0 5px;
  font-size: 12px;
  color: rgba($meta-color, 0.6);
  content: "\2022";
}

.blog-post-tags {
  float: left;
  width: 100%;
  margin-top: 20px;
  text-align: center;
}

.blog-post-tags-label {
  display: inline-block;
  margin-right: 5px;
  vertical-align: middle;
}

.blog-post-tags-list {
  display: inline-block;
  vertical-align: middle;

  .blog-post-tag {
    display: inline-block;
    margin-right: 10px;

    &:last-child {
      margin-right: 0;
    }
  }
}

.blog-post-sharing {
  @extend %clearfix;
  float: left;
  width: 100%;
  padding-top: $gutter;
  margin-top: $gutter * 2;
  border-top: 1px solid $border-color;

  @include breakpoint(l-only) {
    margin-top: 0;
    text-align: center;
    border-top: 0;

    .sharing-buttons {
      display: inline-block;
    }
  }
}

// Sidebar
.blog-sidebar {
  @include span-columns(3);
  @include omega();
  padding-left: 30px;
  margin-top: 74px;
  margin-bottom: $gutter * 3;
  text-align: left;
  transition: margin-top 0.5s $ease-out-quad;

  // scss-lint:disable ImportantRule
  @include breakpoint(l-only) {
    @include span-columns(12);
    padding-top: $gutter * 3;
    padding-left: 0;
    margin-top: 0 !important;
    margin-right: 0;
    text-align: center;
    border-top: 1px solid $border-color;
  }
}

.blog-sidebar-heading {
  display: block;
  margin-top: 0;
  font-family: $heading-font;
  font-size: 12px;
  letter-spacing: 0.4em;
  color: $dark-color;
  text-transform: uppercase;
}

.blog-sidebar-blog-post-date {
  display: block;
}

/* scss-combine:pages/brands */
.brand-header-logo {
  text-align: center;
  
  img {
    display: inline-block;
    max-width: 450px;
  }
}

.brands-grid {
  @include outer-container;
  padding-right: $gutter * 2;
  padding-left: $gutter * 2;

  @include breakpoint(l-only) {
    padding-right: 20px;
    padding-left: 20px;
  }
}

.brands-grid-item-list {
  @include row(1260, 92);
}

.brands-grid-item {
  @include fluid-width(200, 435, 35); // 2-col
  float: left;
  margin-bottom: ($gutter * 2);
  background-color: $light-accent-color;

  &:nth-child(2n + 1) { clear: left; }

  // scss-lint:disable DeclarationOrder
  @include breakpoint(m-up) {
    @include fluid-width(200, 740, 70); // 3-col
    margin-bottom: ($gutter * 3);

    &:nth-child(2n + 1) { clear: none; }
    &:nth-child(3n + 1) { clear: left; }

  }

  @include breakpoint(l-up) {
    @include fluid-width(200, 1010, 70); // 4-col
    margin-bottom: ($gutter * 4);

    &:nth-child(3n + 1) { clear: none; }
    &:nth-child(4n + 1) { clear: left; }
  }
}

.brands-grid-item-wrap {
  @include maintain-ratio(1 1);
  position: relative;

  > a {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }

  .brands-grid-item-thumbnail,
  .brands-grid-item-text {
    @include centerer();
    width: 80%;
    text-align: center;
  }
}

.brands-grid-item-text {
  .has-image & {
    @extend .show-for-sr;
  }
}

.no-brand-products {
  text-align: center;
}

/* scss-combine:pages/search */
// Search Product Results
.search-header { text-align: center; }

.seach-results-wrapper { @include outer-container; }

.search-results {
  @include span-columns(12);

  &.has-sidebar { @include span-columns(9); }
}

.search-sidebar { @include span-columns(3); }

// Tabs
.search-tabs {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  padding: 0;
  border-bottom: 1px solid $border-color;

  @include breakpoint(m-only) { text-align: center; }
}

.search-tab-title {
  display: inline-block;
  margin-bottom: -1px;
  cursor: pointer;
  border-bottom: 1px solid transparent;

  &.active { border-bottom-color: $accent-color; }

  > a {
    display: block;
    padding: 15px 20px;

    @include breakpoint(s-only) { padding: 6px 12px; }
  }

  > *:first-child { margin-top: 0; }
  > *:last-child { margin-bottom: 0; }
}

.search-tab-content {
  padding-top: 0;

  //scss-lint:disable ImportantRule
  .layout-block {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }

  .alert {
    margin-top: 0;
    margin-bottom: 0;
  }
}

.search-tab-content-panel {
  @include outer-container;
  display: none;

  &.active { display: block; }
  .alert { text-align: center; }
}

// Content Results
.search-results-content {
  .search-result-item {
    padding: 50px 0;
    border-top: 1px solid $border-color;

    &:first-of-type {
      padding-top: 0;
      border-top: 0;
    }

    &:last-of-type { padding-bottom: 0; }

    h3 {
      margin-top: 0;
      margin-bottom: 15px;
      line-height: 1;

      @include breakpoint(l-only) { line-height: 1.2; }
    }
  }

  .search-result-item-content { margin-bottom: 0; }
  .search-result-item-more { margin-top: 20px; }
}

/* scss-combine:pages/compare */
// Compare Tab
.compare-tab {
  position: fixed;
  bottom: 0;
  left: 0;
  z-index: 1;
  display: none;
  float: left;
  width: 100%;
  text-align: center;
  background-color: $header-background-color;
  border-top: 1px solid darken($header-background-color, 18%);

  &.animating,
  &.visible {
    display: block;
    transform: translateY(100%);
    transition: transform 0.2s ease;
  }

  &.visible { transform: translateY(0); }
}

// Compare Tab Header
.item-limit { display: none; }

// Compare Tab Item
.compare-items-list { font-size: 0; }

.compare-product-item {
  position: relative;
  display: inline-block;
  width: 23%;
  margin: 1%;
  text-align: center;
}

.compare-product-item-thumbnail {
  display: inline-block;
  width: 20%;
  vertical-align: middle;
}

.compare-product-item-details {
  display: inline-block;
  width: 100%;
  vertical-align: middle;
}

.compare-product-item-title {
  padding-left: $gutter;
  margin-bottom: 0;
  text-transform: capitalize;
}

// Compare Tab Item Remove
.compare-tab-item-remove {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 10;
  width: 30px;
  height: 30px;
  font-size: 13px;
  line-height: 31px;
  text-align: center;
  cursor: pointer;
  border-radius: 50%;

  &:hover { color: $accent-color; }
}

// Compare Tab Actions
.compare-tab-actions {
  float: left;
  width: 100%;
  padding: 20px 0;
  background-color: darken($header-background-color, 7%);
  border-top: 1px solid darken($header-background-color, 18%);

  .button-alt { background-color: transparent; }
}

// Compage Page
.compare-grid {
  @include outer-container;
  padding-right: $gutter;
  padding-left: $gutter;

  @include breakpoint(l-only) {
    padding-right: 20px;
    padding-left: 20px;
  }
}

// Compage Page Header
.compare-header {
  margin-bottom: 50px;
  text-align: center;
}

// Compare Page Grid
.compare-grid-item-list {
  @include row(1260, 92);

  &.two-columns {
    padding: 0 20%;

    @include breakpoint(l-only) { padding: 0 10%; }
    @include breakpoint(m-only) { padding: 0; }
  }
}

// Compare Page List Item
.compare-grid-item {
  // scss-lint:disable DeclarationOrder
  @include fluid-width(200, 435, 35); // 2-col
  float: left;
  margin-bottom: $gutter * 4;

  @include breakpoint(l-only) { margin-bottom: $gutter * 3; }
  @include breakpoint(m-only) { margin-bottom: $gutter * 2; }

  &:nth-child(2n + 1) { clear: left; }

  .two-columns & {
    @include fluid-width(200, 435, 35); // 2-col

    &:nth-child(2n + 1) { clear: left; }
    &:nth-child(3n + 1) { clear: none; }
  }

  .three-columns & {
    @include fluid-width(200, 740, 70); // 3-col

    &:nth-child(2n + 1) { clear: none; }
    &:nth-child(3n + 1) { clear: left; }

    @include breakpoint(l-only) {
      @include fluid-width(200, 435, 35); // 2-col

      &:nth-child(2n + 1) { clear: left; }
      &:nth-child(3n + 1) { clear: none; }
    }
  }

  @include breakpoint(m-up) {
    @include fluid-width(200, 740, 70); // 3-col
    margin-bottom: ($gutter * 3);

    &:nth-child(2n + 1) { clear: none; }
    &:nth-child(3n + 1) { clear: left; }

  }

  @include breakpoint(l-up) {
    @include fluid-width(200, 1010, 70); // 4-col
    margin-bottom: ($gutter * 4);

    &:nth-child(3n + 1) { clear: none; }
    &:nth-child(4n + 1) { clear: left; }
  }
}

/* scss-combine:pages/contact */
#form-contact-us .g-recaptcha {
  clear: both;
  padding-top: $gutter * 2;
}
/* scss-combine:pages/sitemap */
.sitemap-list {
  padding: 0 10%;
  text-align: center;

  @include breakpoint(l-only) {
    padding: 0;
  }
}

.sitemap-item {
  @include span-columns(4);
  @include omega(3n);
  margin-bottom: $gutter * 3;

  @include breakpoint(l-only) {
    @include span-columns(12);
  }
}

/* scss-combine:pages/cart */
// Container
.cart-container {
  @include outer-container;
  padding-right: $gutter * 2;
  padding-left: $gutter * 2;
  text-align: center;

  @include breakpoint(l-only) {
    padding-right: 20px;
    padding-left: 20px;
  }
}

.cart-page-content {
  position: relative;
}

.cart-table {
  width: 100%;
  margin-bottom: 30px;

  @include breakpoint(l-only) {
    margin-bottom: 0;
    border: 0;
  }
}

.cart-table-header {
  @include breakpoint(l-only) {
    display: none;
  }
}

.cart-table-header-item {
  padding: $gutter * 2;
  text-align: right;
  border-top: 1px solid $border-color;
  border-bottom: 1px solid $border-color;

  &.cart-table-header-item-title {
    text-align: left;
  }
}

.cart-item {
  @include breakpoint(l-only) {
    display: block;
    float: left;
    width: 100%;
    padding: 25px 15px;
    margin-bottom: 25px;
    border: 1px solid $border-color;
  }
}

.cart-item-block {
  padding: $gutter * 2;
  text-align: right;
  border: 0;
  border-bottom: 1px solid $border-color;

  @include breakpoint(l-only) {
    display: block;
    padding: 0;
    border: 0;
  }

  .cart-item:nth-last-child(2) & {
    border: 0;
  }
}

.cart-item-image {
  width: 20%;
  text-align: left;

  @include breakpoint(l-only) {
    float: left;
    width: 100%;
    padding-bottom: 20px;
  }
}

.cart-item-image-wrap {
  position: relative;

  @include breakpoint(l-only) {
    max-width: 175px;
    margin: 0 auto;
  }

  @include breakpoint(s-only) {
    max-width: 100px;
    margin: 0 auto;
  }

  > a {
    @include maintain-ratio(1 1);
    display: block;
    background-position: center center;
    background-repeat: no-repeat;
    background-size: cover;

    @include breakpoint(l-only) {
      // scss-lint:disable ImportantRule
      height: auto;
      padding-bottom: 0;
      background-image: none !important;
    }

    img {
      display: none;

      @include breakpoint(l-only) {
        display: block;
      }
    }
  }

  .cart-item-remove {
    position: absolute;
    top: 10px;
    left: 10px;
    display: block;
    width: 25px;
    height: 25px;
    padding-bottom: 0;
    padding-left: 1px;
    font-size: 14px;
    line-height: 25px;
    text-align: center;
    background-color: rgba($light-color, 0.85);
    border-radius: 2px;
    transition: all 0.2s $ease-out-quad;

    &:hover {
      background-color: $light-color;
    }

    &:focus {
      border: 0;
      outline: 0;
    }
  }
}

.cart-item-details {
  width: 46%;
  padding-right: 0;
  padding-left: 0;
  text-align: left;

  @include breakpoint(l-only) {
    float: left;
    width: 100%;
    text-align: center;
  }
}

.cart-item-details-wrap {
  display: table;
  width: 100%;
  padding: 20px 0;

  @include breakpoint(l-only) {
    padding-top: 0;
  }
}

.cart-item-details-wrap-inner {
  display: table-cell;
  vertical-align: middle;

  @include breakpoint(l-only) {
    dl:last-of-type {
      &:after {
        display: inline-block;
        width: 80%;
        margin: 0 auto;
        margin-top: 20px;
        border-top: 1px dashed $border-color;
        content: "";
      }
    }
  }
}

.cart-item-name {
  margin-top: 0;
  margin-bottom: 10px;

  @include breakpoint(l-only) {
    font-size: $font-size;

    &:after {
      display: block;
      width: 80%;
      padding-top: 20px;
      margin: 0 auto;
      border-bottom: 1px dashed $border-color;
      content: "";
    }
  }
}

.cart-item-brand {
  display: inline-block;
  padding: 8px;
  font-size: $font-size;
  line-height: $font-size;
  background-color: $light-accent-color;
  border-radius: 4px;
}

.cart-item-options {
  @extend %clearfix;
  font-size: $meta-size;

  .cart-item-option-title {
    @include span-columns(4);
    margin-right: 0;
    clear: both;
    font-weight: bold;
    text-transform: capitalize;

    @include breakpoint(l-only) {
      @include span-columns(6);
      text-align: right;
    }

    &:hover,
    &:hover + .cart-item-option-description {
      background-color: $light-accent-color;
    }
  }

  .cart-item-option-description {
    @include span-columns(8);
    @include omega();
    margin: 0;
    word-wrap: break-word;

    @include breakpoint(l-only) {
      @include span-columns(6);
      margin: 0;
      text-align: left;
    }
  }
}

.cart-item-info {
  width: 10%;

  @include breakpoint(l-only) {
    float: left;
    width: 100%;
    padding-bottom: 20px;
    text-align: center;

    .cart-item-value {
      &:before {
        content: attr(data-before);
      }
    }
  }
}

.cart-item-discount {
  display: block;
  text-decoration: line-through;

  .cart-preview-list-item-price-quantity { display: none; }
}

.cart-item-quantity {
  width: 14%;

  @include breakpoint(l-only) {
    float: left;
    width: 100%;
    padding-bottom: 20px;
    text-align: center;
  }

  .form-input[type='number'] {
    position: relative;
    right: 25px;
    display: inline-block;
    width: 70px;
  }

  .form-field-increments {
    position: relative;

    @include breakpoint(l-only) {
      .button-group {
        position: relative;
        right: -12px;
        display: inline-block;
      }
    }

    button {
      position: absolute;
      top: 0;
      right: 0;
      width: 20px;
      height: 20px;
      padding: 0;
      margin: 0;
      letter-spacing: 0;
      text-align: center;

      // scss-lint:disable NestingDepth, SelectorDepth
      > .increment-icon {
        position: relative;
        top: -1px;
        font-size: 10px;
      }

      &:first-of-type {
        top: auto;
        bottom: 0;
      }
    }

    // scss-lint:disable QualifyingElement, NestingDepth
    input[type="number"] {
      -moz-appearance: textfield;

      &::-webkit-outer-spin-button,
      &::-webkit-inner-spin-button {
        margin: 0;
        -webkit-appearance: none;
      }
    }
  }
}

.cart-item-total {
  width: 10%;

  @include breakpoint(l-only) {
    float: left;
    width: 100%;
    text-align: center;

    .cart-item-value {
      &:before {
        content: attr(data-before);
      }
    }
  }
}

.cart-item-gift-wrap {
  @include breakpoint(l-only) {
    padding: 0;
    margin: 0;
    border: 0;
  }

  td {
    padding: 0;
    border: 0;
  }

  .form-select-wrapper {
    display: inline-block;
    max-width: 320px;
  }
}

.cart-item-gift-wrap-text {
  display: block;
}

.cart-page-footer {
  @include span-columns(4);
  @include shift(3);
  position: relative;
  float: left;

  @include breakpoint(l-only) {
    @include span-columns(12);
    @include shift(0);
  }
}

.cart-actions {
  @include span-columns(5);
  margin-top: $gutter * 2 + 3px;
  text-align: left;

  @include breakpoint(l-only) {
    @include span-columns(12);
    margin-top: 0;

    > h2 {
      margin-bottom: 30px;
      font-size: $font-size;
      text-align: center;
    }
  }

  .cart-promo-codes,
  .cart-gift-certificate {
    @extend %clearfix;
    margin-bottom: $gutter * 2;

    @include breakpoint(l-only) {
      margin-bottom: 25px;
    }
  }

  .form-input-wrapper {
    @include span-columns(8);

    @include breakpoint(l-only) {
      @include span-columns(8);
    }

    .form-input[type='text'] {
      width: 100%;
      margin: 0;
    }
  }

  [type='submit'] {
    @include span-columns(4);
    @include omega();
  }
}

.cart-extras-tab {
  position: relative;
  display: block;
  width: 100%;
  padding: $gutter;
  border: 1px solid $border-color;

  &:hover {
    cursor: pointer;
  }

  &:after {
    position: absolute;
    top: 50%;
    right: 0;
    width: 0;
    height: 0;
    margin-top: -6px;
    margin-right: 16px;
    border-top: 6px solid transparent;
    border-bottom: 6px solid transparent;
    border-left: 6px solid rgba($navigation-color, 0.5);
    content: "";
    transition: all 0.4s $ease-out-quad;
  }

  &.hidden {
    display: none;
  }
}

.cart-extras {
  padding: $gutter;
  border: 1px solid $border-color;

  form {
    @extend %clearfix;
  }
}

.cart-extras-cancel {
  padding: 0;
  font-family: $body-font;
  font-size: $font-size;
  border: 0;

  &:after {
    margin-right: 16px - $gutter;
    transform: rotate(90deg);
  }
}

.cart-totals {
  position: relative;
  text-align: right;

  @include breakpoint(l-only) {
    margin-top: $gutter * 4;
  }

  .form-input {
    width: 100%;
  }

  .button {
    width: 100%;
    margin-top: $gutter * 2;
  }

  .cart-total-subtotal,
  .cart-total-shipping,
  .cart-total-taxes,
  .cart-total-grandtotal,
  .cart-total-giftwrapping,
  .cart-total-coupons {
    padding: 20px 0;
    border-bottom: 1px solid $border-color;

    &.no-provider {
      padding: 0;
      border: 0;
    }
  }

  .cart-total-grandtotal {
    border-bottom: 0;
  }
}

.cart-totals-heading {
  margin-top: $gutter * 2;
  line-height: 1;

  @include breakpoint(l-only) {
    font-size: $font-size;
    text-align: center;
  }
}


.cart-total-label {
  float: left;
  font-weight: bold;

  &:after {
    content: ":";
  }
}

.shipping-estimator {
  padding: 20px;
  margin-top: 25px;
  margin-bottom: 25px;
  text-align: left;
  background-color: darken($body-background-color, 3%);
  border-radius: 4px;

  .form-label {
    margin-bottom: 5px;
  }

  .form-field {
    margin-bottom: 20px;

    &:last-of-type {
      margin-bottom: 0;
    }

    // scss-lint:disable NestingDepth
    &[class*='alert-'] {
      background-color: transparent;

      .form-label {
        color: $body-color;
      }
    }

    &.alert-success {
      .form-input,
      .form-select {
        border-color: $success-color;
      }
    }

    &.alert-error {
      .form-input,
      .form-select {
        border-color: rgba($error-color,0.8);
      }
    }

    .alert-info {
      display: block;
      margin-top: 5px;
      background: transparent;
    }
  }

  .form-select {
    width: 100%;

    &:focus {
      border-color: $accent-color;
      outline: none;
    }
  }

  .form-input {
    display: inline-block;
    width: 100%;
    opacity: 1;
  }

  .shipping-estimate-submit {
    margin-top: 0;
  }

  // scss-lint:disable VariableForProperty
  .shipping-estimator-error {
    width: 80%;
    padding-top: 15px;
    margin: 0 auto;
    line-height: 1.2;
    color: rgba($error-color, 0.8);
    text-align: center;

    &:after {
      display: block;
      width: 60%;
      margin: 20px auto 0;
      border-bottom: 1px solid $border-color;
      content: "";
    }

    &:last-of-type:after {
      display: none;
    }
  }
}

.shipping-quotes {
  ul:first-of-type {
    margin-top: 30px;
  }
}

.shipping-estimate-show,
.shipping-estimate-hide {
  display: inline-block;
  cursor: pointer;

  &.hidden {
    display: none;
  }
}

.shipping-quotes-method {
  .estimator-form-label,
  .estimator-form-input {
    display: inline-block;
    float: left;
    margin-left: 0;
    vertical-align: middle;

    label {
      width: 100%;
    }
  }

  .estimator-form-label {
    @include span-columns(10);
    text-align: left;

    [type='radio'] {
      position: relative;
      top: -1px;
      margin-right: 5px;
    }

    img {
      display: inline-block;
      vertical-align: middle;
    }
  }

  .estimator-form-input {
    @include span-columns(2);
    text-align: right;
  }
}

// Loading Overlay
.cart-overlay {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1;
  display: none;
  width: 100%;
  height: 100%;
  background-color: rgba($body-background-color, 0.75);

  .deactivated & {
    display: block;
  }

  .spinner {
    right: auto;
    left: 50%;
    width: 16px;
    margin-left: -8px;
  }
}

// Cart Paypal button
.cart-additional-checkout-buttons {
  @extend %clearfix;
  margin-top: $gutter;
  text-align: right;

  // scss-lint:disable ImportantRule, QualifyingElement
  p {
    float: none !important;
    margin: rem-calc(20 0);
    color: $meta-color;
  }

  form { clear: both;}
}

/* scss-combine:pages/gift-certificates */
.giftcard-nav {
  padding: 0;
  margin-bottom: 50px;
  border-bottom: 1px solid $border-color;

  @include breakpoint(l-only) {
    padding-bottom: 20px;
    margin-bottom: 20px;
  }
}

.giftcard-nav-item {
  display: inline-block;
  padding-bottom: 25px;
  margin-right: $gutter * 2;
  margin-bottom: -1px;
  margin-left: 0;
  line-height: 1;
  color: $body-color;
  border-bottom: 1px solid transparent;

  @include breakpoint(l-only) {
    width: 100%;
    border-bottom: 0;
  }

  &:last-child { margin-right: 0; }

  &.is-active {
    font-weight: bolder;
    color: $accent-color;
    border-bottom-color: $accent-color;
  }
}

.giftcard-heading {
  margin-bottom: 10px;

  + p {
    padding-bottom: 25px;
    margin-top: 0;
    margin-bottom: $gutter;
    font-weight: bolder;
    border-bottom: 1px solid $border-color;
  }
}

.giftcard-form {
  .form-input.form-radio { width: 1px; }
}

.form-giftcard-balance {
  float: left;
  width: 100%;

  .form-field-control {
    float: none;
    width: auto;
  }

  .form-field { margin-top: 0; }

  .form-actions {
    margin: 0;

    .button { margin-bottom: 0; }
  }
}

.giftcard-form-preview {
  iframe {
    padding: 10px;
    margin: 35px 0 15px;
    vertical-align: middle;
    background-color: $body-background-color;
    border: 1px solid $input-border-color;
    border-radius: 3px;
    box-shadow: inset 0 0 0 10px lighten($input-border-color, 12%), inset 0 0 0 11px $input-border-color;
  }
}

/* scss-combine:pages/unavailable */
.maintenance-message { text-align: center; }


// Cart
/* scss-combine:components/cart/item-gift-wrap */

.item-gift-wrap {
  margin-top: 20px;
}

.item-gift-wrap-toggle {
  cursor: pointer;
}

.item-gift-wrap-add {
  display: none;

  &.visible {
    display: block;
  }
}

.gift-wrap-single,
.gift-wrap-multiple,
.gift-wrap-message {
  display: none;

  &.visible {
    display: block;
  }
}

.gift-wrap-image-toggle {
  display: none;
  margin-left: 10px;
  color: $accent-color;
  cursor: pointer;

  @include breakpoint(s-only) {
    margin: 10px 0 0;
  }

  &.visible {
    display: inline-block;
  }

  &:hover {
    color: $meta-color;
  }
}

.gift-wrap-multiple {
  .form-field {
    margin-bottom: 15px;
  }

  &:last-child {
    margin-bottom: 0;
  }
}

.gift-wrap-form {
  padding: 30px;
  text-align: left;
  background: $light-accent-color;
  border-top: 1px solid $border-color;

  @include breakpoint(l-only) {
    margin-top: -25px;
    margin-bottom: 25px;
    border: 1px solid $border-color;
    border-top: 0;
  }

  .form-label {
    width: 100%;
  }

  .form-label-text {
    margin-bottom: 10px;
  }

  .form-select {
    width: 100%;
  }
}

.gift-wrap-choice-title {
  margin: 0;
}

.gift-wrap-choice-description {
  margin-top: 5px;
}

.gift-wrap-options {
  margin-bottom: 15px;

  .form-label-text {
    display: inline-block;
    margin-bottom: 0;
    margin-left: 7px;
  }
}

.gift-wrap-message-text-input {
  width: 100%;
}

.gift-wrap-submit-button {
  margin-top: 15px;
}

.gift-wrap-message {
  margin-top: 15px;
}


// Snippets
/* scss-combine:components/snippets/social-feeds */
// Social Feeds Module
.social-feeds {
  @include outer-container;
}

.social-feeds-wrap {
  display: table;
  width: 100%;
  max-width: $max-width + ($gutter * 4);
  padding-bottom: $gutter * 7;
  border-collapse: separate;
  border-spacing: 35px 0;
  table-layout: fixed;

  @include breakpoint(l-only) {
    border-spacing: 20px;
  }

  @include breakpoint(m-only) {
    display: block;
    padding-bottom: 0;
    border-spacing: 0;
  }
}

.social-feeds-row {
  display: table-row;
  margin-right: 5px;
  margin-left: 5px;

  @include breakpoint(m-only) {
    display: block;
  }
}

.social-feed {
  position: relative;
  display: table-cell;
  width: 50%;
  padding: 30px;
  background-color: $light-accent-color;

  @include breakpoint(m-only) {
    display: block;
    width: 100%;
    margin-bottom: $gutter * 6;
  }

  .twitter-widget img {
    height: $font-size;
    vertical-align: baseline;
  }
}

.social-blog-posts li {
  @include breakpoint(l-only) {
    text-align: center;
  }
}

.social-heading {
  display: block;
  width: 100%;
  margin-top: 0;

  @include breakpoint(l-only) {
    text-align: center;
  }

  [class^="icon"] {
    padding-right: 10px;
  }
}

.social-byline {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: $gutter * 4;
  margin-top: 0;
  margin-bottom: -$gutter * 4;
  line-height: $gutter * 4;
  text-align: center;
}

// Blog Posts
.recent-blog-post p {
  margin-top: 10px;
  margin-bottom: 10px;

  &:last-child {
    margin-bottom: 0;
  }
}

// Twitter
.twitter-widget .tweet-box {

  @include breakpoint(l-only) {
    text-align: center;
  }

  a {
    word-wrap: break-word;
  }
}

/* scss-combine:components/snippets/sharing-buttons */
.sharing-buttons {
  display: block;
  padding-top: 7px;
  font-size: 0;

  .blog-post-sharing & { text-align: center; }
}

.sharing-buttons-label {
  position: relative;
  top: -1px;
  padding-right: 15px;
  font-size: $meta-size;
  letter-spacing: 0.1em;
  color: $meta-color;
  text-transform: uppercase;
}

// scss-lint:disable VariableForProperty
.sharing-button {
  display: inline-block;
  padding-right: 10px;
  font-size: $font-size;
  line-height: $font-size;
  color: rgba($meta-color, 0.8);
  vertical-align: middle;
  transition: all 0.2s $ease-out-quad;

  &.facebook-like {
    margin-left: 5px;

    // fix for FB popup issues
    .fb-like iframe { max-width: none;}
  }

  &:last-of-type { padding-right: 0; }
  &:hover { color: $accent-color; }
}

/* scss-combine:components/snippets/newsletter-signup */
// Newsletter Signup
.newsletter-signup {
  @include outer-container;
}

.newsletter-signup-wrap {
  padding: 40px;
  margin-right: $gutter * 2;
  margin-left: $gutter * 2;
  text-align: center;
  background-color: $light-accent-color;

  @include breakpoint(l-only) {
    margin-right: 20px;
    margin-left: 20px;
  }

  @include breakpoint(m-only) {
    display: none;
  }
}

.newsletter-signup-label {
  float: left;
  padding-right: 45px;
  margin: 0;
  font-size: 20px;
  font-weight: 300;
  line-height: 38px;
  letter-spacing: 0.05em;

  @include breakpoint(l-only) {
    width: 100%;
    padding-right: 0;
    padding-bottom: 20px;
    text-align: center;
  }
}

.newsletter-signup-form {
  display: inline-block;
  vertical-align: middle;

  form {
    float: right;
    width: 360px;

    @include breakpoint(l-only) {
      width: 100%;
    }
  }
}

.newsletter-signup-email {
  @include span-columns(8);
}

.newsletter-signup-submit {
  @include span-columns(4);

  input {
    width: 100%;
    padding-right: 0;
    padding-left: 0;

    @include breakpoint(l-only) {
      background-color: rgba($accent-color, 0.6);
      border-color: rgba($accent-color, 0.6);

      &:hover {
        background-color: $accent-color;
      }
    }
  }
}

