.jdm-slider-shell{position:relative;--jdm-gap:14px;--jdm-row-gap:14px;--jdm-title-sku-gap:6px;--jdm-sku-price-gap:8px;box-sizing:border-box;width:100%;max-width:100%;overflow:visible}
.jdm-slider-shell *{box-sizing:border-box}
.jdm-slider-stage{position:relative;width:100%;max-width:100%;padding-inline:28px;overflow:visible}
.jdm-product-swiper{width:100%;max-width:100%;overflow:hidden;padding:8px 2px}
.jdm-product-swiper>.swiper-wrapper{display:flex;flex-wrap:nowrap;align-items:stretch}
.jdm-product-swiper .swiper-slide{height:auto;min-width:0;flex:0 0 auto;box-sizing:border-box}

/* Source is immutable input for the JS page builder. It never participates in layout. */
.jdm-grid-source{display:none!important}

/* Each Swiper slide is a complete responsive page. This avoids Swiper's fragile multi-row mode. */
.jdm-grid-page{width:100%!important}
.jdm-grid-page__inner{display:grid;width:100%;grid-template-columns:repeat(var(--jdm-page-cols,5),minmax(0,1fr));grid-template-rows:repeat(var(--jdm-page-rows,2),auto);gap:var(--jdm-row-gap) var(--jdm-gap);align-items:stretch}
.jdm-grid-cell{display:flex;min-width:0;height:100%}

