:root:root {
  --bw-ease-standard: cubic-bezier(0.22, 0.61, 0.36, 1);
  --bw-ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --bw-ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --bw-dur-instant: 120ms;
  --bw-dur-fast: 160ms;
  --bw-dur-brisk: 220ms;
  --bw-dur-base: 260ms;
  --bw-dur-calm: 360ms;
  --bw-dur-slow: 450ms;
  --bw-dur-slower: 600ms;
  --bw-dur-slowest: 900ms;
  --bw-stagger: 80ms;
  --bw-stagger-cap: 5;
  --bw-lift: -4px;
  --bw-lift-sm: -2px;
  --bw-press: 0.97;
  --bw-press-sm: 0.94;
  --bw-zoom: 1.04;
  --bw-marquee-px-per-second: 40;
}

@keyframes bw-reveal-up {
  from {
    opacity: 0;
    transform: translateY(24px);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

@keyframes bw-pop-in {
  from {
    transform: scale(0.8);
  }

  to {
    transform: none;
  }
}

@keyframes bw-marquee-scroll {
  from {
    transform: translate3d(0, 0, 0);
  }

  to {
    transform: translate3d(-50%, 0, 0);
  }
}

@media (prefers-reduced-motion: no-preference) {
  :is(.bw-reveal, .main-collection__list > li, .main-blog__item) {
    opacity: 0;
  }

  :is(.bw-reveal, .main-collection__list > li, .main-blog__item).is-inview {
    animation: bw-reveal-up var(--bw-dur-slower) var(--bw-ease-standard) both;
    animation-delay: calc(var(--bw-order, 0) * var(--bw-stagger));
  }

  :is(.main-collection__list > li, .main-blog__item).is-inview {
    animation-delay: calc(min(var(--bw-order, 0), var(--bw-stagger-cap)) * var(--bw-stagger));
  }

  body[data-page-type="product"] :is(.section-recommended-product, .block-articles__carousel) {
    opacity: 0;
  }

  body[data-page-type="product"] :is(.section-recommended-product, .block-articles__carousel).is-inview {
    animation: bw-reveal-up var(--bw-dur-slower) var(--bw-ease-standard) both;
  }

  .bw-badge.is-inview .bw-badge__mark {
    animation: bw-pop-in var(--bw-dur-slow) var(--bw-ease-out) both;
    animation-delay: calc(var(--bw-order, 0) * var(--bw-stagger) + var(--bw-dur-instant));
  }

  .bw-marquee__track {
    animation: bw-marquee-scroll var(--bw-marquee-duration, 30s) linear infinite;
  }

  .bw-marquee:hover .bw-marquee__track {
    animation-play-state: paused;
  }
}

.bw-marquee {
  overflow: hidden;
}

.bw-marquee__track {
  display: flex;
  flex-wrap: nowrap;
  width: max-content;
  will-change: transform;
}

.button:not(.button--link, .button--text, .button--icon),
a.bw-404__cta,
.bw-pair__btn,
.bw-sample__btn,
.bw-sticky__btn,
.bw-srch__more-button {
  transition:
    transform var(--bw-dur-fast) var(--bw-ease-standard),
    background-color var(--bw-dur-brisk) var(--bw-ease-standard),
    border-color var(--bw-dur-brisk) var(--bw-ease-standard),
    color var(--bw-dur-brisk) var(--bw-ease-standard),
    box-shadow var(--bw-dur-brisk) var(--bw-ease-standard);
}

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .button:not(.button--link, .button--text, .button--icon, [disabled]):hover,
  a.bw-404__cta:hover,
  .bw-pair__btn:not([disabled]):hover,
  .bw-sample__btn:hover,
  .bw-sticky__btn:not([disabled]):hover,
  .bw-srch__more-button:hover {
    transform: translateY(var(--bw-lift-sm));
  }
}

.button:not(.button--link, .button--text, .button--icon, [disabled]):active,
a.bw-404__cta:active,
.bw-pair__btn:not([disabled]):active,
.bw-sample__btn:active,
.bw-sticky__btn:not([disabled]):active,
.bw-srch__more-button:active {
  transform: scale(var(--bw-press));
}

/* Outline/ghost buttons have no filled background for the stock alpha-shift hover to act on
   (the hero even feeds it a 4-part token that computes to nothing), so the tint is drawn from
   the scheme's secondary border colour instead. */
@media (hover: hover) {
  .button--secondary:not(.button--link, .button--text, .button--icon, [disabled]):hover,
  .bw-sample a.bw-sample__btn:hover {
    background-color: rgba(var(--color-button-secondary-border, var(--color-text)), 0.14);
  }
}

.bw-sample a.bw-sample__btn {
  transition:
    transform var(--bw-dur-fast) var(--bw-ease-standard),
    background-color var(--bw-dur-brisk) var(--bw-ease-standard),
    border-color var(--bw-dur-brisk) var(--bw-ease-standard),
    color var(--bw-dur-brisk) var(--bw-ease-standard);
}

.button--link,
.button--text {
  transition: color var(--bw-dur-brisk) var(--bw-ease-standard), opacity var(--bw-dur-brisk) var(--bw-ease-standard);
}

.bw-modal__close,
.cart-drawer__close,
.bw-cartreco__arrow,
.bw-srch__clear,
.bw-srch__clear-all,
.bw-sticky__step,
.bw-pair__check,
.bw-pdp-delivery__how,
theme-input-number button[name="minus"],
theme-input-number button[name="plus"],
.header-action-bar .button--icon {
  transition:
    transform var(--bw-dur-fast) var(--bw-ease-standard),
    opacity var(--bw-dur-fast) var(--bw-ease-standard),
    background-color var(--bw-dur-fast) var(--bw-ease-standard),
    border-color var(--bw-dur-fast) var(--bw-ease-standard),
    color var(--bw-dur-fast) var(--bw-ease-standard);
}

@media (hover: hover) {
  .bw-modal__close:hover,
  .cart-drawer__close:hover,
  .bw-srch__clear:hover,
  .bw-srch__clear-all:hover,
  .bw-sticky__step:not([disabled]):hover,
  .bw-pair__check:hover,
  .bw-pdp-delivery__how:hover,
  .header-action-bar .button--icon:hover {
    opacity: 0.7;
  }

  .bw-cartreco__arrow:not([disabled]):hover {
    color: var(--bw-cream);
    background-color: var(--bw-ink);
    border-color: var(--bw-ink);
  }

  theme-input-number button[name="minus"]:not([disabled]):hover,
  theme-input-number button[name="plus"]:not([disabled]):hover {
    opacity: 0.6;
  }
}

theme-input-number button[name="minus"]:not([disabled]):active,
theme-input-number button[name="plus"]:not([disabled]):active {
  transform: scale(var(--bw-press-sm));
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-delay: 0ms !important;
    animation-duration: 1ms !important;
    animation-iteration-count: 1 !important;
    transition-delay: 0ms !important;
    transition-duration: 1ms !important;
    scroll-behavior: auto !important;
  }

  .bw-marquee__track {
    animation: none !important;
    transform: none !important;
  }

  .bw-marquee {
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
  }

  .bw-marquee::-webkit-scrollbar {
    display: none;
  }

  .bw-marquee__track > * {
    scroll-snap-align: start;
  }

  .bw-marquee__track > [aria-hidden="true"] {
    display: none;
  }

  .bw-docs::after {
    display: none;
  }
}
