@charset "UTF-8";

/* -------------------------------- 

File#: _1_order-summary
Title: Order Summary
Descr: A template showing a recap of the cart items
Usage: codyhouse.co/license

-------------------------------- */
:root {
    --order-summary-img-size: 3.6em;
    --order-summary-img-margin-right: var(--space-xs)
}

.order-summary__header {
    border-radius: inherit;
    border-bottom-left-radius: 0px;
    border-bottom-right-radius: 0px
}

.order-summary__footer {
    border-radius: inherit;
    border-top-left-radius: 0px;
    border-top-right-radius: 0px
}

.order-summary__item {
    display: grid;
    grid-template-columns: var(--order-summary-img-size) 1fr;
    grid-gap: var(--order-summary-img-margin-right);
    align-items: center
}

.order-summary__img {
    display: block;
    width: var(--order-summary-img-size);
    height: var(--order-summary-img-size);
    border-radius: var(--radius-md);
    overflow: hidden;
    box-shadow: var(--shadow-sm);
    transition: 0.2s
}

.order-summary__img img {
    display: block;
    width: 100%;
    -o-object-fit: cover;
    object-fit: cover
}

.order-summary__img:hover {
    transform: translateY(-1px);
    box-shadow: var(--shadow-sm)
}

/* -------------------------------- 

File#: _1_custom-select
Title: Custom Select
Descr: Custom Select Control
Usage: codyhouse.co/license

-------------------------------- */
:root {
    /* --default variation only 👇 */
    --select-icon-size: 16px;
    --select-icon-right-margin: var(--space-sm);
    /* icon margin right */
    --select-text-icon-gap: var(--space-xxxs)
        /* gap between text and icon */
}

.select {
    position: relative
}

.select__input {
    width: 100%;
    height: 100%;
    padding-right: calc(var(--select-icon-size) + var(--select-icon-right-margin) + var(--select-text-icon-gap)) !important;
    -webkit-user-select: none;
    user-select: none
}

.select__icon {
    width: var(--select-icon-size);
    height: var(--select-icon-size);
    pointer-events: none;
    position: absolute;
    right: var(--select-icon-right-margin);
    top: 50%;
    transform: translateY(-50%)
}

/* --custom-dropdown */
:root {
    --select-dropdown-gap: 4px
        /* distance between select control and custom dropdown */
}

.select__button {
    /* created in JS - custom select control */
    width: 100%
}

.select__button[aria-expanded=true] {
    /* custom select control if dropdown = visible */
}

.select__dropdown {
    /* created in JS - custom select dropdown */
    position: absolute;
    left: 0;
    top: 100%;
    min-width: 200px;
    max-height: 1px;
    /* updated in JS */
    background-color: var(--color-bg-light);
    box-shadow: var(--inner-glow), var(--shadow-md);
    padding: var(--space-xxxs) 0;
    border-radius: var(--radius-md);
    z-index: var(--z-index-popover, 5);
    margin-top: var(--select-dropdown-gap);
    margin-bottom: var(--select-dropdown-gap);
    overflow: auto;
    font-size: 1rem;
    visibility: hidden;
    opacity: 0;
    transition: visibility 0s 0.2s, opacity 0.2s
}

.select__dropdown--right {
    /* change dropdown position based on the available space */
    right: 0;
    left: auto
}

.select__dropdown--up {
    bottom: 100%;
    top: auto
}

.select__button[aria-expanded=true]+.select__dropdown {
    visibility: visible;
    opacity: 1;
    transition: visibility 0s, opacity 0.2s
}

/* custom <optgroup> list - include all <option>s if no <optgroup> available  */
.select__list {
    list-style: none !important
}

.select__list:not(:first-of-type) {
    padding-top: var(--space-xxs)
}

.select__list:not(:last-of-type) {
    border-bottom: 1px solid hsla(var(--color-contrast-higher-h), var(--color-contrast-higher-s), var(--color-contrast-higher-l), 0.1);
    padding-bottom: var(--space-xxs)
}

.select__item {
    /* single item inside .select__list */
    display: flex;
    align-items: center;
    padding: var(--space-xxs) var(--space-sm);
    color: var(--color-contrast-high);
    width: 100%;
    text-align: left;
    /* truncate text */
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis
}

.select__item--optgroup {
    /* custom <optgroup> label */
    font-size: 0.8125rem;
    color: var(--color-contrast-medium)
}

.select__item--option {
    /* custom <option> label */
    cursor: pointer;
    transition: 0.2s
}

.select__item--option:hover {
    background-color: hsla(var(--color-contrast-higher-h), var(--color-contrast-higher-s), var(--color-contrast-higher-l), 0.075)
}

