/*!**************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[15].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[15].oneOf[5].use[3]!./src/shop/features/configurator/Configurator.module.css ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************/
.Configurator_box__cQvV9 {
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  padding: var(--s-4);
  background: var(--c-surface-2);
  border: 1px solid var(--c-rule);
  border-radius: var(--r-md);
}

.Configurator_title__uhTc1 {
  margin: 0;
  font-size: var(--fz-sm);
  font-weight: var(--fw-bold);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--c-ink-700);
}

.Configurator_subtitle__FmB5t {
  margin: 0;
  font-size: var(--fz-xs);
  color: var(--c-ink-500);
}

.Configurator_toggleRow__PLQmo {
  display: flex;
  align-items: center;
  gap: var(--s-2);
}

.Configurator_fieldset__78U_9 {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  border: none;
  padding: 0;
  margin: 0;
}

.Configurator_legend__z8fin {
  font-size: var(--fz-sm);
  font-weight: var(--fw-bold);
  color: var(--c-ink-900);
  margin: 0;
  padding: 0;
}

.Configurator_techniqueGroup__Ia0Kk {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2);
}

.Configurator_techniqueOption__I1zZ_ {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: var(--s-1) var(--s-3);
  min-height: 36px;
  font-size: var(--fz-sm);
  color: var(--c-ink-900);
  background: var(--c-surface);
  border: 1px solid var(--c-rule);
  border-radius: var(--r-md);
  cursor: pointer;
  transition: border-color 0.1s, background 0.1s, color 0.1s;
}

.Configurator_techniqueOption__I1zZ_:hover {
  border-color: var(--c-ink-300);
}

.Configurator_techniqueOption__I1zZ_ input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
  width: 0;
  height: 0;
}

.Configurator_techniqueOptionActive__N9j5l {
  background: var(--c-ink-900);
  color: var(--c-surface);
  border-color: var(--c-ink-900);
}

.Configurator_field__FVPTw {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
}

.Configurator_fieldLabel__Rg8NV {
  font-size: var(--fz-xs);
  color: var(--c-ink-700);
  font-weight: var(--fw-medium);
}

.Configurator_input__k3M3x {
  font: inherit;
  padding: var(--s-2) var(--s-3);
  background: var(--c-surface);
  border: 1px solid var(--c-rule);
  border-radius: var(--r-sm);
  color: var(--c-ink-900);
}

.Configurator_input__k3M3x:focus-visible {
  outline: 2px solid var(--c-primary);
  outline-offset: 2px;
}

.Configurator_charCount__HPwyL {
  font-size: var(--fz-xs);
  color: var(--c-ink-500);
  align-self: flex-end;
}

.Configurator_colorGroup__cKXtk {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2);
}

.Configurator_colorChip__w_GNs {
  position: relative;
  width: 32px;
  height: 32px;
  border: 2px solid var(--c-rule);
  border-radius: 50%;
  cursor: pointer;
  background: var(--c-surface);
}

.Configurator_colorChip__w_GNs input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.Configurator_colorChipActive__Y2LJz {
  border-color: var(--c-ink-900);
  box-shadow: 0 0 0 2px var(--c-surface), 0 0 0 4px var(--c-ink-900);
}

.Configurator_colorChipBlack__xVWy0 {
  background: #111;
}

.Configurator_colorChipWhite__wGk_C {
  background: #fff;
  border-color: var(--c-ink-300);
}

.Configurator_colorChipGold__XdlNt {
  background: #c9a73f;
}

.Configurator_colorChipSilver__GFrsz {
  background: #bfc3c7;
}

.Configurator_error__djNFS {
  margin: 0;
  font-size: var(--fz-xs);
  color: var(--c-error, var(--c-primary));
}

.Configurator_surchargeRow__bHzp_ {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  border-top: 1px dashed var(--c-rule);
  padding-top: var(--s-2);
  font-size: var(--fz-sm);
  color: var(--c-ink-700);
}

.Configurator_surchargeAmount__e5nGx {
  font-weight: var(--fw-bold);
  color: var(--c-ink-900);
}

