/* ./css/styles.css */

/* ! tailwindcss v2.1.1 | MIT License | https://tailwindcss.com */

/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */

/*
Document
========
*/

/**
Use a better box model (opinionated).
*/

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

/**
Use a more readable tab size (opinionated).
*/

:root {
  -moz-tab-size: 4;
  -o-tab-size: 4;
     tab-size: 4;
}

/**
1. Correct the line height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
*/

html {
  line-height: 1.15; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */
}

/*
Sections
========
*/

/**
Remove the margin in all browsers.
*/

body {
  margin: 0;
}

/**
Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
*/

body {
  font-family:
		system-ui,
		-apple-system, /* Firefox supports this but not yet `system-ui` */
		'Segoe UI',
		Roboto,
		Helvetica,
		Arial,
		sans-serif,
		'Apple Color Emoji',
		'Segoe UI Emoji';
}

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

/**
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
*/

hr {
  height: 0; /* 1 */
  color: inherit; /* 2 */
}

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

/**
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr[title] {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}

/**
Add the correct font weight in Edge and Safari.
*/

b,
strong {
  font-weight: bolder;
}

/**
1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
2. Correct the odd 'em' font sizing in all browsers.
*/

code,
kbd,
samp,
pre {
  font-family:
		ui-monospace,
		SFMono-Regular,
		Consolas,
		'Liberation Mono',
		Menlo,
		monospace; /* 1 */
  font-size: 1em; /* 2 */
}

/**
Add the correct font size in all browsers.
*/

small {
  font-size: 80%;
}

/**
Prevent 'sub' and 'sup' elements from affecting the line height in all browsers.
*/

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

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/*
Tabular data
============
*/

/**
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
*/

table {
  text-indent: 0; /* 1 */
  border-color: inherit; /* 2 */
}

/*
Forms
=====
*/

/**
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
*/

button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-size: 100%; /* 1 */
  line-height: 1.15; /* 1 */
  margin: 0; /* 2 */
}

/**
Remove the inheritance of text transform in Edge and Firefox.
1. Remove the inheritance of text transform in Firefox.
*/

button,
select { /* 1 */
  text-transform: none;
}

/**
Correct the inability to style clickable types in iOS and Safari.
*/

button,
[type='button'] {
  -webkit-appearance: button;
}

/**
Remove the inner border and padding in Firefox.
*/

/**
Restore the focus styles unset by the previous rule.
*/

/**
Remove the additional ':invalid' styles in Firefox.
See: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737
*/

/**
Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.
*/

legend {
  padding: 0;
}

/**
Add the correct vertical alignment in Chrome and Firefox.
*/

progress {
  vertical-align: baseline;
}

/**
Correct the cursor style of increment and decrement buttons in Safari.
*/

/**
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

/**
Remove the inner padding in Chrome and Safari on macOS.
*/

/**
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to 'inherit' in Safari.
*/

/*
Interactive
===========
*/

/*
Add the correct display in Chrome and Safari.
*/

summary {
  display: list-item;
}

/**
 * Manually forked from SUIT CSS Base: https://github.com/suitcss/base
 * A thin layer on top of normalize.css that provides a starting point more
 * suitable for web applications.
 */

/**
 * Removes the default spacing and border for appropriate elements.
 */

blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}

button {
  background-color: transparent;
  background-image: none;
}

/**
 * Work around a Firefox/IE bug where the transparent `button` background
 * results in a loss of the default `button` focus styles.
 */

button:focus {
  outline: 1px dotted;
  outline: 5px auto -webkit-focus-ring-color;
}

fieldset {
  margin: 0;
  padding: 0;
}

ol,
ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

/**
 * Tailwind custom reset styles
 */

/**
 * 1. Use the user's configured `sans` font-family (with Tailwind's default
 *    sans-serif font stack as a fallback) as a sane default.
 * 2. Use Tailwind's default "normal" line-height so the user isn't forced
 *    to override it to ensure consistency even when using the default theme.
 */

html {
  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 1 */
  line-height: 1.5; /* 2 */
}

/**
 * Inherit font-family and line-height from `html` so users can set them as
 * a class directly on the `html` element.
 */

body {
  font-family: inherit;
  line-height: inherit;
}

/**
 * 1. Prevent padding and border from affecting element width.
 *
 *    We used to set this in the html element and inherit from
 *    the parent element for everything else. This caused issues
 *    in shadow-dom-enhanced elements like <details> where the content
 *    is wrapped by a div with box-sizing set to `content-box`.
 *
 *    https://github.com/mozdevs/cssremedy/issues/4
 *
 *
 * 2. Allow adding a border to an element by just adding a border-width.
 *
 *    By default, the way the browser specifies that an element should have no
 *    border is by setting it's border-style to `none` in the user-agent
 *    stylesheet.
 *
 *    In order to easily add borders to elements by just setting the `border-width`
 *    property, we change the default border-style for all elements to `solid`, and
 *    use border-width to hide them instead. This way our `border` utilities only
 *    need to set the `border-width` property instead of the entire `border`
 *    shorthand, making our border utilities much more straightforward to compose.
 *
 *    https://github.com/tailwindcss/tailwindcss/pull/116
 */

*,
::before,
::after {
  box-sizing: border-box; /* 1 */
  border-width: 0; /* 2 */
  border-style: solid; /* 2 */
  border-color: #e5e7eb; /* 2 */
}

/*
 * Ensure horizontal rules are visible by default
 */

hr {
  border-top-width: 1px;
}

/**
 * Undo the `border-style: none` reset that Normalize applies to images so that
 * our `border-{width}` utilities have the expected effect.
 *
 * The Normalize reset is unnecessary for us since we default the border-width
 * to 0 on all elements.
 *
 * https://github.com/tailwindcss/tailwindcss/issues/362
 */

img {
  border-style: solid;
}

textarea {
  resize: vertical;
}

input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1;
  color: #9ca3af;
}

input:-ms-input-placeholder, textarea:-ms-input-placeholder {
  opacity: 1;
  color: #9ca3af;
}

input::placeholder,
textarea::placeholder {
  opacity: 1;
  color: #9ca3af;
}

button {
  cursor: pointer;
}

table {
  border-collapse: collapse;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}

/**
 * Reset links to optimize for opt-in styling instead of
 * opt-out.
 */

a {
  color: inherit;
  text-decoration: inherit;
}

/**
 * Reset form element properties that are easy to forget to
 * style explicitly so you don't inadvertently introduce
 * styles that deviate from your design system. These styles
 * supplement a partial reset that is already applied by
 * normalize.css.
 */