.select__item--option:focus {
    outline: none;
    background-color: hsla(var(--color-primary-h), var(--color-primary-s), var(--color-primary-l), 0.15)
}

.select__item--option[aria-selected=true] {
    /* selected option */
    background-color: var(--color-primary);
    color: var(--color-white);
    position: relative
}

.select__item--option[aria-selected=true]::after {
    /* check icon next to the selected language */
    content: "";
    display: block;
    height: 1em;
    width: 1em;
    margin-left: auto;
    background-color: currentColor;
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpolyline stroke-width='2' stroke='%23ffffff' fill='none' stroke-linecap='round' stroke-linejoin='round' points='1,9 5,13 15,3 '/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpolyline stroke-width='2' stroke='%23ffffff' fill='none' stroke-linecap='round' stroke-linejoin='round' points='1,9 5,13 15,3 '/%3E%3C/svg%3E")
}

.select__item--option[aria-selected=true]:focus {
    box-shadow: inset 0 0 0 2px var(--color-primary-dark)
}

.select__item--option[disabled] {
    opacity: 0.5;
    cursor: not-allowed
}

/* -------------------------------- 

File#: _1_radios-checkboxes
Title: Radios and Checkboxes
Descr: Custom radio and checkbox buttons
Usage: codyhouse.co/license

-------------------------------- */
:root {
    /* radios + checkboxes */
    --checkbox-radio-size: 18px;
    --checkbox-radio-gap: var(--space-xxs);
    /* gap between button and label */
    --checkbox-radio-border-width: 1px;
    --checkbox-radio-line-height: 1.4;
    /* radios */
    --radio-marker-size: 8px;
    /* checkboxes */
    --checkbox-marker-size: 12px;
    --checkbox-radius: 4px
}

/* hide native buttons */
.radio,
.checkbox {
    position: absolute;
    padding: 0;
    margin: 0;
    margin-top: calc((1em * var(--checkbox-radio-line-height) - var(--checkbox-radio-size)) / 2);
    opacity: 0;
    height: var(--checkbox-radio-size);
    width: var(--checkbox-radio-size);
    pointer-events: none
}

/* label */
.radio+label,
.checkbox+label {
    display: inline-block;
    line-height: var(--checkbox-radio-line-height);
    -webkit-user-select: none;
    user-select: none;
    cursor: pointer;
    padding-left: calc(var(--checkbox-radio-size) + var(--checkbox-radio-gap))
}

/* custom inputs - basic style */
.radio+label::before,
.checkbox+label::before {
    content: "";
    box-sizing: border-box;
    display: inline-block;
    position: relative;
    vertical-align: middle;
    top: -0.1em;
    margin-left: calc(-1 * (var(--checkbox-radio-size) + var(--checkbox-radio-gap)));
    flex-shrink: 0;
    width: var(--checkbox-radio-size);
    height: var(--checkbox-radio-size);
    background-color: var(--color-bg);
    border-width: var(--checkbox-radio-border-width);
    border-color: hsla(var(--color-contrast-low-h), var(--color-contrast-low-s), var(--color-contrast-low-l), 0.65);
    border-style: solid;
    box-shadow: var(--shadow-xs);
    background-repeat: no-repeat;
    background-position: center;
    margin-right: var(--checkbox-radio-gap);
    transition: transform 0.2s, border 0.2s
}

/* :hover */
.radio:not(:checked):not(:focus)+label:hover::before,
.checkbox:not(:checked):not(:focus)+label:hover::before {
    border-color: hsla(var(--color-contrast-low-h), var(--color-contrast-low-s), var(--color-contrast-low-l), 1)
}

/* radio only style */
.radio+label::before {
    border-radius: 50%
}

/* checkbox only style */
.checkbox+label::before {
    border-radius: var(--checkbox-radius)
}

/* :checked */
.radio:checked+label::before,
.checkbox:checked+label::before {
    background-color: var(--color-primary);
    box-shadow: var(--shadow-xs);
    border-color: var(--color-primary);
    transition: transform 0.2s
}

/* :active */
.radio:active+label::before,
.checkbox:active+label::before {
    transform: scale(0.8);
    transition: transform 0.2s
}

/* :checked:active */
.radio:checked:active+label::before,
.checkbox:checked:active+label::before {
    transform: none;
    transition: none
}

/* radio button icon */
.radio:checked+label::before {
    background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cg class='nc-icon-wrapper' fill='%23ffffff'%3E%3Ccircle cx='8' cy='8' r='8' fill='%23ffffff'%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");
    background-size: var(--radio-marker-size)
}