.Configurator_boxDisabled__21V0h .Configurator_field__FVPTw,
.Configurator_boxDisabled__21V0h .Configurator_techniqueGroup__Ia0Kk,
.Configurator_boxDisabled__21V0h .Configurator_colorGroup__cKXtk,
.Configurator_boxDisabled__21V0h .Configurator_surchargeRow__bHzp_ {
  opacity: 0.5;
  pointer-events: none;
}

/*!***************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[15].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[15].oneOf[5].use[3]!./src/shop/features/catalog/BuyBox.module.css ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************/
.BuyBox_box__tpWmi {
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
  max-width: 380px;
}

.BuyBox_brand__Z6xXN {
  font-size: var(--fz-xs);
  font-weight: var(--fw-bold);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--c-ink-500);
}

.BuyBox_title__Wldem {
  margin: 0;
  font-size: var(--fz-2xl);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  letter-spacing: -0.01em;
}

.BuyBox_rating__gwLlK {
  display: flex;
  align-items: center;
  gap: var(--s-1);
  font-size: var(--fz-sm);
  color: var(--c-ink-500);
}

.BuyBox_star__l4f3p {
  width: 14px;
  height: 14px;
  color: var(--c-primary);
  fill: currentColor;
}

.BuyBox_priceRow__Xq6T5 {
  display: flex;
  align-items: baseline;
  gap: var(--s-3);
  flex-wrap: wrap;
}

.BuyBox_price__DN_6l {
  font-size: var(--fz-3xl);
  font-weight: var(--fw-bold);
  color: var(--c-ink-900);
}

.BuyBox_wasPrice__We4zh {
  font-size: var(--fz-sm);
  color: var(--c-ink-500);
  text-decoration: line-through;
}