button,
input,
optgroup,
select,
textarea {
  padding: 0;
  line-height: inherit;
  color: inherit;
}

/**
 * Use the configured 'mono' font family for elements that
 * are expected to be rendered with a monospace font, falling
 * back to the system monospace stack if there is no configured
 * 'mono' font family.
 */

pre,
code,
kbd,
samp {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}

/**
 * Make replaced elements `display: block` by default as that's
 * the behavior you want almost all of the time. Inspired by
 * CSS Remedy, with `svg` added as well.
 *
 * https://github.com/mozdevs/cssremedy/issues/14
 */

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block;
  vertical-align: middle;
}

/**
 * Constrain images and videos to the parent width and preserve
 * their intrinsic aspect ratio.
 *
 * https://github.com/mozdevs/cssremedy/issues/14
 */

img,
video {
  max-width: 100%;
  height: auto;
}

.container {
  width: 100%;
}

@media (min-width: 560px) {
  .container {
    max-width: 560px;
  }
}

@media (min-width: 640px) {
  .container {
    max-width: 640px;
  }
}

@media (min-width: 768px) {
  .container {
    max-width: 768px;
  }
}

@media (min-width: 1024px) {
  .container {
    max-width: 1024px;
  }
}

@media (min-width: 1280px) {
  .container {
    max-width: 1280px;
  }
}

@media (min-width: 1536px) {
  .container {
    max-width: 1536px;
  }
}

.table {
  display: table;
}

* {
  --tw-shadow: 0 0 #0000;
}

* {
  --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgba(59, 130, 246, 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
}

@-webkit-keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

@-webkit-keyframes ping {
  75%, 100% {
    transform: scale(2);
    opacity: 0;
  }
}

@keyframes ping {
  75%, 100% {
    transform: scale(2);
    opacity: 0;
  }
}

@-webkit-keyframes pulse {
  50% {
    opacity: .5;
  }
}

@keyframes pulse {
  50% {
    opacity: .5;
  }
}

@-webkit-keyframes bounce {
  0%, 100% {
    transform: translateY(-25%);
    -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1);
            animation-timing-function: cubic-bezier(0.8,0,1,1);
  }

  50% {
    transform: none;
    -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1);
            animation-timing-function: cubic-bezier(0,0,0.2,1);
  }
}

@keyframes bounce {
  0%, 100% {
    transform: translateY(-25%);
    -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1);
            animation-timing-function: cubic-bezier(0.8,0,1,1);
  }

  50% {
    transform: none;
    -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1);
            animation-timing-function: cubic-bezier(0,0,0.2,1);
  }
}

@font-face {
  font-family: 'GT Super Display';

  font-style: normal;

  font-weight: 300;

  src: url(../fonts/GT-Super-Display-Light.eot);

  src: url(../fonts/GT-Super-Display-Light.eot) format("embedded-opentype"), 
       url(../fonts/GT-Super-Display-Light.woff2) format("woff2"), 
       url(../fonts/GT-Super-Display-Light.woff) format("woff");

  font-display: fallback;
}

@font-face {
  font-family: 'GT Super Display';

  font-style: normal;

  font-weight: 500;

  src: url(../fonts/GT-Super-Display-Medium.eot);

  src: url(../fonts/GT-Super-Display-Medium.eot) format("embedded-opentype"), 
       url(../fonts/GT-Super-Display-Medium.woff2) format("woff2"), 
       url(../fonts/GT-Super-Display-Medium.woff) format("woff");

  font-display: fallback;
}

:root {
  --pink: #f9e6e6;
  --white: #fff;
  --light-gray: #f6f8fa;
  --gray: #ebebeb;
  --dark-gray: #54565a;
  --black: #000;
  --blue: #1998d5;
  --orange: #f1670d;
  --body-background-color: var(--white);
  --nav-background-color: var(--light-gray);
  --content-background-color: var(--white);
  --copy-background-color: var(--white);
  --features-background-color: var(--blue);
  --title-text-color: var(--black);
  --body-text-color: var(--dark-gray);
  --footer-text-color: var(--dark-gray);
  --button-background-color: var(--orange);
  --button-text-color: var(--white);
  --gutter: 2em;
}

html,
body {
  margin: 0;
  padding: 0;
  font-family: montserrat, sans-serif;
  font-style: normal;
  font-weight: 200;
  font-size: 100%;
  color: var(--body-text-color);
}

body {
  background-color: var(--body-background-color);
  /* 
  @media screen and (min-width:885px) {
    font-size: 110%;
  }
  @media screen and (min-width:1020px) {
    font-size: 120%;
  }
  @media screen and (min-width:1280px) {
    font-size: 125%;
  } */
}

h1,h2,h3 {
  margin: 0;
  font-weight: 100;
  color: var(--title-text-color);
}

p {
  margin: 1.5em 0;
}

img {
  display: block;
}

.no-wrap {
  white-space: nowrap;
}

.container {
  margin-left: auto;
  margin-right: auto;
}

/* md:max-w-screen-md; */

@media screen and (min-width:1280px) {

.container {
    max-width: 1200px
}
  }

header {
  //margin: var(--gutter);
  display: flex;
  padding: 1em 50% 1em 3em;
  flex-direction: column;
  height: calc(100vw * 0.375);
  max-height: 450px;
  background: url('../images/banner_header_video-doorbell.jpg') left center no-repeat;
  background-size: cover;
}

header .logo {
    margin-top: auto;
    display: block;
    max-width: 175px;
    max-height: 110px;
    width: 100%;
    height: calc((100vw - var(--gutter)) * 40 / 430);
    background: url('../images/logo.svg') left center no-repeat;
    background-size: contain;
    color: var(--title-text-color);
    text-indent: -1000em;
  }

header .slogan {
    margin-top: 1rem;
    margin-bottom: auto;
    line-height: 1.25em;
    font-size: 2.5vw;
    font-weight: 300;
    color: var(--body-text-color);
    text-shadow: 1px 1px 6px #fff;
  }

main {
  background-color: #fff;
}

main .masthead .hero-banner {
      position: relative;
    }

main .masthead .hero-banner img {
        width: 100%;
        height: auto;
      }

main .masthead .hero-banner .hero-banner__content {
        position: absolute;
        top: 15%;
        left: 50%;
        transform: translate(-50%, -50%);
        padding: 1em;
        width: 100%;
      }

main .masthead .hero-banner .hero-banner__content .banner-title {
          font-size: 1.5em;
        }

