/* Card width (and thus how many are visible / how far a "slide" moves) is
   driven entirely by this custom property, overridden per breakpoint —
   ProductCard's own root has no size opinion of its own. 4-up above
   1024px, 2-up at and below it (tablet and mobile share the same 2-up
   grid — no separate tablet tier).

   cqw (not %) on purpose: the track is now a native horizontally-scrolling
   element whose content (the slides) is wider than the visible viewport —
   there is no definite "100%" to size a card against other than the
   viewport's own visible width. container-type below turns the viewport
   into a query container so cqw resolves against exactly that. */
.cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider {
  --nisa-product-card-width: calc((100cqw - 3 * var(--nisa-product-slider-gap)) / 4);
  --nisa-product-slider-gap: 6px;
  display: flex;
  flex-direction: column;
  position: relative;
  padding: 24px 0;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider__title {
  margin: 0 0 20px;
  padding: 0 clamp(16px, 4.83vw, 32px);
  font-size: 22px;
  font-weight: 500;
}

/* Padding lives on this outer, non-clipping wrapper — NOT on the
   overflow:hidden/auto element below. overflow only clips at an element's
   own border-box edge, so if the same element also carried the padding,
   content bleeding into that padding area would render past it uncropped
   right up to the border edge (visible as a sliver of the next card and a
   missing right-hand gap). Keeping padding one level up means the
   viewport's border-box IS the visible window, with nothing of its own
   encroaching on it. */
.cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider__inset {
  position: relative;
  padding: 0 clamp(16px, 4.83vw, 32px);
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider__viewport {
  position: relative;
  container-type: inline-size;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  /* scroll-behavior is NOT set to smooth here on purpose — it would also
     animate the drag handler's per-pointermove scrollLeft assignments,
     turning 1:1 cursor tracking into laggy, rubber-banded catch-up. The
     arrow click handler below opts into smooth for just that one jump via
     an inline style toggle. */
  scrollbar-width: none;
  -ms-overflow-style: none;
  cursor: grab;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider__viewport::-webkit-scrollbar {
  display: none;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider__viewport:active {
  cursor: grabbing;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider__track {
  display: flex;
  width: max-content;
  gap: var(--nisa-product-slider-gap);
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider__slide {
  flex: 0 0 var(--nisa-product-card-width);
  min-width: 0;
  scroll-snap-align: start;
}

/* Siblings of .nisa-product-slider__viewport (not inside it), positioned
   against .nisa-product-slider__inset. Inset further than the container's
   own side padding (matches header) so the arrows sit visibly over the
   edge card's image instead of lining up flush with the header's edge.
   Colors match the reference site's add-to-cart button exactly (measured
   live): transparent bg by default, inverts to solid black on hover —
   fast in (150ms, reads as an instant flip), slow back out (1s, smooth).
   Disabled (at either end of the scrollable range) just dims via opacity,
   still through the same slow/smooth transition. */
.cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider__arrow {
  display: flex;
  align-items: center;
  justify-content: center;
  position: absolute;
  /* Centered on the product image (measured in index.tsx), falling back to
     the card's middle until the first measurement lands. */
  top: var(--nisa-product-slider-arrow-top, 50%);
  transform: translateY(-50%);
  z-index: 1;
  width: 44px;
  height: 44px;
  border: 1px solid var(--nisa-ps-arrow-border, var(--yxsK6O1M8R, #000));
  border-radius: 9999px;
  background: var(--nisa-ps-arrow-bg, transparent);
  color: var(--nisa-ps-arrow-color, var(--yxsK6O1M8R, #000));
  cursor: pointer;
  padding: 0;
  opacity: 1;
  transition:
    background-color 1s cubic-bezier(0.25, 1, 0.5, 1),
    border-color 1s cubic-bezier(0.25, 1, 0.5, 1),
    color 1s cubic-bezier(0.25, 1, 0.5, 1),
    opacity 0.3s ease,
    visibility 0.3s ease;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider__arrow--prev {
  left: calc(clamp(16px, 4.83vw, 32px) + 20px);
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider__arrow--next {
  right: calc(clamp(16px, 4.83vw, 32px) + 20px);
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider__arrow:hover:not(:disabled), .cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider__arrow:focus-visible:not(:disabled) {
  background: var(--nisa-ps-arrow-hover-bg, var(--fyLUpQhzWf, #000));
  border-color: var(--nisa-ps-arrow-hover-border, var(--nisa-ps-arrow-border, var(--yxsK6O1M8R, #000)));
  color: var(--nisa-ps-arrow-hover-color, var(--j3Xiz3CkQn, #fff));
  transition-duration: 0.15s;
}

/* Nothing more to scroll on that side: hide the arrow instead of showing a
   dimmed, unclickable one. visibility (in the transition list above) keeps
   it visible until the fade-out finishes. */
.cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider__arrow:disabled {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider__arrow:focus-visible {
  outline: 2px solid var(--yxsK6O1M8R, #000);
  outline-offset: 2px;
}

@media (min-width: 1024px) {
  .cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider[data-arrows-desktop="false"] .nisa-product-slider__arrow {
    display: none;
  }
}

@media (max-width: 1023px) {
  .cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider {
    --nisa-product-card-width: calc((100cqw - var(--nisa-product-slider-gap)) / 2);
  }

  .cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider[data-arrows-mobile="false"] .nisa-product-slider__arrow {
    display: none;
  }

  /* Shown on mobile: shrunk, still centered on the product image (via the
     measured --nisa-product-slider-arrow-top var). */
  .cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider[data-arrows-mobile="true"] .nisa-product-slider__arrow {
    top: var(--nisa-product-slider-arrow-top, 50%);
    width: 28px;
    height: 28px;
  }

  .cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider[data-arrows-mobile="true"] .nisa-product-slider__arrow svg {
    width: 7px;
    height: 10px;
  }
}

/* Purely a visual nudge — translates the track a few px and springs it
   back with an overshoot, never touching real scrollLeft. */
@keyframes cc_llcvgyda_RqlEQQbYl8_nisa-product-slider-hint {
  0% {
    transform: translateX(0);
  }
  30% {
    transform: translateX(-24px);
  }
  55% {
    transform: translateX(4px);
  }
  75% {
    transform: translateX(-2px);
  }
  100% {
    transform: translateX(0);
  }
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider__track--hint {
  animation: cc_llcvgyda_RqlEQQbYl8_nisa-product-slider-hint 0.9s cubic-bezier(0.34, 1.56, 0.64, 1);
}

@media (prefers-reduced-motion: reduce) {
  .cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider__track {
    transition: none;
  }

  .cc_llcvgyda_RqlEQQbYl8 .nisa-product-slider__track--hint {
    animation: none;
  }
}

/* ===== Product Card (see src/sub-components/ProductCard) ===== */
.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__media {
  position: relative;
  display: block;
  aspect-ratio: 3 / 4;
  background: var(--s85UhUiAdv, #f0f0f0);
  overflow: hidden;
  text-decoration: none;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  -webkit-user-drag: none;
  user-select: none;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__badges {
  position: absolute;
  left: 12px;
  top: 12px;
  z-index: 1;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__badge {
  padding: 2px 7px;
  border: 1px solid var(--yxsK6O1M8R, #000);
  border-radius: 9999px;
  background: var(--4BzdyajXuX, #fff);
  color: var(--fyLUpQhzWf, #000);
  font-size: 14px;
  font-weight: 300;
  white-space: nowrap;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__favorite {
  position: absolute;
  right: 9px;
  top: 9px;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border: none;
  background: none;
  color: var(--yxsK6O1M8R, #000);
  cursor: pointer;
  padding: 0;
  transition: color 0.2s ease;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__favorite svg {
  width: 17px;
  height: 17px;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__favorite-shape {
  transition: fill 0.2s ease;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__favorite:hover, .cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__favorite:focus-visible {
  color: var(--yxsK6O1M8R, #000);
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__favorite:hover .nisa-product-card__favorite-shape, .cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__favorite:focus-visible .nisa-product-card__favorite-shape {
  fill: currentColor;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__favorite--active {
  color: var(--yxsK6O1M8R, #000);
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__favorite:disabled {
  opacity: 0.6;
  cursor: default;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__favorite:focus-visible {
  outline: 2px solid var(--yxsK6O1M8R, #000);
  outline-offset: 2px;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__add-to-cart {
  position: absolute;
  right: 9px;
  bottom: 9px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  border: none;
  background: var(--4BzdyajXuX, #fff);
  color: var(--fyLUpQhzWf, #000);
  cursor: pointer;
  padding: 0;
  transition:
    background-color 1s cubic-bezier(0.25, 1, 0.5, 1),
    color 1s cubic-bezier(0.25, 1, 0.5, 1);
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__add-to-cart svg {
  width: 18px;
  height: 18px;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__add-to-cart:hover, .cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__add-to-cart:focus-visible {
  background: var(--fyLUpQhzWf, #000);
  color: var(--j3Xiz3CkQn, #fff);
  transition-duration: 0.15s;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__add-to-cart:focus-visible {
  outline: 2px solid var(--yxsK6O1M8R, #000);
  outline-offset: 2px;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__out-of-stock {
  position: absolute;
  right: 9px;
  bottom: 9px;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 46px;
  padding: 0 14px;
  background: var(--4BzdyajXuX, #fff);
  color: var(--rYy2IWOx7T, #767676);
  font-size: 11px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__info {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  padding: 9px;
  flex: 1;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__link {
  flex: 1 1 auto;
  min-width: 0;
  color: var(--yxsK6O1M8R, #000);
  text-decoration: none;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__name {
  margin: 0;
  font-size: 14px;
  letter-spacing: 0.02em;
  white-space: normal;
  word-break: break-word;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__price {
  margin: 4px 0 0;
  font-size: 14px;
  letter-spacing: 0.02em;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__price--sell {
  margin-right: 6px;
  color: var(--rYy2IWOx7T, #767676);
  text-decoration: line-through;
  white-space: nowrap;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__price--final {
  white-space: nowrap;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__swatches {
  display: flex;
  align-items: center;
  gap: 6px;
  flex: 0 0 auto;
  padding-top: 4px;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__swatch {
  width: 10px;
  height: 10px;
  border: none;
  padding: 0;
  cursor: pointer;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__swatch--selected {
  outline: 1px solid var(--rYy2IWOx7T, #767676);
  outline-offset: 2px;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__swatch--oos {
  opacity: 0.3;
  cursor: not-allowed;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__cta {
  display: none;
}

@media (prefers-reduced-motion: reduce) {
  .cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__add-to-cart {
    transition: none;
  }
}

/* Visibility (cart icon / add-to-cart button) comes only from ProductCard's
   data-desktop/data-mobile rules, i.e. the editor toggles — no display here. */
@media (max-width: 767px) {
  .cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__cta {
    align-items: center;
    justify-content: center;
    width: 100%;
    margin-top: 9px;
    padding: 12px 14px;
    border: 1px solid var(--nisa-pcard-cta-border, var(--nisa-pcard-cta-color, var(--yxsK6O1M8R, #000)));
    background: var(--nisa-pcard-cta-bg, var(--4BzdyajXuX, #fff));
    color: var(--nisa-pcard-cta-color, var(--fyLUpQhzWf, #000));
    font-size: 14px;
    letter-spacing: 0.02em;
    cursor: pointer;
  }

  .cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__cta:focus-visible {
    outline: 2px solid var(--yxsK6O1M8R, #000);
    outline-offset: 2px;
  }
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-product-card__cta:disabled {
  border-color: var(--ggXmQeec6D, #e3e3e3);
  color: var(--rYy2IWOx7T, #767676);
  cursor: not-allowed;
}

/* ===== Back-in-stock notify (see src/sub-components/BackInStockNotify) ===== */

.cc_llcvgyda_RqlEQQbYl8 .nisa-bis__form {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-bis__label {
  font-size: 13px;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-bis__input {
  width: 100%;
  padding: 12px 14px;
  border: 1px solid var(--ggXmQeec6D, #d4d4d4);
  /* 16px, not 14px — iOS Safari zooms in on focus for any input under 16px. */
  font-size: 16px;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-bis__input:focus-visible {
  outline: 2px solid var(--yxsK6O1M8R, #000);
  outline-offset: 2px;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-bis__error {
  margin: 0;
  color: var(--5UwfHs0Yil, #c0392b);
  font-size: 13px;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-bis__submit {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 14px;
  background: var(--fyLUpQhzWf, #000);
  border: 1px solid var(--yxsK6O1M8R, #000);
  color: var(--j3Xiz3CkQn, #fff);
  font-size: 14px;
  cursor: pointer;
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-bis__submit:hover:not(:disabled) {
  background: color-mix(in srgb, var(--fyLUpQhzWf, #000) 90%, var(--j3Xiz3CkQn, #fff));
}

.cc_llcvgyda_RqlEQQbYl8 .nisa-bis__submit:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