.BuyBox_saveBadge__03lUi {
  padding: 2px var(--s-2);
  background: var(--c-primary);
  color: #fff;
  font-size: var(--fz-xs);
  font-weight: var(--fw-bold);
  border-radius: var(--r-sm);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.BuyBox_stock__yLTnN { font-size: var(--fz-sm); font-weight: var(--fw-bold); }
.BuyBox_inStock__dA_BF { color: var(--c-success); }
.BuyBox_outOfStock__nWGH7 { color: var(--c-ink-500); }

.BuyBox_attrGroup__8S1dr { display: flex; flex-direction: column; gap: var(--s-2); }

.BuyBox_attrLabel__JJuu_ { font-size: var(--fz-sm); font-weight: var(--fw-bold); }
.BuyBox_attrValue__0I_fX { font-weight: var(--fw-regular); }

.BuyBox_pills__3hKxT { display: flex; flex-wrap: wrap; gap: var(--s-2); }

.BuyBox_pill__9Js9V {
  min-height: 32px;
  padding: var(--s-1) var(--s-3);
  font-size: var(--fz-sm);
  color: var(--c-ink-900);
  border: 1px solid var(--c-rule);
  border-radius: var(--r-md);
  background: transparent;
  cursor: pointer;
  transition: border-color 0.1s;
}

.BuyBox_pill__9Js9V:hover { border-color: var(--c-ink-300); }
.BuyBox_pillActive__Pepxk { border-color: var(--c-ink-900); background: var(--c-ink-900); color: var(--c-surface); }
.BuyBox_pill__9Js9V:disabled {
  color: var(--c-ink-300);
  background: var(--c-surface-2);
  border-color: var(--c-rule);
  cursor: not-allowed;
  text-decoration: line-through;
}

.BuyBox_qtyRow__Tdb_o { display: flex; align-items: center; gap: var(--s-4); }
.BuyBox_qtyLabel__0LMvJ { font-size: var(--fz-sm); font-weight: var(--fw-bold); }

.BuyBox_stepper__EoFq8 {
  display: inline-flex;
  border: 1px solid var(--c-rule);
  border-radius: var(--r-md);
  overflow: hidden;
}

.BuyBox_stepBtn__nonyY {
  width: 36px;
  height: 36px;
  font-size: var(--fz-lg);
  background: transparent;
  border: none;
  cursor: pointer;
  color: var(--c-ink-700);
}
.BuyBox_stepBtn__nonyY:hover { background: var(--c-surface-2); }

.BuyBox_qtyInput__MC3Qd {
  width: 48px;
  height: 36px;
  text-align: center;
  border: none;
  border-left: 1px solid var(--c-rule);
  border-right: 1px solid var(--c-rule);
  font-size: var(--fz-base);
  font-weight: var(--fw-bold);
  outline: none;
}
.BuyBox_qtyInput__MC3Qd::-webkit-inner-spin-button,
.BuyBox_qtyInput__MC3Qd::-webkit-outer-spin-button { -webkit-appearance: none; }

.BuyBox_cta__d1XpN {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 48px;
  background: var(--c-primary);
  color: var(--c-primary-ink);
  border-radius: var(--r-md);
  font-size: var(--fz-base);
  font-weight: var(--fw-bold);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  text-decoration: none;
  transition: background 0.12s;
  border: none;
  cursor: pointer;
}
.BuyBox_cta__d1XpN:hover:not(:disabled) {
  background: var(--c-primary-hover);
  color: var(--c-primary-ink);
}
.BuyBox_cta__d1XpN:disabled { opacity: 0.6; cursor: not-allowed; }

.BuyBox_ctaSecondary__or__g {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 40px;
  background: transparent;
  color: var(--c-primary);
  border: 1px solid var(--c-primary);
  border-radius: var(--r-md);
  font-size: var(--fz-sm);
  font-weight: var(--fw-bold);
  text-decoration: none;
  margin-top: 4px;
}

.BuyBox_addError___FMRQ {
  margin: 0;
  padding: 8px 12px;
  font-size: var(--fz-sm);
  background: var(--warn-bg, #ffe6e6);
  color: var(--c-ink-900);
  border-radius: var(--r-sm);
}

/*!*******************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[15].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[15].oneOf[5].use[3]!./src/shop/features/catalog/FbtSection.module.css ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************/
.FbtSection_section__zEY_D { margin-top: var(--s-8); border-top: 1px solid var(--c-rule); padding-top: var(--s-6); }

.FbtSection_h2__5aD4W { margin: 0 0 var(--s-4); font-size: var(--fz-lg); font-weight: var(--fw-bold); }

.FbtSection_grid__ynMJY {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--s-4);
}

.FbtSection_card__VX8LL {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--c-rule);
  border-radius: var(--r-md);
  overflow: hidden;
}

.FbtSection_imgLink__8qosk { display: block; }

.FbtSection_imgWrap__W5t15 {
  aspect-ratio: 1 / 1;
  background: var(--c-surface-2);
  display: flex;
  align-items: center;
  justify-content: center;
}

.FbtSection_img__Dl0pB { object-fit: contain; }

.FbtSection_body__y0c9p { padding: var(--s-3); display: flex; flex-direction: column; gap: var(--s-2); }