@media (min-width: 560px) {
          main .masthead .hero-banner .hero-banner__content .banner-title {
            font-size: 2.25rem;
            line-height: 2.5rem;
          }
        }

main .masthead .hero-banner .hero-banner__content .banner-title {
          text-align: center;
        }

main .masthead .navigation {
      margin-top: 2rem;
      margin-bottom: 2rem;
    }

main .masthead .navigation .category-list {
        gap: 2vw;
        display: grid;
        grid-template-columns: repeat(4, minmax(0, 1fr))
      }

@media (min-width: 1024px) {
        main .masthead .navigation .category-list {
          height: 24rem;
          max-height: 24rem;
          gap: 1.25rem;
        }
      }

main .masthead .navigation .category-list {
        height: 40vw;
      }

main .masthead .navigation .category-list .category {
          background: url('') center bottom no-repeat;
          background-size: cover;
          background-color: var(--nav-background-color);
          font-weight: 500;
          color: var(--title-text-color);
          text-align: center;
        }

main .masthead .navigation .category-list .category .nav-link {
            display: block;
            font-size: 5vw;
            height: 100%;
          }

@media (min-width: 640px) {
            main .masthead .navigation .category-list .category .nav-link {
              font-size: 1.875rem;
              line-height: 2.25rem;
              padding-top: 1.5rem;
              padding-bottom: 1.5rem;
            }
          }

@media (min-width: 1280px) {
            main .masthead .navigation .category-list .category .nav-link {
              font-size: 3rem;
              line-height: 1;
            }
          }

main .masthead .navigation .category-list .category .nav-link {
            color: var(--title-text-color);
            text-decoration: none;
          }

main .products > section {
      /* @apply mt-24 mb-8; */
    }

main .products .collection {
    }

main .products .product {
      display: flex;
      flex-direction: column;
      margin: 4rem 0;
    }

main .products .product .product-image {
        overflow: hidden;
        position: relative;
        background-color: #f5f5f5;
        grid-area: image;
        order: 1;
      }

@media screen and (min-width:1024px) {
        }

main .products .product .product-image img {
          -o-object-fit: cover;
             object-fit: cover;
          -o-object-position: center;
             object-position: center; /*relative lg:absolute lg:top-2/4 lg:left-2/4;*/
          margin: 0 auto;
          /* @media screen and (min-width:560px) {
            max-width: 286%;
            max-width: 170%;
          }
          @media screen and (min-width:640px) {
            max-width: 225%;
            max-width: 135%;
          }
          @media screen and (min-width:768px) {
            max-width: 185%;
            max-width: 117.19%;
          }
          @media screen and (min-width:1024px) {
            transform: translate(-50%,-50%);

            &.aligned-bottom {
              top: auto;
              bottom: 0;
              transform: translateX(-50%);
            }
          } */
        }

main .products .product .product-info, main .products .product .product-features, main .products .product .product-price, main .products .product .product-variations, main .products .product .product-actions {
        margin-top: 1rem;
        margin-bottom: 1rem;
        margin-left: auto;
        margin-right: auto;
      }

main .products .product .product-info {
        padding-left: 2rem;
        padding-right: 2rem;
        grid-area: info;
        order: 3;
      }

/*
        display: flex;
        flex-direction: column;
        justify-content: center;
        */

main .products .product .product-info .product-title {
          font-size: 2.25rem;
          line-height: 2.5rem;
        }

@media (min-width: 640px) {
          main .products .product .product-info .product-title {
            margin-bottom: 1rem;
          }
        }

@media (min-width: 768px) {
          main .products .product .product-info .product-title {
            font-size: 3rem;
            line-height: 1;
          }
        }

main .products .product .product-info .product-title { /* xl:text-7xl xl:mb-7; */
        }

main .products .product .product-info .product-subtitle {
          font-weight: 400;
          font-size: 1rem;
          line-height: 1.5rem;
        }

@media (min-width: 768px) {
          main .products .product .product-info .product-subtitle {
            font-size: 1.25rem;
            line-height: 1.75rem;
          }
        }

main .products .product .product-info .product-subtitle { /* xl:text-3xl; */
        }

main .products .product .product-info .product-description {
          /*@apply xl:tracking-widest;*/
        }

main .products .product .product-info .product-lifestyle {
          --gutter: 1em;
          display: flex;
          flex-direction: column;
          justify-content: space-between;
        }

main .products .product .product-info .product-lifestyle img + img {
              margin-top: var(--gutter);
            }

@media screen and (min-width:560px) {

main .products .product .product-info .product-lifestyle {
            flex-direction: row
        }

            main .products .product .product-info .product-lifestyle img {
              width: calc(50% - var(--gutter) / 2);
            }
              main .products .product .product-info .product-lifestyle img + img {
                margin-top: 0;
              }
          }

main .products .product .product-features {
        --tw-text-opacity: 1;
        color: rgba(255, 255, 255, var(--tw-text-opacity));
        padding: var(--gutter) 0;
        width: 100%;
        background-color: var(--features-background-color);
        grid-area: features;
        order: 5;
      }

@media screen and (min-width:768px) {

main .products .product .product-features {
          padding: 1.5rem 2rem 1rem
      }
        }

@media screen and (min-width:1024px) {

main .products .product .product-features {
          padding: 1rem
      }
        }

main .products .product .product-features .feature-list {
          display: flex;
          flex-wrap: wrap;
          justify-content: space-evenly;
        }

main .products .product .product-features .feature-list .feature {
            --icon-width: 2rem;
            --border-width: 0px;
            font-size: 0.75rem;
            line-height: 1rem;
            margin-bottom: 1rem;
            position: relative;
            padding: 0.5em;
            width: 30%;
            /* max-width: 26%; */
            min-width: 140px;
            text-align: center;
            /* font-size: 0.875em; */
            line-height: 1.125em;
          }

@media screen and (min-width:457px) {

main .products .product .product-features .feature-list .feature {
              font-size: 0.875rem
          }
            }

@media screen and (min-width:560px) {
            }

@media screen and (min-width:640px) {

main .products .product .product-features .feature-list .feature {
              --icon-width: 3rem;

              margin-bottom: 2rem
          }
            }

@media screen and (min-width:768px) {

main .products .product .product-features .feature-list .feature {
              --icon-width: 2rem;

              margin-bottom: 0;

              width: 16.667%;

              min-width: 114px;

              font-size: 0.75rem
          }
            }

@media screen and (min-width:1024px) {

main .products .product .product-features .feature-list .feature {
              --icon-width: 3rem;

              font-size: 0.875rem
          }
            }

