@charset "UTF-8";

/*
  Impulse, by Archetype Themes
  http://archetypethemes.co
*/

/*============================================================================
  #Sass Mixins
==============================================================================*/

.clearfix {
  &:after {
    content: '';
    display: table;
    clear: both;
  }
}

@mixin clearfix() {
  &::after {
    content: '';
    display: table;
    clear: both;
  }
}

@mixin visuallyHidden {
  clip: rect(0 0 0 0);
  clip: rect(0, 0, 0, 0);
  overflow: hidden;
  position: absolute;
  height: 1px;
  width: 1px;
}

/*================ Media Query Mixin ================*/

@mixin media-query($media-query) {
  @each $breakpoint in $grid-breakpoints {
    $name: nth($breakpoint, 1);
    $declaration: nth($breakpoint, 2);

    @if $media-query == $name and $declaration {
      @media only screen and #{$declaration} {
        @content;
      }
    }
  }
}

/*================ Responsive Show/Hide Helper ================*/

@mixin responsive-display-helper($grid-breakpoint-type: '') {
  .#{$grid-breakpoint-type}show {
    display: block !important;
  }

  .#{$grid-breakpoint-type}hide {
    display: none !important;
  }
}

/*================ Responsive Text Alignment Helper ================*/

@mixin responsive-text-align-helper($grid-breakpoint-type: '') {
  .#{$grid-breakpoint-type}text-left {
    text-align: left !important;
  }

  .#{$grid-breakpoint-type}text-right {
    text-align: right !important;
  }

  .#{$grid-breakpoint-type}text-center {
    text-align: center !important;
  }
}

/*================ Animation related mixins ================*/

@mixin keyframes($name) {
  @keyframes #{$name} {
    @content;
  }
}

@function cart-animation-iteration($i: 1, $base: 0.1s) {
  $additional: 0.06 * $i;
  @if $i == 1 {
    $additional: 0;
  }
  @return $base + $additional;
}

/*================ Functions ================*/

@function em($target, $context: $type_base_size) {
  @if $target == 0 {
    @return 0;
  }
  @return $target / $context + 0em;
}

@function color-control($color, $opacity) {
  @if (lightness( $color ) > 60) {
    @return rgba(0,0,0,$opacity);
  }
  @else {
    @return rgba(255,255,255,$opacity);
  }
}

@function adaptive-color($color, $percentage) {
  @if (lightness( $color ) > 40) {
    @return darken($color, $percentage);
  }
  @else {
    @return lighten($color, $percentage);
  }
}

/*================ Font stack mixins ================*/

@mixin baseFontStack {
  font-size: $type_base_size * 0.85;
  font-family: $type_base_stack;
  letter-spacing: $type_base_spacing;
  line-height: $type_base_line_height;
  font-display: swap;

  @include media-query($medium-up) {
    font-size: $type_base_size;
  }
}

@mixin baseSmallFontStack {
  font-size: $type_base_size * 0.85;
}

@mixin baseExtraSmallFontStack {
  font-size: max($type_base_size * 0.7, 12px);
}

@mixin headingTextCenter {
  @if ($type_header_text_center) {
    text-align: center;
  }
}

@mixin baseTextCenter {
  @if ($type_body_text_center) {
    text-align: center;
  }
}

@mixin headingFontStack {
  font-family: $type_header_stack;
  font-weight: $type_header_weight;
  letter-spacing: $type_header_spacing;
  line-height: $type_header_line_height;
    font-display: swap;

  @if ($type_header_capitalize) {
    text-transform: uppercase;
  }
}

@mixin accentFontStack {
  text-transform: uppercase;
  letter-spacing: 0.3em;
}

@mixin accentFontSmallSize {
  font-size: 0.75em;
}

/*================ Animations and keyframes ================*/

@include keyframes(spin) {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
}