.jdm-product-card{width:100%!important;max-width:100%;min-width:0;height:100%;display:flex;flex-direction:column;border:1px solid #e7e7e7;background:#fff;overflow:hidden;transition:transform .25s ease,box-shadow .25s ease}
.jdm-product-card__image{display:flex;align-items:center;justify-content:center;width:100%;height:220px;padding:14px;overflow:hidden;flex:0 0 auto}
.jdm-product-card__image img{display:block;width:100%;height:100%;object-fit:contain;margin:0}
.jdm-product-card__content{display:flex;flex-direction:column;flex:1;padding:14px;min-width:0}
.jdm-product-card__title{--jdm-title-lines:2;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:var(--jdm-title-lines);line-clamp:var(--jdm-title-lines);overflow:hidden;color:#111;text-decoration:none;font-weight:700;line-height:1.25;text-transform:uppercase;margin:0 0 var(--jdm-title-sku-gap,6px);min-height:calc(1.25em * var(--jdm-title-lines));overflow-wrap:anywhere}
.jdm-product-card__sku{font-size:13px;color:#999;margin:0 0 var(--jdm-sku-price-gap,8px);display:flex;align-items:flex-start;flex:0 0 auto}
.jdm-product-card__price{font-size:22px;font-weight:800;line-height:1.2;margin:0 0 12px;display:flex;align-items:flex-end;flex:0 0 auto}
.jdm-product-card__price del{opacity:.55;font-size:.8em}.jdm-product-card__price ins{text-decoration:none;font-size:1em}.jdm-product-card__price del .woocommerce-Price-amount,.jdm-product-card__price ins .woocommerce-Price-amount{font-size:inherit;font-weight:inherit;line-height:inherit}
.jdm-product-card__button{display:flex!important;align-items:center;justify-content:center;gap:8px;width:100%;text-decoration:none!important;border:0!important;min-height:42px;background:#eeb116;color:#fff;font-weight:700;text-transform:uppercase;transition:.2s ease;margin-top:auto}
.jdm-product-card__button:hover{background:#d79d0a;color:#fff}
.jdm-cart-icon{font-size:16px;line-height:1}

.jdm-slider-arrow,.jdm-slider-arrow:hover,.jdm-slider-arrow:focus{appearance:none;-webkit-appearance:none;position:absolute;z-index:40;top:50%;display:flex!important;align-items:center!important;justify-content:center!important;width:44px;height:44px;min-width:44px;min-height:44px;margin:0!important;padding:0!important;border:1px solid #ddd;border-radius:999px;background:#fff;color:#333;cursor:pointer;box-shadow:0 4px 16px rgba(0,0,0,.12);transform:translateY(-50%);line-height:0}
.jdm-slider-arrow svg{display:block;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.jdm-slider-prev{left:0}.jdm-slider-next{right:0}
.jdm-slider-arrow.swiper-button-disabled{opacity:.35;cursor:not-allowed;pointer-events:none}
.jdm-slider-shell.jdm-no-overflow .jdm-slider-arrow{display:none!important}

.jdm-slider-footer{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:18px;padding:0 12px}
.jdm-progress-track{position:relative;width:min(360px,100%);height:5px;border-radius:999px;background:#f5e4a9;overflow:hidden}
.jdm-progress-fill{display:block;width:0;height:100%;border-radius:inherit;background:#eeb116;transition:width .25s ease}
.jdm-slider-counter{font-size:14px;color:#eeb116;letter-spacing:.04em}

.jdm-layout-center .jdm-product-swiper{padding-top:20px;padding-bottom:20px}
.jdm-layout-center .swiper-wrapper{align-items:stretch}
.jdm-layout-center .swiper-slide{width:420px;max-width:calc(100% - 48px);opacity:.35;transition:opacity .3s ease,transform .3s ease;transform-origin:center center}
.jdm-layout-center .swiper-slide-active{opacity:1;z-index:2}
.jdm-layout-center .jdm-product-card{width:100%;height:100%}
.jdm-empty{padding:20px;border:1px dashed #ccc;text-align:center}

/* The page grid is rendered synchronously before Swiper finishes lazy-loading. */


/* 2.6.0 — deterministic Elementor responsive rendering. */
.jdm-button-label--mobile{display:none}
.jdm-button-label--desktop{display:inline}

.jdm-slider-shell.jdm-device-mobile .jdm-button-label--desktop{display:none!important}
.jdm-slider-shell.jdm-device-mobile .jdm-button-label--mobile{display:inline!important}
.jdm-slider-shell.jdm-device-tablet .jdm-button-label--desktop,
.jdm-slider-shell.jdm-device-desktop .jdm-button-label--desktop{display:inline!important}
.jdm-slider-shell.jdm-device-tablet .jdm-button-label--mobile,
.jdm-slider-shell.jdm-device-desktop .jdm-button-label--mobile{display:none!important}

/* Grid output is hidden only until the synchronous page composer has selected
 * the correct device. jdm-ready is added BEFORE the async Swiper loader runs. */
.jdm-layout-grid .jdm-product-swiper--grid,
.jdm-layout-grid .jdm-slider-arrow,
.jdm-layout-grid .jdm-slider-footer{visibility:hidden;opacity:0}
.jdm-layout-grid.jdm-ready .jdm-product-swiper--grid,
.jdm-layout-grid.jdm-ready .jdm-slider-arrow,
.jdm-layout-grid.jdm-ready .jdm-slider-footer{visibility:visible;opacity:1}

@media(max-width:1024px){
  .jdm-product-card__image{height:200px}
  .jdm-layout-center .swiper-slide{width:65%;max-width:65%}
}
@media(max-width:767px){
  .jdm-button-label--desktop{display:none!important}
  .jdm-button-label--mobile{display:inline!important}
  .jdm-slider-stage{padding-inline:18px}
  .jdm-product-card__image{height:180px;padding:10px}
  .jdm-product-card__content{padding:11px}
  .jdm-product-card__title{font-size:14px}
  .jdm-product-card__sku{font-size:12px}
  .jdm-product-card__price{font-size:20px;margin-bottom:10px}
  .jdm-product-card__button{font-size:13px;min-height:40px}
  .jdm-slider-arrow,.jdm-slider-arrow:hover,.jdm-slider-arrow:focus{width:38px;height:38px;min-width:38px;min-height:38px}
  .jdm-slider-arrow svg{width:18px;height:18px}
  .jdm-layout-center .swiper-slide{width:74%;max-width:74%}
}

/* 2.6.1 — separación título/SKU controlada desde Elementor mediante --jdm-title-sku-gap. */

/* 2.6.2 — flujo vertical correcto: título → SKU → precio. El espacio flexible queda sólo antes del botón. */


/* 2.6.8 — prevent stale products from flashing before the live refresh. */
.jdm-slider-shell.jdm-live-pending .jdm-slider-stage,
.jdm-slider-shell.jdm-live-pending .jdm-slider-footer{
  opacity:0!important;
  visibility:hidden!important;
  pointer-events:none!important;
}
.jdm-slider-shell.jdm-live-pending::after{
  content:"";
  position:absolute;
  z-index:90;
  left:50%;
  top:50%;
  width:30px;
  height:30px;
  margin:-15px 0 0 -15px;
  border:3px solid rgba(232,91,138,.18);
  border-top-color:#e85b8a;
  border-radius:50%;
  animation:jdm-live-spin .7s linear infinite;
  pointer-events:none;
}
.jdm-slider-shell.jdm-live-ready .jdm-slider-stage,
.jdm-slider-shell.jdm-live-ready .jdm-slider-footer{
  transition:opacity .16s ease;
}
@keyframes jdm-live-spin{to{transform:rotate(360deg)}}

/* 2.6.9 — navigation is handled directly by JDM so it remains reliable after live product refreshes. */
.jdm-slider-arrow{touch-action:manipulation;user-select:none;-webkit-user-select:none}