@media screen and (min-width:1280px) {
            }

main .products .product .product-features .feature-list .feature .icon {
              fill: #fff;
            }

main .products .product .product-features .feature-list .feature .icon {
              position: relative;
              --length: calc(var(--icon-width) - var(--border-width) * 2);
              left: 50%;
              transform: translateX(-50%);
              //content: "";
              display: block;
              margin: 0 0 0.5rem;
              width: var(--length);
              height: var(--length);
              //background: url('') 0 0 no-repeat;
              //background-size: cover;
            }

main .products .product .product-features .feature-list .feature-1:before {
              background-position: 0 0;
            }

main .products .product .product-features .feature-list .feature-2:before {
              background-position: calc(var(--length) * -1) 0;
            }

main .products .product .product-features .feature-list .feature-3:before {
              background-position: calc(var(--length) * -2) 0;
            }

main .products .product .product-features .feature-list .feature-4:before {
              background-position: calc(var(--length) * -3) 0;
            }

main .products .product .product-features .feature-list .feature-5:before {
              background-position: calc(var(--length) * -4) 0;
            }

main .products .product .product-features .feature-list.has-border .feature {
              --border-width: 2px;
            }

main .products .product .product-features .feature-list.has-border .feature:before {
                box-sizing: content-box;
                border: var(--border-width) solid #0b19a2;
              }

main .products .product .product-price {
        font-size: 3rem;
        line-height: 1;
      }

@media (min-width: 1280px) {
        main .products .product .product-price {
          font-size: 3.75rem;
          line-height: 1;
        }
      }

main .products .product .product-price { /* xl:text-8xl; */
      }

main .products .product .product-variations {
        grid-area: variations;
        order: 2;
      }

main .products .product .product-variations .variations-list {
          font-size: 1rem;
        }

main .products .product .product-variations .variations-list li.variation {
            position: relative;
            display: inline-block;
            border: 1px solid #fff;
            border-radius: 1em;
            transition: all 0.3s;
            fill: transparent;
            cursor: pointer;
          }

main .products .product .product-variations .variations-list li.variation.color-nickel {
              --color: #eee;
            }

main .products .product .product-variations .variations-list li.variation.color-white {
              --color: #fff;
            }

main .products .product .product-variations .variations-list li.variation.color-black {
              --color: #222;
            }

main .products .product .product-variations .variations-list li.variation:before {
              position: absolute;
              content: "";
              display: block;
              margin: 2px;
              width: calc(2em - 6px);
              height: calc(2em - 6px);
              border: 1px solid #aaa;
              border-radius: 1em;
              background: var(--color);
            }

main .products .product .product-variations .variations-list li.variation.selected,
            main .products .product .product-variations .variations-list li.variation:hover {
              border-color: #aaa;
            }

main .products .product .product-variations .variations-list li.variation.selected {
              fill: #fff;
            }

main .products .product .product-variations .variations-list li.variation.selected.color-white,
              main .products .product .product-variations .variations-list li.variation.selected.color-gray,
              main .products .product .product-variations .variations-list li.variation.selected.color-nickel {
                fill: #000;
              }

main .products .product .product-variations .variations-list li.variation .check {
              position: absolute;
              top: 50%;
              left: 50%;
              width: 1em;
              transform: translate(-50%,-50%);
            }

main .products .product .product-variations .variations-list li.variation.variation-color {
              width: 2em;
              height: 2em;
              text-indent: -1000em;
            }

main .products .product .product-variations .variations-list li + li {
            margin-left: 0.5em;
          }

main .products .product .product-variations .variations-list:after {
            content: attr(data-selected);
            vertical-align: bottom;
            display: inline-block;
            margin-left: 0.5rem;
            width: 30px;
            font-size: 0.75rem;
            line-height: 2rem;
            white-space: nowrap;
          }

main .products .product .product-actions {
        grid-area: actions;
        order: 4;
      }

main .products .product .product-actions .button {
          border-radius: 9999px;
          display: inline-block;
          font-weight: 300;
          font-size: 0.875rem;
          line-height: 1.25rem;
          padding-top: 0.5rem;
          padding-bottom: 0.5rem;
          padding-left: 2rem;
          padding-right: 2rem;
          text-transform: uppercase;
        }

@media (min-width: 1280px) {
          main .products .product .product-actions .button {
            font-size: 1.125rem;
            line-height: 1.75rem;
          }
        }

main .products .product .product-actions .button { /* xl:px-16 xl:py-4 xl:rounded-3xl xl:text-2xl; */
          background-color: var(--button-background-color);
          color: var(--button-text-color);
        }

@media screen and (min-width: 768px) {

main .products .product {
        display: grid;

        grid-template-columns: 320px 1fr;

        grid-template-rows: 320px -webkit-min-content minmax(4.25rem, 1fr) -webkit-min-content;

        grid-template-rows: 320px min-content minmax(4.25rem, 1fr) min-content;

        grid-template-areas:
          "image info"
          "variations info"
          "actions info"
          "features features" 
    }
      }

@media screen and (min-width: 1024px) {

main .products .product {
        grid-template-columns: 420px 1fr;

        grid-template-rows: 420px -webkit-min-content 4.25rem -webkit-min-content;

        grid-template-rows: 420px min-content 4.25rem min-content
    }
      }

@media screen and (min-width: 1280px) {

main .products .product {
        grid-template-columns: 480px 1fr;

        grid-template-rows: 480px -webkit-min-content 4.25rem -webkit-min-content;

        grid-template-rows: 480px min-content 4.25rem min-content
    }
      }

footer {
  font-size: 0.75rem;
  line-height: 1rem;
  padding-left: 2rem;
  padding-right: 2rem;
  text-align: center;
  color: var(--footer-text-color);
}

@media (min-width: 560px) {
}

@media (min-width: 640px) {
}

@media (min-width: 768px) {
}

@media (min-width: 1024px) {
}

@media (min-width: 1280px) {
}