@include keyframes(fadeIn) {
  0%, 35% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@include keyframes(heroContentIn) {
  0%, 35% {
    opacity: 0;
    transform: translateY(8px);
  }
  60% {
    opacity: 1;
  }
  100% {
    transform: translateY(0);
  }
}

/*================ Overlay ================*/

@mixin overlay($z-index: null) {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;

  @if ($z-index) {
    z-index: $z-index;
  }
}

@mixin heroScrim() {
  background-color: $colorImageOverlay;
  opacity: $colorImageOverlayOpacity;
}

@mixin heroRadial() {
  @include overlay();
  background: radial-gradient(rgba(0,0,0,$colorImageOverlayTextShadow) 0%, rgba(0,0,0,0) 60%);
  margin: -100px -200px -100px -200px;
}

// General size variables

$gutter: 30px;

$page-width: 1500px;

$input-radius: 0;

$page-width-gutter-small: 17px;

$page-width-gutter-large: 40px;

$grid-gutter: 22px;

$grid-gutter-small: 17px;

$drawerGutterLarge: $gutter;

$drawerGutterSmall: $gutter / 2;

/*============================================================================
  Grid Breakpoints and Class Names
    - Do not change breakpoint variable names
    - Medium breakpoint is also set in theme.js.liquid and inline
    throughout some templates. Be weary of changing unless you know what you're doing.
==============================================================================*/

$grid-medium: 769px;

$grid-large: 960px;

$grid-widescreen: 1050px;

$small: 'small';

$medium: 'medium';

$medium-down: 'medium-down';

$medium-up: 'medium-up';

$large: 'large';

$large-down: 'large-down';

$large-up: 'large-up';

$widescreen: 'widescreen';

$grid-breakpoint-has-widths: ($small, $medium-up, $widescreen);

$grid-breakpoint-has-utility: ($small, $medium-down, $medium-up, $widescreen);

$grid-breakpoint-has-push: ($medium-up, $widescreen);

// The `$grid-breakpoints` list is used to build our media queries.

// You can use these in the media-query mixin.

$grid-breakpoints: (
  $small '(max-width: #{$grid-medium - 1})',
  $medium '(min-width: #{$grid-medium}) and (max-width: #{$grid-large - 1})',
  $medium-down '(max-width: #{$grid-large - 1})',
  $medium-up '(min-width: #{$grid-medium})',
  $large '(min-width: #{$grid-large}) and (max-width: #{$grid-widescreen - 1})',
  $large-down '(max-width: #{$grid-widescreen - 1})',
  $large-up '(min-width: #{$grid-large})',
  $widescreen '(min-width: #{$grid-widescreen})'
);

/*================ Color variables ================*/

// Button colors

$colorBtnPrimary: #b55966;

$colorBtnPrimaryText: #ffffff;

$colorCartDot: #ff4f33;

// Text link colors

$colorLink: #58595b;

// Text colors

$colorTextBody: #58595b;

$colorPrice: #a56800;

$colorTextSavings: #ff4e4e;

$colorSaleTag: #1c1d1d;

// Backgrounds

$colorBody: #ffffff;

$colorInputBg: #ffffff;

// Footer

$colorFooter: #ffffff;

$colorFooterText: #a56800;

// Border colors

$colorBorder: #a56800;

// Nav and dropdown link background

$colorNav: #fff;

$colorNavText: #a56800;

$colorAnnouncement: #a56800;

$colorAnnouncementText: #fff;

$colorStickyNavLinks: #fff;

// Hero text color

$colorHeroText: #fff;

// Helper colors

$disabledGrey: #f6f6f6;

$disabledBorder: darken($disabledGrey, 25%);

$errorRed: #d02e2e;

$errorRedBg: #fff6f6;

$successGreen: #56ad6a;

$successGreenBg: #ecfef0;

// Content spacing

$contentTopMargin: 70px;

$contentTopMarginSmall: 40px;

// Section header & collection image

$sectionHeaderBottom: 50px;

$sectionHeaderBottomSmall: 30px;

// Slideshow colors

$slideshow-text-light: #fff;

$slideshow-text-dark: #000;

// Modal

$colorModalBg: #e6e6e6;

$colorModalText: #fff;

// Image overlays

$colorImageOverlay: #b55966;

$colorImageOverlayOpacity: 0.05;

$colorImageOverlayTextShadow: 0.2;

$colorSmallImageBg: #fff;

$colorLargeImageBg: #ffffff;

$colorGridOverlay: #000000;

$colorGridOverlayOpacity: 0.1;

// Button style

$buttonStyle: round-slight;

$buttonSkew: 12;

$button-radius: 0;

@if ($buttonStyle == 'round-slight') {
  $button-radius: 3px;
}

@if ($buttonStyle == 'round') {
  $button-radius: 50px;
}

// Icon sizes

$desktopMenuIconSize: 30px;

$desktopMenuChevronSize: 10px;

$colorSwatchCollectionSize: 15px;

$colorSwatchCollectionSizeLarge: 19px;

$colorSwatchSidebarSize: 35px;

$swatchStyle: round;

$siteNavItemPadding: 15px;

$siteNavIconPadding: 12px;

// Z-index

$zindexNavDropdowns: 5;

$zindexDrawer: 30;

$zindexDrawerOverlay: 26;

$zindexModal: 25;

$zindexSkipToContent: 10000;

$z-index-sticky-header: 6;

$z-index-stuck-header: 20;

$z-index-header-search: 28;

$z-index-loader: 4;

$z-index-disclosure-header: 30;

/*================ Typography ================*/

// Font-face header styles

$type_header_family: Raleway;

$type_header_fallback: sans-serif;

$type_header_stack: #{"'" + $type_header_family + "', " + $type_header_fallback};

$type_header_weight: 700;

// Non font-face header styles

$type_header_line_height: 1;

$type_header_text_center: true;

$type_header_base_size: 38px;

$type_header_spacing: 0.025em;

$type_header_capitalize: true;

// Font-face base styles

$type_base_family: Raleway;

$type_base_fallback: sans-serif;

$type_base_stack: #{"'" + $type_base_family + "', " + $type_base_fallback};

$type_base_weight: 500;

// Non font-face base styles

$type_body_text_center: true;

$type_base_spacing: 0.025em;

$type_base_line_height: 1.6;

$type_base_size: 16px;

$type_product_capitalize: true;

$icon_weight: 2px;

$icon_linecaps: miter;

/*============================================================================
  Animations
  - $animate_page_transition_style options:
      page-fade-in-up
      page-slow-fade
      page-slide-reveal-across
      page-slide-reveal-down
  - $animate_sections_background_style options:
      fade-in
      zoom-fade
      paint-across
  - $animate_sections_text_style options:
      fade-in
      rise-up
      paint-across
  - $animate_images_style
      fade-in
      zoom-fade
      paint-across
==============================================================================*/

$animate_page_transitions: false;

$animate_page_transition_style: page-slow-fade;

$animate_sections: true;

$animate_sections_background_style: zoom-fade;

$animate_sections_text_style: rise-up;

$animate_images: true;

$animate_images_style: fade-in;

$animate_underlines: true;

/*================ Drawers ================*/

$drawerNavWidth: 300px;

$drawerCartWidth: 300px;

$drawerCartWidthLarge: 400px;

// small-up width

$drawerHeaderHeight: 70px;

$drawerHeaderHeightLarge: 119px;

$colorDrawers: #ffffff;

$colorDrawerBorder: #e8e8e1;

$colorDrawerText: #000000;

$colorDrawerButton: #b55966;

$colorDrawerButtonText: #ffffff;

$fixedHeightLimit: 400px;

/*================ Misc sizing vars ================*/

$indexSectionMarginSmall: 40px;

$indexSectionMarginLarge: $gutter * 2.5;

$textFrameMarginSmall: 7px;

$textFrameMarginLarge: 10px;

// Buttons

$btnPrimaryFontSize: $type_base_size;

$btnPrimaryPadding: 11px 20px;

$btnPrimaryPaddingSmall: 9px 17px;

$btnMinHeightWhenQuickCheckout: 50px;

// Form element and tertiary button padding

$formElementPadding: 8px 10px;

/*================ Collapsible icon sizing and animations ================*/

$collapsible-trigger-icon-width-small: 10px;

$collapsible-trigger-icon-width: 12px;

$collapsible-trigger-circle-width: 28px;

$collapsible-open-transition: opacity 1s cubic-bezier(.25,.46,.45,.94), height 0.35s cubic-bezier(.25,.46,.45,.94);

$collapsible-close-transition: opacity 0.3s cubic-bezier(.25,.46,.45,.94), height 0.3s cubic-bezier(.25,.46,.45,.94);

$collapsible-content-open-transition: transform 0.5s cubic-bezier(.25,.46,.45,.94);

$collapsible-content-close-transition: transform 0.3s cubic-bezier(.25,.46,.45,.94);

/*================ Global | Normalize ================*/

*, input, :before, :after {
  box-sizing: border-box;
}

html, body {
  padding: 0;
  margin: 0;
}

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

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

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

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

.grid {
  @include clearfix();
  list-style: none;
  margin: 0;
  padding: 0;
  margin-left: -$grid-gutter;

  @include media-query($small) {
    margin-left: -$grid-gutter-small;
  }
}

.grid--small {
  margin-left: -10px;

  .grid__item {
    padding-left: 10px;
  }
}

.grid__item {
  float: left;
  padding-left: $grid-gutter;
  width: 100%;
  min-height: 1px;

  @include media-query($small) {
    padding-left: $grid-gutter-small;
  }

  &[class*="--push"] {
    position: relative;
  }
}

.grid--no-gutters {
  margin-left: 0;

  .grid__item {
    padding-left: 0;
  }
}

.grid--small-gutters {
  margin-left: -10px;
  margin-bottom: -10px;

  .grid__item {
    padding-left: 10px;
    padding-bottom: 10px;
  }
}

.grid--flush-bottom {
  margin-bottom: -$grid-gutter;
  overflow: auto;

  > .grid__item {
    margin-bottom: $grid-gutter;
  }
}

.grid--center {
  text-align: center;

  .grid__item {
    float: none;
    display: inline-block;
    vertical-align: top;
    text-align: left;
  }
}

/*============================================================================
  Gutterless grids have all the properties of regular grids, minus any spacing.
==============================================================================*/

.grid--full {
  margin-left: 0;

  > .grid__item {
    padding-left: 0;
  }
}

@include media-query($medium-up) {
  .grid--table-large {
    display: table;
    width: 100%;
    table-layout: fixed;

    > .grid__item {
      display: table-cell;
      vertical-align: middle;
      float: none;
    }
  }
}

@include media-query($small) {
  .small--grid--flush {
    margin-left: -2px;

    .page-width & {
      margin-left: -($page-width-gutter-small + 2);
      margin-right: -($page-width-gutter-small);
    }

    > .grid__item {
      padding-left: 2px;
    }
  }
}

/*============================================================================
  Grid Columns
    - Create width classes, prepended by the breakpoint name.
==============================================================================*/

@mixin grid-column-generator($grid-breakpoint-type: '') {
  /* Whole */
  .#{$grid-breakpoint-type}one-whole { width: 100%; }

  /* Halves */
  .#{$grid-breakpoint-type}one-half { width: percentage(1 / 2); }

  /* Thirds */
  .#{$grid-breakpoint-type}one-third { width: percentage(1 / 3); }
  .#{$grid-breakpoint-type}two-thirds { width: percentage(2 / 3); }

  /* Quarters */
  .#{$grid-breakpoint-type}one-quarter { width: percentage(1 / 4); }
  .#{$grid-breakpoint-type}two-quarters { width: percentage(2 / 4); }
  .#{$grid-breakpoint-type}three-quarters { width: percentage(3 / 4); }

  /* Fifths */
  .#{$grid-breakpoint-type}one-fifth { width: percentage(1 / 5); }
  .#{$grid-breakpoint-type}two-fifths { width: percentage(2 / 5); }
  .#{$grid-breakpoint-type}three-fifths { width: percentage(3 / 5); }
  .#{$grid-breakpoint-type}four-fifths { width: percentage(4 / 5); }

  /* Sixths */
  .#{$grid-breakpoint-type}one-sixth { width: percentage(1 / 6); }
  .#{$grid-breakpoint-type}two-sixths { width: percentage(2 / 6); }
  .#{$grid-breakpoint-type}three-sixths { width: percentage(3 / 6); }
  .#{$grid-breakpoint-type}four-sixths { width: percentage(4 / 6); }
  .#{$grid-breakpoint-type}five-sixths { width: percentage(5 / 6); }

  /* Eighths */
  .#{$grid-breakpoint-type}one-eighth { width: percentage(1 / 8); }
  .#{$grid-breakpoint-type}two-eighths { width: percentage(2 / 8); }
  .#{$grid-breakpoint-type}three-eighths { width: percentage(3 / 8); }
  .#{$grid-breakpoint-type}four-eighths { width: percentage(4 / 8); }
  .#{$grid-breakpoint-type}five-eighths { width: percentage(5 / 8); }
  .#{$grid-breakpoint-type}six-eighths { width: percentage(6 / 8); }
  .#{$grid-breakpoint-type}seven-eighths { width: percentage(7 / 8); }

  /* Tenths */
  .#{$grid-breakpoint-type}one-tenth { width: percentage(1 / 10); }
  .#{$grid-breakpoint-type}two-tenths { width: percentage(2 / 10); }
  .#{$grid-breakpoint-type}three-tenths { width: percentage(3 / 10); }
  .#{$grid-breakpoint-type}four-tenths { width: percentage(4 / 10); }
  .#{$grid-breakpoint-type}five-tenths { width: percentage(5 / 10); }
  .#{$grid-breakpoint-type}six-tenths { width: percentage(6 / 10); }
  .#{$grid-breakpoint-type}seven-tenths { width: percentage(7 / 10); }
  .#{$grid-breakpoint-type}eight-tenths { width: percentage(8 / 10); }
  .#{$grid-breakpoint-type}nine-tenths { width: percentage(9 / 10); }

  /* Twelfths */
  .#{$grid-breakpoint-type}one-twelfth { width: percentage(1 / 12); }
  .#{$grid-breakpoint-type}two-twelfths { width: percentage(2 / 12); }
  .#{$grid-breakpoint-type}three-twelfths { width: percentage(3 / 12); }
  .#{$grid-breakpoint-type}four-twelfths { width: percentage(4 / 12); }
  .#{$grid-breakpoint-type}five-twelfths { width: percentage(5 / 12); }
  .#{$grid-breakpoint-type}six-twelfths { width: percentage(6 / 12); }
  .#{$grid-breakpoint-type}seven-twelfths { width: percentage(7 / 12); }
  .#{$grid-breakpoint-type}eight-twelfths { width: percentage(8 / 12); }
  .#{$grid-breakpoint-type}nine-twelfths { width: percentage(9 / 12); }
  .#{$grid-breakpoint-type}ten-twelfths { width: percentage(10 / 12); }
  .#{$grid-breakpoint-type}eleven-twelfths { width: percentage(11 / 12); }
}

/*================ Grid push classes ================*/

@mixin grid-push-generator($grid-breakpoint-type: '') {
  /* Halves */
  .#{$grid-breakpoint-type}push-one-half { left: percentage(1 / 2); }

  /* Thirds */
  .#{$grid-breakpoint-type}push-one-third { left: percentage(1 / 3); }
  .#{$grid-breakpoint-type}push-two-thirds { left: percentage(2 / 3); }

  /* Quarters */
  .#{$grid-breakpoint-type}push-one-quarter { left: percentage(1 / 4); }
  .#{$grid-breakpoint-type}push-two-quarters { left: percentage(2 / 4); }
  .#{$grid-breakpoint-type}push-three-quarters { left: percentage(3 / 4); }

  /* Fifths */
  .#{$grid-breakpoint-type}push-one-fifth { left: percentage(1 / 5); }
  .#{$grid-breakpoint-type}push-two-fifths { left: percentage(2 / 5); }
  .#{$grid-breakpoint-type}push-three-fifths { left: percentage(3 / 5); }
  .#{$grid-breakpoint-type}push-four-fifths { left: percentage(4 / 5); }

  /* Sixths */
  .#{$grid-breakpoint-type}push-one-sixth { left: percentage(1 / 6); }
  .#{$grid-breakpoint-type}push-two-sixths { left: percentage(2 / 6); }
  .#{$grid-breakpoint-type}push-three-sixths { left: percentage(3 / 6); }
  .#{$grid-breakpoint-type}push-four-sixths { left: percentage(4 / 6); }
  .#{$grid-breakpoint-type}push-five-sixths { left: percentage(5 / 6); }

  /* Eighths */
  .#{$grid-breakpoint-type}push-one-eighth { left: percentage(1 / 8); }
  .#{$grid-breakpoint-type}push-two-eighths { left: percentage(2 / 8); }
  .#{$grid-breakpoint-type}push-three-eighths { left: percentage(3 / 8); }
  .#{$grid-breakpoint-type}push-four-eighths { left: percentage(4 / 8); }
  .#{$grid-breakpoint-type}push-five-eighths { left: percentage(5 / 8); }
  .#{$grid-breakpoint-type}push-six-eighths { left: percentage(6 / 8); }
  .#{$grid-breakpoint-type}push-seven-eighths { left: percentage(7 / 8); }

  /* Tenths */
  .#{$grid-breakpoint-type}push-one-tenth { left: percentage(1 / 10); }
  .#{$grid-breakpoint-type}push-two-tenths { left: percentage(2 / 10); }
  .#{$grid-breakpoint-type}push-three-tenths { left: percentage(3 / 10); }
  .#{$grid-breakpoint-type}push-four-tenths { left: percentage(4 / 10); }
  .#{$grid-breakpoint-type}push-five-tenths { left: percentage(5 / 10); }
  .#{$grid-breakpoint-type}push-six-tenths { left: percentage(6 / 10); }
  .#{$grid-breakpoint-type}push-seven-tenths { left: percentage(7 / 10); }
  .#{$grid-breakpoint-type}push-eight-tenths { left: percentage(8 / 10); }
  .#{$grid-breakpoint-type}push-nine-tenths { left: percentage(9 / 10); }

  /* Twelfths */
  .#{$grid-breakpoint-type}push-one-twelfth { left: percentage(1 / 12); }
  .#{$grid-breakpoint-type}push-two-twelfths { left: percentage(2 / 12); }
  .#{$grid-breakpoint-type}push-three-twelfths { left: percentage(3 / 12); }
  .#{$grid-breakpoint-type}push-four-twelfths { left: percentage(4 / 12); }
  .#{$grid-breakpoint-type}push-five-twelfths { left: percentage(5 / 12); }
  .#{$grid-breakpoint-type}push-six-twelfths { left: percentage(6 / 12); }
  .#{$grid-breakpoint-type}push-seven-twelfths { left: percentage(7 / 12); }
  .#{$grid-breakpoint-type}push-eight-twelfths { left: percentage(8 / 12); }
  .#{$grid-breakpoint-type}push-nine-twelfths { left: percentage(9 / 12); }
  .#{$grid-breakpoint-type}push-ten-twelfths { left: percentage(10 / 12); }
  .#{$grid-breakpoint-type}push-eleven-twelfths { left: percentage(11 / 12); }
}

/*================ Clearfix helper on uniform grids ================*/

@mixin grid--uniform-clearfix($grid-breakpoint-type: '') {
  .grid--uniform {
    .#{$grid-breakpoint-type}one-half:nth-of-type(2n+1),
    .#{$grid-breakpoint-type}one-third:nth-of-type(3n+1),
    .#{$grid-breakpoint-type}one-quarter:nth-of-type(4n+1),
    .#{$grid-breakpoint-type}one-fifth:nth-of-type(5n+1),
    .#{$grid-breakpoint-type}one-sixth:nth-of-type(6n+1),
    .#{$grid-breakpoint-type}two-sixths:nth-of-type(3n+1),
    .#{$grid-breakpoint-type}three-sixths:nth-of-type(2n+1),
    .#{$grid-breakpoint-type}one-eighth:nth-of-type(8n+1),
    .#{$grid-breakpoint-type}two-eighths:nth-of-type(4n+1),
    .#{$grid-breakpoint-type}four-eighths:nth-of-type(2n+1),
    .#{$grid-breakpoint-type}five-tenths:nth-of-type(2n+1),
    .#{$grid-breakpoint-type}one-twelfth:nth-of-type(12n+1),
    .#{$grid-breakpoint-type}two-twelfths:nth-of-type(6n+1),
    .#{$grid-breakpoint-type}three-twelfths:nth-of-type(4n+1),
    .#{$grid-breakpoint-type}four-twelfths:nth-of-type(3n+1),
    .#{$grid-breakpoint-type}six-twelfths:nth-of-type(2n+1) { clear: both; }
  }
}

/*================ Build Base Grid Classes ================*/

@include grid-column-generator();

@include responsive-display-helper();

@include responsive-text-align-helper();

/*================ Build Responsive Grid Classes ================*/

@each $breakpoint in $grid-breakpoint-has-widths {
  @include media-query($breakpoint) {
    @include grid-column-generator('#{$breakpoint}--');
    @include grid--uniform-clearfix('#{$breakpoint}--');
  }
}

@each $breakpoint in $grid-breakpoint-has-utility {
  @include media-query($breakpoint) {
    @include responsive-display-helper('#{$breakpoint}--');
    @include responsive-text-align-helper('#{$breakpoint}--');
  }
}

/*================ Build Grid Push Classes ================*/

@each $breakpoint in $grid-breakpoint-has-push {
  @include media-query($breakpoint) {
    @include grid-push-generator('#{$breakpoint}--');
  }
}

.flex-grid {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -ms-flex: 1 1 100%;
      flex: 1 1 100%;

  @if ($type_body_text_center) {
    -ms-flex-pack: center;
        justify-content: center;
  }
}

.flex-grid--center {
  -ms-flex-align: center;
      align-items: center;
}

.flex-grid--gutters {
  margin-top: -($gutter / 2);
  margin-left: -($gutter / 2);
}

.flex-grid__item {
  -ms-flex: 0 1 100%;
      flex: 0 1 100%;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: stretch;
      align-items: stretch;

  .flex-grid--gutters & {
    padding-top: $gutter / 2;
    padding-left: $gutter / 2;
  }

  > * {
    -ms-flex: 1 1 100%;
        flex: 1 1 100%;
  }
}

.flex-grid__item--stretch {
  -ms-flex: 1 1 100%;
      flex: 1 1 100%;

  &:first-child {
    min-width: 250px;
  }
}

// Flex grid sizing from theme settings

@include media-query($medium-up) {
  .flex-grid__item--33 {
    -ms-flex-preferred-size: 33.33%;
        flex-basis: 33.33%;
  }

  .flex-grid__item--50 {
    -ms-flex-preferred-size: 50%;
        flex-basis: 50%;
  }
}

// Reverse order or elements

.flex-grid__item--mobile-second {
  @include media-query($small) {
    -ms-flex-order: 2;
        order: 2;
  }
}

/*================ Partials | Helper Classes ================*/

html:not(.tab-outline) *:focus {
  outline: none;
}

.is-transitioning {
  display: block !important;
  visibility: visible !important;
}

.display-table {
  display: table;
  table-layout: fixed;
  width: 100%;
}

.display-table-cell {
  display: table-cell;
  vertical-align: middle;
  float: none;
}

@include media-query($medium-up) {
  .medium-up--display-table {
    display: table;
    table-layout: fixed;
    width: 100%;
  }

  .medium-up--display-table-cell {
    display: table-cell;
    vertical-align: middle;
    float: none;
  }
}

.visually-hidden {
  @include visuallyHidden();
}

// Keep dimensions but hide visually

.visually-invisible {
  opacity: 0 !important;
}

/*============================================================================
  #OOCSS Media Object
    - http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code/
==============================================================================*/

.media,
.media-flex {
  overflow: hidden;
  _overflow: visible;
  zoom: 1;
}

.media-img {
  float: left;
  margin-right: $gutter;
}

.media-img-right {
  float: right;
  margin-left: $gutter;
}

.media-img img,
.media-img-right img {
  display: block;
}

/*============================================================================
  Skip to content button
    - Overrides .visually-hidden when focused
==============================================================================*/

.skip-link:focus {
  clip: auto;
  width: auto;
  height: auto;
  margin: 0;
  color: $colorTextBody;
  background-color: $colorBody;
  padding: 10px;
  opacity: 1;
  z-index: $zindexSkipToContent;
  transition: none;
}

html {
  -ms-touch-action: manipulation;
      touch-action: manipulation;
}

html,
body {
  background-color: $colorBody;
  color: $colorTextBody;
}

.page-width {
  max-width: $page-width;
  margin: 0 auto;
}

.page-width,
.page-full {
  padding: 0 $page-width-gutter-small;

  @include media-query($medium-up) {
    padding: 0 $page-width-gutter-large;
  }
}

@include media-query($small) {
  .page-width--flush-small {
    padding: 0;
  }
}

.page-content,
.shopify-policy__container {
  padding-top: $indexSectionMarginSmall;
  padding-bottom: $indexSectionMarginSmall;

  @include media-query($medium-up) {
    padding-top: $indexSectionMarginLarge;
    padding-bottom: $indexSectionMarginLarge;
  }
}

.page-content--top,
.page-content--with-blocks {
  padding-bottom: 0;
}

.page-content--bottom {
  padding-top: 0;
}

.main-content {
  display: block;
  min-height: 300px;
  @include media-query($medium-up) {
    min-height: 700px;
  }
}

hr {
  height: 1px;
  border: 0;
  border-top: 1px solid $colorBorder;
}

.hr--small {
  @extend hr;
  margin: 15px auto;
}

.hr--medium {
  @extend hr;
  margin: 25px auto;

  @include media-query($medium-up) {
    margin: 35px auto;
  }
}

.hr--large {
  @extend hr;
  margin: ($gutter) auto;

  @include media-query($medium-up) {
    margin: ($gutter * 1.5) auto;
  }

  .page-blocks + &,
  .page-blocks + [data-section-type="recently-viewed"] & {
    margin-top: 0;
  }
}

.hr--clear {
  border: 0;
}

/*============================================================================
  Responsive tables, defined with .table--responsive on table element.
==============================================================================*/

.table--responsive {
  @include media-query($small) {
    thead {
      display: none;
    }

    tr {
      display: block;
    }

    // IE9 table layout fixes
    tr,
    td {
      float: left;
      clear: both;
      width: 100%;
    }

    th,
    td {
      display: block;
      text-align: right;
      padding: 15px;
    }

    td:before {
      content: attr(data-label);
      float: left;
      font-size: 12px;
      padding-right: 10px;
    }
  }
}

@include media-query($small) {
  .table--small-hide {
    display: none !important;
  }

  .table__section + .table__section {
    position: relative;
    margin-top: 10px;
    padding-top: 15px;

    &:after {
      content: '';
      display: block;
      position: absolute;
      top: 0;
      left: 15px;
      right: 15px;
      border-bottom: 1px solid $colorBorder;
    }
  }
}

body,
input,
textarea,
button,
select,
.faux-select {
  @include baseFontStack;
  -webkit-font-smoothing: antialiased;
  -webkit-text-size-adjust: 100%;
  text-rendering: optimizeSpeed;
}

body {
  font-weight: $type_base_weight;
}

p {
  margin: 0 0 ($gutter / 2) 0;

  img {
    margin: 0;
  }
}

em {
  font-style: italic;
}

b, strong {
  font-weight: bold;
}

small {
  font-size: 0.85em;
}

sup, sub {
  position: relative;
  font-size: 60%;
  vertical-align: baseline;
}

sup {
  top: -0.5em;
}

sub {
  bottom: -0.5em;
}

blockquote,
.rte blockquote {
  margin: 0;
  padding: ($gutter / 2) $gutter 40px;

  p {
    margin-bottom: 0;

    & + cite {
      margin-top: $gutter / 2;
    }
  }

  cite {
    display: block;

    &:before {
      content: "\2014 \0020";
    }
  }
}

code, pre {
  background-color: #faf7f5;
  font-family: Consolas, monospace;
  font-size: 1em;
  border: 0 none;
  padding: 0 2px;
  color: #51ab62;
}

pre {
  overflow: auto;
  padding: $gutter / 2;
  margin: 0 0 $gutter;
}

/*================ Form elements ================*/

label:not(.variant__button-label),
.label {
  @include accentFontStack;
  @include accentFontSmallSize;
}

label {
  display: block;
  margin-bottom: 10px;
}

.label-info {
  display: block;
  margin-bottom: 10px;
}

/*============================================================================
  Headings
==============================================================================*/

h1, h2, h3, h4, h5, h6 {
  display: block;
  margin: 0 0 ($gutter / 4);

  @include media-query($medium-up) {
    margin: 0 0 ($gutter / 2);
  }

  a {
    text-decoration: none;
    font-weight: inherit;
  }
}

h1, h2, h3 {
  @include headingFontStack;
}

h1 {
  font-size: em($type_header_base_size);
}

h2 {
  font-size: em($type_header_base_size * 0.86);
}

h3 {
  font-size: em($type_header_base_size * 0.7);
}

h4 {
  @include accentFontStack;
  @include accentFontSmallSize;
}

h5,
h6 {
  @include accentFontStack;
  @include accentFontSmallSize;
  margin-bottom: 10px;

  @include media-query($small) {
    margin-bottom: 5px;
  }
}

.h1 { @extend h1; }

.h2 { @extend h2; }

.h3 { @extend h3; }

.h4 { @extend h4; }

.h5 { @extend h5; }

.h6 { @extend h6; }

// Standardize text spacing sometimes

.text-spacing,
.text-spacing.rte:last-child {
  margin-bottom: $gutter / 2;
}

/*================ Rich Text Editor Styles ================*/

.rte {
  table {
    @include media-query($small) {

      td, th {
        padding: 6px 8px;
      }
    }
    .collapsible-content & {

      td, th {
        padding: 6px 8px;
      }
    }
  }
}

/*================ Blog Typography ================*/

.comment-author {
  margin-bottom: 0;
}

.comment-date {
  @include baseSmallFontStack;
  display: block;
  margin-top: 3px;

  @include media-query($small) {
    margin-bottom: $gutter / 2
  }
}

/*================ Cart Typography ================*/

.ajaxcart__product-meta {
  @include baseSmallFontStack;
}

.ajaxcart__subtotal {
  @include accentFontStack;
  @include accentFontSmallSize;
  margin-bottom: 10px;
}

.ajaxcart__price {
  @include baseSmallFontStack;
  margin-bottom: 10px;
}

.ajaxcart__note {
  @include baseSmallFontStack;
  opacity: 0.8;
  margin-bottom: 10px;

  @include media-query($small) {
    @include baseExtraSmallFontStack;
  }
}

.ajaxcart__note--terms {
  margin-top: 10px;

  input {
    vertical-align: middle;
  }

  label {
    display: inline;
  }

  a {
    text-decoration: underline;
  }
}

/*================ Misc typography ================*/

.rte {
  .enlarge-text {
    margin: 0;
    font-size: 1.3em;

    p {
      &:last-child {
        margin-bottom: 0;
      }
    }
  }

  .enlarge-text--offset {
    p {
      @include media-query($medium-up) {
        padding-right: 15%;

        .text-center & {
          padding: 0 5%;
        }
      }
    }
  }
}

@include media-query($medium-up) {
  .table--small-text {
    @include baseSmallFontStack;
  }
}

.index-section--footer {
  h3 {
    font-size: 1.5em;
  }
}

/*================ Partials | Lists ================*/

ul, ol {
  margin: 0 0 ($gutter / 2) ($gutter);
  padding: 0;
  text-rendering: optimizeLegibility;
}

ol ol {
  list-style: lower-alpha;
}

ol { list-style: decimal; }

ul ul, ul ol,
ol ol, ol ul { margin: 4px 0 5px 20px; }

li { margin-bottom: 0.25em; }

ul.square { list-style: square outside; }

ul.disc { list-style: disc outside; }

ol.alpha { list-style: lower-alpha outside; }

.no-bullets {
  list-style: none outside;
  margin-left: 0;
}

.inline-list {
  padding: 0;
  margin: 0;

  li {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
}

table {
  width: 100%;
  border-spacing: 1px;
  position: relative;
  border: 0 none;
  background: $colorBorder;
}

.table-wrapper {
  max-width: 100%;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
}

td,
th {
  border: 0 none;
  text-align: left;
  padding: 10px 15px;
  background: $colorBody;
}

th {
  font-weight: bold;
}

// Typography

th,
.table__title {
  font-weight: bold;
}

/*================ Partials | Links ================*/

a,
.text-link {
  color: $colorTextBody;
  text-decoration: none;
  background: transparent;

  &:hover {
    color: $colorTextBody;
  }
}

/*================ Force an input/button to look like a text link ================*/

.text-link {
  display: inline;
  border: 0 none;
  background: none;
  padding: 0;
  margin: 0;
}

/*================ Links in RTE ================*/

.rte a,
.shopify-policy__container a {
  color: $colorLink;
}

/*================ Partials | Buttons ================*/

button {
  overflow: visible;
}

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

.btn,
.rte .btn,
.shopify-payment-button .shopify-payment-button__button--unbranded,
.product-reviews .spr-summary-actions a,
.product-reviews .spr-button {
  line-height: 1.42;
  text-decoration: none;
  text-align: center;
  white-space: normal;

  font-size: max($type_base_size - 4, 13px);
  font-weight: bold;
  @include accentFontStack;

  display: inline-block;
  padding: $btnPrimaryPadding;
  margin: 0;
  width: auto;
  min-width: 90px;
  vertical-align: middle;
  cursor: pointer;
  border: 1px solid transparent;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  border-radius: $button-radius;
  color: $colorBtnPrimaryText;
  background: $colorBtnPrimary;

  @include media-query($small) {
    padding: $btnPrimaryPaddingSmall;
    font-size: max($type_base_size - 6, 11px);
  }

  &:hover {
    color: $colorBtnPrimaryText;
    background-color: $colorBtnPrimary;
  }

  &[disabled],
  &.disabled {
    cursor: default;
    color: darken($disabledBorder, 27%);
    background-color: $disabledGrey;

    &:hover {
      color: darken($disabledBorder, 27%);
      background-color: $disabledGrey;
    }

    @if ($buttonStyle == 'angled') {
      &:before,
      &:after {
        background-color: $disabledGrey;
        border-top: 1px solid darken($disabledBorder, 27%);
        border-bottom: 1px solid darken($disabledBorder, 27%);
      }
    }
  }

  // Custom setting-based styles
  @if ($buttonStyle == 'angled') {
    position: relative;
    border: 0;
    margin: 0 10px;

    &:before,
    &:after {
      content: '';
      position: absolute;
      top: 0;
      bottom: 0;
      width: 20px;
      transform:skewX(-#{$buttonSkew}deg);
      background-color: inherit;
    }

    &:before {
      left: -6px;
    }

    &:after {
      right: -6px;
    }

    &.btn--small {
      &:before {
        left: -5px;
      }
      &:after {
        right: -5px;
      }
    }
  }

  // Hover effect on non-angled buttons. Must only have .btn class
  @if ($buttonStyle != 'angled') {
    &:not(.btn--secondary):not(.btn--tertiary):not(.btn--inverse):not(.btn--body):not(.btn--static) {
      position: relative;
      overflow: hidden;
      transition: background 0.2s ease 0s;

      &:after {
        content: '';
        position: absolute;
        top: 0;
        left: 150%;
        width: 200%;
        height: 100%;
        transform: skewX(-20deg);
        background-image: linear-gradient(to right,transparent, rgba(#fff, .25),transparent);
      }

      &:hover:after {
        animation: shine 0.75s cubic-bezier(0.01, 0.56, 1, 1);
      }

      &:hover {
        background: lighten($colorBtnPrimary, 10%);
        transition-delay: 0.25s;
      }

      &:active {
        background: $colorBtnPrimary;
        transition-delay: 0s;
      }
    }
  }
}

// Mimic the .btn hover style for Shopify Payment Button

.shopify-payment-button .shopify-payment-button__button--unbranded:hover:not([disabled]) {
  color: $colorBtnPrimaryText;
  background-color: $colorBtnPrimary;
}

.btn--secondary,
.rte .btn--secondary {
  color: $colorTextBody;
  border: 1px solid $colorBorder;
  background-color: transparent;

  @if ($buttonStyle == 'angled') {
    border-left: 0;
    border-right: 0;

    &:before,
    &:after {
      background-color: transparent;
      top: -1px;
      bottom: -1px;
    }

    &:before {
      border-left: 1px solid $colorBorder;
      border-bottom: 1px solid $colorBorder;
    }

    &:after {
      border-top: 1px solid $colorBorder;
      border-right: 1px solid $colorBorder;
    }
  }

  &:hover {
    color: $colorTextBody;
    border-color: $colorBorder;
    background-color: transparent;

    &:before {
      border-color: $colorBorder;
    }

    &:after {
      border-color: $colorBorder;
    }
  }
}

.btn--tertiary,
.rte .btn--tertiary {
  // Undo .btn styles
  font-weight: normal;
  text-transform: none;
  letter-spacing: initial;

  // New styles
  background-color: transparent;
  border: 1px solid $colorBorder;
  color: $colorTextBody;
  padding: $formElementPadding;
  white-space: nowrap;

  &:hover {
    background-color: transparent;
    color: $colorTextBody;
  }

  &[disabled],
  &.disabled {
    cursor: default;
    color: darken($disabledBorder, 27%);
    background-color: $disabledGrey;
  }

  @if ($buttonStyle == 'angled') {
    margin: 0;

    &:before,
    &:after {
      content: none;
    }
  }
}

// Force same colors as .btn

.btn--tertiary-active {
  color: $colorBtnPrimaryText;
  background: $colorBtnPrimary;
  border-color: $colorBtnPrimary;

  &:hover {
    color: $colorBtnPrimaryText;
    background: $colorBtnPrimary;
  }
}

// Button that matches body background

.btn--body {
  border: 1px solid $colorBorder;
  background-color: $colorBody;
  color: $colorTextBody;

  &:hover,
  &:active {
    border: 1px solid $colorBorder;
    background-color: $colorBody;
    color: $colorTextBody;
  }
}

.btn--circle {
  padding: 10px;
  border-radius: 50%;
  min-width: 0;
  line-height: 1;

  .icon {
    width: 20px;
    height: 20px;
  }

  &:before,
  &:after {
    content: none;
    background: none;
    width: auto; // for photoswipe close button
  }

  &.btn--large .icon {
    width: 30px;
    height: 30px;
  }

  &.btn--large {
    padding: 15px;
  }
}

/*================ Button variations ================*/

.btn--small,
.collapsibles-wrapper .spr-summary-actions a,
.collapsibles-wrapper .spr-button {
  padding: 8px 14px;
  background-position: 150% 45%;
  min-width: 90px;
  font-size: max($type_base_size - 6, 12px);

  @if ($buttonStyle == 'angled') {
    margin: 0 10px;
    padding-left: 16px;
    padding-right: 16px;
  }

  @include media-query($small) {
    font-size: max($type_base_size - 8, 10px);
  }
}

.btn--secondary.btn--small {
  font-weight: normal;
}

.btn--large {
  padding: 15px 20px;
}

.btn--full {
  width: 100%;
  padding: $btnPrimaryPadding;
  transition: none;
  padding: 13px 20px;

  @if ($buttonStyle == 'angled') {
    max-width: 94%;
  }
}

@if ($buttonStyle == 'angled') {
  .shopify-payment-button .shopify-payment-button__button--unbranded {
    max-width: 94%;
  }
}

.btn--inverse {
  background-color: transparent;
  color: #fff;
  border: 2px solid #fff;

  &:hover,
  &:focus {
    background-color: transparent;
  }

  @if ($buttonStyle == 'angled') {
    border-left: 0;
    border-right: 0;

    &:before,
    &:after {
      background-color: transparent;
      border-color: #fff;
      top: -2px;
      bottom: -2px;
    }

    &:before {
      border-left: 2px solid;
      border-bottom: 2px solid;
    }

    &:after {
      border-top: 2px solid;
      border-right: 2px solid;
    }
  }

  // Specific color when in a hero
  .hero__link & {
    color: $colorHeroText;
    border-color: $colorHeroText;

    @if ($buttonStyle == 'angled') {
      &:before {
        border-color: $colorHeroText;
      }

      &:after {
        border-color: $colorHeroText;
      }
    }
  }
}

/*================ Button loading indicator ================*/

.btn--loading {
  position: relative;
  text-indent: -9999px;

  background-color: darken($colorBtnPrimary, 5%);
  color: darken($colorBtnPrimary, 5%);

  &:hover,
  &:active {
    background-color: darken($colorBtnPrimary, 5%);
    color: darken($colorBtnPrimary, 5%);
  }

  &:before {
    content: '';
    display: block;
    width: 24px;
    height: 24px;
    position: absolute;
    left: 50%;
    top: 50%;
    margin-left: -12px;
    margin-top: -12px;
    border-radius: 50%;
    border: 3px solid $colorBtnPrimaryText;
    border-top-color: transparent;
    animation: spin 1s infinite linear;
  }

  @if ($buttonStyle == 'angled') {
    &:after {
      background-color: darken($colorBtnPrimary, 5%);
    }

    &.btn--secondary:after {
      bottom: 1px;
    }
  }
}

/*================ Return button ================*/

.return-link {
  text-align: center;
  padding: 15px 25px;
  margin-top: 50px;

  @include media-query($small) {
    padding: 22px 17px;
    width: 100%;

    @if ($buttonStyle == 'angled') {
      width: 90%;
    }
  }

  .icon {
    width: 20px;
    margin-right: 8px;
  }
}

/*================ Collapsible trigger ================*/

.collapsible-trigger-btn {
  text-align: left;
  @include baseTextCenter;
  @include accentFontStack;
  @include accentFontSmallSize;
  display: block;
  width: 100%;
  padding: ($gutter / 1.75) 0;

  @include media-query($small) {
    padding: ($gutter / 2) 0;
  }
}

.collapsible-trigger-btn--borders {
  border: 1px solid $colorBorder;
  border-bottom: 0;
  padding: 12px;

  .collapsible-trigger__icon {
    right: 12px;
  }

  @include media-query($medium-up) {
    padding: 15px;

    .collapsible-trigger__icon {
      right: 15px;
    }
  }

  .collapsible-content + & {
    margin-top: -1px;
  }

  + .collapsible-content .collapsible-content__inner {
    @include baseExtraSmallFontStack;
    border: 1px solid $colorBorder;
    border-top: 0;
    padding: 0 20px 20px;

    @include media-query($medium-up) {
      @include baseSmallFontStack;
    }
  }

  + .collapsible-content--expanded {
    margin-bottom: $gutter;

    &:last-child {
      margin-bottom: -1px;
    }
  }
}

.collapsible-trigger-btn--borders-top {
  border-top: 1px solid $colorBorder;
}

/*============================================================================
  Button styles when additional quick checkout buttons
  are enabled on product page
==============================================================================*/

.shopify-payment-button {
  margin-top: 10px;
}

.shopify-payment-button .shopify-payment-button__button--unbranded {
  display: block;
  width: 100%;
  transition: none;
}

.payment-buttons {
  .add-to-cart,
  .shopify-payment-button,
  .shopify-payment-button__button--unbranded {
    min-height: $btnMinHeightWhenQuickCheckout;
  }
}

.add-to-cart.btn--secondary {
  border: 1px solid $colorTextBody;

  @if ($buttonStyle == 'angled') {
    border-left: 0;
    border-right: 0;

    &:before,
    &:after {
      border-color: $colorTextBody;
    }
  }
}

.shopify-payment-button__button--hidden {
  display: none !important;
}

/*================ Partials | Images, SVG, and iframes ================*/

img {
  border: 0 none;
}

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

img,
iframe {
  max-width: 100%;
}

img[data-sizes="auto"] {
  display: block;
  width: 100%;
}

.lazyload {
  opacity: 0;

  .no-js & {
    display: none;
  }
}

.lazyloaded {
  opacity: 1;
  transition: opacity 0.4s ease;
}

.video-wrapper {
  position: relative;
  overflow: hidden;
  max-width: 100%;
  padding-bottom: 56.25%;
  height: 0;
  height: auto;

  iframe,
  video {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
}

.video-wrapper--modal {
  width: 1000px;
}

/*================ Aspect ratio grid images ================*/

.grid__image-ratio {
  position: relative;
  background-repeat: no-repeat;
  background-size: contain;
  background-position: center center;
  background-color: $colorSmallImageBg;

  @if ($animate_images) {
    opacity: 0;

    &.lazyloaded {
      opacity: 1;
      animation: $animate_images_style 1s cubic-bezier(0.26, 0.54, 0.32, 1) 0s forwards;
      transition: none; // fixes safari animation conflict
    }
  }

  &:before {
    content: '';
    display: block;
    height: 0;
    width: 100%;
  }

  .placeholder-svg {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
  }
}

.grid__image-ratio--object {
  opacity: 1;
}

.grid__image-ratio--cover {
  background-size: cover;
}

.grid__image-ratio--wide:before {
  padding-bottom: 56.25%;
}

.grid__image-ratio--landscape:before {
  padding-bottom: 75%;
}

.grid__image-ratio--square:before {
  padding-bottom: 100%;
}

.grid__image-ratio--portrait:before {
  padding-bottom: 150%;
}

/*================ Lazysizes object-fit ================*/

.image-fit {
  position: relative;
  width: 100%;
  height: 100%;
  object-fit: cover;
  font-family: "object-fit: cover";
  z-index: 1;
}

/*================ Parallax styles ================*/

.parallax-container {
  position: absolute;
  top: -30%;
  left: 0;
  height: 160%;
  width: 100%;
}

.parallax-image {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 100%;
  background-size: cover;
  background-position: 50% 50%;
  background-repeat: no-repeat;
}

@include media-query($medium-up) {
  .parallax-image {
    background-attachment: fixed;

   .js-ipad & {
      background-attachment: initial;
    }
  }
}

/*================ Partials | Forms ================*/

form {
  margin: 0;
}

.form-vertical {
  @include baseTextCenter;
  margin-bottom: $gutter / 2;

  label {
    text-align: left;
  }
}

.inline {
  display: inline;
}

/*================ Prevent zoom on touch devices in active inputs ================*/

@include media-query($medium-down) {
  input,
  textarea,
  select {
    font-size: 16px !important;
  }
}

button,
input,
textarea {
  -webkit-appearance: none;
  -moz-appearance: none;
}

button {
  background: none;
  border: none;
  display: inline-block;
  cursor: pointer;
}

fieldset {
  border: 1px solid $colorBorder;
  padding: $gutter / 2;
}

legend {
  border: 0;
  padding: 0;
}

button,
input[type="submit"] {
  cursor: pointer;
}

input,
textarea,
select {
  border: 1px solid $colorBorder;
  max-width: 100%;
  padding: $formElementPadding;
  border-radius: $input-radius;

  &[disabled],
  &.disabled {
    cursor: default;
    background-color: $disabledGrey;
    border-color: $disabledBorder;
  }

  &.input-full {
    width: 100%;
  }
}

textarea {
  min-height: 100px;
}

/*================ Input element overrides ================*/

input[type="checkbox"],
input[type="radio"] {
  margin: 0 10px 0 0;
  padding: 0;
  width: auto;
}

input[type="checkbox"] {
  -webkit-appearance: checkbox;
  -moz-appearance: checkbox;
}

input[type="radio"] {
  -webkit-appearance: radio;
  -moz-appearance: radio;
}

input[type="image"] {
  padding-left: 0;
  padding-right: 0;
}

select,
.faux-select {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  background-position: right center;
  background: {
    image: url(//getarchd.com/cdn/shop/t/7/assets/ico-select.svg);
    repeat: no-repeat;
    position: right 10px center;
    color: transparent;
    size: 11px;
  }
  padding-right: 28px;
  text-indent: 0.01px;
  text-overflow: '';
  cursor: pointer;
  color: inherit;

  .is-light & {
    background-image: url(//getarchd.com/cdn/shop/t/7/assets/ico-select-white.svg);
  }
}

optgroup {
  font-weight: bold;
}

// Force option color (affects IE and some Firefox versions)

option {
  color: #000;
  background-color: #fff;

  &[disabled] {
    color: #ccc;
  }
}

select::-ms-expand {
  display: none;
}

/*================ Form labels ================*/

.hidden-label {
  @include visuallyHidden();
}

label[for] {
  cursor: pointer;
}

/*================ Vertical Form ================*/

.form-vertical {
  input,
  select,
  textarea {
    display: block;
    margin-bottom: 30px;
  }

  input[type="checkbox"],
  input[type="radio"],
  .btn {
    display: inline-block;
  }
}

small {
  display: block;
}

/*================ Error styles ================*/

input,
textarea {
  &.error {
    border-color: $errorRed;
    background-color: $errorRedBg;
    color: $errorRed;
  }
}

label.error {
  color: $errorRed;
}

/*================ Selector wrapper ================*/

.selector-wrapper {
  label {
    margin-right: 10px;
  }

  + .selector-wrapper {
    margin-top: $gutter / 2;
  }
}

/*================ Input Group ================*/

.input-group {
  display: -ms-flexbox;
  display: flex;

  .input-group-field:first-child,
  .input-group-btn:first-child .btn,
  input[type="hidden"]:first-child + .input-group-field {
    border-radius: $input-radius 0 0 $input-radius;
  }

  .input-group-field:last-child {
    border-radius: 0 $input-radius $input-radius 0;
  }

  .input-group-btn:first-child .btn,
  input[type="hidden"]:first-child + .input-group-btn .btn {
    border-radius: $button-radius 0 0 $button-radius;
  }

  .input-group-btn:last-child .btn {
    border-radius: 0 $button-radius $button-radius 0;
  }

  input {
    // Nasty Firefox hack for inputs http://davidwalsh.name/firefox-buttons
    &::-moz-focus-inner {
      border: 0;
      padding: 0;
      margin-top: -1px;
      margin-bottom: -1px;
    }
  }
}

.input-group-field {
  -ms-flex: 1 1 auto;
      flex: 1 1 auto;
  margin: 0;
  min-width: 0;
}

.input-group-btn {
  -ms-flex: 0 1 auto;
      flex: 0 1 auto;
  margin: 0;
  display: -ms-flexbox;
  display: flex; // forces .btn full height

  .icon {
    vertical-align: initial;
  }

  @if ($buttonStyle == 'angled') {
    position: relative;
    left: -8px;
  }
}

/*================ #Icons ================*/

.icon {
  display: inline-block;
  width: 20px;
  height: 20px;
  vertical-align: middle;
  fill: currentColor;

  .no-svg & {
    display: none;
  }
}

.icon--full-color {
  fill: initial;
}

svg,
symbol {
  &.icon:not(.icon--full-color) {
    circle,
    ellipse,
    g,
    line,
    path,
    polygon,
    polyline,
    rect {
      fill: inherit;
      stroke: inherit;
    }
  }
}

/* Override the above for our stroke-only icons */

.icon-cart,
.icon-bag,
.icon-search,
.icon-close,
.icon-chevron-down,
.icon-email,
.icon-user,
.icon-hamburger,
.icon-filter {
  circle,
  ellipse,
  g,
  line,
  path,
  polygon,
  polyline,
  rect {
    fill: none !important;
    stroke-width: $icon_weight;
    stroke: currentColor !important;
    stroke-linecap: $icon_linecaps;
    stroke-linejoin: $icon_linecaps;
  }
}

.icon-cart circle {
  fill: currentColor !important;
}

.icon__fallback-text {
  @include visuallyHidden();
}

.js-drawer-open {
  overflow: hidden;
}

.drawer {
  display: none;
  position: fixed;
  overflow: hidden;
  -webkit-overflow-scrolling: touch;
  top: 0;
  bottom: 0;
  max-width: 95%;
  z-index: $zindexDrawer;
  color: $colorDrawerText;
  background-color: $colorDrawers;
  box-shadow: 0 0 150px rgba(0,0,0,0.1);
  transition: transform 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);

  // Allow whole drawer to be scrollable on short screens
  // typically when Android keyboard is open
  @media screen and (max-height: $fixedHeightLimit) {
    overflow: scroll;

    .drawer__contents {
      height: auto;
    }
  }

  a:not(.btn) {
    color: $colorDrawerText;

    &:hover {
      color: $colorDrawerText;
    }
  }

  input,
  textarea {
    border-color: $colorDrawerBorder;
  }

  .btn {
    background-color: $colorDrawerButton;
    color: $colorDrawerButtonText;
  }
}

.drawer--left {
  width: $drawerNavWidth;
  left: -$drawerNavWidth;

  &.drawer--is-open {
    display: block;
    transform: translateX($drawerNavWidth);
    transition-duration: 0.45s;
  }
}

.drawer--right {
  width: $drawerCartWidth;
  right: -$drawerCartWidth;

  @include media-query($medium-up) {
    width: $drawerCartWidthLarge;
    right: -$drawerCartWidthLarge;
  }

  &.drawer--is-open {
    display: block;
    transform: translateX(-$drawerCartWidth);
    transition-duration: 0.45s;

    @include media-query($medium-up) {
      transform: translateX(-$drawerCartWidthLarge);
    }
  }
}

.js-drawer-open .main-content:after,
.js-drawer-closing .main-content:after {
  content: '';
  display: block;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: $colorModalBg;
  opacity: 0;
  z-index: $zindexDrawerOverlay;
}

.js-drawer-open .main-content:after {
  animation: overlay-on 0.35s forwards;
}

.js-drawer-closing .main-content:after {
  animation: overlay-off 0.25s forwards;
}

// General drawer section padding

.drawer__header,
.drawer__fixed-header,
.drawer__scrollable,
.drawer__footer {
  padding-left: $drawerGutterSmall;
  padding-right: $drawerGutterSmall;

  @include media-query($medium-up) {
    padding-left: $drawerGutterLarge;
    padding-right: $drawerGutterLarge;
  }
}

/*================ Drawer header ================*/

.drawer__header {
  display: table;
  height: $drawerHeaderHeight;
  width: 100%;
  padding: ($gutter / 2.6) 0;
  margin-bottom: 0;
  border-bottom: 1px solid $colorDrawerBorder;

  @include media-query($medium-up) {
    height: $drawerHeaderHeightLarge;
  }
}

.drawer__header--full {
  @include media-query($medium-up) {
    padding-left: $drawerGutterLarge;
    padding-right: $drawerGutterLarge;
  }
}

.drawer__fixed-header {
  height: $drawerHeaderHeight;
  overflow: visible; // for close button hit area

  @include media-query($medium-up) {
    height: $drawerHeaderHeightLarge;
  }
}

.drawer__title,
.drawer__close {
  display: table-cell;
  vertical-align: middle;
}

.drawer__title {
  width: 100%;

  @include media-query($small) {
    padding-left: $drawerGutterSmall;
  }
}

.drawer__close {
  width: 1%;
  text-align: center;
}

// Button sits on right by default

.drawer__close-button {
  position: relative;
  height: 100%;
  padding: 0 $drawerGutterSmall;
  color: inherit;

  &:active {
    background-color: darken($colorDrawers, 5%);
  }

  .icon {
    height: 28px;
    width: 28px;
  }

  @include media-query($medium-up) {
    right: -$drawerGutterLarge;
  }
}

// Rare use case left close button

.drawer__close--left {
  text-align: left;

  .drawer__close-button {
    right: auto;
    left: -$drawerGutterLarge;
  }
}

/*================ Drawer header/inner/footer layout ================*/

.drawer__contents {
  height: 100%;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
}

.drawer__inner,
.drawer__scrollable {
  -ms-flex: 1 1 auto;
      flex: 1 1 auto;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
  overflow-y: hidden;
}

.drawer__scrollable {
  padding-top: $gutter / 2;
  overflow: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

/*================ Drawer footer ================*/

.drawer__footer {
  border-top: 1px solid $colorDrawerBorder;
  padding-top: $gutter / 2;
  padding-bottom: $drawerGutterSmall;

  @include media-query($medium-up) {
    padding-top: $gutter / 1.35;
    padding-bottom: $drawerGutterLarge;
  }
}

/*================ Cart-specific styles ================*/

.drawer__inner.is-loading {
  .drawer__scrollable {
    transition: opacity 0.3s ease 0.7s;
    opacity: 0.4;
  }
}

#CartSpecialInstructions {
  margin-top: 10px;
  margin-bottom: 10px;
  min-height: 60px;
  height: 60px;
  @include media-query($medium-up) {
    min-height: 80px;
    height: 80px;
  }
}

/*================ Partials | Ajax Cart ================*/

.ajaxcart__row {
  > .grid {
    margin-left: -$gutter / 2;

    > .grid__item {
      padding-left: $gutter / 2;
    }
  }
}

.ajaxcart__product {
  position: relative;
  max-height: 500px;

  &.is-removed {
    max-height: 0;
    overflow: hidden;
    visibility: hidden;
    -webkit-backface-visibility: hidden;
            backface-visibility: hidden;
    transition: all 450ms cubic-bezier(0.57,.06,.05,.95);
  }
}

.ajaxcart__row {
  padding-bottom: $gutter / 2;
  margin-bottom: $gutter / 2;
  border-bottom: 1px solid $colorDrawerBorder;

  @include media-query($medium-up) {
    padding-bottom: ($gutter / 1.35);
    margin-bottom: ($gutter / 1.35);
  }
}

.ajaxcart__product:last-child .ajaxcart__row {
  border-bottom: 0 none;
  padding-bottom: 0;
}

.ajaxcart__product-image {
  display: block;
  overflow: hidden;
  padding-top: 3px;

  img {
    display: block;
    margin: 0 auto;
    max-width: 100%;
  }
}

.ajaxcart__product-name,
.ajaxcart__product-meta {
  display: block;
}

.ajaxcart__product-name--wrapper {
  margin-bottom: 11px;
}

.ajaxcart__product-name + .ajaxcart__product-meta {
  padding-top: 8px;
}

.ajaxcart__discount {
  padding-top: 3px;
}

/*================ Partials | Blank States ================*/

$color-blankstate: #999;

$color-blankstate-background: #e1e1e1;

.placeholder-svg {
  fill: $color-blankstate;
  background-color: $color-blankstate-background;
  width: 100%;
  height: 100%;
  max-width: 100%;
  max-height: 100%;
  display: block;
  padding: 30px 0;
}

.placeholder-noblocks {
  padding: 40px;
  text-align: center;
}

/*================ Animations ================*/

// Utilities

.animation-cropper {
  overflow: hidden;
  display: -ms-inline-flexbox;
  display: inline-flex;
}

@for $i from 1 to 20 {
  .animation-delay-#{$i} {
    animation-delay: cart-animation-iteration($i, 0s) !important;
  }
}

// Page transitions

@if ($animate_page_transitions) {
  $page_transition_duration: 0.5;
  $page_transition_duration_out: 0.3;

  @if ($animate_page_transition_style == 'page-slow-fade') {
    $page_transition_duration: 1.2;
    $page_transition_duration_out: 0.5;
  }

  @if ($animate_page_transition_style == 'page-slide-reveal-across' or $animate_page_transition_style == 'page-slide-reveal-down') {
    .transition-body:before {
      content: '';
      position: fixed;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      background: $colorBody;
      z-index: 10;
      will-change: transform;
    }

    .loaded .transition-body:before {
      animation: $animate_page_transition_style #{$page_transition_duration}s ease forwards;
    }

    .unloading .transition-body:before {
      animation: #{$animate_page_transition_style}-out #{$page_transition_duration_out}s ease forwards;
    }
  } @else {
    .transition-body {
      opacity: 0;

      .no-js & {
        opacity: 1;
      }
    }

    .loaded .transition-body {
      animation: $animate_page_transition_style #{$page_transition_duration}s ease forwards;
    }

    .unloading .transition-body {
      animation: #{$animate_page_transition_style}-out #{$page_transition_duration_out}s ease forwards;
    }
  }

  @keyframes page-fade-in-up {
    0% {
      opacity: 0;
    }
    100% {
      opacity: 1;
    }
  }
  @keyframes page-fade-in-up-out {
    0% {
      opacity: 1;
    }
    100% {
      opacity: 0;
    }
  }

  @keyframes page-slow-fade {
    0% {
      opacity: 0;
    }
    100% {
      opacity: 1;
    }
  }
  @keyframes page-slow-fade-out {
    0% {
      opacity: 1;
    }
    100% {
      opacity: 0;
    }
  }

  @keyframes page-slide-reveal-across {
    0% {
      transform: translateX(0);
    }
    100% {
      transform: translateX(100vw);
    }
  }
  @keyframes page-slide-reveal-across-out {
    0% {
      transform: translateX(-100vw);
    }
    100% {
      transform: translateX(0);
    }
  }

  @keyframes page-slide-reveal-down {
    0% {
      transform: translateY(0);
    }
    100% {
      transform: translateY(110vh);
    }
  }
  @keyframes page-slide-reveal-down-out {
    0% {
      transform: translateY(110vh);
    }
    100% {
      transform: translateY(0);
    }
  }
}

// Global image animations

.image-wrap {
  background: $colorSmallImageBg;
  overflow: hidden;
}

.image-wrap img:not([role="presentation"]) {
  display: block;

  .no-js &.lazyload {
    display: none;
  }
}

@if ($animate_images) {
  .image-wrap {
    img:not([role="presentation"]),
    svg,
    .animate-me {
      opacity: 0;

      .no-js & {
        opacity: 1;
      }
    }
  }

  .aos-animate .image-wrap {
    .lazyloaded:not([role="presentation"]),
    svg,
    .animate-me {
      animation: $animate_images_style 1s cubic-bezier(0.26, 0.54, 0.32, 1) 0s forwards;
    }
  }

  .image-wrap img {
    [data-aos="row-of-3"].aos-animate:nth-child(3n+2) & {
      animation-delay: 150ms;
    }
    [data-aos="row-of-3"].aos-animate:nth-child(3n+3) & {
      animation-delay: 300ms;
    }

    [data-aos="row-of-4"].aos-animate:nth-child(4n+2) & {
      animation-delay: 120ms;
    }
    [data-aos="row-of-4"].aos-animate:nth-child(4n+3) & {
      animation-delay: 240ms;
    }
    [data-aos="row-of-4"].aos-animate:nth-child(4n+4) & {
      animation-delay: 360ms;
    }

    [data-aos="row-of-5"].aos-animate:nth-child(5n+2) & {
      animation-delay: 75ms;
    }
    [data-aos="row-of-5"].aos-animate:nth-child(5n+3) & {
      animation-delay: 150ms;
    }
    [data-aos="row-of-5"].aos-animate:nth-child(5n+4) & {
      animation-delay: 225ms;
    }
    [data-aos="row-of-5"].aos-animate:nth-child(5n+5) & {
      animation-delay: 300ms;
    }

    [data-aos="row-of-6"].aos-animate:nth-child(6n+2) & {
      animation-delay: 50ms;
    }
    [data-aos="row-of-6"].aos-animate:nth-child(6n+3) & {
      animation-delay: 100ms;
    }
    [data-aos="row-of-6"].aos-animate:nth-child(6n+4) & {
      animation-delay: 150ms;
    }
    [data-aos="row-of-6"].aos-animate:nth-child(6n+5) & {
      animation-delay: 200ms;
    }
    [data-aos="row-of-6"].aos-animate:nth-child(6n+6) & {
      animation-delay: 250ms;
    }
  }

  /* @cshold for the life of me I can't get these delays to target the right css */
  .collection-image {
    [data-aos="row-of-3"].aos-animate:nth-child(3n+2) & {
      animation-delay: 150ms;
    }
    [data-aos="row-of-3"].aos-animate:nth-child(3n+3) & {
      animation-delay: 300ms;
    }

    [data-aos="row-of-4"].aos-animate:nth-child(4n+2) & {
      animation-delay: 120ms;
    }
    [data-aos="row-of-4"].aos-animate:nth-child(4n+3) & {
      animation-delay: 240ms;
    }
    [data-aos="row-of-4"].aos-animate:nth-child(4n+4) & {
      animation-delay: 360ms;
    }

    [data-aos="row-of-5"].aos-animate:nth-child(5n+2) & {
      animation-delay: 75ms;
    }
    [data-aos="row-of-5"].aos-animate:nth-child(5n+3) & {
      animation-delay: 150ms;
    }
    [data-aos="row-of-5"].aos-animate:nth-child(5n+4) & {
      animation-delay: 225ms;
    }
    [data-aos="row-of-5"].aos-animate:nth-child(5n+5) & {
      animation-delay: 300ms;
    }

    [data-aos="row-of-6"].aos-animate:nth-child(6n+2) & {
      animation-delay: 50ms;
    }
    [data-aos="row-of-6"].aos-animate:nth-child(6n+3) & {
      animation-delay: 100ms;
    }
    [data-aos="row-of-6"].aos-animate:nth-child(6n+4) & {
      animation-delay: 150ms;
    }
    [data-aos="row-of-6"].aos-animate:nth-child(6n+5) & {
      animation-delay: 200ms;
    }
    [data-aos="row-of-6"].aos-animate:nth-child(6n+6) & {
      animation-delay: 250ms;
    }
  }
}

// Overlay animations (modals, panels)

@keyframes overlay-on {
  from { opacity: 0; }
  to { opacity: 0.6; }
}

@keyframes overlay-off {
  from { opacity: 0.6; }
  to { opacity: 0; }
}

@keyframes full-overlay-on {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes full-overlay-off {
  from { opacity: 1; }
  to { opacity: 0; }
}

@keyframes modal-open {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes modal-closing {
  from {
    opacity: 1;
    transform: scale(1);
  }
  to {
    opacity: 0;
    transform: scale(0.9);
  }
}

// Text animations

@keyframes rise-up {
  from {
    opacity: 1;
    transform: translateY(120%);
  }
  to {
    opacity: 1;
    transform: translateY(0%);
  }
}

@keyframes rise-up-out {
  from {
    opacity: 1;
    transform: translateY(0%);
  }
  to {
    opacity: 1;
    transform: translateY(-120%);
  }
}

@keyframes paint-across {
  from {
    opacity: 1;
    -webkit-clip-path: polygon(0% 0%, 0% 0%, 0% 100%, 0% 100%);
            clip-path: polygon(0% 0%, 0% 0%, 0% 100%, 0% 100%);
  }
  to {
    opacity: 1;
    -webkit-clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
            clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
  }
}

@keyframes paint-across-small {
  from {
    opacity: 1;
    -webkit-clip-path: polygon(0% 0%, 0% 0%, 0% 100%, 0% 100%);
            clip-path: polygon(0% 0%, 0% 0%, 0% 100%, 0% 100%);
  }
  to {
    opacity: 1;
    -webkit-clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
            clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
  }
}

@keyframes paint-across-out {
  from {
    opacity: 1;
    -webkit-clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
            clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
  }
  to {
    opacity: 1;
    -webkit-clip-path: polygon(100% 0%, 100% 0%, 100% 100%, 100% 100%);
            clip-path: polygon(100% 0%, 100% 0%, 100% 100%, 100% 100%);
  }
}

@keyframes fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes fade-in-small {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes fade-in-out {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

// Utility

@keyframes fade-out {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

// Background image animations

@keyframes zoom-fade {
  from {
    opacity: 0;
    transform: scale(1.3,1.3);
  }
  to {
    opacity: 1;
    transform: scale(1,1);
  }
}

@keyframes zoom-fade-password {
  0% {
    opacity: 0;
    transform: scale(1.4,1.4);
  }
  5% {
    opacity: 1;
    transform: scale(1,1);
  }
  100% {
    opacity: 1;
    transform: scale(1.2,1.2);
  }
}

@keyframes zoom-fade-small {
  0% {
    opacity: 0;
    transform: scale(1.1,1.1);
  }
  10% {
    opacity: 1;
    transform: scale(1,1);
  }
  12% {
    opacity: 1;
    transform: scale(1,1);
  }
  100% {
    opacity: 1;
    transform: scale(1.03,1.03);
  }
}

@keyframes kenburns {
  0% {
    opacity: 0;
    transform: scale(1.8);
    animation-timing-function: cubic-bezier(0.12, 0.63, 0.6, 0.74);
  }
  10% {
    opacity: 1;
    transform: scale(1.6);
    animation-timing-function: linear;
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes kenburns-out {
  0% {
    opacity: 1;
    transform: scale(1);
    animation-timing-function: ease-out;
  }
  100% {
    opacity: 0;
    transform: scale(1.2);
  }
}

// Loading animations

@keyframes loading {
  0% {    width: 0px;   }
  60% {   width: 100px; margin-left: -50px; }
  100% {  margin-left: 50px;  width: 0px; }
}

.loading:after,
.loading:before {
  content: '';
  position: absolute;
  width: 100px;
  height: 5px;
  background: color-control($colorLargeImageBg, 1);
  left: 50%;
  top: 50%;
  margin: -3px 0 0 -50px;
  z-index: $z-index-loader;
  opacity: 0;

  .no-js & {
    display: none;
  }
}

.loading:before {
  background: color-control($colorLargeImageBg, 0.15);
  animation: fade-in 0.5s forwards 0s;
}

.loading:after {
  animation: preloading 0.5s ease 0.3s infinite;
}

.loading--delayed:before {
  animation-delay: 0.8s !important;
  animation-duration: 1s !important;
}

.loading--delayed:after {
  animation-delay: 1.3s !important;
}

@keyframes preloading {
  0% {   width: 0px; opacity: 0; }
  60% {  width: 100px; margin-left: -50px; opacity: 1; }
  100% {  margin-left: 50px;  width: 0px; opacity: 1; }
}

@keyframes slideshowBars {
  from { width: 0%; }
  to { width: 100%; }
}

// Ajax load products

@keyframes grid-product__loading {
  0% { opacity: 0; }
  60% { opacity: 0.2; }
  100% { opacity: 0; }
}

// Button animations

@keyframes shine {
  100% {
    left: -200%;
  }
}

// Delay animations, used in drawers

.appear-animation {
  opacity: 0;
  transform: translateY(60px);
}

@for $i from 1 to 20 {
  .appear-delay-#{$i} {
    transition: transform 0.85s cubic-bezier(0.165, 0.84, 0.44, 1) cart-animation-iteration($i, 0.075s),
                opacity 0.85s cubic-bezier(0.165, 0.84, 0.44, 1) cart-animation-iteration($i, 0.15s);
  }
}

.js-drawer-open .appear-animation {
  opacity: 1;
  transform: translateY(0px);
}

.js-drawer-closing .appear-animation {
  transition-duration: 0s;
  transition-delay: 0.5s;
}

// General review styles

.spr-badge-starrating,
.spr-starrating,
.spr-starratings,
.spr-icon-star-empty,
.spr-icon-star-hover,
.spr-icon-star-hover:hover {
  color: #f3c200;
}

// Star size on product page

.product-single__meta .spr-icon {
  font-size: 14px !important;
  vertical-align: text-bottom;
}

// Match H3 styles

.spr-header-title {
  @include headingFontStack;
  font-size: em($type_header_base_size * 0.7) !important;
  margin-bottom: 20px !important;
}

.spr-container.spr-container {
  padding: 0;
  border: 0;
  text-align: center;
}

.product-reviews {
  #shopify-product-reviews {
    margin: 0;
  }

  .spr-summary-actions-newreview {
    float: none;
  }

  .spr-review-content-body,
  .spr-form-label {
    font-size: $type_base_size - 2;
    line-height: 1.563;
  }

  .spr-review-header-byline {
    font-size: 11px;
    opacity: 1;

    strong {
      font-weight: normal;
    }
  }

  .spr-review {
    border: none !important;
  }

  .spr-form-label {
    display: block;
    text-align: left;
    margin-top: 20px;
  }

  .spr-summary-caption,
  .spr-summary-actions {
    display: block;
  }

  .spr-summary-actions {
    margin-top: 20px;
  }
}

// Review styles in full width section

.product-reviews--full {
  @include media-query($medium-up) {
    &.index-section {
      margin-top: 0;
    }
    .spr-form-title {
      display: none;
    }
    .spr-form {
      max-width: 650px;
      margin: 0 auto;
      border-top: none;
    }
    .spr-reviews {
      margin-top: 45px;
      display: -ms-flexbox;
      display: flex;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;

      @if ($type_header_text_center) {
        -ms-flex-pack: center;
            justify-content: center;
      }
    }

    .spr-review:first-child {
      margin-top: 0;
    }

    .spr-review {
      -ms-flex: 1 1 40%;
          flex: 1 1 40%;
      padding: 20px;
      margin-left: $grid-gutter;
      margin-bottom: $grid-gutter;

      @if ($type_header_text_center) {
        max-width: 30%;
      }

      &:nth-child(3n+1) {
        margin-left: 0;
      }

      &:last-child {
        padding-bottom: 20px;
      }
    }
  }
}

// Review styles in product grid

.grid-product {
  .spr-badge[data-rating="0.0"] {
    display: none;
  }

  .spr-badge-starrating {
    font-size: 0.65em;
  }

  .spr-icon {
    margin-right: 1px;
  }

  .spr-badge-caption {
    font-size: em(11px);
    vertical-align: bottom;
    @include media-query($medium-up) {
      font-size: em(12px);
    }
    margin-left: 4px;
  }
}

// Review styles in expandable tab

.product-reviews--tab {
  .collapsible-trigger {
    .spr-badge-caption {
      margin-left: 0;
    }

    .spr-badge-starrating {
      font-size: em(13px);
      margin-right: 10px;
      @include media-query($medium-up) {
        font-size: em(14px);
      }
    }

    .spr-badge[data-rating="0.0"] {
      .spr-starrating {
        display: none;
      }
    }
  }

  .spr-icon {
    margin-right: 1px;
  }

  .spr-badge-caption {
    margin-left: 4px;
  }

  .spr-header-title,
  .spr-summary-starrating,
  .spr-summary-caption {
    display: none !important;
  }

  .spr-summary-actions a,
  .spr-button {
    margin-top: 0 !important;
  }

  .spr-button-primary {
    float: none;
  }

  @media only screen and (max-width: 480px) {
    .spr-summary {
      text-align: left;
    }
  }

  // Form
  .spr-form-title {
    display: none;
  }

  .spr-form-label {
    font-size: 13px !important;
  }

  // Review
  .spr-review-header .spr-starratings {
    font-size: 14px;
  }
}

.spr-content .spr-review-header-title {
  @include baseFontStack;
  font-weight: bold;
  text-transform: none;
}

.spr-pagination {
  -ms-flex: 1 1 100%;
      flex: 1 1 100%;
}

.spr-review-reportreview {
  opacity: 0.4;
  float: none !important;
  display: block;
}

.spr-summary-starrating {
  font-size: 0.8em;
}

/*================ Module-specific styles ================*/

/*================ Module | Footer promotions ================*/

.footer-promotions {
  @include baseTextCenter;

  @include media-query($small) {
    .grid__item {
      margin-bottom: 32px;

      &:last-child {
        margin-bottom: 0;
      }
    }
  }
}

/*================ Module | Footer ================*/

.site-footer {
  padding-bottom: $gutter;
  background-color: $colorFooter;
  color: $colorFooterText;

  @include media-query($medium-up) {
    padding-top: $gutter * 2;
    padding-bottom: $gutter * 2;
  }

  @if ($colorFooter == $colorBody) {
    border-top: 1px solid $colorBorder;
  }

  .footer__collapsible {
    @include baseSmallFontStack;
  }

  @include media-query($medium-up) {
    textarea,
    select,
    input {
      @include baseSmallFontStack;
    }
  }

  @include media-query($small) {
    @include baseTextCenter;
    overflow: hidden;
    padding-bottom: 0;

    .grid__item {
      padding-bottom: 5px;

      &:after {
        content: '';
        border-bottom: 1px solid $colorFooterText;
        opacity: 0.12;
        display: block;
      }

      &:first-child {
        padding-top: $gutter / 4;
      }

      &:last-child:after {
        display: none;
      }
    }
  }

  a {
    color: $colorFooterText;
  }
}

.footer__small-text {
  @include baseExtraSmallFontStack;
  padding: ($gutter / 4) 0;
  margin: 0;
  text-align: center;

  ul + & {
    padding-top: $gutter / 2;
  }
}

.footer__clear {
  clear: both;
  height: $gutter;
}

.footer__section {
  margin-bottom: $gutter / 2;

  @include media-query($medium-up) {
    margin-top: $gutter;
    margin-bottom: 0;
  }
}

@include media-query($medium-up) {
  .footer__item-padding {
    padding-right: $gutter * 2;
  }
}

.footer__title {
  color: $colorFooterText;

  @include media-query($medium-up) {
    margin-bottom: 20px;
  }

  @include media-query($small) {
    @include baseTextCenter;
  }
}

/*================ Footer menus ================*/

.site-footer__linklist {
  margin: 0;

  a {
    display: inline-block;
    padding: 4px 0;
  }
}

/*================ Footer newsletter ================*/

.footer__newsletter {
  position: relative;
  display: inline-block;
  max-width: 300px;
  width: 100%;
}

.footer__newsletter-input {
  padding: 10px 45px 10px 0;
  background-color: $colorFooter;
  color: $colorFooterText;
  max-width: 300px;
  width: 100%;
  border: 0;
  border-radius: 0;
  border-bottom: 2px solid $colorFooterText;

  &:focus {
    border: 0;
    border-bottom: 2px solid $colorFooterText;
  }

  &::-webkit-input-placeholder {
    color: $colorFooterText;
    opacity: 1;
  }

  &:-moz-placeholder {
    color: $colorFooterText;
    opacity: 1;
  }

  &::-moz-placeholder {
    color: $colorFooterText;
    opacity: 1;
  }

  &:-ms-input-placeholder {
    color: $colorFooterText;
    opacity: 1;
  }

  &::-ms-input-placeholder {
    color: $colorFooterText;
    opacity: 1;
  }
}

.footer__newsletter-input--active {
  padding-right: 80px;
}

.footer__newsletter-btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  right: 0;
  color: $colorFooterText;
  padding: 0;

  .icon {
    width: 26px;
    height: 24px;
  }

  .footer__newsletter-input--active + & {
    .icon {
      display: none;
    }

    .footer__newsletter-btn-label {
      display: block;
    }
  }
}

.footer__newsletter-btn-label {
  display: none;
  @include baseSmallFontStack;
}

// Logo

.footer__logo {
  margin: ($gutter / 2) 0;

  @include media-query($medium-up) {
    margin: 0 0 ($gutter / 1.5);
  }

  a {
    display: block;
  }

  img {
    display: inline-block;
    transform: translateZ(0);
    max-height: 100%;
  }
}

// Social icons

.footer__social {
  margin: 0;

  form + & {
    margin-top: $gutter;
  }

  li {
    display: inline-block;
    margin: 0 15px 15px 0;
  }

  a {
    display: block;
  }

  .icon {
    width: 22px;
    height: 22px;

    @include media-query($medium-up) {
      width: 24px;
      height: 24px;
    }

    &.icon--wide {
      width: 40px;
    }
  }
}

// Collapsible buttons

.footer__collapsible {
  @include media-query($small) {
    padding: 0 0 ($gutter / 2) 0;
  }
}

.footer_collapsible--disabled {
  @include media-query($small) {
    padding-top: $gutter / 2;
  }
}

@if ($animate_underlines) {
  .collapsible-content__inner p {
    a:after {
      content: '';
      position: absolute;
      bottom: -2px;
      left: 0;
      width: 0%;
      border-bottom: 2px solid rgba($colorFooterText,1);
      transition: width 0.5s ease;
    }
    a {
      position: relative;
      text-decoration: none;
      border-bottom: 2px solid rgba($colorFooterText,0.1);
      &:hover:after,
      &:focus:after {
        width: 100%;
      }
    }
  }
}

// Select element

.site-footer {
  select,
  .faux-select {
    background-image: url(//getarchd.com/cdn/shop/t/7/assets/ico-select-footer.svg);
  }
}

/*================ Payment Icons ================*/

.payment-icons {
  @include baseTextCenter;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  cursor: default;

  li {
    cursor: default;
    margin: 0 4px 0;
  }

  .icon {
    width: 40px;
    height: 40px;
  }

  .icon__fallback-text {
    text-transform: capitalize;
  }
}

/*================ Module | Notes and Form Feedback ================*/

.note,
.errors {
  border-radius: $input-radius;
  padding: 6px 12px;
  margin-bottom: $gutter / 2;
  border: 1px solid transparent;
  text-align: left;

  ul,
  ol {
    margin-top: 0;
    margin-bottom: 0;
  }

  li:last-child {
    margin-bottom: 0;
  }

  p {
    margin-bottom: 0;
  }
}

.note {
  border-color: $colorBorder;
}

.errors {
  ul {
    list-style: disc outside;
    margin-left: 20px;
  }
}

.note--success {
  color: $successGreen;
  background-color: $successGreenBg;
  border-color: $successGreen;

  a {
    color: $successGreen;
    text-decoration: underline;

    &:hover {
      text-decoration: none;
    }
  }
}

.form-error,
.errors {
  color: $errorRed;
  background-color: $errorRedBg;
  border-color: $errorRed;

  a {
    color: $errorRed;
    text-decoration: underline;

    &:hover {
      text-decoration: none;
    }
  }
}

/*================ Module | Pagination ================*/

.pagination {
  margin: 0;
  padding: ($gutter * 2) 0;
  text-align: center;

  > span {
    display: inline-block;
    vertical-align: middle;
    line-height: 1;
  }

  a {
    display: inline-block;
  }

  a,
  .page.current {
    padding: 8px 12px;
  }

  .page.current {
    opacity: 0.3;
  }

  .next,
  .prev {
    color: $colorBtnPrimaryText;
    background: $colorBtnPrimary;
    width: 43px;
    margin: 0 10px;

    @include media-query($small) {
      width: 35px;
    }

    a {
      display: -ms-flexbox;
      display: flex;
      -ms-flex-align: center;
          align-items: center;
      -ms-flex-pack: center;
          justify-content: center;
      padding: 15px;
    }

    .icon {
      color: $colorBtnPrimaryText;
      width: 13px;
      height: 14px;

      @include media-query($small) {
        width: 12px;
        height: 12px;
      }
    }
  }
}

/*================ Module | Rich Text Editor ================*/

.rte {
  @include clearfix;
  margin-bottom: $gutter / 4;

  @include media-query($medium-up) {
    margin-bottom: $gutter / 2;
  }

  &:last-child {
    margin-bottom: 0;
  }

  & + & {
    margin-top: $gutter;
  }

  p,
  ul,
  ol,
  table {
    margin-bottom: 15px;

    @include media-query($medium-up) {
      margin-bottom: 25px;
    }

    &:last-child {
      margin-bottom: 0;
    }
  }

  ul {
    ul {
      margin-bottom: 0;
    }
  }

  // Add some top margin to headers from the rich text editor
  h1, h2, h3, h4, h5, h6 {
    margin-top: 60px;
    margin-bottom: 25px;
  }

  h1, h2, h3, h4, h5, h6 {
    &:first-child {
      margin-top: 0;
    }

    a {
      text-decoration: none;
    }
  }

  // In case merchants paste meta tags into their content by accident
  meta:first-child {
    & + h1, & + h2, & + h3, & + h4, & + h5, & + h6 {
      margin-top: 0;
    }
  }

  > div {
    margin-bottom: $gutter / 2;
  }

  li {
    margin-bottom: 0;
  }

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

  table {
    table-layout: fixed;
  }
}

.rte--block {
  margin-bottom: 8px;
  @include media-query($medium-up) {
    margin-bottom: 12px;
  }
}

.rte-setting {
  > p:last-child {
    margin-bottom: 0;
  }
}

.rte,
.rte-setting {
  a {
    text-decoration: none;
  }

  img {
    height: auto;
  }

  a:not(.rte__image) {
    text-decoration: none;
    border-bottom: 1px solid rgba($colorTextBody, 0.15);
    position: relative;

    @if ($animate_underlines) {
      display: inline-block; // so underline hover effect works
    }
  }

  @if ($animate_underlines) {
    a:not(.btn):after {
      content: '';
      position: absolute;
      bottom: -2px;
      left: 0;
      width: 0%;
      border-bottom: 2px solid currentColor;
      transition: width 0.5s ease;
    }

    a:not(.btn) {
      &:hover:after,
      &:focus:after {
        width: 100%;
      }
    }

    a.rte__image:after {
      content: none;
    }
  }
}

.text-center .rte,
.text-center.rte {
  ul,
  ol {
    list-style-position: inside;
    margin-left: 0;
  }
}

.rte--nomargin {
  margin-bottom: 0;
}

// Header layout

.header-layout {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: justify;
      justify-content: space-between;
}

.header-layout--center {
  -ms-flex-align: center;
      align-items: center;
}

// Header items

.header-item {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  -ms-flex: 1 1 auto;
      flex: 1 1 auto;
}

.header-item--logo {
  -ms-flex: 0 0 auto;
      flex: 0 0 auto;
}

.header-item--icons {
  -ms-flex-pack: end;
      justify-content: flex-end;
  -ms-flex: 0 1 auto;
      flex: 0 1 auto;
}

/*================ Header layout specific styles ================*/

// Same default logo and icon container size, logo block width overrides

.header-layout--left-center {
  .header-item--logo,
  .header-item--icons {
    -ms-flex: 0 0 200px;
        flex: 0 0 200px;
    max-width: 50%;

    @include media-query($medium-up) {
      min-width: 130px; // approx width of 2 icons
    }
  }
}

.header-layout[data-logo-align="center"] {
  .header-item--logo {
    @include media-query($medium-up) {
      margin: 0 30px;
    }
  }

  .header-item--navigation,
  .header-item--icons {
    -ms-flex: 1 1 130px;
        flex: 1 1 130px; // aprox width of 2 icons
  }
}

.header-layout[data-logo-align="left"] {
  .site-header__logo {
    margin-right: $gutter / 3;
  }
}

.header-item--logo-split {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: center;
      justify-content: center;
  -ms-flex-align: center;
      align-items: center;
  -ms-flex: 1 1 100%;
      flex: 1 1 100%;

  .header-item:not(.header-item--logo) {
    text-align: center;
    -ms-flex: 1 1 20%;
        flex: 1 1 20%;
  }
}

.header-item--split-left {
  -ms-flex-pack: end;
      justify-content: flex-end;
}

// Icon alignment

.header-item--left {
  .site-nav {
    margin-left: -($siteNavIconPadding);

    @include media-query($small) {
      margin-left: -($siteNavItemPadding / 2);
    }
  }
}

.header-item--icons {
  .site-nav {
    margin-right: -($siteNavIconPadding);

    @include media-query($small) {
      margin-right: -($siteNavItemPadding / 2);
    }
  }
}

.site-header {
  position: relative;
  padding: 7px 0;
  background: $colorNav;

  @include media-query($medium-up) {
    padding: 20px 0;

    .toolbar + .header-sticky-wrapper & {
      border-top: 1px solid rgba($colorNavText, 0.1);
    }
  }
}

.site-header--stuck {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  transform: translate3d(0, -100%, 0);
  transition: none;
  z-index: $z-index-stuck-header;

  // Rearrangement for when top search drawer is open so nav is above overlay
  .js-drawer-open--search & {
    z-index: $z-index-header-search;
  }

  @include media-query($medium-up) {
    padding: 10px 0;
  }
}

// Disable sticky header on short and wide screens

@media screen and (min-width: 700px) and (max-height: 550px) {
  .site-header--stuck {
    position: static;
  }
}

.site-header--opening {
  transform: translate3d(0, 0, 0);
  transition: transform 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);
}

.site-header__logo {
  position: relative;
  margin: ($gutter / 3) 0;
  display: block;
  font-size: 30px; // when no image
  z-index: $zindexNavDropdowns + 1;

  @include media-query($medium-up) {
    .text-center & {
      padding-right: 0;
      margin: ($gutter / 3) auto;
    }
  }

  .header-layout[data-logo-align="center"] & {
    margin-left: auto;
    margin-right: auto;
    text-align: center;
  }

  a {
    max-width: 100%;
  }

  a,
  a:hover {
    text-decoration: none;
  }

  img {
    display: block;

    .header-layout[data-logo-align="center"] & {
      margin-left: auto;
      margin-right: auto;
    }
  }
}

.site-header__logo-link {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  color: $colorNavText;

  &:hover {
    color: $colorNavText;
  }

  @include media-query($small) {
    margin: 0 auto;
  }
}

// Sticky header on top of image/slideshow

.header-sticky-wrapper {
  position: relative;
}

.header-wrapper--sticky {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: $z-index-sticky-header;
  background: none;
  background: linear-gradient(to bottom, rgba(0,0,0,0.3) 0%,rgba(0,0,0,0) 100%);

  .site-header:not(.site-header--stuck) {
    background: none;
  }

  // Rearrangement for when top search drawer is open so nav is above overlay
  .js-drawer-open--search & {
    z-index: $z-index-header-search;
  }
}

.site-header__search-container {
  display: none;
  position: absolute;
  left: 0;
  right: 0;
  bottom: 200%;
  height: 100%;
  z-index: $z-index-header-search;
  overflow: hidden;

  &.is-active {
    display: block;
    overflow: visible;
    bottom: 0;
  }
}

.site-header__search {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  z-index: $z-index-header-search;
  display: -ms-flexbox;
  display: flex;
  transform: translate3d(0, -110%, 0);
  background-color: $colorBody;
  color: $colorTextBody;

  .page-width {
    -ms-flex: 1 1 100%;
        flex: 1 1 100%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: stretch;
        align-items: stretch;

    @include media-query($small) {
      padding: 0;
    }
  }

  .is-active & {
    transform: translate3d(0, 0, 0);
  }

  .icon {
    width: 30px;
    height: 30px;
  }
}

.site-header__search-form {
  -ms-flex: 1 1 auto;
      flex: 1 1 auto;
  display: -ms-flexbox;
  display: flex;

  @include media-query($medium-up) {
    padding: ($gutter / 2) 0;
  }
}

.site-header__search-input {
  border: 0;
  width: 100px; // flexbox overrides, but fixes browser issues
  -ms-flex: 1 1 auto;
      flex: 1 1 auto;

  &:focus {
    border: 0;
    outline: 0; // only active element on the page, so this is acceptable
  }
}

// Submit and cancel buttons

.site-header__search-btn {
  padding: 0 ($gutter / 2);
}

@include media-query($medium-up) {
  .site-header__search-btn--submit {
    padding: 0 ($gutter / 2) 0 0;

    .icon {
      position: relative;
      top: -1px;
      width: 28px;
      height: 28px;
    }
  }
}

.predictive-results {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  background-color: $colorBody;
  color: $colorTextBody;
  max-height: 70vh;
  max-height: calc(90vh - 100%);
  overflow: auto;
  box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.09);

  @include media-query($medium-up) {
    max-height: calc(100vh - 100% - 33px); // search bar + toolbar
  }
}

.predictive__label {
  border-bottom: 1px solid $colorBorder;
  padding-bottom: 5px;
  margin-bottom: 20px;
}

// Layout for article/images

$predictiveGap: 10px;

.predictive-result__layout {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  padding: $predictiveGap;
  margin-left: -$predictiveGap;
  margin-right: -$predictiveGap;

  > div {
    margin: 0 $predictiveGap $gutter;

    &:last-child {
      margin-bottom: 0;
    }
  }

  [data-type-products] {
    -ms-flex: 1 1 60%;
        flex: 1 1 60%;
    margin-bottom: 0;
  }

  [data-type-pages] {
    -ms-flex: 1 1 200px;
        flex: 1 1 200px;
  }

  [data-type-articles] {
    -ms-flex: 1 1 60%;
        flex: 1 1 60%;
  }
}

.predictive__image-wrap {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;

  img {
    opacity: 0;

    &.lazyloaded {
      opacity: 1;
    }
  }
}

.predictive-results__footer {
  padding: 0 0 30px;
}

/*================ Module | Search Bar ================*/

.search-bar {
  max-width: 100%;
}

.search-bar--page {
  max-width: 300px;
  margin-top: -$gutter / 2;

  @if ($type_header_text_center) {
    margin: (-$gutter / 2) auto 0;
  }
}

.search-bar--drawer {
  margin-bottom: $gutter / 2;
  padding-bottom: $gutter / 2;
  border-bottom: 1px solid $colorDrawerBorder;

  input {
    border: 0;
  }
}

.search-bar .icon {
  width: 24px;
  height: 24px;
  vertical-align: middle;
}

.toolbar {
  background: $colorNav;
  color: $colorNavText;
  @include baseSmallFontStack;

  a {
    color: $colorNavText;
  }

  // Do not show in sticky header
  .site-header--stuck & {
    display: none;
  }
}

.toolbar--transparent {
  background-color: transparent;
  color: $colorStickyNavLinks;
  border-bottom: none;

  a {
    color: $colorStickyNavLinks;
  }

  .toolbar__content {
    border-bottom: 1px solid rgba(255,255,255,0.2);
  }
}

.toolbar__content {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: end;
      justify-content: flex-end;
  -ms-flex-align: center;
      align-items: center;
}

.toolbar__item {
  -ms-flex: 0 1 auto;
      flex: 0 1 auto;
  padding: 0 5px;

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

  &:last-child {
    padding-right: 0;
  }

  select,
  .faux-select {
    font-size: 14px;
    padding-top: 5px;
    padding-bottom: 5px;
  }
}

.toolbar__item--menu {
  -ms-flex: 1 1 auto;
      flex: 1 1 auto;
}

// Menu

.toolbar__menu {
  margin-left: -($gutter / 3); // equivalent of a padding

  a {
    display: block;
    padding: 5px ($gutter / 3);
  }
}

// Social icons

.toolbar__social {
  text-align: right;

  a {
    display: block;
    padding: 5px;
  }

  .icon {
    position: relative;
    top: -2px;
    width: 16px;
    height: 16px;
  }
}

/*================ Module | Section Headers ================*/

.section-header {
  margin-bottom: $sectionHeaderBottomSmall;

  @include media-query($medium-up) {
    margin-bottom: $sectionHeaderBottom;
  }

  @if ($type_header_text_center) {
    text-align: center;
  }

  select {
    display: inline-block;
    vertical-align: middle;
  }
}

.section-header--flush {
  margin-bottom: 0;
}

.section-header--with-link {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;

  select {
    -ms-flex: 0 1 auto;
        flex: 0 1 auto;
  }
}

.section-header--hero {
  position: relative;
  -ms-flex: 1 1 100%;
      flex: 1 1 100%;
  color: $colorHeroText;
  margin-bottom: 0;

  a {
    color: $colorHeroText;
  }
}

.section-header__shadow {
  position: relative;
  display: inline-block;

  &:before {
    @include heroRadial;
    z-index: -1;
  }

  .breadcrumb,
  .section-header__title {
    position: relative;
  }
}

.section-header__title {
  margin-bottom: 0;

  .section-header--with-link & {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
  }

  @include media-query($medium-up) {
    .section-header--hero & {
      font-size: em($type_header_base_size * 1.45);
    }
  }
}

.section-header__link {
  -ms-flex: 0 1 auto;
      flex: 0 1 auto;
  margin-top: $gutter / 2;

  .section-header--with-link & {
    margin-top: 0;
  }
}

.section-header--404 {
  margin-bottom: 0;
  padding: 80px 0;
}

.section-header select {
  margin: 10px 0;
}

.section-header p {
  margin: 10px 0;
}

.site-nav {
  margin: 0;
}

.site-navigation {
  .text-center & {
    margin: 0 auto;
  }

  .header-layout--left & {
    padding-left: $gutter / 3;
  }
}

.site-nav__icons {
  white-space: nowrap;
}

.site-nav__item {
  position: relative;
  display: inline-block;
  margin: 0;

  li {
    display: block;
  }

  .icon-chevron-down {
    width: $desktopMenuChevronSize;
    height: $desktopMenuChevronSize;
  }
}

.site-nav__link {
  display: inline-block;
  vertical-align: middle;
  text-decoration: none;
  padding: ($siteNavItemPadding / 2) $siteNavItemPadding;
  white-space: nowrap;
  color: $colorNavText;

  .site-header--heading-style & {
    @include headingFontStack;
  }

  &:hover {
    color: $colorNavText;
  }

  .is-light & {
    color: $colorStickyNavLinks;

    &:hover {
      color: $colorStickyNavLinks;
    }
  }

  .site-nav--has-dropdown > & {
    position: relative;
    z-index: $zindexNavDropdowns + 1;
  }

  .icon-chevron-down {
    margin-left: 5px;
  }

  @include media-query($medium-down) {
    padding: $siteNavItemPadding / 2;

    .header-layout--center & {
      padding-left: 2px;
      padding-right: 2px;
    }
  }
}

.site-nav__link--underline {
  position: relative;

  &:after {
    content: '';
    display: block;
    position: absolute;
    bottom: 0;
    left: 0;
    right: 100%;
    margin: 0 $siteNavItemPadding;
    border-bottom: 2px solid $colorNavText;
    transition: right 0.5s;
  }

  // White underline when no dropdown
  .is-light .site-nav__item:not(.site-nav--has-dropdown) &:after {
    border-bottom-color: #fff;
  }

  // Dropdown text color underline when in dropdown link
  .site-nav--has-dropdown &:after {
    border-bottom-color: $colorTextBody;
  }

  .site-nav__item:hover &:after {
    right: 0;
  }
}

// Keep active state on parent dropdown link

.site-nav--has-dropdown {
  z-index: $zindexNavDropdowns + 1;

  &.is-focused,
  &:hover {
    z-index: $zindexNavDropdowns + 2;
  }
}

.site-nav--has-dropdown.is-focused > a,
.site-nav--has-dropdown:hover > a {
  color: $colorTextBody !important;
  background-color: $colorBody;
  opacity: 1;
  transition: none;
}

.site-nav__link--icon {
  padding-left: $siteNavIconPadding;
  padding-right: $siteNavIconPadding;

  @include media-query($small) {
    padding-left: $siteNavItemPadding / 2;
    padding-right: $siteNavItemPadding / 2;

    & + & {
      margin-left: -4px; // ~amount of inline-block space
    }
  }

  .icon {
    width: $desktopMenuIconSize;
    height: $desktopMenuIconSize;
  }
}

/*================ Dropdowns ================*/

.site-nav__dropdown {
  position: absolute;
  left: 0;
  margin: 0;
  z-index: $zindexNavDropdowns;
  display: block;
  visibility: hidden;
  background-color: $colorBody;
  min-width: 100%;
  padding: ($gutter / 3) 0 5px;
  box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.09);
  transform: translate3d(0px, -12px, 0px);

  .site-nav--has-dropdown:hover &,
  .is-focused > & {
    display: block;
    visibility: visible;
    transform: translate3d(0px, 0px, 0px);
    transition: all 300ms cubic-bezier(0.2, 0.06, 0.05, 0.95);
  }

  li {
    margin: 0;
  }

  > li {
    position: relative;

    > a {
      position: relative;
      z-index: $zindexNavDropdowns + 1;
    }
  }

  a {
    background-color: $colorBody;
    // padding-right: 30px;
  }
}

/*================ Third level dropdown ================*/

.site-nav__deep-dropdown {
  background-color: $colorBody;
  box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.09);
  position: absolute;
  top: 0;
  left: 100%;
  margin: 0;
  visibility: hidden;
  opacity: 0;
  z-index: $zindexNavDropdowns;
  transform: translate3d(-12px, 0px, 0px);

  // Last menu item is anchored to right if
  //   - center aligned menu
  .header-item--reverse .site-nav__item:last-child & {
    left: auto;
    right: 100%;
  }

  .site-nav__deep-dropdown-trigger:hover &,
  .is-focused + & {
    visibility: visible;
    opacity: 1;
    transform: translate3d(0px, 0px, 0px);
    transition: all 300ms cubic-bezier(0.2, 0.06, 0.05, 0.95);
  }

  &:before {
    content: '';
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    width: 10px;
    background-image: linear-gradient(to right, rgba(0,0,0,0.09), transparent);
    pointer-events: none;

    .header-item--reverse .site-nav__item:last-child & {
      left: auto;
      right: 0;
      background-image: linear-gradient(to left, rgba(0,0,0,0.09), transparent);
    }
  }
}

.site-nav__dropdown-link--has-children {
  .site-nav__deep-dropdown-trigger:hover &,
  &:hover,
  &:focus {
    background-color: darken($colorBody, 5%);
  }
}

// Rotate to face right

.site-nav__deep-dropdown-trigger .icon-chevron-down {
  position: absolute;
  top: 50%;
  right: 10px;
  width: $desktopMenuChevronSize;
  height: $desktopMenuChevronSize;
  transform: rotate(-90deg) translateX(50%);
}

/*================ Mobile navigation ================*/

.mobile-nav {
  margin: (-$drawerGutterSmall) (-$drawerGutterSmall) 0 (-$drawerGutterSmall);

  @include media-query($medium-up) {
    margin-left: -$drawerGutterLarge;
    margin-right: -$drawerGutterLarge;
  }

  li {
    margin-bottom: 0;
    list-style: none;
  }
}

.mobile-nav__search {
  padding: $gutter / 2;
}

.mobile-nav__item {
  position: relative;
  display: block;

  // Background color on top level items so there is no
  // element overlap on subnav's CSS toggle animation
  .mobile-nav > & {
    background-color: $colorDrawers;
  }

  &:after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    border-bottom: 1px solid $colorDrawerBorder;
  }
}

// Login/logout links can't have a class on them, so style <a> element

.mobile-nav__link,
.mobile-nav__faux-link {
  display: block;
}

.mobile-nav__link--top-level {
  font-size: 1.4em;

  .mobile-nav--heading-style & {
    @include headingFontStack;
  }
}

.mobile-nav__link,
.mobile-nav__faux-link,
.mobile-nav__toggle button,
.mobile-nav__toggle .faux-button {
  color: $colorDrawerText;
  padding: $gutter / 2;
  text-decoration: none;

  &:active {
    color: darken($colorDrawerText, 15%);
  }

  &:active {
    background-color: darken($colorDrawers, 5%);
  }
}

// Active state on any level of link

.mobile-nav__item [data-active] {
  // text-decoration: underline;
}

.mobile-nav__child-item {
  display: -ms-flexbox;
  display: flex;

  a,
  .mobile-nav__link {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
  }

  .collapsible-trigger:not(.mobile-nav__link--button) {
    -ms-flex: 0 0 ($collapsible-trigger-circle-width + ($gutter / 2));
        flex: 0 0 ($collapsible-trigger-circle-width + ($gutter / 2));
  }

  .collapsible-trigger__icon {
    padding: 0;
    margin-right: $gutter / 2;
  }
}

.mobile-nav__item--secondary {
  a {
    padding-top: 10px;
    padding-bottom: 5px;
  }

  &:after {
    display: none; // no trailing border
  }
}

// Spacing above secondary links

.mobile-nav__item:not(.mobile-nav__item--secondary) + .mobile-nav__item--secondary {
  margin-top: 10px;
}

.mobile-nav__has-sublist,
.mobile-nav__link--button {
  display: -ms-flexbox;
  display: flex;

  > * {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    word-break: break-word; // Breaks long problematic words
  }
}

.mobile-nav__link--button {
  width: 100%;
  text-align: left;
  padding: 0;
}

.mobile-nav__toggle {
  -ms-flex: 0 1 auto;
      flex: 0 1 auto;

  .icon {
    width: 16px;
    height: 16px;
  }

  button,
  .faux-button {
    height: 60%;
    padding: 0 30px;
    margin: 20% 0;
  }

  button {
    border-left: 1px solid $colorDrawerBorder;
  }
}

.mobile-nav__sublist {
  margin: 0;

  .mobile-nav__item:after {
    top: 0;
    bottom: auto;
    border-bottom: none;
  }

  .mobile-nav__item:last-child {
    padding-bottom: $gutter / 2;
  }

  .mobile-nav__link,
  .mobile-nav__faux-link {
    font-weight: normal;
    padding: ($gutter / 4) 25px ($gutter / 4) ($gutter / 2);
  }
}

.mobile-nav__grandchildlist {
  margin: 0;

  &:before {
    content: '';
    display: block;
    position: absolute;
    width: 1px;
    background: #000;
    left: 17px;
    top: 10px;
    bottom: 10px;
  }

  .mobile-nav__item:last-child {
    padding-bottom: 0;
  }

  .mobile-nav__link {
    padding-left: 35px;
  }
}

.mobile-nav__social {
  list-style: none outside;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -ms-flex-pack: stretch;
      justify-content: stretch;
  margin: 15px 0 20px 0;

  @include media-query($medium-up) {
    margin-left: -$drawerGutterSmall;
    margin-right: -$drawerGutterSmall;
  }

  a {
    display: block;
    padding: 8px 30px;

    .icon {
      position: relative;
      top: -1px;
    }
  }
}

.mobile-nav__social-item {
  -ms-flex: 0 1 33.33%;
      flex: 0 1 33.33%;
  text-align: center;
  border: 1px solid $colorDrawerBorder;
  margin: 0 0 -1px;

  &:nth-child(3n-1) {
    margin-right: -1px;
    margin-left: -1px;
  }
}

/*================ Cart bubble for items in cart ================*/

@include media-query($medium-up) {
  .site-nav__link--icon .icon {
    width: 28px;
    height: 28px;

    &.icon-user {
      position: relative;
      top: 1px;
    }
  }
}

.cart-link {
  position: relative;
  display: block;
}

.cart-link__bubble {
  display: none;
}

.cart-link__bubble--visible {
  display: block;
  position: absolute;
  top: 50%;
  right: 0px;
  width: 15px;
  height: 15px;
  background-color: $colorCartDot;
  border: 2px solid $colorBody;
  border-radius: 50%;

  // Slight position change with cart icon
  [data-icon="cart"] & {
    top: 0;
    right: -4px;
  }
}

.breadcrumb {
  @include headingTextCenter;
  @include baseSmallFontStack;
  margin: -25px 0 10px;

  .template-product & {
    margin-top: 10px;

    @include media-query($medium-up) {
      text-align: left;
    }
  }

  @include media-query($small) {
    margin-bottom: ($gutter / 2) 0;
  }

  .divider {
    color: $colorBorder;
  }
}

.megamenu {
  padding: ($gutter * 1.3) 0;
  line-height: 1.8;
  transform: none;
  opacity: 0;
  transition: all 300ms cubic-bezier(0.2, 0.06, 0.05, 0.95);
  transition-delay: 0.3s;

  .site-nav--has-dropdown:hover &,
  .is-focused > & {
    opacity: 1;
    transition-delay: 0s;

    .appear-animation {
      opacity: 1;
      transform: none;
    }
  }
}

.site-nav--is-megamenu.site-nav__item {
  position: static;
}

.megamenu__colection-image {
  display: block;
  background-repeat: no-repeat;
  background-position: top center;
  background-size: cover;
  height: 0;
  padding-bottom: 46%;
  margin-bottom: $gutter / 1.5;
}

// Center grid items in megamenu when logo centered

.text-center .megamenu .grid {
  text-align: center;

  .grid__item {
    float: none;
    display: inline-block;
    vertical-align: top;
    text-align: left;
  }
}

.modal {
  display: none;
  bottom: 0;
  left: 0;
  opacity: 1;
  overflow: hidden;
  position: fixed;
  right: 0;
  top: 0;
  z-index: $zindexModal;
  color: $colorModalText;
  -ms-flex-align: center;
      align-items: center;
  -ms-flex-pack: center;
      justify-content: center;

  a,
  a:hover {
    color: inherit;
  }

  .btn:not([disabled]):not(.btn--secondary),
  .btn:not([disabled]):not(.btn--secondary):hover {
    color: $colorBtnPrimaryText;
  }

  .modal-open & {
    .modal__inner {
      animation: modal-open 0.5s forwards;
    }
    &:before {
      content: '';
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-color: $colorModalBg;
      animation: overlay-on 0.5s forwards;
      cursor: pointer;
    }
  }

  .modal-closing & {
    .modal__inner {
      animation: modal-closing 0.5s forwards;
    }
    &:before {
      content: '';
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-color: $colorModalBg;
      animation: overlay-off 0.5s forwards;
    }
  }

  .modal-open--solid &:before {
    background-color: $colorModalBg;
  }
}

.modal--solid {
  .modal-open & {
    &:before {
      background-color: #000;
      animation: full-overlay-on 0.5s forwards;
    }
  }

  .modal-closing & {
    &:before {
      background-color: #000;
      animation: full-overlay-off 0.5s forwards;
    }
  }
}

.modal--is-closing {
  display: -ms-flexbox !important;
  display: flex !important; // override .is-transitioning styles
  overflow: hidden;
}

.modal--is-active {
  display: -ms-flexbox !important;
  display: flex !important; // override .is-transitioning styles
  overflow: hidden;
}

// Class on body element when modal open.

// Only medium-up because iOS jumps to top otherwise

@include media-query($medium-up) {
  .modal-open {
    overflow: hidden;
  }
}

.modal__inner {
  transform-style: preserve-3d;
  -ms-flex: 0 1 auto;
      flex: 0 1 auto;
  margin: $gutter / 2;
  max-width: 100%;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;

  @include media-query($medium-up) {
    margin: 40px;
  }

  .modal--square & {
    background-color: $colorBody;
    color: $colorTextBody;
  }

  img {
    display: block;
    max-height: 90vh;
  }
}

// No max height on product images

.modal__inner {
  .image-wrap img {
    max-height: none;
  }
}

.modal__centered {
  position: relative;
  -ms-flex: 0 1 auto;
      flex: 0 1 auto;
  min-width: 1px; // ie10 thing
  max-width: 100%;
}

.modal__centered-content {
  .modal--square & {
    max-height: 80vh;
    padding: $gutter * .75;
    min-width: 200px;
    min-height: 200px;
    overflow: auto;
    -webkit-overflow-scrolling: touch;

    @include media-query($medium-up) {
      padding: $gutter * 1.5;
      max-height: 90vh;
      max-width: 1200px;
    }
  }
}

.modal__close {
  border: 0;
  padding: $gutter/2;
  @include media-query($medium-up) {
    padding: $gutter;
  }
  position: fixed;
  top: 0;
  right: 0;
  color: $colorModalText;

  .icon {
    width: 28px;
    height: 28px;
  }

  &:hover,
  &:focus {
    color: $colorModalText;
  }

  .modal--square & {
    position: absolute;
    color: $colorTextBody;
    padding: $gutter / 3;

    &:hover,
    &:focus {
      color: $colorTextBody;
    }
  }
}

// Ajax page adjustments

.modal {
  .page-content,
  .page-width {
    padding: 0;
  }
}

// Google-friendly non intrusive mobile modal

.popup-cta {
  margin-bottom: $gutter / 2;
}

@include media-query($small) {
  .modal--mobile-friendly {
    top: auto;
    bottom: 0;
    overflow: auto;

    &.modal--square .modal__centered-content {
      padding: 20px 20px 0;
    }

    &.modal--is-active {
      overflow: auto;
    }

    .modal-open & {
      &:before {
        display: none;
      }
    }

    .modal__inner {
      margin: 0;
      border: 2px solid $colorTextBody;
    }

    .h1 {
      padding-right: 25px;
    }

    input {
      font-size: 16px !important;
    }

    .text-close {
      display: none;
    }
  }
}

.js-qty__wrapper {
  display: inline-block;
  position: relative;
  max-width: 100px;
  min-width: 75px;
  overflow: visible;
  background-color: $colorInputBg;
  color: color-control($colorInputBg, 1);
}

.js-qty__num {
  display: block;
  background: none;
  text-align: center;
  width: 100%;
  padding: 8px 25px;
  margin: 0;
  z-index: 1;
}

.js-qty__adjust {
  cursor: pointer;
  position: absolute;
  display: block;
  top: 0;
  bottom: 0;
  border: 0 none;
  background: none;
  text-align: center;
  overflow: hidden;
  padding: 0 5px;
  line-height: 1;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  transition: background-color 0.1s ease-out;
  z-index: 2;
  fill: color-control($colorInputBg, 1);

  .icon {
    display: block;
    font-size: 8px;
    vertical-align: middle;
    width: 10px;
    height: 10px;
    fill: inherit;
  }

  &:hover {
    background-color: darken($colorInputBg, 5%);
    color: color-control($colorInputBg, 1);
  }

  &:active {
    background-color: darken($colorBorder, 10%);
  }

  .js-qty__num:active ~ &,
  .js-qty__num:focus ~ & {
    border-color: $colorTextBody;
  }
}

.js-qty__adjust--plus {
  right: 0;
  border-left: 1px solid darken($colorInputBg, 5%);
}

.js-qty__adjust--minus {
  left: 0;
  border-right: 1px solid darken($colorInputBg, 5%);
}

/*================ Qty selector in drawer ================*/

.drawer {
  .js-qty__wrapper {
    background-color: transparent;
    border-color: $colorDrawerBorder;
  }

  .js-qty__num {
    color: $colorDrawerText;
    border-color: $colorDrawerBorder;
    padding-top: 2px;
    padding-bottom: 2px;
  }

  .js-qty__adjust {
    border-color: $colorDrawerBorder;
    color: $colorDrawerText;
    fill: $colorDrawerText;

    &:hover {
      background-color: color-control($colorDrawers, 1);
      color: $colorDrawers;
      fill: $colorDrawers;
    }
  }
}

.drawer .js-qty__num:active ~ .js-qty__adjust,
.drawer .js-qty__num:focus ~ .js-qty__adjust {
  border-color: $colorDrawerBorder;
}

.currency-picker__label {
  display: inline-block;
  vertical-align: middle;
  color: $colorNavText;

  .is-light & {
    color: $colorStickyNavLinks;
  }
}

.currency-flag {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  width: 20px;
  height: 20px;
  overflow: hidden;
  border-radius: 50%;
  box-shadow: 0 0 1px 0 rgba(0,0,0,0.3) inset;

  .disclosure-list__option & {
    margin-right: 5px;
  }

  &:after {
    content: '';
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    border-radius: 50%;
  }
}

// collapsibles-wrapper is an optional wrapper

.collapsibles-wrapper--border-bottom {
  border-bottom: 1px solid $colorBorder;
}

.collapsible-trigger {
  color: inherit;
  position: relative;
}

.collapsible-trigger__icon {
  display: block;
  position: absolute;
  right: 0;
  top: 50%;
  width: $collapsible-trigger-icon-width-small;
  height: $collapsible-trigger-icon-width-small;
  transform: translateY(-50%);

  @include media-query($medium-up) {
    width: $collapsible-trigger-icon-width;
    height: $collapsible-trigger-icon-width;
  }

  .mobile-nav__has-sublist & {
    right: 25px;
  }

  .icon {
    display: block;
    width: $collapsible-trigger-icon-width-small;
    height: $collapsible-trigger-icon-width-small;
    transition: all 0.1s ease-in;

    @include media-query($medium-up) {
      width: $collapsible-trigger-icon-width;
      height: $collapsible-trigger-icon-width;
    }
  }
}

.collapsible-trigger--inline {
  padding: 11px 0 11px 40px;

  .collapsible-trigger__icon {
    right: auto;
    left: 0;
  }
}

.collapsible-trigger__icon--circle {
  border: 1px solid $colorBorder;
  width: $collapsible-trigger-circle-width;
  height: $collapsible-trigger-circle-width;
  border-radius: $collapsible-trigger-circle-width;
  text-align: center;

  .icon {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
  }
}

.collapsible-trigger.is-open .collapsible-trigger__icon > .icon-chevron-down {
  transform: scaleY(-1);
}

// Slightly different for circle buttons

.collapsible-trigger.is-open .collapsible-trigger__icon--circle > .icon-chevron-down {
  transform: translate(-50%, -50%) scaleY(-1);
}

.collapsible-content {
  transition: $collapsible-close-transition;

  &.is-open {
    visibility: visible;
    opacity: 1;
    transition: $collapsible-open-transition;
  }
}

.collapsible-content--all {
  visibility: hidden;
  overflow: hidden;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  opacity: 0;
  height: 0;

  .collapsible-content__inner {
    transform: translateY(40px);
  }

  .collapsible-content__inner--no-translate {
    transform: translateY(0);
  }
}

@include media-query($small) {
  .collapsible-content--small {
    visibility: hidden;
    -webkit-backface-visibility: hidden;
            backface-visibility: hidden;
    opacity: 0;
    height: 0;

    .collapsible-content__inner {
      transform: translateY(40px);
    }

    .collapsible-content__inner--no-translate {
      transform: translateY(0);
    }
  }
}

.collapsible-content__inner {
  transition: $collapsible-content-close-transition;

  .is-open & {
    transform: translateY(0);
    transition: $collapsible-content-open-transition;
  }
}

.rte.collapsible-content__inner--faq {
  padding-bottom: $gutter;
}

.collapsible-label__closed {
  .collapsible-trigger[aria-expanded="true"] & {
    display: none;
  }
}

.collapsible-label__open {
  display: none;

  .collapsible-trigger[aria-expanded="true"] & {
    display: inline-block;
  }
}

// Custom functionality for collection sidebar

.collapsible-content--sidebar {
  visibility: hidden;
  overflow: hidden;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  opacity: 0;
  height: 0;

  @include media-query($medium-up) {
    &.is-open {
      overflow: initial;
      visibility: visible;
      opacity: 1;
      height: auto;
    }
  }
}

.pswp {
  display: none;
  position: absolute;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  overflow: hidden;
  -ms-touch-action: none;
  touch-action: none;
  z-index: 1500;
  -webkit-text-size-adjust: 100%;
  -webkit-backface-visibility: hidden;
  outline: none; }

.pswp img {
  max-width: none;
}

/* style is added when JS option showHideOpacity is set to true */

.pswp--animate_opacity {
  /* 0.001, because opacity:0 doesn't trigger Paint action, which causes lag at start of transition */
  opacity: 0.001;
  will-change: opacity;
  transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); }

.pswp--open {
  display: block; }

.pswp--zoom-allowed .pswp__img {
  cursor: zoom-in; }

.pswp--zoomed-in .pswp__img {
  cursor: grab; }

.pswp--dragging .pswp__img {
  cursor: grabbing; }

/*
  Background is added as a separate element.
  As animating opacity is much faster than animating rgba() background-color.
*/

.pswp__bg {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background: $colorBody;
  opacity: 0;
  transform: translateZ(0);
  -webkit-backface-visibility: hidden;
  will-change: opacity; }

.pswp__scroll-wrap {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  overflow: hidden; }

.pswp__container,
.pswp__zoom-wrap {
  -ms-touch-action: none;
  touch-action: none;
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0; }

/* Prevent selection and tap highlights */

.pswp__container,
.pswp__img {
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  -webkit-tap-highlight-color: transparent;
  -webkit-touch-callout: none; }

.pswp__zoom-wrap {
  position: absolute;
  width: 100%;
  transform-origin: left top;
  /* for open/close transition */
  transition: transform 333ms cubic-bezier(0.4, 0, 0.22, 1); }

.pswp__bg {
  will-change: opacity;
  /* for open/close transition */
  transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); }

.pswp--animated-in .pswp__bg,
.pswp--animated-in .pswp__zoom-wrap {
  transition: none; }

.pswp__container,
.pswp__zoom-wrap {
  -webkit-backface-visibility: hidden; }

.pswp__item {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  overflow: hidden; }

.pswp__img {
  position: absolute;
  width: auto;
  height: auto;
  top: 0;
  left: 0; }

/*
  stretched thumbnail or div placeholder element (see below)
  style is added to avoid flickering in webkit/blink when layers overlap
*/

.pswp__img--placeholder {
  -webkit-backface-visibility: hidden; }

.pswp--ie .pswp__img {
  width: 100% !important;
  height: auto !important;
  left: 0;
  top: 0; }

/*
  Error message appears when image is not loaded
  (JS option errorMsg controls markup)
*/

.pswp__error-msg {
  position: absolute;
  left: 0;
  top: 50%;
  width: 100%;
  text-align: center;
  line-height: 16px;
  margin-top: -8px;
  color: #CCC; }

.pswp__error-msg a {
  color: #CCC;
  text-decoration: underline; }

.pswp__button {
  position: relative;

  // Because JS listens to click on button element itself
  &:after {
    content: '';
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
  }
}

.pswp__button--arrow--left .icon,
.pswp__button--arrow--right .icon {
  width: 13px;
  height: 13px;
  margin: 8px;
}

.pswp__button[disabled] {
  opacity: 0;
  pointer-events: none;
}

.pswp__ui {
  position: absolute;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: center;
      justify-content: center;
  -ms-flex-align: center;
      align-items: center;
  bottom: $gutter;
  left: 0;
  right: 0;
  transform: translateY(0);
  transition: transform 0.25s 0.6s;

  .btn {
    margin: 15px;
  }
}

.pswp__ui--hidden {
  transform: translateY(150%);
  transition: transform 0.25s;
}

$max-height-disclosure: 60vh;

$min-height-disclosure: 92px;

.disclosure {
  position: relative;
}

.disclosure__toggle {
  white-space: nowrap;
}

.disclosure-list {
  background-color: $colorBody;
  color: $colorTextBody;
  bottom: 100%;
  padding: 10px 0px;
  margin: 0;
  position: absolute;
  display: none;
  min-height: $min-height-disclosure;
  max-height: $max-height-disclosure;
  overflow-y: auto;
  border-radius: $input-radius;
  box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.09);

  a {
    color: currentColor;
  }
}

.disclosure-list--down {
  bottom: auto;
  top: 100%;
  z-index: $z-index-disclosure-header;
}

.disclosure-list--left {
  right: 0;
}

.disclosure-list--visible {
  display: block;
}

.disclosure-list__item {
  white-space: nowrap;
  padding: 5px 15px 4px;
  text-align: left;

  .disclosure-list__label {
    border-bottom: 1px solid transparent;
  }
}

.disclosure-list__option {
  &:focus,
  &:hover {
    .disclosure-list__label {
      border-bottom: 1px solid currentColor;
    }
  }
}

.disclosure-list__item--current {
  .disclosure-list__label {
    border-bottom: 1px solid currentColor;
  }
}

.disclosure-list__label {
  display: inline-block;
  vertical-align: middle;

  span {
    border-bottom: 2px solid transparent;

    .is-active & {
      border-bottom: 2px solid currentColor;
    }
  }
}

// Multi-language/currency selectors

.multi-selectors {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: center;
      justify-content: center;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
}

.multi-selectors__item {
  margin: 0 10px;

  .toolbar & {
    margin-right: 0;
  }
}

// Model viewer controls

.shopify-model-viewer-ui {
  .shopify-model-viewer-ui__controls-area {
    opacity: 1; // always show controls
    background: $colorBody;
    border-color: rgba($colorTextBody, 0.05);
    border-radius: 50px;
  }

  .shopify-model-viewer-ui__button {
    color: $colorTextBody;
  }

  .shopify-model-viewer-ui__button--control {
    &:hover {
      color: $colorTextBody;
    }

    &:active,
    &.focus-visible:focus {
      color: $colorTextBody;
      background: rgba($colorTextBody, 0.05);
    }

    &:not(:last-child):after {
      border-color: rgba($colorTextBody, 0.05);
    }
  }

  .shopify-model-viewer-ui__button--poster {
    background-color: $colorTextBody;
    color: $colorBody;
    border-radius: 100%;
    border: 1px solid rgba($colorBody, 0.05);

    &:hover,
    &:focus {
      color: $colorBody;
    }
  }
}

// View in space button

.product-single__view-in-space {
  display: block;
  color: $colorTextBody;
  background-color: rgba($colorTextBody, 0.08);
  width: 80%;
  width: calc(80% - 4px); // 4px = right margin on product-image-main
  margin: 0 10% 10px;
  padding: 5px 10px 10px;

  .slick-dotted.slick-slider + & {
    margin-top: -10px;
  }

  &[data-shopify-xr-hidden] {
    display: none;
  }
}

.product-single__view-in-space-text {
  @include baseSmallFontStack;
  display: inline-block;
  vertical-align: middle;
  margin-left: 5px;
}

// Model viewer container

.shopify-model-viewer-ui,
.shopify-model-viewer-ui model-viewer {
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.shopify-model-viewer-ui__button[hidden] {
  display: none;
}

.product-single__close-media {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 2;
}

/*================ Vendor-specific styles ================*/

/*============================================================================
  Slick Slider 1.6.0

  - If upgrading Slick's styles, use the following variables/functions
    instead of the slick defaults
  - Remove `outline: none` from `.slick-dots li button`
  - Change slick-image-url to just url
  - Remove any instance of slick-font-url
==============================================================================*/

$slick-arrow-color: #000;

$slick-arrow-size: 20px;

$slick-arrow-icon-height: 10px;

$slick-arrow-icon-width: 6px;

$slick-dot-color: #fff;

$slick-dot-color-active: #fff !default;

$slick-dot-character: '';

$slick-dot-size: 6px;

$slick-opacity-default: 0.75;

$slick-opacity-on-hover: 1;

$slick-opacity-not-active: 0.18;

/*================ Slick Slider SCSS ================*/

.slick-slider {
  position: relative;
  display: block;
  box-sizing: border-box;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  -ms-touch-action: pan-y;
  touch-action: pan-y;
  -webkit-tap-highlight-color: transparent;
  direction: ltr;
}

.slick-list {
  position: relative;
  overflow: hidden;
  display: block;
  margin: 0;
  padding: 0;

  &:focus {
    outline: none;
  }

  &.dragging {
    cursor: pointer;
    cursor: hand;
  }
}

.slick-slider .slick-track,
.slick-slider .slick-list {
  transform: translate3d(0, 0, 0);
}

.slick-track {
  position: relative;
  left: 0;
  top: 0;
  display: block;

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

  &:after {
    clear: both;
  }

  .slick-loading & {
    visibility: hidden;
  }
}

.slick-slide {
  float: left;
  height: 100%;
  min-height: 1px;
  [dir="rtl"] & {
    float: right;
  }
  img {
    display: block;
  }
  &.slick-loading img {
    display: none;
  }

  display: none;

  &.dragging img {
    pointer-events: none;
  }

  .slick-initialized & {
    display: block;
  }

  .slick-loading & {
    visibility: hidden;
  }

  .slick-vertical & {
    display: block;
    height: auto;
  }
}

.slick-arrow.slick-hidden {
  display: none;
}

/*================ Slick Slider Theme ================*/

/* Arrows */

.slick-arrow {
  position: absolute;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  -ms-flex-pack: center;
      justify-content: center;
  display: block;
  line-height: 0px;
  font-size: 0px;
  cursor: pointer;
  background: transparent;
  color: transparent;
  top: 50%;
  transform: translate(0, -50%);
  padding: 0;
  border: none;
  opacity: $slick-opacity-on-hover;
  z-index: 20;

  &.slick-disabled {
    opacity: $slick-opacity-not-active;
  }

  .icon {
    position: relative;
    top: 1px;
    display: block;
    width: $slick-arrow-icon-width;
    height: $slick-arrow-icon-height;
  }
}

.slick-prev {
  left: 25px;
  [dir="rtl"] & {
    left: auto;
    right: 25px;
  }

  @include media-query($small) {
    left: 12px;
    [dir="rtl"] & {
      right: 12px;
    }
  }
}

.slick-next {
  right: 25px;
  [dir="rtl"] & {
    left: 25px;
    right: auto;
  }

  @include media-query($small) {
    right: 12px;
    [dir="rtl"] & {
      left: 12px;
    }
  }
}

/* Dots */

.slick-dotted.slick-slider {
  margin-bottom: 10px;
}

.slick-dots {
  position: absolute;
  bottom: -25px;
  list-style: none;
  display: block;
  text-align: center;
  padding: 0;
  margin: 0;
  width: 100%;
  li {
    position: relative;
    display: inline-block;
    height: 20px;
    width: 20px;
    margin: 0 5px;
    padding: 0;
    cursor: pointer;
    button {
      border: 0;
      background: transparent;
      display: block;
      height: 20px;
      width: 20px;
      line-height: 0px;
      font-size: 0px;
      color: transparent;
      padding: 5px;
      cursor: pointer;
      &:hover, &:focus {
        &:before {
          opacity: $slick-opacity-on-hover;
        }
      }
      &:before {
        position: absolute;
        top: 0;
        left: 0;
        content: $slick-dot-character;
        width: 20px;
        height: 20px;
        font-size: $slick-dot-size;
        line-height: 20px;
        text-align: center;
        color: $slick-dot-color;
        opacity: $slick-opacity-not-active;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
      }
    }
    &.slick-active button:before {
      color: $slick-dot-color-active;
      opacity: $slick-opacity-default;
    }
  }
}

/*================ Theme-specific partials ================*/

/*================ Partials | Theme Form Overrides ================*/

::-webkit-input-placeholder {
   color: inherit;
   opacity: 0.5;
}

:-moz-placeholder {
   color: inherit;
   opacity: 0.5;
}

:-ms-input-placeholder {
   color: inherit;
   opacity: 0.5;
}

::-ms-input-placeholder {
   color: inherit;
   opacity: 1;
}

input,
textarea,
select {
  background-color: inherit;
  color: inherit;

  &[disabled],
  &.disabled {
    background-color: $disabledGrey;
    border-color: transparent;
  }

  &:active,
  &:focus {
    border: 1px solid $colorTextBody;
  }
}

input[type="image"] {
  background-color: transparent;
}

/*================ Social share buttons ================*/

$shareButtonHeight: 18px;

.social-sharing {
  @include baseTextCenter;
  .icon {
    height: $shareButtonHeight;
    width: $shareButtonHeight;
  }
}

.social-sharing__link {
  display: inline-block;
  color: $colorTextBody;
  border-radius: 2px;
  margin: 0 18px 0 0;
  text-decoration: none;
  font-weight: normal;

  &:last-child {
    margin-right: 0;
  }
}

.social-sharing__title {
  @include baseSmallFontStack;
  display: inline-block;
  vertical-align: middle;
  padding-right: 15px;
  padding-left: 3px;
}

.grid-search {
  margin-bottom: $gutter;
}

.grid-search__product {
  position: relative;
  text-align: center;
}

.grid-search__page-link {
  display: block;
  background-color: adaptive-color($colorBody, 2%);
  padding: 20px;
  color: $colorTextBody;
  overflow: hidden;
  text-overflow: ellipsis;

  &:hover,
  &:focus {
    background-color: adaptive-color($colorBody, 4%);
  }
}

.grid-search__page-content {
  display: block;
  height: 100%;
  overflow: hidden;
}

.grid-search__page-content img {
  display: block;
  margin-bottom: 10px;
}

.grid-search__image {
  display: block;
  padding: 20px;
  margin: 0 auto;
  max-height: 100%;
  max-width: 100%;

  @include media-query($medium-up) {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
  }
}

/*================ Partials | Sections ================*/

.index-section {
  margin: $indexSectionMarginSmall 0;
}

.index-section--small {
  margin: ($gutter * 0.6) 0;
}

.index-section + .index-section,
.index-section + .index-section--hidden,
.main-content + .index-section {
  margin-top: 0;
}

.index-section--flush {
  margin: 0;
}

.section--divider {
  border-top: 1px solid $colorBorder;
  padding-top: $indexSectionMarginSmall;
}

.index-section--faq {
  margin-bottom: $indexSectionMarginSmall;
}

.index-section--faq {
  margin-bottom: $indexSectionMarginSmall;
}

.newsletter-section {
  padding: $indexSectionMarginSmall 0;
}

.newsletter-section--with-divider {
  border-top: 1px solid $colorBorder;
}

.index-section--footer .index-section {
  margin-top: 0;
}

// Large screen section spacing

@include media-query($medium-up) {
  .index-section {
    margin: ($indexSectionMarginLarge) 0;
  }

  .index-section--small {
    margin: $gutter 0;
  }

  .section--divider {
    padding-top: $indexSectionMarginLarge;
  }

  .index-section--faq {
    margin: $indexSectionMarginLarge 0 ($indexSectionMarginLarge / 2);
  }

  .newsletter-section {
    padding: ($indexSectionMarginLarge) 0;
  }
}

/*================ Page blocks ================*/

.page-blocks--flush .page-width {
  padding: 0;
}

.page-blocks > div:first-child {
  .index-section {
    margin-top: 0;
  }
}

/*================ Partials | Featured row section ================*/

.feature-row {
  margin: 0 auto;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: justify;
      justify-content: space-between;
  -ms-flex-align: center;
      align-items: center;

  @include media-query($widescreen) {
    margin: 0 6%;
  }

  @include media-query($medium-down) {
    -ms-flex-direction: column;
        flex-direction: column;
    margin: 0;
  }
}

@include media-query($medium-down) {
  .feature-row--small-none {
    display: block;
  }
}

.feature-row__item {
  min-width: 50%;
  -ms-flex: 0 1 50%;
      flex: 0 1 50%;

  @include media-query($medium-down) {
    -ms-flex: 1 1 100%;
        flex: 1 1 100%;
    width: 100%;
    max-width: 100%;
    min-width: 0;
  }
}

.feature-row__image {
  display: block;
  margin: 0 auto;

  @include media-query($medium-down) {
    -ms-flex-order: 1;
        order: 1;
  }
}

.feature-row__text {
  font-size: 1.1em;
  padding-top: $gutter;
  padding-bottom: $gutter;

  @include media-query($medium-down) {
    -ms-flex-order: 2;
        order: 2;
    text-align: center;
    padding-top: $gutter / 2;
    padding-bottom: 0; // always last element on mobile
  }
  .rte {
    margin: 0;
  }
  .btn {
    margin: ($gutter / 2) ($gutter / 3) 0 0;
  }
}

@include media-query($medium-up) {
  .feature-row__text--left {
    padding-left: $gutter * 2;
  }

  .feature-row__text--right {
    padding-right: $gutter * 2;
  }
}

@include media-query($medium-up) {
  .featured-row__subtext {
  }
}

/*================ Modules and sections ================*/

$slideshow-dot-size: 6px;

$slideshow-dot-size-large: 8px;

$slideshow-bar-hit-area: 18px;

$slideshow-bar-height: 4px;

$slideshow-bar-width: 150px;

$slideshow-bar-width-small: 40px;

.slick-slider,
.product__photo-dots {

  // Dots
  .slick-dots {

    li {
      vertical-align: middle;
    }

    // Inactive dot
    li,
    li button {
      width: $slideshow-dot-size;
      height: $slideshow-dot-size;
    }

    li button::before {
      width: $slideshow-dot-size;
      height: $slideshow-dot-size;
      border-radius: 100%;
    }

    // Active dot
    li.slick-active,
    li.slick-active button,
    li.slick-active button::before {
      width: $slideshow-dot-size-large;
      height: $slideshow-dot-size-large;
      opacity: 1;
    }
  }

  // Dots transformed into bars
  &[data-bars] .slick-dots {
    // Inactive bar
    li,
    li button {
      padding: 0;
      width: $slideshow-bar-width;
      height: $slideshow-bar-hit-area;
    }

    // Position thin bar elements in middle of hit area
    li button::before,
    li button::after {
      content: '';
      width: $slideshow-bar-width;
      height: $slideshow-bar-height;
      border-radius: 0;
      position: absolute;
      left: 0;
      top: 50%;
      transform: translateY(-($slideshow-bar-height / 2));

      @include media-query($medium-up) {
        height: $slideshow-bar-height + 2;
      }
    }

    li.slick-active button::before {
      opacity: 1;
    }

    li button::after {
      background-color: rgba(255,255,255,0.25);
      box-shadow: 0 0 75px rgba(0,0,0,0.8);
    }

    // Active dot
    li.slick-active,
    li.slick-active button {
      height: $slideshow-bar-hit-area;
    }

    li.slick-active button::before,
    li.slick-active button::after {
      width: $slideshow-bar-width;
      height: $slideshow-bar-height;

      @include media-query($medium-up) {
        height: $slideshow-bar-height + 2;
      }
    }

    li.slick-active button::before {
      background-color: #fff;
    }

    @include media-query($small) {
      li,
      li button,
      li button::before,
      li button::after,
      li.slick-active,
      li.slick-active button,
      li.slick-active button::before,
      li.slick-active button::after {
        width: $slideshow-bar-width-small;
      }
    }
  }

  // Bar is animated
  &[data-bars][data-autoplay="true"] .slick-dots {
    li button::before {
      width: 0%;
    }

    li.slick-active button::before {
      animation: slideshowBars 0s linear forwards;
    }
  }
}

.hero .slick-dots {
  bottom: 6px;
  @include media-query($small) {
    bottom: 6px;
  }

  li button::before {
    background-color: $slideshow-text-light;
  }
}

.hero[data-bars] .slick-dots {
  bottom: -8px;

  @include media-query($small) {
    bottom: -7px;
  }
}

$z-index-slideshow-image: 1;

$z-index-slideshow-video: 2;

$z-index-slideshow-image-overlay: 3;

$z-index-slideshow-text: 4;

// Slick overrides

.hero.slick-dotted {
  margin-bottom: 0;
}

.slick-track {
  cursor: pointer;
  cursor: -webkit-grab;

  // Disable grab cursor if only a single slide
  [data-slide-count="1"] & {
    cursor: default;

    &:active {
      cursor: default;
    }
  }

  &:active {
    cursor: -webkit-grabbing;
  }
}

// To enable arrows

.hero {
  .slick-prev,
  .slick-next {
    top: 40%;
    opacity: 0.75;

    &:hover {
      opacity: 1;
    }

    .icon {
      color: $colorHeroText;
      width: 20px;
      height: 30px;
      filter: drop-shadow(0 0 20px rgba(0,0,0,1));

      @include media-query($small) {
        height: 20px;
      }
    }
  }
}

.hero {
  overflow: hidden;

  // Make sure slides fill full height
  .slideshow__slide,
  .slick-list,
  .slick-track {
    height: 100%;
  }
}

// General slideshow styles

.slideshow-wrapper {
  position: relative;
}

// Pause button (focusable by keyboard only)

.slideshow__pause:focus {
  clip: auto;
  width: auto;
  height: auto;
  margin: 0;
  color: $colorBtnPrimaryText;
  background-color: $colorBtnPrimary;
  padding: 10px;
  z-index: $zindexSkipToContent;
  transition: none;

  .video-is-playing & {
    display: none;
  }
}

.slideshow__pause-stop {
  display: block;

  .is-paused & {
    display: none;
  }
}

.slideshow__pause-play {
  display: none;

  .is-paused & {
    display: block;
  }
}

// General slide styles

.slideshow__slide {
  display: none;
  position: relative;
  overflow: hidden;

  &:first-child {
    display: block;
  }
}

$z-index-hero-image: 1;

$z-index-hero-video: 2;

$z-index-hero-image-overlay: 3;

$z-index-hero-text: 4;

.hero {
  position: relative;
  overflow: hidden;
  background: $colorLargeImageBg;
}

.hero__media-container {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
}

.hero__image-wrapper,
.hero__media {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;

  &:before {
    @include overlay($z-index-hero-image-overlay);
    @include heroScrim();

    .video-interactable & {
      pointer-events: none;
    }
  }
}

.hero__image {
  z-index: $z-index-hero-image;
}

.hero__media {
  background-repeat: no-repeat;
  background-size: cover;
  background-position: top center;
  z-index: $z-index-hero-image;
}

.hero__image-wrapper--no-overlay:before {
  content: none;
}

.hero__media iframe,
.hero__media video {
  width: 100%;
  height: 100%;
  pointer-events: none;

  .video-interactable & {
    pointer-events: auto;
  }
}

// MP4 sizing

.hero__media video {
  position: relative;
  object-fit: cover;
  font-family: "object-fit: cover";
}

// YouTube iframes need more specific sizing

.hero__media iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 300%;
  left: -100%;
  max-width: none;

  // This min-width may need to change slightly depending on
  // embedded video dimensions. Can do on a per-shop basis
  @media screen and (min-width: 1140px) {
    width: 100%;
    height: 300%;
    left: auto;
    top: -100%;
  }
}

// Mobile only vimeo play button

.vimeo-mobile-trigger {
  display: block;
  position: absolute;
  width: 100%;
  z-index: 2;
  margin-top: 90px;

  .hero__text-content & {
    bottom: 120%;
  }

  .icon {
    width: 40px;
    height: 40px;
    background-color: #fff;
    border-radius: 50%;
    padding: 10px;
  }
}

.hero__slide-link {
  display: block;
  position: absolute;
  height: 100%;
  width: 100%;
  z-index: $z-index-hero-text + 1;

  &:hover {
    & ~ .hero__text-wrap .btn:not(.btn--secondary):not(.btn--tertiary):not(.btn--inverse) {
      background: lighten($colorBtnPrimary, 10%);
      transition-delay: 0.25s;

      @if ($buttonStyle != 'angled') {
        &:after {
          animation: shine 0.75s cubic-bezier(0.01, 0.56, 1, 1);
        }
      }
    }
  }
}

.hero__text-wrap {
  position: relative;
  height: 100%;
  color: $colorHeroText;

  .video-interactable & {
    pointer-events: none;
  }

  .page-width {
    display: table;
    width: 100%;
    height: 100%;
  }
}

.hero__text-content {
  position: relative;
  padding: ($gutter / 2) 0;
  z-index: $z-index-hero-text;
  @include media-query($medium-up) {
    padding: ($gutter * 1.5) 0;
  }

  // Add spacing if slideshow arrows enabled
  [data-arrows="true"] & {
    padding-left: 20px;
    padding-right: 20px;
  }
}

.hero__text-shadow {
  position: relative;
  display: inline-block;

  &:before {
    @include heroRadial;
  }
}

.hero__top-subtitle {
  @include accentFontStack;
  font-size: 1.1em;
  margin-bottom: 5px;
}

.hero__title {
  display: block;
  margin-bottom: 0;
}

.hero__subtext {
  margin-top: 20px;
}

.hero__subtitle {
  font-size: 1.3em;
  display: block;
  vertical-align: middle;
  margin-top: 5px;
  margin-bottom: 5px;
}

.hero__link {
  position: relative; // IE clickability fix
  display: block;

  .video-interactable & {
    pointer-events: auto;
  }

  .btn {
    margin: 4px 3px 2px 0;

    @include media-query($medium-up) {
      margin-right: 5px;
      margin-top: 0;
    }

    @if ($buttonStyle == 'angled') {
      margin-left: #{$buttonSkew}px;
    }
  }

  .btn + .btn {
    margin-left: 2px;

    @if ($buttonStyle == 'angled') {
      margin-left: #{$buttonSkew}px;
    }

    @include media-query($medium-up) {
      margin-left: 10px;
    }
  }

  // Play icon in button
  .btn .icon-play {
    position: relative;
    top: -2px;
    margin-right: 5px;
  }

  // Extra padding in case inside animation cropper
  @if ($buttonStyle == 'angled') {
    .animation-cropper {
      padding-right: 10px;
    }
  }
}

// Text alignment

.hero__text-content {
  display: table-cell;

  .hero__link {
    margin-top: $gutter / 4;

    @include media-query($medium-up) {
      margin-top: $gutter / 2;
    }
  }

  &.horizontal-left {
    text-align: left;
  }

  &.horizontal-center {
    text-align: center;
  }

  &.horizontal-right {
    text-align: right;
  }

  &.vertical-center {
    vertical-align: middle;
  }

  &.vertical-bottom {
    vertical-align: bottom;
  }
}

.slick-dotted .hero__text-content.vertical-bottom {
  padding-bottom: 28px;

  @include media-query($medium-up) {
    padding-bottom: 60px;
  }
}

// Top padding adjustment to account for overlaid header

.overlaid-header .index-section--hero:first-child .hero__text-content.vertical-center {
  padding-top: 50px;
  @include media-query($medium-up) {
    padding-top: 90px;
  }
}

// Slideshow height

.hero--450px {
  height: floor(450px * 0.65);
}

.hero--550px {
  height: floor(550px * 0.65);
}

.hero--650px {
  height: floor(650px * 0.65);
}

.hero--750px {
  height: floor(750px * 0.65);
}

.hero--100vh {
  height: 100vh;
}

.hero--natural[data-natural] {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}

@include media-query($medium-up) {
  .hero--450px {
    height: 450px;
  }
  .hero--550px {
    height: 550px;
  }
  .hero--650px {
    height: 650px;
  }
  .hero--750px {
    height: 750px;
  }
}

@include media-query($small) {
  .hero--mobile--250px:not([data-natural]) {
    height: 250px;
  }
  .hero--mobile--300px:not([data-natural]) {
    height: 300px;
  }
  .hero--mobile--400px:not([data-natural]) {
    height: 400px;
  }
  .hero--mobile--500px:not([data-natural]) {
    height: 500px;
  }
  .hero--mobile--100vh:not([data-natural]) {
    height: 90vh;
  }
}

// Align to top of page if first section on page

.index-section--hero:first-child {
  [data-align-top] .slideshow-wrapper {
    position: relative;
    z-index: 1;
  }
}

// Animations

@if ($animate_sections) {
  [data-aos="hero__animation"],
  .hero .slideshow__slide {
    .hero__top-subtitle .animation-contents,
    .hero__title .animation-contents,
    .hero__subtitle .animation-contents,
    .hero__link .btn {
      opacity: 0;

      .no-js & {
        opacity: 1;
      }
    }

    .hero__media,
    .hero__image {
      opacity: 0;

      .no-js & {
        opacity: 1;
      }
    }
  }

  [data-aos="hero__animation"].loaded.aos-animate,
  .hero.loaded.aos-animate .slideshow__slide.slick-active {
    .hero__top-subtitle .animation-contents {
      animation: $animate_sections_text_style 1s cubic-bezier(0.26, 0.54, 0.32, 1) 0.7s forwards;
    }

    .hero__title .animation-contents {
      animation: $animate_sections_text_style 0.8s cubic-bezier(0.26, 0.54, 0.32, 1) 0.3s forwards;
    }

    .hero__subtitle .animation-contents {
      animation: $animate_sections_text_style 1s cubic-bezier(0.26, 0.54, 0.32, 1) 0.7s forwards;
    }

    .hero__link .btn {
      animation: fade-in 2s ease 1.3s forwards;
    }

    .hero__link .btn:nth-child(2) {
      animation: fade-in 2s ease 1.6s forwards;
    }

    .hero__media,
    .hero__image.lazyloaded,
    .hero__image--svg {
      animation: $animate_sections_background_style 2.5s cubic-bezier(0.26, 0.54, 0.32, 1) 0s forwards;
      transition: none; // fixes safari animation conflict
    }
  }

  $slideshowImageAnimationAmount: 200px;
  $slideshowImageAnimationSpeed: 0.5s;
  // Disable animations when not active or fading out
  .hero__image-wrapper {
    transform: translateX($slideshowImageAnimationAmount);
    opacity: 0;
    transition: none;
  }

  // Reset all text position for inactive slides
  .slideshow__slide {
    .hero__top-subtitle,
    .hero__title,
    .hero__subtitle {
      .animation-cropper {
        opacity: 0;
        transition: none;
      }
    }

    .hero__link {
      opacity: 0;
      transition: none;
    }
  }

  // Fading in animation
  .slick-current {
    .hero__image-wrapper {
      opacity: 1;
      transform: translateX(0px);
      transition: all ($slideshowImageAnimationSpeed + 0.2s) ease;
    }

    .hero__top-subtitle .animation-cropper {
      opacity: 1;
      transition: all $slideshowImageAnimationSpeed ease-in 0.64s;
    }

    .hero__title .animation-cropper {
      opacity: 1;
      transition: all $slideshowImageAnimationSpeed ease-in 0.25s;
    }

    .hero__subtitle .animation-cropper {
      opacity: 1;
      transition: all $slideshowImageAnimationSpeed ease-in 0.64s;
    }

    .hero__link {
      opacity: 1;
      transition: all ($slideshowImageAnimationSpeed + 0.11s) ease-in 1.18s;
    }
  }

  // Fading out animation
  .slideshow__slide.animate-out {
    .hero__image-wrapper {
      opacity: 0;
      transform: translateX(-($slideshowImageAnimationAmount));
      transition: all $slideshowImageAnimationSpeed ease-in 0.05s;
    }

    // Remove all text at once
    .hero__top-subtitle,
    .hero__title,
    .hero__subtitle {
      .animation-cropper {
        opacity: 0;
        transition: none;
      }
    }

    .hero__link {
      opacity: 0;
      transition: none;
    }
  }
}

@else {
  [data-aos="hero__animation"] {
    .hero__media,
    .hero__image {
      opacity: 0;

      .no-js & {
        opacity: 1;
      }
    }
  }

  [data-aos="hero__animation"].loaded {
    .hero__media,
    .hero__image {
      animation: fade-in 1.5s cubic-bezier(0.26, 0.54, 0.32, 1) 0s forwards;
      transition: none; // fixes safari animation conflict
    }
  }
}

/*================ Collection callout section ================*/

.callout-images {
  position: relative;
  height: 225px;
  width: 225px;
  max-width: 100%;
  margin: 20px auto;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  -ms-flex-pack: center;
      justify-content: center;

  @include media-query($medium-up) {
    height: 450px;
    width: 450px;
  }
}

.callout-image-centered {
  position: relative;
  width: 140px;

  @include media-query($medium-up) {
    width: 280px;
  }
}

.callout-image-placeholder {
  display: block;
  max-height: 100%;
  margin: 0 auto $gutter;

  @include media-query($small) {
    max-width: 585px;
    margin: -75px 0 0 -145px;
  }
}

// Prevent images from overlapping text

.feature-row__callout-image + .feature-row__text .feature-row__content {
  background-color: $colorBody;
  position: relative;
  z-index: 3;
  margin: -10px;
  padding-left: 10px;
}

@include media-query($medium-up) {
  .feature-row__callout-image {
    -ms-flex-order: 2;
        order: 2;
  }
  .feature-row__callout-text.feature-row__text--left {
    -ms-flex-order: 1;
        order: 1;
    padding: 0 ($gutter * 2) 0 0;
  }
  .feature-row__callout-text.feature-row__text--right {
    -ms-flex-order: 3;
        order: 3;
    padding: 0 0 0 ($gutter * 2);
  }
}

.callout-image {
  position: absolute;
  transition: all 2.5s cubic-bezier(0.39, 0.68, 0.29, 1) 0.5s;
  z-index: 1;
  background-color: $colorBody;

  &:nth-child(1) {
    position: relative;
    width: 100%;
    z-index: 2;
  }

  &:nth-child(2) {
    bottom: 50%;
    left: 50%;
    transform: translate3d(-50%, 50%, 0);
    max-width: 90px;

    @include media-query($medium-up) {
      max-width: 180px;
    }
  }

  &:nth-child(3) {
    top: 50%;
    right: 50%;
    transform: translate3d(50%, -50%, 0);
    max-width: 80px;

    @include media-query($medium-up) {
      max-width: 160px;
    }
  }

  &:nth-child(4) {
    top: 50%;
    left: 50%;
    transform: translate3d(-50%, -50%, 0);
    max-width: 100px;

    @include media-query($medium-up) {
      max-width: 200px;
    }
  }

  &:nth-child(5) {
    right: 50%;
    bottom: 50%;
    transform: translate3d(50%, 50%, 0);
    max-width: 50px;

    @include media-query($medium-up) {
      max-width: 100px;
    }
  }
}

[data-aos="collection-callout"].aos-animate .callout-image {
  &:nth-child(1) {
    box-shadow: 0 10px 15px rgba(0,0,0,0.3);
  }
  &:nth-child(2) {
    bottom: 46%;
    left: -64px;
    transform: translate3d(0, 0, 0);
  }
  &:nth-child(3) {
    top: 52%;
    right: -60px;
    transform: translate3d(0, 0, 0);
  }
  &:nth-child(4) {
    top: 48%;
    left: -50px;
    transform: translate3d(0, 0, 0);
  }
  &:nth-child(5) {
    bottom: 54%;
    right: -40px;
    transform: translate3d(0, 0, 0);
  }

  @include media-query($medium-up) {
    &:nth-child(1) {
      box-shadow: 0 20px 30px rgba(0,0,0,0.3);
    }
    &:nth-child(2) {
      left: -128px;
    }
    &:nth-child(3) {
      right: -120px;
    }
    &:nth-child(4) {
      left: -100px;
    }
    &:nth-child(5) {
      right: -80px;
    }
  }
}

.collection-content {
  padding-top: $gutter * 0.75; // same as page-content

  @include media-query($medium-up) {
    padding-top: $gutter * 1.5;
  }
}

.collection-filter {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  -ms-flex-pack: end;
      justify-content: flex-end;

  @include media-query($small) {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    position: -webkit-sticky;
    position: sticky;
    top: $grid-gutter-small;
    z-index: 5;

    .sticky-header & {
      top: 86px; // updated with JS based on sticky header height
    }
  }

  select,
  .btn {
    height: 44px; // magic number, just in filter menu
    font-size: 16px;
  }

  select {
    display: block;
    width: 100%;
  }

  .btn {
    padding: 0 20px; // because it has a fixed height

    @include media-query($small) {
      width: 100%;
      text-align: left;
    }

    .icon {
      position: relative;
      top: -2px;
      margin-right: 10px;
    }
  }
}

.collection-filter__item {
  -ms-flex: 1 1 auto;
      flex: 1 1 auto;
  margin-bottom: $gutter / 2;
}

.collection-filter .btn:not(.btn--tertiary-active),
.collection-filter__sort-container {
  background: $colorBody;
}

.collection-filter__item--drawer {
  -ms-flex: 0 1 50%;
      flex: 0 1 50%;
  padding-right: $gutter / 4;
}

.collection-filter__item--count {
  -ms-flex: 1 1 170%;
      flex: 1 1 170%;
  text-align: center;
}

.collection-filter__item--sort {
  -ms-flex: 0 1 50%;
      flex: 0 1 50%;
  padding-left: $gutter / 4;
}

@include media-query($small) {
  .collection-filter__item--count {
    -ms-flex-order: 3;
        order: 3;
    -ms-flex: 1 1 100%;
        flex: 1 1 100%;
  }
}

/*================ Module | Collection images at top of templates ================*/

$collectionHeroLarge: 420px;

$collectionHeroSmall: 250px;

.collection-hero {
  position: relative;
  width: 100%;
  height: $collectionHeroSmall;
  overflow: hidden;
  background: $colorLargeImageBg;

  @include media-query($medium-up) {
    height: $collectionHeroLarge;
  }
}

.collection-hero__content {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 100%;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: end;
      align-items: flex-end;
  padding: ($gutter / 2) 0;
  z-index: 1;

  @include media-query($medium-up) {
    padding: $gutter 0;
  }

  @if ($type_header_text_center) {
    -ms-flex-align: center;
        align-items: center;
  }

  // Account for overlayed header/toolbar
  .overlaid-header & {
    padding-top: 70px;

    @include media-query($medium-up) {
      padding-top: 100px;
    }
  }

  .page-width {
    width: 100%;
  }

  &:before {
    @include overlay();
    @include heroScrim();
    display: block;
  }

  .section-header {
    opacity: 0;
    animation: fade-in 0.5s forwards 1s;
  }
}

// Apply animations

@if ($animate_sections) {
  .collection-hero__image {
    opacity: 0;

    .no-js & {
      opacity: 1;
    }

    &.lazyloaded {
      animation: $animate_sections_background_style 2.5s cubic-bezier(0.26, 0.54, 0.32, 1) 0s forwards;
      transition: none; // fixes safari animation conflict
    }
  }
}

// Unload ajax styles

.collection-grid__wrapper.unload {
  min-height: 180px;
  position: relative;

  &:before,
  &:after {
    content: '';
    position: absolute;
    width: 100px;
    height: 5px;
    background: color-control($colorBody, 1);
    left: 50%;
    top: 350px;
    margin: -3px 0 0 -50px;
    z-index: $z-index-loader;
    opacity: 0;

    @include media-query($small) {
      top: 150px;
    }

    .no-js & {
      display: none;
    }
  }

  &:before {
    background: color-control($colorBody, 0.15);
    animation: fade-in 0.5s forwards 0s;
  }

  &:after {
    animation: preloading 0.5s ease 0.3s infinite;
  }

  [data-section-type="collection-template"] {
    opacity: 0;
    transition-duration: 0.3s;
    animation: grid-product__loading 1.5s ease infinite 1.5s;
  }
}

/*================ Collection sidebar ================*/

.collection-sidebar {
  padding-right: 10px;
  margin-bottom: 20px;
}

@include media-query($medium-up) {
  .grid__item--sidebar {
    position: -webkit-sticky;
    position: sticky;
    top: 10px; // updated with sticky header JS
    max-height: 90vh;
    overflow-y: scroll;
  }
}

.collection-sidebar__group {
  border-top: 1px solid $colorDrawerBorder;
  padding-top: 5px;
  margin-top: 5px;
  margin-bottom: 5px;

  &:first-child {
    margin-top: 0;

    .drawer & {
      border-top: 0;
    }
  }

  @include media-query($medium-up) {
    .collapsible-content__inner {
      padding-bottom: 5px;
    }
  }

  .tag-list {
    margin-bottom: 0;
  }
}

// Remove top border from first sidebar group

.collection-sidebar div:first-of-type .collection-sidebar__group {
  border-top: 0;
  padding-top: 0;
}

/*================ Logo Image ================*/

.site-header__logo .logo--has-inverted {
  .is-light & {
    opacity: 0;
    visibility: hidden;
    overflow: hidden;
    height: 0;
  }
}

.site-header__logo .logo--inverted {
  opacity: 0;
  visibility: hidden;
  overflow: hidden;
  height: 0;

  .is-light & {
    opacity: 1;
    visibility: visible;
    height: auto;
  }
}

/*================ Text Shop Name ================*/

.site-header__logo {
  @include media-query($medium-up) {
    text-align: left;
  }
}

.site-header__logo a,
.header-logo a {
  color: $colorNavText;

  .is-light & {
    color: $colorStickyNavLinks;

    &:hover {
      color: $colorStickyNavLinks;
    }
  }
}

.site-header {
  @if ($colorNav == $colorBody) {
    box-shadow: 0 0 1px rgba(0,0,0,0.2);

    .toolbar + .header-sticky-wrapper & {
      border-top: 0;
    }
  }

  .is-light & {
    box-shadow: none;
  }
}

/*================ Submenu items ================*/

.site-nav__dropdown-link {
  display: block;
  padding: 8px 15px;
  white-space: nowrap;

  .megamenu & {
    padding: 4px 0;
    white-space: normal;
  }
}

/*================ Module | Theme Tags ================*/

$tagActiveIconSize: 16px;

.tag-list__header {
  text-align: left;
}

.tag-list .tag-list {
  margin-left: $gutter / 2;
}

.tag-list a {
  display: block;
  line-height: 2;
}

.tag--active > a {
  font-weight: 900;
}

.tag-list--active-tags:empty {
  display: none;
}

.tag-list--checkboxes {
  padding-bottom: 6px;
  a {
    position: relative;
    padding-left: 25px;
    font-size: max($type_base_size - 2,14px);

    &:before {
      content: '';
      position: absolute;
      left: 0;
      top: 50%;
      transform: translateY(-50%);
    }

    &:before {
      border: 1px solid $colorBorder;
      height: $tagActiveIconSize;
      width: $tagActiveIconSize;
    }
  }
}

.tag-list--checkboxes .tag--active a:before {
  background-color: $colorTextBody;
  border-color: $colorTextBody;
}

// Remove tags (top of sidebar)

.tag--remove {
  position: relative;

  a {
    text-align: left;
  }

  // X icon sits over button, not in it
  .icon {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    pointer-events: none;
    color: $colorBtnPrimaryText;
  }
}

// Color swatches in sidebar

.tag-list--swatches {
  margin-top: 2px;
  margin-left: -4px; // same as .color-swatch margin

  .drawer & {
    margin-left: -2px;
  }

  li {
    display: inline-block;
  }
}

$label-bottom-margin: 12px;

.variant-input-wrap {
  border: 0;
  padding: 0;
  margin: 0 0 ($gutter / 1.5);
  position: relative;

  input {
    @include visuallyHidden;
  }

  label {
    @include baseFontStack;
    position: relative;
    display: inline-block;
    font-weight: normal;
    padding: 7px 15px 7px;
    margin: 0 8px $label-bottom-margin 0;
    background-color: $colorBody;
    box-shadow: 0 0 0 1px $colorBorder;

    @if ($type_body_text_center) {
      margin: 0 4px $label-bottom-margin;
    }

    &.disabled {
      color: $colorBorder;
    }

    &.disabled:after {
      position: absolute;
      content: "";
      left: 50%;
      top: 0;
      bottom: 0;
      border-left: 1px solid;
      border-color: $colorBorder;
      transform: rotate(45deg);
    }
  }

  input[type='radio']:focus + label {
    background-color: rgba($colorTextBody, 0.05);
    box-shadow: 0 0 0 1px $colorTextBody;
  }

  input[type='radio']:checked + label {
    box-shadow: 0 0 0 2px $colorTextBody;
  }
}

.variant-input {
  display: inline-block;

  // Firefox bug fix
  select & {
    display: block;
  }
}

.variant-wrapper {
  margin-bottom: -$label-bottom-margin;

  .no-js & {
    display: none;
  }
}

.variant-wrapper--dropdown {
  display: inline-block;
  max-width: 100%;
  margin-right: $gutter / 2;
  margin-bottom: 0;
}

.variant__label[for] {
  display: block;
  margin-bottom: 10px;
  cursor: default;
}

.variant__label-info {
  // undo accent stack styles
  text-transform: none;
  font-weight: normal;
  letter-spacing: 0;
}

.grid-product {
  margin-bottom: $gutter / 2;

  @include media-query($medium-up) {
    margin-bottom: $gutter;
  }

  @include media-query($small) {
    .grid-overflow-wrapper & {
      margin-bottom: 0;
    }
  }
}

.grid-product__content {
  position: relative;
  text-align: left;
}

.grid-product__title--heading {
  @include headingFontStack;
  font-size: $type_base_size + 2;
  @if $type_header_line_height < 1 {
    line-height: 1;
  }
}

@if ($type_product_capitalize) {
  .grid-product__title {
    text-transform: uppercase;
    font-size: $type_base_size - 2;
    letter-spacing: 0.2em;

    @include media-query($small) {
      font-size: $type_base_size - 3;
    }
  }
}

.grid-product__link {
  display: block;
}

.grid-product__link--inline {
  display: -ms-flexbox;
  display: flex;

  .grid-product__image-mask {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    margin-right: 10px;
  }

  .grid__image-ratio {
    width: 80px;
  }

  .grid-product__meta {
    text-align: left;
  }
}

.grid-product__image-mask {
  position: relative;
  overflow: hidden;
}

.grid-product__image {
  display: block;
  margin: 0 auto;
  width: 100%;
}

.grid-product__secondary-image {
  position: absolute;
  top: -1px;
  left: -1px;
  right: -1px;
  bottom: -1px;
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center;
  opacity: 0;
  background-color: $colorBody;

  .grid-product__image-mask:hover & {
    @if ($animate_images) {
      @if ($animate_images_style == 'zoom-fade') {
        animation: #{$animate_images_style}-small 5s cubic-bezier(0.26, 0.54, 0.32, 1) 0s forwards;
      } @else {
        animation: #{$animate_images_style}-small 0.2s cubic-bezier(0.26, 0.54, 0.32, 1) 0s forwards;
      }
    } @else {
      opacity: 1;
    }
  }

  @include media-query($small) {
    .supports-touch & {
      display: none;
    }
  }
}

.grid-product__color-image {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center;
  opacity: 0;
  transition: opacity 0.4s ease;
  background-color: $colorBody;

  &.is-active {
    @if ($animate_images) {
      @if ($animate_images_style == 'zoom-fade') {
        animation: #{$animate_images_style}-small 5s cubic-bezier(0.26, 0.54, 0.32, 1) 0s forwards;
      } @else {
        animation: #{$animate_images_style}-small 0.5s cubic-bezier(0.26, 0.54, 0.32, 1) 0s forwards;
      }
    } @else {
      opacity: 1;
    }
  }
}

.product-form-holder {
  opacity: 0;
  transition: opacity 0.4s ease;

  &.is-active {
    opacity: 1;
  }
}

// Product title/price

.grid-product__meta {
  @include baseTextCenter;
  position: relative;
  padding: 10px 0 6px 0;
  line-height: $type_base_line_height - 0.1;

  @include media-query($small) {
    .small--grid--flush & {
      padding-left: 10px;
      padding-right: 10px;
    }
  }
}

.grid-product__vendor {
  @include accentFontStack;
  @include accentFontSmallSize;
  margin-top: 5px;
  opacity: 0.65;
}

.grid-product__price {
  @include baseSmallFontStack;
  color: $colorPrice;
  margin-top: 5px;
}

.grid-product__price--original {
  text-decoration: line-through;
  margin-right: 5px;
}

.grid-product__price--savings {
  color: $colorTextSavings;
  margin-left: 5px;
  white-space: nowrap;
}

// Product sale and sold out tag

.grid-product__tag {
  font-size: $type_base_size * 0.65;
  position: absolute;
  top: 0;
  right: 0;
  line-height: 1;
  padding: 6px 5px 6px 7px;
  background-color: $colorBtnPrimary;
  color: $colorBtnPrimaryText;
  z-index: 2;
  transition: opacity 0.4s ease;

  &.grid-product__tag--sold-out {
    background-color: $colorBody;
    color: $colorTextBody;
  }

  @include media-query($medium-up) {
    font-size: $type_base_size * 0.85;
    padding: 7px 7px 7px 9px;
  }
}

.grid-product__tag--sale {
  background-color: $colorSaleTag;
  color: color-control($colorSaleTag, 1);
}

// Quick shop

.quick-product__btn {
  @include baseSmallFontStack;
  position: absolute;
  bottom: 10px;
  right: 10px;
  left: 10px;
  z-index: 2;
  background-color: $colorBtnPrimary;
  color: $colorBtnPrimaryText;
  overflow: hidden;
  padding: 8px 5px;
  text-align: center;
  cursor: pointer;
  opacity: 0;
  transform: translateY(5px);
  transition: opacity 0.25s ease, transform 0.25s ease-out, background 0.4s ease;

  .no-js & {
    display: none;
  }

  .grid-product__content:hover & {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.25s ease, transform 0.25s ease-out;
  }
}

// Mobile horizontal overflow grid

@include media-query($small) {
  .grid-overflow-wrapper {
    overflow: hidden;
    overflow-x: scroll;
    -webkit-overflow-scrolling: touch;

    .grid {
      white-space: nowrap;
      display: -ms-flexbox;
      display: flex;
    }

    .grid__item {
      width: 39vw;
      -ms-flex: 0 0 39vw;
          flex: 0 0 39vw;
      display: inline-block;
      float: none;
      white-space: normal;

      &:first-child {
        margin-left: $page-width-gutter-small;
      }

      &:last-child:after {
        content: '';
        display: inline-block;
        width: 100%;
        margin-right: $page-width-gutter-small;
      }
    }

    .grid__item--view-all {
      -ms-flex-item-align: center;
          -ms-grid-row-align: center;
          align-self: center;
    }

    .grid__item,
    .grid-product__price {
      font-size: 0.75rem;
    }

  }

  [data-aos="overflow__animation"] {
    transform: translateX(100vw);
    transition: all 0.8s cubic-bezier(.25,.46,.45,.94);

    &.aos-animate {
      transform: translateX(0);
    }
  }
}

// See all (mobile overflow)

.grid-product__see-all {
  display: inline-block;
  padding: $gutter / 2;
  text-align: center;
  border: 1px solid $colorBorder;
  margin-top: -60px; // approx of what title+price is
}

.grid-product__colors {
  @include baseTextCenter;
  margin-top: 3px;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  line-height: $colorSwatchCollectionSize;
  @if ($type_body_text_center) {
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
  }

  @include media-query($medium-up) {
    line-height: $colorSwatchCollectionSizeLarge;
  }

  & + & {
    margin-top: 4px;
  }
}

.color-swatch {
  position: relative;
  display: block;
  text-indent: -9999px;
  overflow: hidden;
  margin: 0 4px 4px;
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
  width: 2.5em;
  box-shadow: 0 0 0 1px $colorBorder;
  transition: box-shadow 0.2s ease;

  @if ($swatchStyle == 'round') {
    border-radius: 100%;
  }

  &:before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 2;
  }

  &:before {
    border: 3px solid $colorBody;

    // Try and avoid over-pixelated borders on some screens
    @if ($swatchStyle == 'round') {
      border-radius: 100%;
      border-width: 4px;
      top: -1px;
      left: -1px;
      right: -1px;
      bottom: -1px;
    }
  }
}

// Product grid direct variant links and

// sidebar color swatches

a.color-swatch:hover,
.tag:not(.tag--active) a:hover .color-swatch:hover {
  box-shadow: 0 0 0 1px $colorTextBody;
}

.tag--active .color-swatch {
  box-shadow: 0 0 0 2px $colorTextBody;
}

.color-swatch--small {
  width: $colorSwatchCollectionSize;
  height: $colorSwatchCollectionSize;

  @include media-query($medium-up) {
    width: $colorSwatchCollectionSizeLarge;
    height: $colorSwatchCollectionSizeLarge;
  }

  &:before {
    border: 2px solid $colorBody;

    @if ($swatchStyle == 'round') {
      border-width: 3px;
    }
  }
}

.color-swatch--filter {
  width: $colorSwatchSidebarSize;
  height: $colorSwatchSidebarSize;
}

.tag--active .color-swatch--filter:hover:after {
  position: absolute;
  content: "";
  left: 50%;
  top: 0;
  bottom: 0;
  border-left: 1px solid;
  border-color: $colorBorder;
  transform: rotate(45deg);
}

.collection-item {
  position: relative;
  display: block;
  margin-bottom: $grid-gutter-small;
  overflow: hidden;

  @include media-query($medium-up) {
    margin-bottom: $grid-gutter;
  }

  .grid--no-gutters & {
    margin-bottom: 0;
  }

  @if ($animate_images) {
    &:hover .collection-image {
      transform: scale(1.03,1.03);
      transition: all 0.8s ease;
    }
  }
}

.collection-item:not(.collection-item--below) {
  &:after {
    @include overlay;
    background-color: $colorGridOverlay;
    opacity: $colorGridOverlayOpacity;
    transition: opacity 0.8s ease;
  }

  &:hover:after {
    opacity: ($colorGridOverlayOpacity + 0.15);
  }
}

// Image sizing

.collection-image {
  position: relative;
  background-size: cover;
  background-repeat: no-repeat;
  transition: transform 0.3s ease;

  @if ($animate_images) {
    opacity: 0;
  }

  .collection-item--below & {
    background-size: contain;
  }
}

.collection-image--placeholder {
  opacity: 1;

  svg {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
  }
}

.collection-image--square {
  padding-bottom: 100%;
}

.collection-image--landscape {
  padding-top: 75%;
}

.collection-image--portrait {
  padding-top: 150%;
}

// Title

.collection-item__title {
  display: block;
  z-index: 2;
  line-height: 1em;

  @if ($type_product_capitalize) {
    span {
      text-transform: uppercase;
      font-size: 0.8em;
      letter-spacing: 0.2em;
    }
  }

  .collection-item--below & {
    margin-top: 5px;
  }
}

.collection-item__title--heading {
  @include headingFontStack;
}

.collection-item__title--overlaid,
.collection-item__title--overlaid-box {
  display: block;
  position: absolute;
  left: 10px;
  right: 10px;

  @include media-query($medium-up) {
    left: 18px;
    right: 18px;
  }
}

.collection-item__title--overlaid {
  color: #fff;
  text-shadow: 0 0 50px rgba(0,0,0,1);
}

.collection-item__title--overlaid-box {
  > span {
    display: inline-block;
    background-color: $colorBody;
    -webkit-box-decoration-break: clone;
            box-decoration-break: clone;
    padding: 8px 15px;
    color: $colorTextBody;
  }
}

// Title alignment

.collection-item__title--top-center,
.collection-item__title--center,
.collection-item__title--bottom-center {
  text-align: center;
}

.collection-item__title--top-right
.collection-item__title--right,
.collection-item__title--bottom-right {
  text-align: right;
}

.collection-item__title--left,
.collection-item__title--center,
.collection-item__title--right {
  &[class*="collection-item__title--overlaid"] {
    top: 50%;
    transform: translateY(-50%);
  }
}

// Top align some titles

.collection-item__title--top-left,
.collection-item__title--top-center,
.collection-item__title--top-right {
  &[class*="collection-item__title--overlaid"] {
    top: 10px;

    @include media-query($medium-up) {
      top: 18px;
    }
  }
}

// Bottom align some titles

.collection-item__title--bottom-left,
.collection-item__title--bottom-center,
.collection-item__title--bottom-right {
  &[class*="collection-item__title--overlaid"] {
    bottom: 10px;

    @include media-query($medium-up) {
      bottom: 18px;
    }
  }
}

.custom-content {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: stretch;
      align-items: stretch;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  width: auto;
  margin-bottom: -$grid-gutter;
  margin-left: -$grid-gutter;

  @include media-query($small) {
    margin-bottom: -$grid-gutter-small;
    margin-left: -$grid-gutter-small;
  }
}

.custom__item {
  -ms-flex: 0 0 auto;
      flex: 0 0 auto;
  margin-bottom: $grid-gutter;
  padding-left: $grid-gutter;
  max-width: 100%;

  @include media-query($small) {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    padding-left: $grid-gutter-small;
    margin-bottom: $grid-gutter-small;

    &.small--one-half {
      -ms-flex: 1 0 50%;
          flex: 1 0 50%;
      max-width: 400px;
      margin-left: auto;
      margin-right: auto;
    }
  }

  img {
    display: block;
  }
}

.custom__item-inner {
  position: relative;
  display: inline-block;
  text-align: left;
  max-width: 100%;
  width: 100%;
}

.custom__item-inner--video,
.custom__item-inner--html {
  display: block;
}

.custom__item-inner--image {
  width: 100%;
}

.custom__item-inner--html img {
  display: block;
  margin: 0 auto;
}

.custom__item-inner--placeholder-image {
  width: 100%;
}

/*================ Flex item alignment ================*/

.align--top-middle {
  text-align: center;
}

.align--top-right {
  text-align: right;
}

.align--middle-left {
  -ms-flex-item-align: center;
      -ms-grid-row-align: center;
      align-self: center;
}

.align--center {
  -ms-flex-item-align: center;
      -ms-grid-row-align: center;
      align-self: center;
  text-align: center;
}

.align--middle-right {
  -ms-flex-item-align: center;
      -ms-grid-row-align: center;
      align-self: center;
  text-align: right;
}

.align--bottom-left {
  -ms-flex-item-align: end;
      align-self: flex-end;
}

.align--bottom-middle {
  -ms-flex-item-align: end;
      align-self: flex-end;
  text-align: center;
}

.align--bottom-right {
  -ms-flex-item-align: end;
      align-self: flex-end;
  text-align: right;
}

.article__grid-image {
  display: block;
  text-align: center;
  margin-bottom: 17px;

  @include media-query($medium-up) {
    margin-bottom: 20px;
  }

  img {
    display: block;
  }
}

.article__title {
  font-size: $type_base_size + 2;
}

.article__date {
  @include baseExtraSmallFontStack;
  margin-bottom: 3px;

  .section-header & {
    margin-bottom: $gutter / 2;
  }
}

.article__author {
  margin-top: 2px;
  @include baseExtraSmallFontStack;
}

.article__grid-meta {
  margin-bottom: $gutter;

  @include media-query($medium-up) {
    @include baseTextCenter;
  }
}

.article__excerpt {
  margin-top: 10px;
}

.logo-bar {
  text-align: center;
  margin-bottom: -$gutter;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  -ms-flex-pack: center;
      justify-content: center;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
}

.logo-bar__item {
  -ms-flex: 0 1 110px;
      flex: 0 1 110px;
  vertical-align: middle;
  margin: 0 ($gutter / 2) ($gutter / 1.5);
  @include media-query($medium-up) {
    -ms-flex: 0 1 160px;
        flex: 0 1 160px;
    margin: 0 ($gutter / 1.5) $gutter;
  }
}

.logo-bar__image {
  display: block;
  margin: 0 auto;
}

.logo-bar__link {
  display: block;
}

@if ($animate_images) {
  [data-aos="logo__animation"] .logo-bar__item {
    opacity: 0;
  }

  [data-aos="logo__animation"].aos-animate .logo-bar__item {
    animation: fade-in 0.5s ease 0s forwards;
  }
  [data-aos="logo__animation"].aos-animate .logo-bar__item:nth-child(2) {
    animation-delay: 0.2s;
  }
  [data-aos="logo__animation"].aos-animate .logo-bar__item:nth-child(3) {
    animation-delay: 0.4s;
  }
  [data-aos="logo__animation"].aos-animate .logo-bar__item:nth-child(4) {
    animation-delay: 0.6s;
  }
  [data-aos="logo__animation"].aos-animate .logo-bar__item:nth-child(5) {
    animation-delay: 0.8s;
  }
  [data-aos="logo__animation"].aos-animate .logo-bar__item:nth-child(6) {
    animation-delay: 1.0s;
  }
  [data-aos="logo__animation"].aos-animate .logo-bar__item:nth-child(7) {
    animation-delay: 1.2s
  }
  [data-aos="logo__animation"].aos-animate .logo-bar__item:nth-child(8) {
    animation-delay: 1.4s;
  }
  [data-aos="logo__animation"].aos-animate .logo-bar__item:nth-child(9) {
    animation-delay: 1.6s;
  }
}

.background-media-text {
  position: absolute;
  width: 100%;
  overflow: hidden;
  background: $colorLargeImageBg;
}

.background-media-text__video {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 100%;
  background-size: cover;
  background-position: 50% 50%;
  background-repeat: no-repeat;
  z-index: 0;
}

.background-media-text__video {
  @include media-query($small) {
    width: 300%;
    left: -100%;
  }

  iframe,
  video {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
    pointer-events: none;

    @include media-query($medium-up) {
      height: 120%;
      max-width: none;
      left: -100%;
      height: 150%;
      width: 300%;
    }

    // This min-width may need to change slightly depending on
    // embedded video dimensions. Can do on a per-shop basis
    @media screen and (min-width: 1140px) {
      width: 100%;
      height: 300%;
      left: auto;
      top: -100%;
    }
  }
}

.background-media-text__inner {
  position: absolute;
  z-index: 1;
  width: 100%;
}

.background-media-text__aligner {
  margin: ($gutter * 2);
}

.background-media-text__text {
  text-align: left;
  font-size: 1.1em;
  background: $colorBody;
  padding: $gutter;
  width: 380px;
  @include media-query($small) {
    text-align: center;
  }
}

.background-media-text__text--framed {
  border: $textFrameMarginSmall solid $colorBody;
  box-shadow: inset 0 0 0 2px $colorTextBody;

  @include media-query($medium-up) {
    border-width: $textFrameMarginLarge;
  }
}

.background-media-text__text .btn {
  margin-top: $gutter / 2;
}

@include media-query($medium-up) {
  .background-media-text--right .animation-cropper {
    float: right;
  }
}

// Section height

.background-media-text__container {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}

@include media-query($small) {
  .background-media-text {
    position: relative;
  }
  .background-media-text__inner {
    position: relative;
  }
  .background-media-text__container,
  .background-media-text__video {
    position: relative;
    height: 240px;

    .promo-video & {
      height: 550px;
    }
  }
  .background-media-text__aligner {
    margin: -6px 6px 6px;
  }
  .background-media-text__text {
    padding: $gutter * 0.75;
    width: auto;
  }
  .background-media-text.loading {
    &:before, &:after {
      top: 117px;
    }
  }
}

@include media-query($medium-up) {
  .background-media-text__spacer.background-media-text--450,
  .background-media-text--450,
  .background-media-text--450 .background-media-text__video {
    min-height: 450px;
  }
  .background-media-text__spacer.background-media-text--550,
  .background-media-text--550,
  .background-media-text--550 .background-media-text__video {
    min-height: 550px;
  }
  .background-media-text__spacer.background-media-text--650,
  .background-media-text--650,
  .background-media-text--650 .background-media-text__video {
    min-height: 650px;
  }
  .background-media-text__spacer.background-media-text--750,
  .background-media-text--750,
  .background-media-text--750 .background-media-text__video {
    min-height: 750px;
  }
}

@if ($animate_sections) {
  [data-aos="background-media-text__animation"] .background-media-text__image,
  [data-aos="background-media-text__animation"] .background-media-text__image svg,
  [data-aos="background-media-text__animation"] .background-media-text__video {
    opacity: 0;

    .no-js & {
      animation: none;
      opacity: 1;
    }
  }

  [data-aos="background-media-text__animation"].aos-animate .background-media-text__image.lazyloaded,
  [data-aos="background-media-text__animation"].aos-animate .background-media-text__image svg,
  [data-aos="background-media-text__animation"].loaded.aos-animate .background-media-text__video {
    animation: $animate_sections_background_style 2.5s cubic-bezier(0.26, 0.54, 0.32, 1) 0s forwards;
    transition: none; // fixes safari animation conflict
  }

  @include media-query($medium-up) {
    [data-aos="background-media-text__animation"] .background-media-text__inner .animation-contents {
      opacity: 0;

      .no-js & {
        animation: none;
        opacity: 1;
      }
    }

    [data-aos="background-media-text__animation"].loaded.aos-animate .background-media-text__inner .animation-contents {
      animation: $animate_sections_text_style 1s cubic-bezier(0.26, 0.54, 0.32, 1) 0.5s forwards;
    }
  }
}

@else {
  [data-aos="background-media-text__animation"] .background-media-text__video {
    opacity: 0;

    .no-js & {
      opacity: 1;
    }
  }

  [data-aos="background-media-text__animation"].loaded .background-media-text__video {
    animation: fade-in 1.5s cubic-bezier(0.26, 0.54, 0.32, 1) 0s forwards;
  }
}

.quote-icon {
  display: block;
  margin: 0 auto 20px;
}

// Text styles

.testimonials-slider__text {
  padding: 0;
  margin-bottom: $gutter * 1.5;

  .slick-slider & {
    margin-right: $gutter;
    margin-bottom: 0;
  }

  .text-center .slick-slider & {
    margin-left: $gutter / 2;
    margin-right: $gutter / 2;
  }

  cite {
    font-style: normal;
  }

  p {
    margin-bottom: $gutter / 4;

    + cite {
      margin-top: 0;
    }
  }
}

// Section image

$testimonialImageSize: 142px;

.testimonail-image {
  max-width: $testimonialImageSize;
  background-color: $colorBody;

  .text-center & {
    margin-left: auto;
    margin-right: auto;
  }
}

.testimonail-image--round {
  width: $testimonialImageSize;
  height: $testimonialImageSize;
  max-width: none;
  border-radius: $testimonialImageSize;

  // fix animation bug in Safari
  img {
    overflow: hidden;
    border-radius: $testimonialImageSize;
  }
}

// Slick overrides

.testimonials-slider.slick-initialized {
  cursor: grab;
}

@include media-query($medium-up) {
  .testimonials-slider.slick-initialized[data-count="1"],
  .testimonials-slider.slick-initialized[data-count="2"],
  .testimonials-slider.slick-initialized[data-count="3"] {
    cursor: default;

    .slick-track {
      cursor: default;
    }
  }
}

// Slick dot positioning and color

.testimonials-wrapper .slick-dots {
  position: relative;
  bottom: 0;
  margin-top: $gutter / 2;

  li button::before {
    background-color: $colorTextBody;
  }
}

// Slick selected outline overrides

.testimonials-wrapper .slick-slide[tabindex="0"] {
  outline: none;
}

.announcement-bar {
  font-size: $type_base_size * 0.75;
  position: relative;
  text-align: center;
  background-color: $colorAnnouncement;
  color: $colorAnnouncementText;
  padding: 10px 0;
  @include media-query($medium-up) {
    font-size: $type_base_size * 0.85;
  }

  @if ($colorAnnouncement == $colorBody) {
    border-bottom: 1px solid $colorBorder;
  }
}

.announcement-slider__slide {
  display: none;
  position: relative;
  overflow: hidden;
  padding: 0 5px;

  &:first-child {
    display: block;
  }
}

// Announcement text styles

.announcement-link {
  display: block;
  color: $colorAnnouncementText;

  &:hover,
  &:active {
    color: $colorAnnouncementText;
  }
}

.announcement-text {
  font-weight: bold;
  display: block;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-size: 0.85em;
}

.announcement-link-text {
  display: block;

  .announcement-link & {
    text-decoration: underline;
  }

  a {
    color: inherit;
  }
}

@include media-query($medium-up) {
  .announcement-slider--compact {
    .announcement-text,
    .announcement-link-text {
      display: inline;
    }

    .announcement-text + .announcement-link-text {
      padding-left: 5px;
    }
  }
}

.shopify-challenge__container {
  padding: 30px 22px;
  @include media-query($medium-up) {
    padding: 120px 0;
  }
}

.newsletter {
  margin: 0 auto;
  max-width: 520px;
}

.newsletter-section .errors {
  margin-left: auto;
  margin-right: auto;
  max-width: 520px;
}

.modal .newsletter .h1 {
  margin-bottom: $gutter / 2;
  @include media-query($medium-up) {
    margin-bottom: $gutter;
  }
}

.modal .newsletter .image-wrap {
  margin-bottom: $gutter / 4;
  @include media-query($medium-up) {
    margin-bottom: $gutter / 2;
  }
}

.modal .newsletter .text-close {
  text-decoration: underline;
}

.newsletter__input-group {
  margin: 0 auto 20px;
  max-width: 400px;

  &:last-child {
    margin-bottom: 0;
  }
}

.newsletter__input {
  &::-webkit-input-placeholder {
    color: $colorTextBody;
    opacity: 1;
  }

  &:-moz-placeholder {
    color: $colorTextBody;
    opacity: 1;
  }

  &::-moz-placeholder {
    color: $colorTextBody;
    opacity: 1;
  }

  &:-ms-input-placeholder {
    color: $colorTextBody;
  }

  &::-ms-input-placeholder {
    color: $colorTextBody;
    opacity: 1;
  }
}

@include media-query($small) {
  .form__submit--large {
    display: none;
  }

  .form__submit--small {
    display: block;
  }
}

@include media-query($medium-up) {
  .form__submit--large {
    display: block;
  }

  .form__submit--small {
    display: none;
  }
}

.map-section {
  position: relative;
  height: 650px;
  width: 100%;
  overflow: hidden;

  @include media-query($medium-up) {
    height: 500px;
  }

  .page-width {
    height: 100%;
  }
}

.map-section--load-error {
  height: auto;
}

.map-onboarding {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 100%;
  background-size: cover;
  background-position: 50% 50%;
  background-repeat: no-repeat;
  z-index: 0;
}

.map-section__overlay-wrapper {
  position: relative;
  height: 100%;
}

.map-section__overlay {
  position: relative;
  display: inline-block;
  background-color: $colorBody;
  padding: $gutter;
  margin: $gutter;
  width: 100%;
  z-index: 3;

  @include media-query($medium-up) {
    position: absolute;
    left: $gutter;
    top: 50%;
    transform: translateY(-50%);
    margin-top: 0;
    width: 30%;
  }

  .map-section--load-error & {
    position: static;
    transform: translateY(0);
  }
}

.map-section__link {
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
}

// Optically center map in visible area with

// extended height/widths and negative margins

.map-section__container {
  position: absolute !important; // api will inline relative sometimes
  top: 0;
  left: 0;
  width: 100%;
  height: 150%;
  margin-bottom: -50%;

  @include media-query($medium-up) {
    width: 130%;
    height: 100%;
    margin: 0 -30% 0 0;
  }
}

// Animations

@if ($animate_sections) {
  [data-aos="map-section__animation"] .map-section__container {
    animation: fade-out 0.5s cubic-bezier(0.26, 0.54, 0.32, 1) 0s forwards;
    will-change: opacity, transform;
    opacity: 0;
  }

  [data-aos="map-section__animation"].aos-animate .map-section__container {
    animation: $animate_sections_background_style 2.5s cubic-bezier(0.26, 0.54, 0.32, 1) 0s forwards;
  }
}

.image-row {
  @include clearfix;
}

.image-row__placeholder {
  float: left;
  width: 33.33%;

  .image-row--gutters & {
    width: 32%;
    margin: 0 1% 2%;

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

    &:last-child {
      margin-right: 0;
    }
  }
}

.image-row__image {
  position: relative;
  min-height: 1px;
  float: left;

  &:after {
    content: '';
    display: block;
    height: 0;
    width: 100%;
  }

  img {
    display: block;
    position: absolute;
    top: 0;
    left: 0;
  }
}

// Zoom cursor unless inside a link

.image-row__image .js-photoswipe__zoom {
  cursor: zoom-in;
}

.image-row__image a .js-photoswipe__zoom {
  cursor: pointer;
}

$z-index-promo-tint: 1;

$z-index-promo-color-overlay: 2;

$z-index-promo-frame: 2;

$z-index-promo-text: 2;

$z-index-promo-content: 3;

$z-index-promo-link: 4;

/*================ Promo grid ================*/

.promo-grid--space-top {
  padding-top: $indexSectionMarginSmall;
  @include media-query($medium-up) {
    padding-top: $indexSectionMarginLarge;
  }
}

.promo-grid--space-bottom {
  padding-bottom: $indexSectionMarginSmall;
  @include media-query($medium-up) {
    padding-bottom: $indexSectionMarginLarge;
  }
}

.promo-grid__container {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: start;
      align-items: flex-start;
  position: relative;
  overflow: hidden;
  background-repeat: no-repeat;

  .btn {
    margin-right: 10px;

    @include media-query($small) {
      margin-right: 7px;
    }
  }

  &.horizontal-center {
    -ms-flex-pack: center;
        justify-content: center;
    text-align: center;

    .btn {
      margin: 2px 5px;
    }
  }

  &.horizontal-right {
    -ms-flex-pack: end;
        justify-content: flex-end;
    text-align: right;
  }
}

.promo-grid__container--boxed {
  @include media-query($small) {
    .promo-grid__bg {
      height: 60%;
    }

    .promo-grid__content {
      width: 100%;
      margin-top: 55%;
      box-shadow: 0 0 50px rgba(0,0,0,0.1);
    }
  }
}

// Framed but not boxed

.promo-grid__container--framed:not(.promo-grid__container--boxed):after {
  @include overlay();
  border: $textFrameMarginSmall solid transparent;
  box-shadow: inset 0 0 0 2px $colorHeroText;
  z-index: $z-index-promo-frame;

  @include media-query($medium-up) {
    border-width: $textFrameMarginLarge;
  }

  // When text is not overlaying image, border should be text color
  .type-sale_collection &,
  .type-product &,
  .type-banner & {
    box-shadow: inset 0 0 0 2px $colorTextBody;
  }
}

.promo-grid__container--tint:before {
  @include overlay();
  opacity: 1;
  z-index: $z-index-promo-tint;
  pointer-events: none;
}

.promo-grid__slide-link {
  display: block;
  position: absolute;
  width: 100%;
  height: 100%;
  z-index: $z-index-promo-link;

  &:hover {
    & ~ .promo-grid__content .btn:not(.btn--secondary):not(.btn--tertiary):not(.btn--inverse) {
      background: lighten($colorBtnPrimary, 10%);
      transition-delay: 0.25s;

      @if ($buttonStyle != 'angled') {
        &:after {
          animation: shine 0.75s cubic-bezier(0.01, 0.56, 1, 1);
        }
      }
    }
  }
}

/*================ Promo grid content ================*/

.promo-grid__content {
  -ms-flex: 0 1 auto;
      flex: 0 1 auto;
  padding: 2em 2.5em; // Relative to text-size
  position: relative;
  min-width: 200px;
  z-index: $z-index-promo-content;

  .promo-grid__container--framed:not(.promo-grid__container--boxed) & {
    margin: 1.5em;
  }

  p:last-child {
    margin-bottom: 0;
  }

  .vertical-top & {
    -ms-flex-item-align: start;
        align-self: flex-start;
  }

  .vertical-center & {
    -ms-flex-item-align: center;
        -ms-grid-row-align: center;
        align-self: center;
  }

  .vertical-bottom & {
    -ms-flex-item-align: end;
        align-self: flex-end;
  }
}

.promo-grid__content--boxed {
  background: $colorBody;
  color: $colorTextBody;
  margin: $gutter / 2;

  @include media-query($small) {
    margin: 10px;
  }
}

.promo-grid__content--framed.promo-grid__content--boxed {
  border: $textFrameMarginSmall solid $colorBody;
  box-shadow: inset 0 0 0 2px $colorTextBody;

  @include media-query($medium-up) {
    border-width: $textFrameMarginLarge;
  }
}

// Radial gradient on only some types

.type-advanced,
.type-simple {
  .promo-grid__content:not(.promo-grid__content--boxed):not(.promo-grid__content--sale) {
    color: $colorHeroText;

    a {
      color: $colorHeroText;
      border-bottom: 2px solid $colorHeroText;

      @if ($buttonStyle == 'angled') {
        &:not(.btn--inverse) {
          border-bottom: 0;
        }
      }
    }

    .btn--inverse {
      border-color: $colorHeroText;
    }

    &:after {
      @include heroRadial;
      z-index: $z-index-promo-tint;
    }
  }
}

/*================ Custom promo typography ================*/

.type-advanced,
.type-product,
.type-sale_collection {
  .rte--strong {
    @include headingFontStack;
    line-height: 1.1;
  }

  .rte--em {
    @include accentFontStack;
    font-size: 0.9375em;
    line-height: 1.2;
  }
}

.type-advanced,
.type-product {
  .rte--strong {
    font-size: 1.6em;
    line-height: 1.1;
  }
}

@include media-query($medium-up) {
  .type-advanced,
  .type-product {
    .rte--strong {
      font-size: 2.125em;
    }
  }

  .type-product {
    &.flex-grid__item--50,
    &.flex-grid__item--33 {
      .rte--strong {
        font-size: 1.6em;
      }
    }
  }
}

/*================ Promo grid elements ================*/

.promo-grid__bg {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center;
  text-align: left;

  // Add color overlay if not boxed version
  .promo-grid__container:not(.promo-grid__container--boxed) &:before {
    @include overlay($z-index-promo-color-overlay);
    @include heroScrim();
  }

  .placeholder-svg {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    max-width: none;
    width: auto;
    padding: 0;
  }
}

.promo-grid__bg-image {
  z-index: $z-index-hero-image;
  opacity: 0;

  .no-js & {
    opacity: 1;
  }

  &.lazyloaded {
    animation: $animate_images_style 1s cubic-bezier(0.26, 0.54, 0.32, 1) 0s forwards;
    transition: none; // fixes safari animation conflict
  }
}

.promo-grid__text {
  position: relative;
  z-index: $z-index-promo-frame;

  .btn {
    margin-top: 2px;
    margin-bottom: 2px;
  }
}

/* ======================= Type: Advanced ===================== */

.type-advanced {
  .promo-grid__content {
    padding: 2em;

    @include media-query($small) {
      padding: 1.5em;
    }
  }

  .btn {
    margin-bottom: 10px;

    @include media-query($small) {
      margin-bottom: 7px;
    }
  }
}

/* ======================= Type: Sale Collection ===================== */

.type-sale_collection {
  -ms-flex-positive: 1;
      flex-grow: 1;
  max-height: 600px;

  .promo-grid__container {
    background: $colorSmallImageBg;
    -ms-flex-align: center;
        align-items: center;
  }

  .promo-grid__content {
    padding: 2em;
    -ms-flex: 0 1 auto;
        flex: 0 1 auto;
    min-width: 0;

    @include media-query($small) {
      padding: 1em;
      font-size: 0.9em;
    }

    @include media-query($medium-up) {
      &:not(.promo-grid__content--small-text) {
        font-size: 1.5em;
      }
    }
  }

  // Custom typography styles
  .rte--block {
    margin-bottom: 7.5px;

    &:last-child {
      margin-bottom: 0;
    }
  }

  .rte--strong {
    position: relative;
    display: block;
    font-size: 3.375em;
    line-height: 1;
    white-space: nowrap;
  }

  // Custom type layout for "off" when following "%"
  small {
    display: inline;
    font-size: 0.25em;
    margin-left: -2.9em;
    letter-spacing: 0;
  }
}

.type-sale-images {
  -ms-flex: 1 1 50%;
      flex: 1 1 50%;

  svg {
    display: block;
    width: 50%;
    float: left;
  }
}

.type-sale-images__crop {
  overflow: hidden;
  width: 100%;
}

.type-sale-images__image {
  width: 50%;
  float: left;
}

/* ======================= Type: Simple ===================== */

.type-simple {
  .promo-grid__content {
    padding: ($gutter / 1);
    @include media-query($small) {
      padding: ($gutter / 2);
    }
  }
}

.promo-grid__title:last-child {
  margin-bottom: 0;
}

/* ======================= Type: Image ===================== */

.type-image {
  .promo-grid__container {
    background: none;
  }

  img,
  a,
  .image-wrap {
    width: 100%;
  }
}

/*================ Type: Banner ================*/

.type-banner {
  -ms-flex: 1 0 100%;
      flex: 1 0 100%;

  .promo-grid__container {
    background: none;
  }

  .promo-grid__container--framed:not(.promo-grid__container--boxed) {
    padding: 1em;
  }

  p {
    margin: 5px 10px;
    display: inline-block;
    vertical-align: middle;
    line-height: 1.2;
  }
}

.type-banner__link {
  display: block;
  -ms-flex: 1 1 100%;
      flex: 1 1 100%;
}

.type-banner__content {
  width: 100%;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  -ms-flex-pack: center;
      justify-content: center;
  padding: 0 10px;
}

.type-banner__text {
  position: relative;
  -ms-flex: 0 1 auto;
      flex: 0 1 auto;
  z-index: $z-index-promo-text;
  padding: 10px 20px;
}

.type-banner__image {
  -ms-flex: 0 0 45%;
      flex: 0 0 45%;

  @include media-query($medium-up) {
    -ms-flex: 0 0 200px;
        flex: 0 0 200px;
  }
}

/*================ Type: Product ================*/

.type-product__wrapper {
  -ms-flex: 1 1 100%;
      flex: 1 1 100%;
  position: relative;
  padding: 2em 0;
  z-index: $z-index-promo-content;

  &.promo-grid__container--tint,
  .promo-grid__container--framed & {
    padding: 2em;
  }
}

.type-product__content {
  @include media-query($small) {
    margin-top: $gutter / 2;
  }
}

.type-product__images {
  position: relative;
  width: 100%;
  margin: 10px 0 10px 10px;
}

.type-product__image {
  position: relative;

  &:first-child {
    width: 100%;
    max-width: 75%;
  }

  &:nth-child(2) {
    position: absolute;
    bottom: 40px;
    right: 0;
    width: 100%;
    max-width: 30%;
  }
}

.type-product__labels {
  position: absolute;
  top: -10px;
  right: -10px;
  z-index: $z-index-promo-text;
  text-align: right;

  @include media-query($medium-up) {
    .flex-grid__item--50,
    .flex-grid__item--33 {
      font-size: 0.9em;
    }
  }
}

.type-product__label {
  padding: 4px 12px;
  background-color: $colorBtnPrimary;
  color: $colorBtnPrimaryText;
  float: right;
  clear: both;
}

.type-product__label--secondary {
  background-color: $colorBody;
  color: $colorTextBody;
}

/*================ View-specific styles ================*/

/*================ Templates | Cart Page ================*/

.cart__row {
  position: relative;
  margin-bottom: $gutter;

  &:first-child {
    border-bottom: 1px solid $colorBorder;
    padding-bottom: $gutter / 2;
  }

  &:last-child {
    border-top: 1px solid $colorBorder;
    padding-top: $gutter / 2;
  }

  .js-qty__wrapper {
    margin: 0 auto;
  }
}

.cart__checkout-wrapper {
  margin-top: 20px;

  .additional-checkout-buttons {
    margin-top: 12px;
  }
}

.drawer .additional-checkout-buttons {
  margin: 10px 0;

  [data-shopify-buttoncontainer] {
    -ms-flex-pack: center;
        justify-content: center;

    > * {
      height: auto !important;
    }
  }
}

@include media-query($medium-up) {
  .cart__update + .cart__checkout {
    margin-left: $gutter / 2;
  }
}

.cart__row--table {
  display: table;
  table-layout: fixed;
  width: 100%;

  .grid__item {
    display: table-cell;
    vertical-align: middle;
    float: none;
  }
}

@include media-query($medium-up) {
  .cart__row--table-large {
    display: table;
    table-layout: fixed;
    width: 100%;

    .grid__item {
      display: table-cell;
      vertical-align: middle;
      float: none;
    }

    .cart__image {
      width: 150px;
    }
  }
}

.cart__image {
  display: block;

  img {
    width: 100%;
    display: block;
  }

  @include media-query($medium-down) {
    margin-bottom: $gutter / 2;
  }
}

.cart__product-name {
  margin-bottom: 0;
}

.cart__product-qty {
  text-align: center;
  margin: 0 auto;
  max-width: 80px;
}

.cart__price {
  display: block;
}

.cart__price--strikethrough {
  text-decoration: line-through;
}

.cart__discount {
  color: $colorTextSavings;
}

.cart__product-meta {
  margin-bottom: 0;

  & + & {
    margin-top: 20px;
  }
}

// PayPal button has unhelpful z-index

iframe.zoid-component-frame {
  z-index: 1 !important;
}

/*================ Templates | Product Page ================*/

.page-content--product {
  padding-top: 55px;
}

@include media-query($small) {
  .page-content--product {
    padding-top: 0;
  }

  .grid--product-images-right {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;

    .grid__item:first-child {
      -ms-flex-order: 2;
          order: 2;
    }
  }
}

// Prevent quick view horizontal jank when image loads

.modal .page-content--product {
  width: $page-width;
  max-width: 100%;
}

.product-single__meta {
  padding-left: 45px;

  @include media-query($small) {
    text-align: center;
    padding-left: 0;
    margin-top: $gutter / 2;
  }

  .grid--product-images-right & {
    padding-left: 0;
    padding-right: 45px;

    @include media-query($small) {
      padding-right: 0;
    }
  }

  .social-sharing {
    margin-top: $gutter;
  }

  .rte {
    text-align: left;
  }
}

.product-single__vendor {
  @include accentFontStack;
  @include accentFontSmallSize;
  margin-bottom: $gutter / 4;
}

.product-single__title {
  margin-bottom: 10px;
  word-wrap: break-word;
}

.product-single__review-link {
  display: block;

  .spr-badge[data-rating="0.0"] {
    display: none;
  }

  .spr-badge {
    margin-bottom: 7px;
  }

  .spr-badge-starrating {
    margin-right: 8px;
  }

  .spr-badge-caption {
    font-size: em($type_base_size - 1);
  }
}

.product-single__sku {
  margin-bottom: $gutter / 6;
}

.product-single__description {
  margin-bottom: $gutter;
}

.product-single__description-full {
  margin: $gutter 0;
}

.product-single__form {
  margin-bottom: $gutter;
}

.product-single__variants {
  display: none;

  .no-js & {
    display: block;
    margin-bottom: $gutter;
  }
}

.product-image-main {
  position: relative;
}

.trust-image {
  margin: 0 auto $gutter;
}

// Video div

.product__video-wrapper {
  position: relative;
  overflow: hidden;
  max-width: 100%;
  padding-bottom: 100%; // apsect ratio overwritten inline
  height: auto;
  background-color: $colorSmallImageBg;

  iframe {
    width: 100%;
    height: 100%;
    transition: opacity 0.5s ease-in;
  }

  // Put overlay on muted videos because they cannot be interacted with
  &[data-video-style="muted"].loaded:before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1;
  }

  // Unless low power mode requires them to be touched to start
  &.video-interactable:before {
    display: none;
  }

  &.loading:before {
    background: color-control($colorSmallImageBg, 0.15);
  }
  &.loading:after {
    background: color-control($colorSmallImageBg, 1);
  }

  // Make sure states don't overlap
  &.loaded:after {
    display: none;
  }

  &.loading iframe {
    opacity: 0.01; // sneaky way to avoid talking to an invisible YT iframe
  }

  &.loaded iframe {
    opacity: 1;
  }
}

.product__video {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.product-video-trigger {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

// Images

.product__photos--beside {
  display: -ms-flexbox;
  display: flex;
  width: 100%;
}

.product__photos {
  direction: ltr;

  a {
    display: block;
    max-width: 100%;
  }

  img {
    display: block;
    margin: 0 auto;
    max-width: 100%;
    width: 100%;
  }
}

.product__main-photos {
  position: relative;
  overflow: hidden;
  -ms-flex: 1 1 auto;
      flex: 1 1 auto;

  img {
    display: none;
  }

  .starting-slide img,
  .slick-initialized img {
    display: block;
  }

  .secondary-slide:not(.slick-slide) {
    display: none;
  }

  @include media-query($medium-up) {
    .slick-slide:not(.slick-current) {
      opacity: 0 !important;
      visibility: hidden;
    }
  }

  @include media-query($small) {
    margin-left: -$page-width-gutter-small;
    margin-right: -$page-width-gutter-small;

    .slick-list {
      padding-left: 10%; // show a bit of the next image
      padding-right: 10%;
    }

    // Prevent click/tap on partially visible image
    .slick-slide:not(.slick-current) {
      position: relative;

      &:before {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 2;
      }
    }

    .slick-slide .product-image-main {
      margin-right: 4px;
    }

    // Force cloned images to be visible
    .slick-cloned img {
      opacity: 1;
    }
  }
}

.product__photo-dots {
  .slick-dots {
    position: static;
  }

  .slick-dots li button::before {
    background-color: $colorLink;
  }
}

// Thumbnails

.product__thumbs {
  position: relative;
}

.product__thumbs--below {
  margin-top: $grid-gutter-small / 2;

  @include media-query($medium-up) {
    margin-top: $gutter / 2;
  }
}

.product__thumbs--beside {
  -ms-flex: 0 0 60px;
      flex: 0 0 60px;
  max-width: 60px;
  margin-left: $grid-gutter-small / 2;

  @include media-query($medium-up) {
    -ms-flex: 0 0 80px;
        flex: 0 0 80px;
    max-width: 80px;
    margin-left: $gutter / 2;

    &.product__thumbs-placement--left {
      -ms-flex-order: -1;
          order: -1;
      margin-left: 0;
      margin-right: $gutter / 2;
    }
  }

  .slick-list {
    min-height: 100%;
  }
}

// Thumb slider arrows

.product__thumbs {
  .slick-arrow {
    background: $colorBody;
    color: $colorTextBody;
    transform: none;
    z-index: 2;

    &.slick-disabled {
      display: none !important;
    }

    .icon {
      display: inline-block;
    }
  }
}

.product__thumbs[data-position="below"] .slick-arrow {
  top: 0;
  height: 100%;
  width: 25px;

  &.slick-next {
    right: 0;
    text-align: right;
  }

  &.slick-prev {
    left: 0;
    text-align: left;
  }
}

.product__thumbs[data-position="beside"] .slick-arrow {
  width: 100%;

  .icon {
    margin: 0 auto;
    transform: rotate(90deg);
  }

  &.slick-prev {
    top: 0;
    left: auto;
    padding-bottom: 10px;
  }

  &.slick-next {
    top: auto;
    bottom: 0;
    right: auto;
    padding-top: 10px;
  }
}

// Thumbnails

.product__thumb-item {
  border: 2px solid transparent;

  a:focus {
    outline: none;

    &:before {
      content: '';
      display: block;
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      box-shadow: inset 0 0 0 2px $colorTextBody;
      z-index: 1;
    }
  }

  // Don't pre-focus thumbnails
  a:active:before {
    content: none;
  }

  &.slick-current {
    border-color: $colorTextBody;

    // Focus state already exists on current item
    a:focus:before {
      content: none;
    }
  }

  .product__thumbs--beside & {
    margin-bottom: $grid-gutter-small / 2;

    @include media-query($medium-up) {
      margin-bottom: $gutter / 2;
    }
  }

  .product__thumbs--below & {
    margin-right: $grid-gutter-small / 2;
    max-width: 80px !important;

    @include media-query($medium-up) {
      margin-right: $gutter / 2;
    }

    &:last-child {
      margin-right: 0;
    }
  }
}

// Align them before slick initializes to reduce page reflows

.product__thumbs--below:not(.slick-initialized) .product__thumb-item {
  max-width: 100px;
  float: left;
}

.product__thumb {
  position: relative;
  display: block;
  cursor: pointer;
}

.product__thumb-icon {
  position: absolute;
  top: 5px;
  right: 5px;
  background-color: $colorTextBody;
  border-radius: 100px;
  padding: 6px;
  z-index: 1;
  opacity: 0;
  transition: opacity 0.5s ease;
  font-size: 0;

  .aos-animate & {
    opacity: 1;
  }

  .icon {
    fill: $colorBody;
    width: 10px;
    height: 10px;
    @include media-query($medium-up) {
      width: 13px;
      height: 13px;
    }
  }
}

// Prices

.product__price {
  color: $colorPrice;
  margin-right: 5px;
  font-size: $type_base_size + 2px;
}

// Used anywhere unit price is visible

.product__unit-price {
  font-size: 0.8em;
  opacity: 0.8;
}

.product__unit-price--spacing {
  margin-top: 10px;
}

.product__price--compare {
  padding-right: 5px;
  display: inline-block;
  text-decoration: line-through;
}

.product__price-savings {
  color: $colorTextSavings;
  white-space: nowrap;
}

.product__inventory {
  @include baseSmallFontStack;
  text-align: center;
  font-style: italic;
  margin: ($gutter / 6) 0;

  @include media-query($medium-up) {
    margin: ($gutter / 4) 0;
  }
}

// Quantity selector and label

.product__quantity {
  margin-bottom: $gutter / 2;
  @include media-query($medium-up) {
    margin-bottom: $gutter;
  }

  label {
    display: block;
    margin-bottom: 10px;
  }
}

.product__quantity--dropdown {
  display: inline-block;
}

// Hide Shopify Payment Buttons if no variant

.add-to-cart[disabled] + .shopify-payment-button {
  display: none;
}

// Zoom button

.product__photo-zoom {
  position: absolute;
  bottom: 0;
  right: 0;
  cursor: zoom-in;

  // Only show active slide's zoom button (mobile)
  @include media-query($small) {
    padding: 6px;

    .product__main-photos & {
      margin-bottom: 10px;
      margin-right: 10px;
    }

    // Hide zoom button on all slides
    .slick-slider & {
      opacity: 0;
      transition: opacity 0.5s ease-out;
    }

    .slick-slider .slick-active & {
      opacity: 1;
    }
  }

  // Visually hidden, covers full image on desktop
  @include media-query($medium-up) {
    opacity: 0;
    width: 100%;
    top: 0;
    left: 0;
    margin: 0;
    border-radius: 0;

    svg,
    span {
      display: none;
    }
  }
}

/*================ Templates | Theme Blog ================*/

.template-blog .article {
  margin-bottom: $gutter * 1.5;

  @include media-query($medium-up) {
    margin-bottom: $gutter * 3;
  }
}

.template-blog .article:last-child {
  margin-bottom: 0;

  @include media-query($medium-up) {
    margin-bottom: $gutter * 1.5;
  }
}

.article__body {
  margin-bottom: $gutter / 2;

  @include media-query($medium-up) {
    margin-bottom: $gutter;
  }
}

/*================ Comments ================*/

.comment.last {
  margin-bottom: -($gutter / 2);
}

/*================ Templates | Passwords ================*/

.template-password {
  height: 100vh;
  text-align: center;
}

.password-page__image {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  opacity: 0;
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center center;
  z-index: 1;
  animation: zoom-fade-password 20s ease 1s forwards;
  &:after {
    position: fixed;
    content: '';
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 2;
    background: rgba(50,50,50,0.3);
  }
}

.password-page__wrapper {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
  height: 100%;
  width: 100%;
  position: absolute;
  z-index: 3;
  min-height: 500px;

  a {
    color: inherit;
  }

  hr {
    border-color: $colorBorder;
  }

  .social-sharing.clean a {
    color: inherit;
    background: transparent;
  }
}

.password-header-section {
  -ms-flex: 1 1 50%;
      flex: 1 1 50%;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: center;
      justify-content: center;
  -ms-flex-align: end;
      align-items: flex-end;
}

.password-page__header__inner {
  padding: ($gutter / 2);
}

.password-page__logo {
  margin-top: 20px;

  @include media-query($medium-up) {
    margin-top: 3 * $gutter;
  }

  .logo {
    max-width: 100%;
  }
}

.password-page__main {
  -ms-flex: 1 1 100%;
      flex: 1 1 100%;
}

.password-page {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: center;
      justify-content: center;
}

.password-page__content {
  background-color: $colorBody;
  color: $colorTextBody;
  padding: $gutter;
  border: $textFrameMarginSmall solid $colorBody;
  box-shadow: inset 0 0 0 2px $colorTextBody;

  @include media-query($medium-up) {
    border-width: $textFrameMarginLarge;
  }
}

.password-page__hero {
  text-transform: none;
}

.password-page__message {
  margin-bottom: 30px !important;

  img {
    max-width: 100%;
  }
}

.password-form {
  margin-bottom: 1em;
}

.password-page__signup-form {
  @include media-query($medium-up) {
    padding: 0 $gutter;
  }

  .input-group-field {
    background-color: #fff;
    color: #000;

    &::-webkit-input-placeholder {
      color: #000;
      opacity: 0.7;
    }

    &:-moz-placeholder {
      color: #000;
      opacity: 0.7;
    }

    &::-moz-placeholder {
      color: #000;
      opacity: 0.7;
    }

    &:-ms-input-placeholder {
      color: #000;
      opacity: 0.7;
    }

    &::-ms-input-placeholder {
      color: #000;
      opacity: 0.7;
    }
  }

  .errors ul {
    list-style-type: none;
    margin-left: 0;
  }
}

.password-page__social-sharing {
  margin-top: 30px;
}

.password-login {
  display: block;
  margin: 0 auto;
  padding: ($gutter / 4) 15px;

  @include media-query($medium-up) {
    position: absolute;
    top: $gutter / 1.5;
    right: $gutter / 1.5;
  }
}

.password__lock .icon {
  position: relative;
  top: -2px;
  margin-right: 4px;
  width: 12px;
  height: 12px;
}

.password-page__footer {
  -ms-flex: 0 1 auto;
      flex: 0 1 auto;
}

.password-page__footer_inner {
  padding: ($gutter * 1.5) 0 ($gutter / 2);
  line-height: 1.5 * $type_base_size;
}

.icon-shopify-logo {
  width: 60px;
  height: 20px;
}

#LoginModal .modal__close {
  @include media-query($small) {
    padding: 20px;
  }
}

#LoginModal .modal__inner {
  background: $colorBody;
  color: $colorTextBody;
  padding: 30px;
  @include media-query($small) {
    margin-bottom: 40vh;
  }
}

.password-admin-link {
  margin: 0;

  a {
    border-bottom: 2px solid $colorBorder !important;
  }
}

/*================ Secondary Navigation Styles ================*/


 ul.secondary-nav {
  display: flex;
  list-style: none;
  align-items: center;
  justify-content: space-around;
  background-color: #efefef;
  margin: 0;
}
@media screen and (max-width: 763px) {
  ul.secondary-nav {
   
  }
}
ul.secondary-nav li {
  text-align: center;
  width: 100%;
  margin: 0;
}
ul.secondary-nav li:first-child {
  border-top: solid 10px #ab5d6e;
}
ul.secondary-nav li:nth-child(2) {
  border-top: solid 10px #408779;
}
ul.secondary-nav li:last-child {
  border-top: solid 10px #693c4c;
}
ul.secondary-nav li a {
  padding: 20px;
  display: block;
  color: #a56800;
  width: 100%;
  color: white;
  text-transform: uppercase;
  color: #a56800;
  transition: 0.5s ease-in-out;
  padding: 20px 0 26px;
}
ul.secondary-nav li a:hover {
  background-color: #ab5d6e;
  color: white;
  animation: smenu-hover 5s;
}
ul.secondary-nav li :first-child > a:hover {
  background-color: #ab5d6e;
}
ul.secondary-nav li:nth-child(2) > a:hover {
  background-color: #408779;
}
ul.secondary-nav li:last-child > a:hover {
  background-color: #693c4c;
}

ul.wholesale li:first-child > a,
ul.our-story li:first-child > a,
ul.design li:first-child > a {
  background-color: #ab5d6e;
  color: white;
}
ul.wholesale#in-store li:nth-child(2) > a,
ul.our-process li:nth-child(2) > a,
ul.photography li:nth-child(2) > a {
  background-color: #408779;
  color: white;
}
ul.giving-back li:last-child > a,
ul.upcoming-events li:last-child > a,
ul.video li:last-child > a {
  background-color: #693c4c;
  color: white;
}
    ul.wholesale a.wholesale {
  background-color: #888;
  color: white;
    a {
        background-color: black;
      }
}