/* checkbox button icon */
.checkbox:checked+label::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpolyline points='1 6.5 4 9.5 11 2.5' fill='none' stroke='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'/%3E%3C/svg%3E");
    background-size: var(--checkbox-marker-size)
}

/* :focus */
.radio:checked:active+label::before,
.checkbox:checked:active+label::before,
.radio:focus+label::before,
.checkbox:focus+label::before {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px hsla(var(--color-primary-h), var(--color-primary-s), var(--color-primary-l), 0.2)
}

/* --radio--bg, --checkbox--bg -> variation with background color */
.radio--bg+label,
.checkbox--bg+label {
    padding: var(--space-xxxs) var(--space-xxxs);
    padding-left: calc(var(--checkbox-radio-size) + var(--checkbox-radio-gap) + var(--space-xxxs));
    border-radius: var(--radius-md);
    transition: background 0.2s
}

.radio--bg+label:hover,
.checkbox--bg+label:hover {
    background-color: hsla(var(--color-contrast-higher-h), var(--color-contrast-higher-s), var(--color-contrast-higher-l), 0.075)
}

.radio--bg:active+label,
.checkbox--bg:active+label,
.radio--bg:focus+label,
.checkbox--bg:focus+label {
    background-color: hsla(var(--color-primary-h), var(--color-primary-s), var(--color-primary-l), 0.1)
}

/* -------------------------------- 

File#: _1_choice-buttons
Title: Choice Buttons
Descr: Visually enhanced radio/checkbox buttons
Usage: codyhouse.co/license

-------------------------------- */
:root {
    --choice-btn-border-width: 1px;
    --choice-btn-border-radius: var(--radius-md);
    --choice-btn-align-items: center;
    --choice-btn-input-size: 20px;
    --choice-btn-input-icon-size: 16px;
    --choice-btn-input-border-width: 1px;
    --choice-btn-input-margin-right: var(--space-sm);
    --choice-btn-input-translate-y: 0em
}

.choice-btn__grid {
    display: none
}

.choice-btn__fallback {
    position: absolute;
    clip: rect(1px, 1px, 1px, 1px);
    -webkit-clip-path: inset(50%);
    clip-path: inset(50%)
}

.choice-btn {
    position: relative;
    background-color: var(--color-bg-light);
    border-radius: var(--choice-btn-border-radius);
    box-shadow: 0 0 0 var(--choice-btn-border-width) var(--color-contrast-lower);
    -webkit-user-select: none;
    user-select: none;
    cursor: pointer;
    transition: 0.2s
}

.choice-btn.choice-btn--focus,
.choice-btn.choice-btn--checked,
.choice-btn:active {
    box-shadow: 0 0 0 2px var(--color-primary)
}

.choice-btn.choice-btn--focus,
.choice-btn:active {
    box-shadow: 0 0 0 2px var(--color-primary), 0 0 0 4px hsla(var(--color-primary-h), var(--color-primary-s), var(--color-primary-l), 0.2)
}

.choice-btn__grid {
    display: block;
    display: grid;
    grid-template-columns: var(--choice-btn-input-size) 1fr;
    grid-gap: var(--choice-btn-input-margin-right);
    align-items: var(--choice-btn-align-items)
}

.choice-btn__input {
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: var(--color-bg-light);
    width: var(--choice-btn-input-size);
    height: var(--choice-btn-input-size);
    border-width: var(--choice-btn-input-border-width);
    border-style: solid;
    border-color: hsla(var(--color-contrast-low-h), var(--color-contrast-low-s), var(--color-contrast-low-l), 0.65);
    box-shadow: var(--shadow-xs);
    position: relative;
    top: var(--choice-btn-input-translate-y);
    transition: 0.2s
}

.choice-btn__input .icon {
    color: var(--color-white);
    font-size: var(--choice-btn-input-icon-size)
}

.choice-btn:hover:not(.choice-btn--checked) .choice-btn__input {
    border-color: hsla(var(--color-contrast-low-h), var(--color-contrast-low-s), var(--color-contrast-low-l), 1)
}

.choice-btn--checked .choice-btn__input {
    border-color: var(--color-primary);
    background-color: var(--color-primary)
}

.choice-btn__input--checkbox {
    border-radius: 4px
}

.choice-btn__input--checkbox .icon>* {
    transition: stroke-dashoffset 0.3s;
    stroke-dasharray: 18;
    stroke-dashoffset: 18
}

.choice-btn--checked .choice-btn__input--checkbox .icon>* {
    stroke-dasharray: 18;
    stroke-dashoffset: 0
}

.choice-btn__input--radio {
    border-radius: 50%
}