@media (min-width: 1536px) {
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL19zcmMvY3NzL3N0eWxlcy5jc3MiLCI8bm8gc291cmNlPiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBcUI7O0FBQ3JCLGlFQUFjOztBQUFkLDhGQUFjOztBQUFkOzs7Q0FBYzs7QUFBZDs7Q0FBYzs7QUFBZDs7O0VBQUEsc0JBQWM7QUFBQTs7QUFBZDs7Q0FBYzs7QUFBZDtFQUFBLGdCQUFjO0VBQWQsY0FBYztLQUFkLFdBQWM7QUFBQTs7QUFBZDs7O0NBQWM7O0FBQWQ7RUFBQSxpQkFBYyxFQUFkLE1BQWM7RUFBZCw4QkFBYyxFQUFkLE1BQWM7QUFBQTs7QUFBZDs7O0NBQWM7O0FBQWQ7O0NBQWM7O0FBQWQ7RUFBQSxTQUFjO0FBQUE7O0FBQWQ7O0NBQWM7O0FBQWQ7RUFBQTs7Ozs7Ozs7O2tCQUFjO0FBQUE7O0FBQWQ7OztDQUFjOztBQUFkOzs7Q0FBYzs7QUFBZDtFQUFBLFNBQWMsRUFBZCxNQUFjO0VBQWQsY0FBYyxFQUFkLE1BQWM7QUFBQTs7QUFBZDs7O0NBQWM7O0FBQWQ7O0NBQWM7O0FBQWQ7RUFBQSx5Q0FBYztVQUFkLGlDQUFjO0FBQUE7O0FBQWQ7O0NBQWM7O0FBQWQ7O0VBQUEsbUJBQWM7QUFBQTs7QUFBZDs7O0NBQWM7O0FBQWQ7Ozs7RUFBQTs7Ozs7O1dBQWMsRUFBZCxNQUFjO0VBQWQsY0FBYyxFQUFkLE1BQWM7QUFBQTs7QUFBZDs7Q0FBYzs7QUFBZDtFQUFBLGNBQWM7QUFBQTs7QUFBZDs7Q0FBYzs7QUFBZDs7RUFBQSxjQUFjO0VBQWQsY0FBYztFQUFkLGtCQUFjO0VBQWQsd0JBQWM7QUFBQTs7QUFBZDtFQUFBLGVBQWM7QUFBQTs7QUFBZDtFQUFBLFdBQWM7QUFBQTs7QUFBZDs7O0NBQWM7O0FBQWQ7OztDQUFjOztBQUFkO0VBQUEsY0FBYyxFQUFkLE1BQWM7RUFBZCxxQkFBYyxFQUFkLE1BQWM7QUFBQTs7QUFBZDs7O0NBQWM7O0FBQWQ7OztDQUFjOztBQUFkOzs7OztFQUFBLG9CQUFjLEVBQWQsTUFB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WUFDNUIsc0JBQXNCO1lBQ3RCLHFCQUFxQjtZQUNyQixtQkFBbUI7WUFDbkIsV0FBVztZQUNYLGtCQUFrQjtZQUNsQixpQkFBaUI7WUFDakIsbUJBQW1CO1VBQ3JCOztBQUtKO1FBQ0Usa0JBQWtCO1FBQ2xCLFFBQVE7TUFRVjs7QUFORTtVQWxnQlIscUJBQW1CO1VBQW5CLHFCQUFtQjtVQUFuQixnQkFBbUI7VUFBbkIsbUJBQW1CO1VBQW5CLG9CQUFtQjtVQUFuQixtQkFBbUI7VUFBbkIsc0JBQW1CO1VBQW5CLGtCQUFtQjtVQUFuQixtQkFBbUI7VUFBbkIseUJBQW1CO1FBdWdCWDs7QUMxZ0JSO1VER0E7WUFBQSxtQkFBbUI7WUFBbkI7VUFBbUI7U0NIbkI7O0FEcWdCUSxtREFDc0YsaURBQWlEO1VBRXJJLGdEQUFnRDtVQUNoRDtRQUNGOztBQUdGOztBQTdURjtRQThUSSxhQUFhOztRQUNiLGdDQUFnQzs7UUFDaEMsc0ZBQXNFOztRQUF0RSxzRUFBc0U7O1FBQ3RFOzs7OztJQWdCSjtNQVhFOztBQUVBOztBQXhVRjtRQXlVSSxnQ0FBZ0M7O1FBQ2hDLHlFQUF5RDs7UUFBekQ7SUFPSjtNQU5FOztBQUVBOztBQTdVRjtRQThVSSxnQ0FBZ0M7O1FBQ2hDLHlFQUF5RDs7UUFBekQ7SUFFSjtNQURFOztBQUtOO0VBbGlCQSxrQkFBbUI7RUFBbkIsaUJBQW1CO0VBQW5CLGtCQUFtQjtFQUFuQixtQkFBbUI7RUFBbkIsa0JBQW1CO0VBcWlCakIsK0JBQStCO0FBQ2pDOztBQ3ppQkE7Q0FBQTs7QUFBQTtDQUFBOztBQUFBO0NBQUE7O0FBQUE7Q0FBQTs7QUFBQTtDQUFBOztBQUFBO0NBQUEiLCJmaWxlIjoic3R5bGVzLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIC4vY3NzL3N0eWxlcy5jc3MgKi9cbkB0YWlsd2luZCBiYXNlO1xuQHRhaWx3aW5kIGNvbXBvbmVudHM7XG5AdGFpbHdpbmQgdXRpbGl0aWVzO1xuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdHVCBTdXBlciBEaXNwbGF5JztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogMzAwO1xuICBzcmM6IHVybCguLi9mb250cy9HVC1TdXBlci1EaXNwbGF5LUxpZ2h0LmVvdCk7XG4gIHNyYzogdXJsKC4uL2ZvbnRzL0dULVN1cGVyLURpc3BsYXktTGlnaHQuZW90KSBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSwgXG4gICAgICAgdXJsKC4uL2ZvbnRzL0dULVN1cGVyLURpc3BsYXktTGlnaHQud29mZjIpIGZvcm1hdChcIndvZmYyXCIpLCBcbiAgICAgICB1cmwoLi4vZm9udHMvR1QtU3VwZXItRGlzcGxheS1MaWdodC53b2ZmKSBmb3JtYXQoXCJ3b2ZmXCIpO1xuICBmb250LWRpc3BsYXk6IGZhbGxiYWNrO1xufVxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnR1QgU3VwZXIgRGlzcGxheSc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgc3JjOiB1cmwoLi4vZm9udHMvR1QtU3VwZXItRGlzcGxheS1NZWRpdW0uZW90KTtcbiAgc3JjOiB1cmwoLi4vZm9udHMvR1QtU3VwZXItRGlzcGxheS1NZWRpdW0uZW90KSBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSwgXG4gICAgICAgdXJsKC4uL2ZvbnRzL0dULVN1cGVyLURpc3BsYXktTWVkaXVtLndvZmYyKSBmb3JtYXQoXCJ3b2ZmMlwiKSwgXG4gICAgICAgdXJsKC4uL2ZvbnRzL0dULVN1cGVyLURpc3BsYXktTWVkaXVtLndvZmYpIGZvcm1hdChcIndvZmZcIik7XG4gIGZvbnQtZGlzcGxheTogZmFsbGJhY2s7XG59XG5cbjpyb290IHtcbiAgLS1waW5rOiAjZjllNmU2O1xuICAtLXdoaXRlOiAjZmZmO1xuICAtLWxpZ2h0LWdyYXk6ICNmNmY4ZmE7XG4gIC0tZ3JheTogI2ViZWJlYjtcbiAgLS1kYXJrLWdyYXk6ICM1NDU2NWE7XG4gIC0tYmxhY2s6ICMwMDA7XG4gIC0tYmx1ZTogIzE5OThkNTtcbiAgLS1vcmFuZ2U6ICNmMTY3MGQ7XG5cbiAgLS1ib2R5LWJhY2tncm91bmQtY29sb3I6IHZhcigtLXdoaXRlKTtcbiAgLS1uYXYtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbGlnaHQtZ3JheSk7XG4gIC0tY29udGVudC1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13aGl0ZSk7XG4gIC0tY29weS1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13aGl0ZSk7XG4gIC0tZmVhdHVyZXMtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmx1ZSk7XG5cbiAgLS10aXRsZS10ZXh0LWNvbG9yOiB2YXIoLS1ibGFjayk7XG4gIC0tYm9keS10ZXh0LWNvbG9yOiB2YXIoLS1kYXJrLWdyYXkpO1xuICAtLWZvb3Rlci10ZXh0LWNvbG9yOiB2YXIoLS1kYXJrLWdyYXkpO1xuXG4gIC0tYnV0dG9uLWJhY2tncm91bmQtY29sb3I6IHZhcigtLW9yYW5nZSk7XG4gIC0tYnV0dG9uLXRleHQtY29sb3I6IHZhcigtLXdoaXRlKTtcblxuICAtLWd1dHRlcjogMmVtO1xufVxuXG5odG1sLFxuYm9keSB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgZm9udC1mYW1pbHk6IG1vbnRzZXJyYXQsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDIwMDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICBjb2xvcjogdmFyKC0tYm9keS10ZXh0LWNvbG9yKTtcbn1cblxuYm9keSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJvZHktYmFja2dyb3VuZC1jb2xvcik7XG4gIC8qIFxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjg4NXB4KSB7XG4gICAgZm9udC1zaXplOiAxMTAlO1xuICB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MTAyMHB4KSB7XG4gICAgZm9udC1zaXplOiAxMjAlO1xuICB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MTI4MHB4KSB7XG4gICAgZm9udC1zaXplOiAxMjUlO1xuICB9ICovXG59XG5cbmgxLGgyLGgzIHtcbiAgbWFyZ2luOiAwO1xuICBmb250LXdlaWdodDogMTAwO1xuICBjb2xvcjogdmFyKC0tdGl0bGUtdGV4dC1jb2xvcik7XG59XG5cbnAge1xuICBtYXJnaW46IDEuNWVtIDA7XG59XG5cbmltZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ubm8td3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5jb250YWluZXIge1xuICBAYXBwbHkgbXgtYXV0bzsgLyogbWQ6bWF4LXctc2NyZWVuLW1kOyAqL1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MTI4MHB4KSB7XG4gICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gIH1cbn1cblxuaGVhZGVyIHtcbiAgLy9tYXJnaW46IHZhcigtLWd1dHRlcik7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDFlbSA1MCUgMWVtIDNlbTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgaGVpZ2h0OiBjYWxjKDEwMHZ3ICogMC4zNzUpO1xuICBtYXgtaGVpZ2h0OiA0NTBweDtcbiAgYmFja2dyb3VuZDogdXJsKCcuLi9pbWFnZXMvYmFubmVyX2hlYWRlcl92aWRlby1kb29yYmVsbC5qcGcnKSBsZWZ0IGNlbnRlciBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG5cbiAgLmxvZ28ge1xuICAgIEBhcHBseSBtdC1hdXRvO1xuXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWF4LXdpZHRoOiAxNzVweDtcbiAgICBtYXgtaGVpZ2h0OiAxMTBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGNhbGMoKDEwMHZ3IC0gdmFyKC0tZ3V0dGVyKSkgKiA0MCAvIDQzMCk7XG4gICAgYmFja2dyb3VuZDogdXJsKCcuLi9pbWFnZXMvbG9nby5zdmcnKSBsZWZ0IGNlbnRlciBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgIGNvbG9yOiB2YXIoLS10aXRsZS10ZXh0LWNvbG9yKTtcbiAgICB0ZXh0LWluZGVudDogLTEwMDBlbTtcbiAgfVxuXG4gIC5zbG9nYW4ge1xuICAgIEBhcHBseSBtdC00IG1iLWF1dG87XG5cbiAgICBsaW5lLWhlaWdodDogMS4yNWVtO1xuICAgIGZvbnQtc2l6ZTogMi41dnc7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBjb2xvcjogdmFyKC0tYm9keS10ZXh0LWNvbG9yKTtcbiAgICB0ZXh0LXNoYWRvdzogMXB4IDFweCA2cHggI2ZmZjtcbiAgfVxufVxuXG5tYWluIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblxuICAubWFzdGhlYWQge1xuICAgIC5oZXJvLWJhbm5lciB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgIGltZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICB9XG5cbiAgICAgIC5oZXJvLWJhbm5lcl9fY29udGVudCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAxNSU7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgIHBhZGRpbmc6IDFlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgLmJhbm5lci10aXRsZSB7XG4gICAgICAgICAgZm9udC1zaXplOiAxLjVlbTtcblxuICAgICAgICAgIEBhcHBseSB4czp0ZXh0LTR4bDtcblxuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5uYXZpZ2F0aW9uIHtcbiAgICAgIEBhcHBseSBteS04O1xuXG4gICAgICAuY2F0ZWdvcnktbGlzdCB7XG4gICAgICAgIGdhcDogMnZ3O1xuICAgICAgICBAYXBwbHkgZ3JpZCBncmlkLWNvbHMtNCBsZzpnYXAtNSBsZzpoLTk2IGxnOm1heC1oLTk2O1xuXG4gICAgICAgIGhlaWdodDogNDB2dztcblxuICAgICAgICAuY2F0ZWdvcnkge1xuICAgICAgICAgIGJhY2tncm91bmQ6IHVybCgnJykgY2VudGVyIGJvdHRvbSBuby1yZXBlYXQ7XG4gICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uYXYtYmFja2dyb3VuZC1jb2xvcik7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tdGl0bGUtdGV4dC1jb2xvcik7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgICAgLm5hdi1saW5rIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgZm9udC1zaXplOiA1dnc7XG4gIFxuICAgICAgICAgICAgQGFwcGx5IGgtZnVsbCBzbTpweS02IHNtOnRleHQtM3hsIHhsOnRleHQtNXhsO1xuXG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGl0bGUtdGV4dC1jb2xvcik7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnByb2R1Y3RzIHtcbiAgICA+IHNlY3Rpb24ge1xuICAgICAgLyogQGFwcGx5IG10LTI0IG1iLTg7ICovXG4gICAgfVxuXG4gICAgLmNvbGxlY3Rpb24ge1xuICAgICAgXG4gICAgfVxuXG4gICAgLnByb2R1Y3Qge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBtYXJnaW46IDRyZW0gMDtcblxuICAgICAgLnByb2R1Y3QtaW1hZ2Uge1xuICAgICAgICBAYXBwbHkgcmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuO1xuXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG4gICAgICAgIGdyaWQtYXJlYTogaW1hZ2U7XG4gICAgICAgIG9yZGVyOiAxO1xuXG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MTAyNHB4KSB7XG4gICAgICAgICAgXG4gICAgICAgIH1cblxuICAgICAgICBpbWcge1xuICAgICAgICAgIEBhcHBseSBvYmplY3QtY292ZXIgb2JqZWN0LWNlbnRlcjsgLypyZWxhdGl2ZSBsZzphYnNvbHV0ZSBsZzp0b3AtMi80IGxnOmxlZnQtMi80OyovXG5cbiAgICAgICAgICBtYXJnaW46IDAgYXV0bztcblxuICAgICAgICAgIC8qIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NTYwcHgpIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMjg2JTtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTcwJTtcbiAgICAgICAgICB9XG4gICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo2NDBweCkge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAyMjUlO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMzUlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjc2OHB4KSB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDE4NSU7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDExNy4xOSU7XG4gICAgICAgICAgfVxuICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MTAyNHB4KSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLC01MCUpO1xuXG4gICAgICAgICAgICAmLmFsaWduZWQtYm90dG9tIHtcbiAgICAgICAgICAgICAgdG9wOiBhdXRvO1xuICAgICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9ICovXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnByb2R1Y3QtaW5mbyxcbiAgICAgIC5wcm9kdWN0LWZlYXR1cmVzLFxuICAgICAgLnByb2R1Y3QtcHJpY2UsXG4gICAgICAucHJvZHVjdC12YXJpYXRpb25zLFxuICAgICAgLnByb2R1Y3QtYWN0aW9ucyB7XG4gICAgICAgIEBhcHBseSBteS00IG14LWF1dG87XG4gICAgICB9XG5cbiAgICAgIC5wcm9kdWN0LWluZm8ge1xuICAgICAgICBAYXBwbHkgcHgtODtcblxuICAgICAgICBncmlkLWFyZWE6IGluZm87XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgICAvKlxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgKi9cblxuICAgICAgICAucHJvZHVjdC10aXRsZSB7XG4gICAgICAgICAgQGFwcGx5IHRleHQtNHhsIG1kOnRleHQtNXhsIHNtOm1iLTQ7IC8qIHhsOnRleHQtN3hsIHhsOm1iLTc7ICovXG4gICAgICAgIH1cblxuICAgICAgICAucHJvZHVjdC1zdWJ0aXRsZSB7XG4gICAgICAgICAgQGFwcGx5IHRleHQtYmFzZSBtZDp0ZXh0LXhsIGZvbnQtbm9ybWFsOyAvKiB4bDp0ZXh0LTN4bDsgKi9cbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9kdWN0LWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAvKkBhcHBseSB4bDp0cmFja2luZy13aWRlc3Q7Ki9cbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9kdWN0LWxpZmVzdHlsZSB7XG4gICAgICAgICAgLS1ndXR0ZXI6IDFlbTtcblxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgJiArIGltZyB7XG4gICAgICAgICAgICAgIG1hcmdpbi10b3A6IHZhcigtLWd1dHRlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo1NjBweCkge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcblxuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoNTAlIC0gdmFyKC0tZ3V0dGVyKSAvIDIpO1xuXG4gICAgICAgICAgICAgICYgKyBpbWcge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnByb2R1Y3QtZmVhdHVyZXMge1xuICAgICAgICBAYXBwbHkgdGV4dC13aGl0ZTtcblxuICAgICAgICBwYWRkaW5nOiB2YXIoLS1ndXR0ZXIpIDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1mZWF0dXJlcy1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgICAgICAgZ3JpZC1hcmVhOiBmZWF0dXJlcztcbiAgICAgICAgb3JkZXI6IDU7XG5cbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo3NjhweCkge1xuICAgICAgICAgIHBhZGRpbmc6IDEuNXJlbSAycmVtIDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjEwMjRweCkge1xuICAgICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgLmZlYXR1cmUtbGlzdCB7XG4gICAgICAgICAgQGFwcGx5IGZsZXggZmxleC13cmFwIGp1c3RpZnktZXZlbmx5O1xuICAgIFxuICAgICAgICAgIC5mZWF0dXJlIHtcbiAgICAgICAgICAgIC0taWNvbi13aWR0aDogMnJlbTtcbiAgICAgICAgICAgIC0tYm9yZGVyLXdpZHRoOiAwcHg7XG5cbiAgICAgICAgICAgIEBhcHBseSByZWxhdGl2ZSB0ZXh0LXhzIG1iLTQ7XG5cbiAgICAgICAgICAgIHBhZGRpbmc6IDAuNWVtO1xuICAgICAgICAgICAgd2lkdGg6IDMwJTtcbiAgICAgICAgICAgIC8qIG1heC13aWR0aDogMjYlOyAqL1xuICAgICAgICAgICAgbWluLXdpZHRoOiAxNDBweDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIC8qIGZvbnQtc2l6ZTogMC44NzVlbTsgKi9cbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjEyNWVtO1xuXG4gICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjQ1N3B4KSB7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjU2MHB4KSB7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0MHB4KSB7XG4gICAgICAgICAgICAgIC0taWNvbi13aWR0aDogM3JlbTtcblxuICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo3NjhweCkge1xuICAgICAgICAgICAgICAtLWljb24td2lkdGg6IDJyZW07XG5cbiAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgd2lkdGg6IDE2LjY2NyU7XG4gICAgICAgICAgICAgIG1pbi13aWR0aDogMTE0cHg7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MTAyNHB4KSB7XG4gICAgICAgICAgICAgIC0taWNvbi13aWR0aDogM3JlbTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjEyODBweCkge1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmljb24ge1xuICAgICAgICAgICAgICBmaWxsOiAjZmZmO1xuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgLmljb24ge1xuICAgICAgICAgICAgICBAYXBwbHkgcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgLS1sZW5ndGg6IGNhbGModmFyKC0taWNvbi13aWR0aCkgLSB2YXIoLS1ib3JkZXItd2lkdGgpICogMik7XG5cbiAgICAgICAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG5cbiAgICAgICAgICAgICAgLy9jb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgbWFyZ2luOiAwIDAgMC41cmVtO1xuICAgICAgICAgICAgICB3aWR0aDogdmFyKC0tbGVuZ3RoKTtcbiAgICAgICAgICAgICAgaGVpZ2h0OiB2YXIoLS1sZW5ndGgpO1xuICAgICAgICAgICAgICAvL2JhY2tncm91bmQ6IHVybCgnJykgMCAwIG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgLy9iYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgJi0xOmJlZm9yZSB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYtMjpiZWZvcmUge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKHZhcigtLWxlbmd0aCkgKiAtMSkgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYtMzpiZWZvcmUge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKHZhcigtLWxlbmd0aCkgKiAtMikgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYtNDpiZWZvcmUge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKHZhcigtLWxlbmd0aCkgKiAtMykgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYtNTpiZWZvcmUge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKHZhcigtLWxlbmd0aCkgKiAtNCkgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmLmhhcy1ib3JkZXIge1xuICAgICAgICAgICAgLmZlYXR1cmUge1xuICAgICAgICAgICAgICAtLWJvcmRlci13aWR0aDogMnB4O1xuXG4gICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICAgICAgICAgICAgICBib3JkZXI6IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgIzBiMTlhMjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAucHJvZHVjdC1wcmljZSB7XG4gICAgICAgIEBhcHBseSB0ZXh0LTV4bCB4bDp0ZXh0LTZ4bDsgLyogeGw6dGV4dC04eGw7ICovXG4gICAgICB9XG5cbiAgICAgIC5wcm9kdWN0LXZhcmlhdGlvbnMge1xuICAgICAgICBncmlkLWFyZWE6IHZhcmlhdGlvbnM7XG4gICAgICAgIG9yZGVyOiAyO1xuXG4gICAgICAgIC52YXJpYXRpb25zLWxpc3Qge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcblxuICAgICAgICAgIGxpLnZhcmlhdGlvbiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZmZmO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMWVtO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XG4gICAgICAgICAgICBmaWxsOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgJi5jb2xvci1uaWNrZWwge1xuICAgICAgICAgICAgICAtLWNvbG9yOiAjZWVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5jb2xvci13aGl0ZSB7XG4gICAgICAgICAgICAgIC0tY29sb3I6ICNmZmY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLmNvbG9yLWJsYWNrIHtcbiAgICAgICAgICAgICAgLS1jb2xvcjogIzIyMjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICBtYXJnaW46IDJweDtcbiAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMmVtIC0gNnB4KTtcbiAgICAgICAgICAgICAgaGVpZ2h0OiBjYWxjKDJlbSAtIDZweCk7XG4gICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNhYWE7XG4gICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDFlbTtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3IpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLnNlbGVjdGVkLFxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogI2FhYTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5zZWxlY3RlZCB7XG4gICAgICAgICAgICAgIGZpbGw6ICNmZmY7XG5cbiAgICAgICAgICAgICAgJi5jb2xvci13aGl0ZSxcbiAgICAgICAgICAgICAgJi5jb2xvci1ncmF5LFxuICAgICAgICAgICAgICAmLmNvbG9yLW5pY2tlbCB7XG4gICAgICAgICAgICAgICAgZmlsbDogIzAwMDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuY2hlY2sge1xuICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICAgIHdpZHRoOiAxZW07XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsLTUwJSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYudmFyaWF0aW9uLWNvbG9yIHtcbiAgICAgICAgICAgICAgd2lkdGg6IDJlbTtcbiAgICAgICAgICAgICAgaGVpZ2h0OiAyZW07XG4gICAgICAgICAgICAgIHRleHQtaW5kZW50OiAtMTAwMGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGxpICsgbGkge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNWVtO1xuICAgICAgICAgIH1cblxuICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogYXR0cihkYXRhLXNlbGVjdGVkKTtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMC41cmVtO1xuICAgICAgICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMnJlbTtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnByb2R1Y3QtYWN0aW9ucyB7XG4gICAgICAgIGdyaWQtYXJlYTogYWN0aW9ucztcbiAgICAgICAgb3JkZXI6IDQ7XG5cbiAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgQGFwcGx5IGlubGluZS1ibG9jayBweC04IHB5LTIgcm91bmRlZC1mdWxsIHRleHQtc20gZm9udC1saWdodCB1cHBlcmNhc2UgeGw6dGV4dC1sZzsgLyogeGw6cHgtMTYgeGw6cHktNCB4bDpyb3VuZGVkLTN4bCB4bDp0ZXh0LTJ4bDsgKi9cbiAgXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWJhY2tncm91bmQtY29sb3IpO1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1idXR0b24tdGV4dC1jb2xvcik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzMjBweCAxZnI7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogMzIwcHggbWluLWNvbnRlbnQgbWlubWF4KDQuMjVyZW0sIDFmcikgbWluLWNvbnRlbnQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6XG4gICAgICAgICAgXCJpbWFnZSBpbmZvXCJcbiAgICAgICAgICBcInZhcmlhdGlvbnMgaW5mb1wiXG4gICAgICAgICAgXCJhY3Rpb25zIGluZm9cIlxuICAgICAgICAgIFwiZmVhdHVyZXMgZmVhdHVyZXNcIiA7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDQyMHB4IDFmcjtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiA0MjBweCBtaW4tY29udGVudCA0LjI1cmVtIG1pbi1jb250ZW50O1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjgwcHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA0ODBweCAxZnI7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogNDgwcHggbWluLWNvbnRlbnQgNC4yNXJlbSBtaW4tY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZm9vdGVyIHtcbiAgQGFwcGx5IHB4LTggdGV4dC1jZW50ZXIgdGV4dC14cztcblxuICBjb2xvcjogdmFyKC0tZm9vdGVyLXRleHQtY29sb3IpO1xufSIsbnVsbF19 */