.FbtSection_titleLink__5_QXh {
  font-size: var(--fz-sm);
  color: var(--c-ink-900);
  text-decoration: none;
  display: -webkit-box;
  overflow: hidden;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

.FbtSection_titleLink__5_QXh:hover { color: var(--c-link); }

.FbtSection_price__i3ztD { font-size: var(--fz-md); font-weight: var(--fw-bold); }

.FbtSection_cta__kUFd8 {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 32px;
  margin-top: auto;
  border: 1px solid var(--c-ink-900);
  border-radius: var(--r-md);
  font-size: var(--fz-xs);
  font-weight: var(--fw-bold);
  text-transform: uppercase;
  text-decoration: none;
  color: var(--c-ink-900);
  transition: background 0.1s, color 0.1s;
}

.FbtSection_cta__kUFd8:hover { background: var(--c-ink-900); color: var(--c-surface); }

@media (max-width: 768px) {
  .FbtSection_grid__ynMJY { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[15].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[15].oneOf[5].use[3]!./src/shared/components/media/MediaSlide.module.css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************/
.MediaSlide_image__dQX0U,
.MediaSlide_video__BLvLH {
  display: block;
  width: 100%;
  height: 100%;
}

/* Keep a drag-to-pan gesture from being hijacked by native image drag or
   text/image selection. The draggable={false} attribute covers Firefox and
   Chrome; -webkit-user-drag covers Safari. */
.MediaSlide_image__dQX0U {
  -webkit-user-drag: none;
  user-select: none;
  -webkit-user-select: none;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[15].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[15].oneOf[5].use[3]!./src/shared/components/media/MediaThumb.module.css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************/
.MediaThumb_thumb__Sd2J7 {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
}

.MediaThumb_img__W3V1R {
  display: block;
}

.MediaThumb_fallback__StFqu {
  position: absolute;
  inset: 0;
  background: var(--c-surface-3);
}

.MediaThumb_playBadge__V0qDz {
  position: absolute;
  right: 3px;
  bottom: 3px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: var(--r-pill);
  background: rgba(0, 0, 0, 0.6);
  color: #fff;
}

/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[15].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[15].oneOf[5].use[3]!./src/shared/components/media/MediaLightbox.module.css ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************/
.MediaLightbox_overlay__f_Rsp {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: grid;
  grid-template-rows: auto 1fr auto;
  background: rgba(15, 15, 15, 0.94);
  -webkit-backdrop-filter: blur(4px);
          backdrop-filter: blur(4px);
  animation: MediaLightbox_fade__6uuw_ 160ms ease-out;
}

@keyframes MediaLightbox_fade__6uuw_ {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.MediaLightbox_topBar__6DKln {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
  padding: var(--s-4) var(--s-5);
  color: #fff;
}

.MediaLightbox_counter__YfRhq {
  font-size: var(--fz-base, 14px);
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.04em;
  opacity: 0.85;
}

.MediaLightbox_controls__ZEZ1H {
  display: flex;
  align-items: center;
  gap: var(--s-2);
}

.MediaLightbox_iconButton__TnNsl {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border: none;
  border-radius: var(--r-pill);
  background: rgba(255, 255, 255, 0.1);
  color: #fff;
  cursor: pointer;
  transition: background-color 0.15s ease, transform 0.15s ease;
}

.MediaLightbox_iconButton__TnNsl:hover {
  background: rgba(255, 255, 255, 0.22);
}

.MediaLightbox_iconButton__TnNsl:active {
  transform: scale(0.94);
}

.MediaLightbox_iconButton__TnNsl:disabled {
  opacity: 0.35;
  cursor: default;
}

.MediaLightbox_iconButton__TnNsl:focus-visible {
  outline: 2px solid #fff;
  outline-offset: 2px;
}

.MediaLightbox_stage__EsSA3 {
  position: relative;
  overflow: hidden;
  /* touch-action is set inline in MediaLightbox.tsx: pan-y at 1x (browser owns
     vertical scroll, we own the horizontal swipe) and none while zoomed so a
     two-axis pan gesture is never stolen by the browser. */
}

.MediaLightbox_track__9Dg3_ {
  display: flex;
  width: 100%;
  height: 100%;
  transition: transform 300ms cubic-bezier(0.22, 0.61, 0.36, 1);
  will-change: transform;
}

.MediaLightbox_track__9Dg3_.MediaLightbox_dragging__36MWj {
  transition: none;
}

.MediaLightbox_slide__jqckm {
  position: relative;
  flex: 0 0 100%;
  width: 100%;
  height: 100%;
}

.MediaLightbox_zoomLayer__c2OlA {
  position: absolute;
  inset: 0;
  transform-origin: center center;
  transition: transform 200ms ease-out;
}

.MediaLightbox_zoomLayer__c2OlA.MediaLightbox_noTransition__79eEM {
  transition: none;
}

.MediaLightbox_nav___5Xx8 {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  border: none;
  border-radius: var(--r-pill);
  background: rgba(255, 255, 255, 0.12);
  color: #fff;
  cursor: pointer;
  transition: background-color 0.15s ease;
}

.MediaLightbox_nav___5Xx8:hover {
  background: rgba(255, 255, 255, 0.26);
}

.MediaLightbox_nav___5Xx8:focus-visible {
  outline: 2px solid #fff;
  outline-offset: 2px;
}

.MediaLightbox_navPrev__1xNll {
  left: var(--s-4);
}

.MediaLightbox_navNext__gB6vC {
  right: var(--s-4);
}

.MediaLightbox_thumbStrip__ItUTb {
  display: flex;
  gap: var(--s-2);
  justify-content: center;
  padding: var(--s-4);
  overflow-x: auto;
  scrollbar-width: thin;
}

.MediaLightbox_thumb__NlMrX {
  position: relative;
  flex: 0 0 auto;
  width: 56px;
  height: 56px;
  padding: 0;
  border: 2px solid transparent;
  border-radius: var(--r-md);
  overflow: hidden;
  background: rgba(255, 255, 255, 0.08);
  cursor: pointer;
  opacity: 0.6;
  transition: opacity 0.15s ease, border-color 0.15s ease;
}

.MediaLightbox_thumb__NlMrX:hover {
  opacity: 1;
}

.MediaLightbox_thumbActive__daM8S {
  opacity: 1;
  border-color: #fff;
}

.MediaLightbox_thumb__NlMrX:focus-visible {
  outline: 2px solid #fff;
  outline-offset: 2px;
}

@media (max-width: 768px) {
  .MediaLightbox_nav___5Xx8 {
    width: 44px;
    height: 44px;
  }
  .MediaLightbox_navPrev__1xNll {
    left: var(--s-2);
  }
  .MediaLightbox_navNext__gB6vC {
    right: var(--s-2);
  }
}

@media (prefers-reduced-motion: reduce) {
  .MediaLightbox_overlay__f_Rsp,
  .MediaLightbox_track__9Dg3_,
  .MediaLightbox_zoomLayer__c2OlA,
  .MediaLightbox_iconButton__TnNsl {
    animation: none;
    transition: none;
  }
}

/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[15].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[15].oneOf[5].use[3]!./src/shared/components/media/MediaCarousel.module.css ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************/
.MediaCarousel_carousel__ISe8S {
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  /* Allow shrinking below content width inside the PDP grid track, so the
     mobile horizontal thumbnail strip scrolls instead of widening the page
     (a 46-image product otherwise forces a multi-thousand-px track). */
  min-width: 0;
  max-width: 100%;
}

/* PDP layout: thumbnail rail left of the hero on desktop. */
.MediaCarousel_withThumbs___zoCh {
  flex-direction: row;
  align-items: flex-start;
}

/* Stretches to the hero's height in the row; its absolutely-positioned rail
   then scrolls internally so a 20-image product never runs the page height. */
.MediaCarousel_railWrap__HRmfX {
  position: relative;
  flex-shrink: 0;
  width: 76px;
  align-self: stretch;
}

.MediaCarousel_thumbs__x_HU4 {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scroll-behavior: smooth;
}

.MediaCarousel_thumb__UGBXn {
  position: relative;
  box-sizing: border-box;
  flex-shrink: 0;
  width: 64px;
  height: 64px;
  padding: 2px;
  border: 2px solid var(--c-rule);
  border-radius: var(--r-md);
  background: var(--c-surface-2);
  cursor: pointer;
  overflow: hidden;
  transition: border-color 0.12s ease;
}

.MediaCarousel_thumb__UGBXn:hover {
  border-color: var(--c-ink-300);
}

.MediaCarousel_thumbActive__1NGN9 {
  border-color: var(--c-primary);
}

.MediaCarousel_thumb__UGBXn:focus-visible {
  outline: 2px solid var(--c-primary);
  outline-offset: 2px;
}

.MediaCarousel_heroCol__9CaBN {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
}

/* Desktop row layout: the hero fills the width beside the thumbnail rail.
   Only applies here - in the stacked/landing layouts a zero-basis flex child
   would collapse vertically, so the hero is left to size by its aspect-ratio. */
.MediaCarousel_withThumbs___zoCh .MediaCarousel_heroCol__9CaBN {
  flex: 1 1;
}

.MediaCarousel_heroWrap__BVdM2 {
  position: relative;
  width: 100%;
  border-radius: var(--r-lg);
  overflow: hidden;
  background: var(--c-surface-2);
  touch-action: pan-y;
}

.MediaCarousel_clickable__C7sfh {
  cursor: pointer;
}

.MediaCarousel_heroMedia__T_mqR {
  position: absolute;
  inset: 0;
  animation: MediaCarousel_heroFade__EVjuP 220ms ease-out;
}

@keyframes MediaCarousel_heroFade__EVjuP {
  from {
    opacity: 0.45;
  }
  to {
    opacity: 1;
  }
}

/* Desktop pointer magnify: scale the media toward the cursor. */
@media (hover: hover) and (pointer: fine) {
  .MediaCarousel_hoverZoom__HqRi3 {
    cursor: zoom-in;
  }
  .MediaCarousel_hoverZoom__HqRi3 .MediaCarousel_heroMedia__T_mqR {
    transition: transform 0.25s ease;
    transform-origin: var(--zx, 50%) var(--zy, 50%);
  }
  .MediaCarousel_hoverZoom__HqRi3:hover .MediaCarousel_heroMedia__T_mqR {
    transform: scale(1.8);
  }
}

.MediaCarousel_expand__yvl_U {
  position: absolute;
  top: var(--s-3);
  right: var(--s-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border: 1px solid var(--c-rule);
  border-radius: var(--r-pill);
  background: var(--c-surface);
  color: var(--c-ink-900);
  box-shadow: var(--sh-2);
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.15s ease, transform 0.15s ease;
}

.MediaCarousel_heroWrap__BVdM2:hover .MediaCarousel_expand__yvl_U,
.MediaCarousel_heroWrap__BVdM2:focus-within .MediaCarousel_expand__yvl_U {
  opacity: 1;
}

.MediaCarousel_expand__yvl_U:active {
  transform: scale(0.94);
}

.MediaCarousel_counter__YRWj7 {
  position: absolute;
  left: var(--s-3);
  bottom: var(--s-3);
  padding: 2px 8px;
  border-radius: var(--r-pill);
  background: rgba(15, 15, 15, 0.62);
  color: #fff;
  font-size: var(--fz-xs, 12px);
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.03em;
}

.MediaCarousel_nav__UFV_n {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border: 1px solid var(--c-rule);
  border-radius: var(--r-pill);
  background: var(--c-surface);
  color: var(--c-ink-900);
  box-shadow: var(--sh-2);
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.15s ease;
}

.MediaCarousel_heroWrap__BVdM2:hover .MediaCarousel_nav__UFV_n,
.MediaCarousel_heroWrap__BVdM2:focus-within .MediaCarousel_nav__UFV_n {
  opacity: 1;
}

.MediaCarousel_navPrev___K0dV {
  left: var(--s-3);
}

.MediaCarousel_navNext__q5emb {
  right: var(--s-3);
}

.MediaCarousel_expand__yvl_U:focus-visible,
.MediaCarousel_nav__UFV_n:focus-visible {
  outline: 2px solid var(--c-primary);
  outline-offset: 2px;
  opacity: 1;
}

.MediaCarousel_dots___Tpcv {
  display: flex;
  justify-content: center;
  gap: var(--s-2);
}

.MediaCarousel_dot__AiomO {
  width: 8px;
  height: 8px;
  padding: 0;
  border: none;
  border-radius: var(--r-pill);
  background: var(--c-ink-300);
  cursor: pointer;
  transition: background-color 0.15s ease, transform 0.15s ease;
}

.MediaCarousel_dotActive__FFAEj {
  background: var(--c-primary);
  transform: scale(1.3);
}

.MediaCarousel_dot__AiomO:focus-visible {
  outline: 2px solid var(--c-primary);
  outline-offset: 2px;
}

@media (max-width: 768px) {
  .MediaCarousel_withThumbs___zoCh {
    flex-direction: column-reverse;
    /* Stretch the cross-axis so the stacked hero spans the full width; the
       desktop rule above pins align-items to flex-start for the rail. */
    align-items: stretch;
  }
  /* Stacked: size the hero by its aspect-ratio instead of collapsing to a
     zero-basis flex child in the column-reverse container. */
  .MediaCarousel_withThumbs___zoCh .MediaCarousel_heroCol__9CaBN {
    flex: 0 0 auto;
  }
  /* Stacked layout: the rail is a static, horizontally-scrolling strip
     below the hero rather than a height-capped vertical column. */
  .MediaCarousel_railWrap__HRmfX {
    position: static;
    align-self: auto;
    width: auto;
    min-width: 0;
    max-width: 100%;
  }
  .MediaCarousel_thumbs__x_HU4 {
    position: static;
    flex-direction: row;
    overflow-x: auto;
    overflow-y: visible;
    min-width: 0;
  }
  .MediaCarousel_thumb__UGBXn {
    width: 56px;
    height: 56px;
  }
  /* Touch has no hover; keep controls reachable and large enough to tap. */
  .MediaCarousel_expand__yvl_U,
  .MediaCarousel_nav__UFV_n {
    opacity: 1;
    width: 44px;
    height: 44px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .MediaCarousel_heroMedia__T_mqR,
  .MediaCarousel_hoverZoom__HqRi3 .MediaCarousel_heroMedia__T_mqR,
  .MediaCarousel_expand__yvl_U,
  .MediaCarousel_nav__UFV_n,
  .MediaCarousel_dot__AiomO {
    animation: none;
    transition: none;
  }
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[15].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[15].oneOf[5].use[3]!./src/shop/features/catalog/SpecAccordion.module.css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************/
.SpecAccordion_wrap__PAlr9 { border-top: 1px solid var(--c-rule); margin-top: var(--s-8); }

.SpecAccordion_section__GkLpX {
  border-bottom: 1px solid var(--c-rule);
}

.SpecAccordion_summary__w_29L {
  list-style: none;
  padding: var(--s-4) 0;
  font-size: var(--fz-md);
  font-weight: var(--fw-bold);
  cursor: pointer;
  -webkit-user-select: none;
          user-select: none;
}

.SpecAccordion_summary__w_29L::-webkit-details-marker { display: none; }

.SpecAccordion_desc__lpin1 {
  margin: 0 0 var(--s-4);
  font-size: var(--fz-base);
  color: var(--c-ink-700);
  line-height: var(--lh-base);
  max-width: 72ch;
}

.SpecAccordion_table__hmHNi { width: 100%; border-collapse: collapse; margin-bottom: var(--s-4); }
.SpecAccordion_th__nnVPM, .SpecAccordion_td__IX4OI {
  padding: var(--s-2) var(--s-3);
  font-size: var(--fz-sm);
  text-align: left;
  border-bottom: 1px solid var(--c-surface-2);
}
.SpecAccordion_th__nnVPM { font-weight: var(--fw-bold); color: var(--c-ink-700); width: 40%; }
.SpecAccordion_td__IX4OI { color: var(--c-ink-900); }

/*!*****************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[15].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[15].oneOf[5].use[3]!./src/app/(shop)/product/[slug]/page.module.css ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************/
.page_main__Vcfal {
  max-width: var(--container);
  margin: 0 auto;
  padding: var(--s-6) var(--gutter) var(--s-16);
}

.page_crumbs__9lHW5 {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-1);
  margin-bottom: var(--s-6);
  font-size: var(--fz-sm);
  color: var(--c-ink-500);
}

.page_crumbs__9lHW5 a { color: var(--c-ink-700); text-decoration: none; }
.page_crumbs__9lHW5 a:hover { color: var(--c-primary); }
.page_crumbs__9lHW5 span[aria-hidden] { color: var(--c-ink-300); }

.page_pdp__GjA7d {
  display: grid;
  grid-template-columns: 1fr 380px;
  gap: var(--s-8);
  align-items: flex-start;
}

@media (max-width: 1024px) {
  .page_pdp__GjA7d { grid-template-columns: 1fr 320px; }
}

@media (max-width: 768px) {
  .page_main__Vcfal { padding: var(--s-4) var(--s-3) var(--s-10); }
  .page_pdp__GjA7d { grid-template-columns: 1fr; gap: var(--s-6); }
}