.choice-btn__input--radio .icon {
    transition: transform 0.3s var(--ease-out-back);
    transform: scale(0)
}

.choice-btn--checked .choice-btn__input--radio .icon {
    transform: scale(1)
}

/* -------------------------------- 

File#: _1_choice-accordion
Title: Choice Accordion
Descr: A group of radio/checkbox buttons controlling expandable content
Usage: codyhouse.co/license

-------------------------------- */
:root {
    --choice-accordion-border-width: 1px;
    --choice-accordion-border-radius: var(--radius-md);
    --choice-accordion-input-size: 20px;
    --choice-accordion-input-icon-size: 16px;
    --choice-accordion-input-border-width: 1px;
    --choice-accordion-input-margin-right: var(--space-xxs)
}

.choice-accordion {
    border-width: var(--choice-accordion-border-width);
    border-color: var(--color-contrast-lower);
    border-style: solid;
    border-radius: var(--choice-accordion-border-radius);
    overflow: hidden
}

.choice-accordion__btn {
    display: grid;
    grid-template-columns: var(--choice-accordion-input-size) 1fr;
    grid-gap: var(--choice-accordion-input-margin-right);
    align-items: center;
    cursor: pointer;
    background-color: var(--color-bg-light);
    border-top-width: var(--choice-accordion-border-width);
    border-style: solid;
    border-color: var(--color-contrast-lower)
}

.choice-accordion__item:first-child .choice-accordion__btn {
    border-top: none
}

.choice-accordion__panel {
    position: relative;
    background-color: var(--color-bg-dark);
    overflow: hidden;
    will-change: height;
    transform: translateZ(0px)
}

.choice-accordion__panel::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: var(--choice-accordion-border-width);
    background-color: var(--color-contrast-lower);
    pointer-events: none
}

.choice-accordion__input {
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: var(--color-bg-light);
    width: var(--choice-accordion-input-size);
    height: var(--choice-accordion-input-size);
    border-width: var(--choice-accordion-input-border-width);
    border-style: solid;
    border-color: hsla(var(--color-contrast-low-h), var(--color-contrast-low-s), var(--color-contrast-low-l), 0.65);
    box-shadow: var(--shadow-xs);
    transition: 0.2s
}

.choice-accordion__input .icon {
    color: var(--color-white);
    font-size: var(--choice-accordion-input-icon-size)
}

.choice-accordion__btn:hover .choice-accordion__input {
    border-color: hsla(var(--color-contrast-low-h), var(--color-contrast-low-s), var(--color-contrast-low-l), 1)
}

.choice-accordion__btn--checked .choice-accordion__input,
.choice-accordion__btn--focus .choice-accordion__input,
.choice-accordion__btn--checked:hover .choice-accordion__input,
.choice-accordion__btn--focus:hover .choice-accordion__input {
    border-color: var(--color-primary)
}

.choice-accordion__btn--checked .choice-accordion__input {
    background-color: var(--color-primary)
}

.choice-accordion__btn--focus .choice-accordion__input {
    box-shadow: var(--shadow-xs), 0 0 0 3px hsla(var(--color-primary-h), var(--color-primary-s), var(--color-primary-l), 0.2)
}

.choice-accordion__input--checkbox {
    border-radius: 4px
}

.choice-accordion__input--checkbox .icon>* {
    transition: stroke-dashoffset 0.3s;
    stroke-dasharray: 18;
    stroke-dashoffset: 18
}

.choice-accordion__btn--checked .choice-accordion__input--checkbox .icon>* {
    stroke-dasharray: 18;
    stroke-dashoffset: 0
}

.choice-accordion__input--radio {
    border-radius: 50%
}

.choice-accordion__input--radio .icon {
    transition: transform 0.3s var(--ease-out-back);
    transform: scale(0)
}

.choice-accordion__btn--checked .choice-accordion__input--radio .icon {
    transform: scale(1)
}

.choice-accordion__fallback {
    position: absolute;
    clip: rect(1px, 1px, 1px, 1px);
    -webkit-clip-path: inset(50%);
    clip-path: inset(50%)
}

/* -------------------------------- 

File#: _2_checkout
Title: Checkout
Descr: Checkout template
Usage: codyhouse.co/license

-------------------------------- */
.checkout {
    position: relative;
    z-index: 1
}

.checkout__billing-checkbox {
    display: none
}

@media (min-width: 80rem) {
    .checkout .order-summary {
        position: sticky;
        top: var(--space-sm);
        max-height: calc(100vh - var(--space-sm));
        overflow: auto;
        -webkit-overflow-scrolling: touch
    }
}

.checkout__billing-checkbox {
    display: block
}

.checkout__billing-info {
    display: none
}