{"product_id":"pack-2-fajas-body-colaless-ahorra-10-000","title":"PACK 2 FAJAS BODY COLALESS - Ahorra $10.000","description":"\u003cstyle\u003e\n  \/* === Banner despacho V9 — FRESH MODERN 2026-05-17 === *\/\n  .sf-shp2 { font-family:'Inter',-apple-system,system-ui,sans-serif; background:linear-gradient(135deg, #FFF9F0 0%, #FFEEF6 50%, #F0F4FF 100%); border:1px solid rgba(139,92,246,.18); border-radius:16px; padding:0; margin:0 0 32px; position:relative; box-shadow:0 10px 32px rgba(139,92,246,.12), 0 2px 6px rgba(236,72,153,.08); overflow:hidden; color:#1E1B2E; }\n  .sf-shp2::before { content:''; position:absolute; top:-60px; right:-60px; width:240px; height:240px; background:radial-gradient(circle at center, rgba(236,72,153,.20) 0%, transparent 70%); pointer-events:none; }\n  .sf-shp2::after { content:''; position:absolute; bottom:-80px; left:-40px; width:260px; height:260px; background:radial-gradient(circle at center, rgba(14,165,233,.15) 0%, transparent 70%); pointer-events:none; }\n  .sf-shp2-stripe { position:absolute; left:0; top:0; bottom:0; width:5px; background:linear-gradient(180deg, #EC4899 0%, #8B5CF6 50%, #0EA5E9 100%); border-radius:16px 0 0 16px; z-index:3; }\n\n  \/* Top live bar *\/\n  .sf-shp2-top { background:linear-gradient(90deg, #1E1B2E 0%, #2A1F47 100%); color:#fff; padding:9px 16px 9px 22px; display:flex; align-items:center; justify-content:space-between; font-size:9.5px; font-weight:700; letter-spacing:.16em; text-transform:uppercase; position:relative; z-index:2; }\n  .sf-shp2-top-left { display:inline-flex; align-items:center; gap:7px; color:#F0ABCC; }\n  .sf-shp2-top-dot { width:7px; height:7px; border-radius:999px; background:#FF3D7F; box-shadow:0 0 0 2px rgba(255,61,127,.35), 0 0 12px rgba(255,61,127,.85); animation:sfShp2Blink 1.2s ease-in-out infinite; }\n  @keyframes sfShp2Blink { 0%,100% { opacity:1; transform:scale(1); } 50% { opacity:.5; transform:scale(.82); } }\n  .sf-shp2-top-clock { font-family:'SF Mono','Courier New',monospace; font-size:11px; color:#FFFFFF; letter-spacing:.06em; font-weight:700; font-variant-numeric:tabular-nums; text-shadow:0 0 10px rgba(240,171,204,.45); }\n  .sf-shp2-top-right { color:#A78BFA; }\n\n  \/* Body *\/\n  .sf-shp2-body { padding:20px 22px 18px 27px; position:relative; z-index:1; }\n  .sf-shp2-row1 { display:flex; align-items:center; gap:14px; padding-bottom:16px; border-bottom:1px dashed rgba(139,92,246,.22); margin-bottom:16px; }\n  .sf-shp2-row1-ico { font-size:26px; line-height:1; flex-shrink:0; width:48px; height:48px; background:linear-gradient(135deg, #FFAB6F 0%, #EC4899 50%, #8B5CF6 100%); border-radius:14px; display:grid; place-items:center; box-shadow:0 6px 18px rgba(236,72,153,.45), 0 2px 4px rgba(139,92,246,.30), inset 0 1px 0 rgba(255,255,255,.35); border:1px solid rgba(255,255,255,.30); transform:rotate(-3deg); }\n  .sf-shp2-row1-text { flex:1; display:flex; flex-direction:column; gap:5px; min-width:0; }\n  .sf-shp2-row1-label { font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:#8B5CF6 !important; font-weight:700; line-height:1; }\n  .sf-shp2-row1-value { font-family:'Cormorant Garamond',Georgia,serif; font-size:24px; font-weight:600; color:#1E1B2E !important; font-style:italic; letter-spacing:-.01em; line-height:1.1; display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }\n  .sf-shp2-row1-value em { font-style:normal; color:#FFFFFF !important; background:linear-gradient(135deg, #EC4899 0%, #8B5CF6 100%); font-weight:800; text-transform:uppercase; font-size:14.5px; letter-spacing:.10em; font-family:'Inter',-apple-system,system-ui,sans-serif; padding:6px 12px; border-radius:999px; box-shadow:0 4px 14px rgba(236,72,153,.40), inset 0 1px 0 rgba(255,255,255,.25); }\n\n  \/* Countdown urgencia *\/\n  .sf-shp2-urge { display:flex; align-items:center; gap:10px; padding:10px 14px; background:linear-gradient(90deg, rgba(251,146,60,.18) 0%, rgba(244,114,182,.10) 100%); border:1px solid rgba(251,146,60,.40); border-radius:12px; margin-bottom:16px; backdrop-filter:blur(8px); }\n  .sf-shp2-urge-ico { font-size:18px; line-height:1; flex-shrink:0; animation:sfShp2Shake 2.5s ease-in-out infinite; }\n  @keyframes sfShp2Shake { 0%,90%,100% { transform:rotate(0); } 92% { transform:rotate(-10deg); } 94% { transform:rotate(10deg); } 96% { transform:rotate(-5deg); } 98% { transform:rotate(0); } }\n  .sf-shp2-urge-text { font-size:11.5px; color:#9A3412 !important; font-weight:600; line-height:1.3; flex:1; }\n  .sf-shp2-urge-text strong { color:#EA580C !important; font-weight:800; font-variant-numeric:tabular-nums; }\n\n  \/* Row 2 *\/\n  .sf-shp2-row2 { display:grid; grid-template-columns:1fr 1fr; gap:12px; }\n  .sf-shp2-col { display:flex; align-items:flex-start; gap:11px; min-width:0; padding:12px 14px; background:rgba(255,255,255,.75); border:1px solid rgba(139,92,246,.18); border-radius:14px; backdrop-filter:blur(10px); transition:transform .2s ease; }\n  .sf-shp2-col-ico { font-size:16px; line-height:1; flex-shrink:0; width:34px; height:34px; border-radius:12px; display:grid; place-items:center; }\n  .sf-shp2-col-ico.is-pink { background:linear-gradient(135deg, rgba(236,72,153,.20) 0%, rgba(244,114,182,.10) 100%); border:1px solid rgba(236,72,153,.40); box-shadow:0 4px 10px rgba(236,72,153,.15); }\n  .sf-shp2-col-ico.is-blue { background:linear-gradient(135deg, rgba(14,165,233,.20) 0%, rgba(34,211,238,.10) 100%); border:1px solid rgba(14,165,233,.40); box-shadow:0 4px 10px rgba(14,165,233,.15); }\n  .sf-shp2-col-text { display:flex; flex-direction:column; gap:3px; min-width:0; flex:1; }\n  .sf-shp2-col-label { font-size:9.5px; letter-spacing:.14em; text-transform:uppercase; font-weight:700; line-height:1; }\n  .sf-shp2-col-label.is-pink { color:#DB2777 !important; }\n  .sf-shp2-col-label.is-blue { color:#0284C7 !important; }\n  .sf-shp2-col-value { font-size:13px; color:#1E1B2E !important; font-weight:700; line-height:1.25; }\n  .sf-shp2-col-value-sub { font-size:10.5px; color:#7C7B85 !important; font-weight:500; margin-top:1px; line-height:1.2; }\n  .sf-shp2-row1-flag { font-size:22px; line-height:1; margin-left:2px; display:inline-block; filter:drop-shadow(0 2px 4px rgba(0,0,0,.12)); }\n\n  @media (max-width:480px) {\n    .sf-shp2 { border-radius:14px; }\n    .sf-shp2-top { padding:8px 12px 8px 18px; font-size:8.5px; }\n    .sf-shp2-top-clock { font-size:9.5px; }\n    .sf-shp2-top-right { display:none; }\n    .sf-shp2-body { padding:14px 14px 12px 20px; }\n    .sf-shp2-row1-ico { font-size:22px; width:42px; height:42px; border-radius:12px; }\n    .sf-shp2-row1-value { font-size:20px; }\n    .sf-shp2-row1-value em { font-size:12.5px; padding:5px 10px; }\n    .sf-shp2-urge { padding:9px 11px; gap:8px; border-radius:10px; }\n    .sf-shp2-urge-text { font-size:10.5px; }\n    .sf-shp2-row2 { gap:9px; }\n    .sf-shp2-col { padding:10px 11px; border-radius:12px; gap:9px; }\n    .sf-shp2-col-value { font-size:12px; }\n    .sf-shp2-col-ico { width:30px; height:30px; font-size:14px; border-radius:10px; }\n  }\n\u003c\/style\u003e\n\u003cdiv class=\"sf-shp2\" role=\"status\" aria-label=\"Información de despacho en tiempo real\"\u003e\n  \u003cdiv class=\"sf-shp2-stripe\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"sf-shp2-top\"\u003e\n    \u003cspan class=\"sf-shp2-top-left\"\u003e\n      \u003cspan class=\"sf-shp2-top-dot\"\u003e\u003c\/span\u003e\n      \u003cspan\u003eEn vivo · Santiago\u003c\/span\u003e\n    \u003c\/span\u003e\n    \u003cspan class=\"sf-shp2-top-clock\" id=\"shp2-clock\"\u003e--:--:--\u003c\/span\u003e\n    \u003cspan class=\"sf-shp2-top-right\"\u003eActualiza cada seg.\u003c\/span\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"sf-shp2-body\"\u003e\n    \u003cdiv class=\"sf-shp2-row1\"\u003e\n      \u003cspan class=\"sf-shp2-row1-ico\"\u003e📦\u003c\/span\u003e\n      \u003cdiv class=\"sf-shp2-row1-text\"\u003e\n        \u003cspan class=\"sf-shp2-row1-label\"\u003eSi compras ahora, despachamos\u003c\/span\u003e\n        \u003cspan class=\"sf-shp2-row1-value\"\u003e\u003cspan id=\"shp2-pre\"\u003eMañana\u003c\/span\u003e\u003cem id=\"shp2-day\"\u003eLUNES\u003c\/em\u003e \u003cspan class=\"sf-shp2-row1-flag\"\u003e🇨🇱\u003c\/span\u003e\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"sf-shp2-urge\"\u003e\n      \u003cspan class=\"sf-shp2-urge-ico\"\u003e⏰\u003c\/span\u003e\n      \u003cspan class=\"sf-shp2-urge-text\" id=\"shp2-urge\"\u003eTe quedan \u003cstrong\u003e--\u003c\/strong\u003e para entrar en el próximo despacho\u003c\/span\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"sf-shp2-row2\"\u003e\n      \u003cdiv class=\"sf-shp2-col\"\u003e\n        \u003cspan class=\"sf-shp2-col-ico is-pink\"\u003e📍\u003c\/span\u003e\n        \u003cdiv class=\"sf-shp2-col-text\"\u003e\n          \u003cspan class=\"sf-shp2-col-label is-pink\"\u003eRM Santiago\u003c\/span\u003e\n          \u003cspan class=\"sf-shp2-col-value\" id=\"shp2-san\"\u003emañana lunes\u003c\/span\u003e\n          \u003cspan class=\"sf-shp2-col-value-sub\"\u003eTe llega a tu casa\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"sf-shp2-col\"\u003e\n        \u003cspan class=\"sf-shp2-col-ico is-blue\"\u003e🌎\u003c\/span\u003e\n        \u003cdiv class=\"sf-shp2-col-text\"\u003e\n          \u003cspan class=\"sf-shp2-col-label is-blue\"\u003eRegiones\u003c\/span\u003e\n          \u003cspan class=\"sf-shp2-col-value\"\u003e1 a 3 días\u003c\/span\u003e\n          \u003cspan class=\"sf-shp2-col-value-sub\"\u003eDías hábiles\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  function pad(n){ return n\u003c10?'0'+n:''+n; }\n  function nextCutoff(now){\n    var n=new Date(now.getTime());\n    var t11=new Date(n.getFullYear(),n.getMonth(),n.getDate(),11,0,0);\n    var d=n.getDay();\n    if(n\u003ct11 \u0026\u0026 (d===1||d===3||d===5)) return t11;\n    var f=new Date(t11.getTime());\n    for(var i=0;i\u003c14;i++){\n      f.setDate(f.getDate()+1);\n      var fd=f.getDay();\n      if(fd===1||fd===3||fd===5) return new Date(f.getFullYear(),f.getMonth(),f.getDate(),11,0,0);\n    }\n    return null;\n  }\n  function fmtCD(target,now){\n    var ms=target-now;\n    if(ms\u003c0) return '0min';\n    var h=Math.floor(ms\/3600000);\n    var m=Math.floor((ms%3600000)\/60000);\n    if(h\u003e=24){ var d=Math.floor(h\/24); var hr=h%24; return d+'d '+hr+'h'; }\n    if(h\u003e0) return h+'h '+m+'min';\n    var s=Math.floor((ms%60000)\/1000);\n    if(m\u003e0) return m+'min '+pad(s)+'s';\n    return s+'s';\n  }\n  function calc(){\n    var pre=document.getElementById('shp2-pre'), day=document.getElementById('shp2-day'), san=document.getElementById('shp2-san'), clock=document.getElementById('shp2-clock'), urge=document.getElementById('shp2-urge');\n    if(!pre||!day||!san||!clock||!urge) return;\n    var n=new Date(); var d=n.getDay(); var h=n.getHours(); var ac=h\u003c11;\n    var prefix, dayName, sanText;\n    if(d===0){ prefix='Mañana'; dayName='LUNES'; sanText='Mañana lunes'; }\n    else if(d===1){ if(ac){ prefix='Hoy'; dayName='LUNES'; sanText='Hoy lunes'; } else { prefix='El'; dayName='MIÉRCOLES'; sanText='El miércoles'; } }\n    else if(d===2){ prefix='Mañana'; dayName='MIÉRCOLES'; sanText='Mañana miércoles'; }\n    else if(d===3){ if(ac){ prefix='Hoy'; dayName='MIÉRCOLES'; sanText='Hoy miércoles'; } else { prefix='El'; dayName='VIERNES'; sanText='El viernes'; } }\n    else if(d===4){ prefix='Mañana'; dayName='VIERNES'; sanText='Mañana viernes'; }\n    else if(d===5){ if(ac){ prefix='Hoy'; dayName='VIERNES'; sanText='Hoy viernes'; } else { prefix='El'; dayName='LUNES'; sanText='El lunes'; } }\n    else if(d===6){ prefix='El'; dayName='LUNES'; sanText='El lunes'; }\n    pre.textContent=prefix; day.textContent=dayName; san.textContent=sanText;\n    clock.textContent=pad(n.getHours())+':'+pad(n.getMinutes())+':'+pad(n.getSeconds());\n    var nc=nextCutoff(n);\n    if(nc){\n      var cd=fmtCD(nc,n);\n      var isToday=(nc.getDate()===n.getDate()\u0026\u0026nc.getMonth()===n.getMonth());\n      urge.innerHTML=isToday?'⚡ Quedan \u003cstrong\u003e'+cd+'\u003c\/strong\u003e para que tu pedido entre HOY':'Te quedan \u003cstrong\u003e'+cd+'\u003c\/strong\u003e para el próximo despacho';\n    }\n  }\n  calc(); setInterval(calc,1000);\n})();\n\u003c\/script\u003e\n\u003cdiv style=\"background: #ff4444; color: white; padding: 12px; text-align: center; font-weight: bold; margin-bottom: 20px; border-radius: 5px;\"\u003e⚡ ¡PACK EXCLUSIVO - AHORRA $10.000! ⚡\u003cbr\u003e🎁 REGALO SORPRESA INCLUIDO\u003c\/div\u003e\n\u003cdiv style=\"background: #fff3cd; border-left: 4px solid #ffc107; padding: 12px; margin-bottom: 20px;\"\u003e\n\u003cstrong\u003e🔥 ¡ATENCIÓN!\u003c\/strong\u003e 89 personas compraron este pack en las últimas 24 horas\u003cbr\u003e📦 \u003cstrong\u003eSolo quedan 6 unidades en stock\u003c\/strong\u003e a este precio especial\u003c\/div\u003e\n\u003ch2\u003ePack 2 Fajas Body Colaless Premium - ¡Máximo Ahorro!\u003c\/h2\u003e\n\u003cp\u003e\u003cstrong\u003e¿Por qué comprar una cuando puedes tener dos?\u003c\/strong\u003e Este pack exclusivo te permite tener siempre una faja lista mientras lavas la otra. Ahorra $10.000 y recibe un regalo sorpresa de belleza.\u003c\/p\u003e\n\u003cdiv style=\"background: #e8f5e9; padding: 15px; margin: 20px 0; border-radius: 5px;\"\u003e⭐⭐⭐⭐⭐ \u003cstrong\u003eMás de 1,800 packs vendidos en Chile\u003c\/strong\u003e\u003cbr\u003e\u003cem\u003e\"Mejor comprar el pack, así siempre tengo una limpia. Excelente inversión\"\u003c\/em\u003e - Carolina R., Viña del Mar\u003c\/div\u003e\n\u003ch3\u003e✨ Beneficios del Pack:\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eAhorro Inmediato:\u003c\/strong\u003e $10.000 menos que comprar por separado\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTirantes Desmontables:\u003c\/strong\u003e Úsala con o sin tirantes según tu outfit\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAlta Compresión:\u003c\/strong\u003e Control total de abdomen y cintura\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEfecto Levanta Glúteos:\u003c\/strong\u003e Realza y da forma natural\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDiseño Colaless:\u003c\/strong\u003e Invisible bajo cualquier prenda\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSiempre Lista:\u003c\/strong\u003e Una para usar, otra para lavar\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003e💎 Características Premium:\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTela de alta calidad con tecnología de compresión inteligente\u003c\/li\u003e\n\u003cli\u003eCosturas reforzadas para mayor durabilidad\u003c\/li\u003e\n\u003cli\u003eCierre de gancho ajustable de 3 niveles\u003c\/li\u003e\n\u003cli\u003eTela transpirable que no marca bajo la ropa\u003c\/li\u003e\n\u003cli\u003eIdeal para uso diario o eventos especiales\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003e👗 Perfecta Para:\u003c\/h3\u003e\n\u003cp\u003eVestidos ajustados, pantalones de tiro alto, faldas, ropa deportiva, eventos especiales o uso diario. Con este pack, siempre tendrás una faja lista.\u003c\/p\u003e\n\u003cdiv style=\"background: #ffebee; border: 2px dashed #f44336; padding: 15px; margin: 20px 0; text-align: center;\"\u003e\n\u003cstrong style=\"font-size: 18px; color: #d32f2f;\"\u003e⏰ OFERTA POR TIEMPO LIMITADO\u003c\/strong\u003e\u003cbr\u003e\n\u003cp style=\"margin: 10px 0;\"\u003ePrecio normal: $49.980 | Precio Pack: $39.990\u003c\/p\u003e\n\u003cstrong style=\"font-size: 16px;\"\u003e🎁 REGALO: Producto de belleza sorpresa (Valor $8.990)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"background: #f5f5f5; padding: 15px; margin-top: 20px; border-radius: 5px;\"\u003e\u003cstrong\u003e✅  SOMOS 100% CONFIABLES \u003c\/strong\u003e\u003c\/div\u003e\n\u003cstyle\u003e\n  \/* === Sticky CTA v3 — Color + Talla + Checkout directo === *\/\n  .sf-stk { position:fixed !important; bottom:0; left:0; right:0; z-index:99999 !important; background:rgba(255,255,255,.88); -webkit-backdrop-filter:blur(20px) saturate(180%); backdrop-filter:blur(20px) saturate(180%); border-top:1px solid rgba(0,0,0,.06); box-shadow:inset 0 1px 0 rgba(255,255,255,.6), 0 -1px 0 rgba(0,0,0,.04), 0 -10px 30px -10px rgba(0,0,0,.12); padding:10px 12px; padding-bottom:max(10px, env(safe-area-inset-bottom)); display:flex !important; align-items:center; gap:7px; transform:translateY(110%); transition:transform .4s cubic-bezier(.32,.72,0,1); pointer-events:none; font-family:'Inter',-apple-system,system-ui,sans-serif; will-change:transform; }\n  .sf-stk.is-visible { transform:translateY(0) !important; pointer-events:auto !important; }\n  .sf-stk-sel { flex-shrink:0; height:42px; padding:0 24px 0 12px; background:rgba(0,0,0,.04) url(\"data:image\/svg+xml;utf8,\u003csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='10' height='6' viewBox='0 0 10 6'\u003e\u003cpath d='M1 1l4 4 4-4' stroke='%231F1F1F' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'\/\u003e\u003c\/svg\u003e\") no-repeat right 9px center; border:1px solid rgba(0,0,0,.08); border-radius:999px; font-size:12px; font-weight:600; color:#1F1F1F; -webkit-appearance:none; -moz-appearance:none; appearance:none; cursor:pointer; font-family:inherit; max-width:96px; text-overflow:ellipsis; overflow:hidden; white-space:nowrap; line-height:1; transition:background-color .15s ease, border-color .15s ease; }\n  .sf-stk-sel:focus { outline:none; border-color:#EC4899; background-color:rgba(236,72,153,.06); }\n  .sf-stk-sel:disabled { opacity:.5; }\n  .sf-stk-btn { flex:1; min-width:0; display:inline-flex; align-items:center; justify-content:center; gap:6px; height:42px; padding:0 12px; background:linear-gradient(135deg, #EC4899 0%, #8B5CF6 100%); color:#fff !important; border:0; border-radius:999px; font-size:13px; font-weight:700; letter-spacing:.01em; cursor:pointer; box-shadow:inset 0 1px 0 rgba(255,255,255,.45), 0 4px 14px rgba(236,72,153,.40), 0 1px 3px rgba(0,0,0,.08); transition:transform .12s cubic-bezier(.32,.72,0,1), box-shadow .2s ease, opacity .2s ease; font-family:inherit; white-space:nowrap; }\n  .sf-stk-btn:hover { box-shadow:inset 0 1px 0 rgba(255,255,255,.5), 0 6px 22px rgba(236,72,153,.55), 0 1px 3px rgba(0,0,0,.08); }\n  .sf-stk-btn:active { transform:scale(.94); }\n  .sf-stk-btn-price { font-size:12px; font-weight:600; opacity:.92; font-variant-numeric:tabular-nums; }\n  .sf-stk-arrow { font-size:14px; line-height:1; transition:transform .25s cubic-bezier(.32,.72,0,1); }\n  .sf-stk-btn:hover .sf-stk-arrow { transform:translateX(2px); }\n  .sf-stk-btn.is-loading { pointer-events:none; opacity:.65; }\n  .sf-stk-btn.is-loading .sf-stk-arrow { animation:sfStkSpin .8s linear infinite; }\n  @keyframes sfStkSpin { from { transform:rotate(0deg); } to { transform:rotate(360deg); } }\n  \/* Stagger appearance *\/\n  .sf-stk-sel, .sf-stk-btn { opacity:0; transform:translateY(8px); transition:opacity .3s ease-out, transform .4s cubic-bezier(.32,.72,0,1), background-color .15s ease, border-color .15s ease, box-shadow .2s ease; }\n  .sf-stk.is-visible .sf-stk-sel { opacity:1; transform:translateY(0); transition-delay:.10s; }\n  .sf-stk.is-visible .sf-stk-sel:nth-of-type(2) { transition-delay:.14s; }\n  .sf-stk.is-visible .sf-stk-btn { opacity:1; transform:translateY(0); transition-delay:.20s; }\n  @media (min-width:990px) { .sf-stk { display:none !important; } }\n  @media (max-width:380px) {\n    .sf-stk { padding:8px 10px; gap:6px; }\n    .sf-stk-sel { max-width:78px; padding:0 22px 0 10px; font-size:11.5px; height:40px; }\n    .sf-stk-btn { height:40px; padding:0 10px; font-size:12.5px; }\n    .sf-stk-btn-price { font-size:11.5px; }\n  }\n\u003c\/style\u003e\n\u003cdiv class=\"sf-stk\" id=\"sf-stk\" aria-hidden=\"true\"\u003e\n  \u003cbutton type=\"button\" class=\"sf-stk-btn\" id=\"sf-stk-btn\"\u003e\n    \u003cspan class=\"sf-stk-btn-text\"\u003eComprar\u003c\/span\u003e\n    \u003cspan class=\"sf-stk-btn-price\" id=\"sf-stk-price\"\u003e—\u003c\/span\u003e\n    \u003cspan class=\"sf-stk-arrow\"\u003e→\u003c\/span\u003e\n  \u003c\/button\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  var attempts = 0;\n  var maxAttempts = 15;\n  function init(){\n    var sticky = document.getElementById('sf-stk');\n    if (!sticky) return;\n    if (sticky.parentNode !== document.body) { document.body.appendChild(sticky); }\n    var mainForm = document.querySelector('product-form form[action*=\"\/cart\/add\"]')\n                || document.querySelector('form[action*=\"\/cart\/add\"][id*=\"product-form\"]')\n                || document.querySelector('form[action=\"\/cart\/add\"]')\n                || document.querySelector('form[action*=\"\/cart\/add\"]');\n    if (!mainForm) {\n      attempts++;\n      if (attempts \u003c maxAttempts) { setTimeout(init, 400); return; }\n      return;\n    }\n    var optionGroups = {};\n    var fieldsets = document.querySelectorAll('fieldset.product-form__input--pill, fieldset.js.product-form__input');\n    for (var fi = 0; fi \u003c fieldsets.length; fi++){\n      var fs = fieldsets[fi];\n      var legend = fs.querySelector('legend');\n      if (!legend) continue;\n      var legendName = legend.textContent.replace(\/\\s+\/g,' ').trim();\n      if (!legendName) continue;\n      var radios = fs.querySelectorAll('input[type=\"radio\"]');\n      if (radios.length \u003e 0){\n        optionGroups[legendName] = { type:'INPUT', inputs: Array.prototype.slice.call(radios) };\n        continue;\n      }\n      var fsSelects = fs.querySelectorAll('select');\n      if (fsSelects.length \u003e 0){\n        optionGroups[legendName] = { type:'SELECT', inputs: Array.prototype.slice.call(fsSelects) };\n      }\n    }\n    if (Object.keys(optionGroups).length === 0){\n      var optionInputs = mainForm.querySelectorAll('input[name^=\"options\"][type=\"radio\"], select[name^=\"options\"]');\n      optionInputs.forEach(function(input){\n        var match = (input.name || '').match(\/options\\[(.+?)\\]\/);\n        if (!match || match[1] === 'prefix') return;\n        var nm = match[1];\n        if (!optionGroups[nm]) optionGroups[nm] = { type: input.tagName, inputs: [] };\n        optionGroups[nm].inputs.push(input);\n      });\n    }\n    var optionNames = Object.keys(optionGroups).slice(0, 2);\n    var btn = document.getElementById('sf-stk-btn');\n    if (!btn) return;\n    optionNames.forEach(function(name){\n      var group = optionGroups[name];\n      var select = document.createElement('select');\n      select.className = 'sf-stk-sel';\n      select.setAttribute('data-option-name', name);\n      select.setAttribute('aria-label', name);\n      var placeholder = document.createElement('option');\n      placeholder.value = '';\n      placeholder.text = name;\n      placeholder.disabled = true;\n      placeholder.selected = true;\n      select.appendChild(placeholder);\n      if (group.type === 'INPUT') {\n        var seen = {};\n        group.inputs.forEach(function(input){\n          if (seen[input.value]) return;\n          seen[input.value] = true;\n          var option = document.createElement('option');\n          option.value = input.value;\n          option.text = input.value;\n          if (input.checked) { option.selected = true; placeholder.selected = false; }\n          select.appendChild(option);\n        });\n      } else if (group.type === 'SELECT') {\n        var mainSelect = group.inputs[0];\n        for (var i = 0; i \u003c mainSelect.options.length; i++){\n          var opt = mainSelect.options[i];\n          if (opt.value === '' || opt.disabled) continue;\n          var option = document.createElement('option');\n          option.value = opt.value;\n          option.text = opt.text;\n          if (opt.selected) { option.selected = true; placeholder.selected = false; }\n          select.appendChild(option);\n        }\n      }\n      select.addEventListener('change', function(){\n        if (group.type === 'INPUT') {\n          group.inputs.forEach(function(input){\n            if (input.value === select.value) {\n              try { input.click(); } catch(e){}\n              try { input.dispatchEvent(new Event('change', { bubbles: true })); } catch(e){}\n            }\n          });\n        } else if (group.type === 'SELECT') {\n          var mainSelect = group.inputs[0];\n          mainSelect.value = select.value;\n          try { mainSelect.dispatchEvent(new Event('change', { bubbles: true })); } catch(e){}\n        }\n        setTimeout(syncPrice, 100);\n        setTimeout(syncPrice, 400);\n      });\n      sticky.insertBefore(select, btn);\n    });\n    function syncPrice(){\n      var priceEl = document.getElementById('sf-stk-price');\n      if (!priceEl) return;\n      var sels = ['.price__sale .price-item--sale','.price-item--sale','.price__regular .price-item--regular','span.price-item--regular','[data-product-price]','.product__price .money','.price .money'];\n      for (var i=0;i\u003csels.length;i++){\n        var els = document.querySelectorAll(sels[i]);\n        for (var j=0;j\u003cels.length;j++){\n          var el = els[j];\n          if (el \u0026\u0026 el.textContent){\n            var t = el.textContent.replace(\/\\s+\/g,' ').trim();\n            if (t \u0026\u0026 \/\\$|\\d\/.test(t)) { priceEl.textContent = t; return; }\n          }\n        }\n      }\n    }\n    syncPrice();\n    setTimeout(syncPrice, 400);\n    setTimeout(syncPrice, 1200);\n    document.addEventListener('change', function(e){\n      if (!e.target) return;\n      var nm = e.target.name || '';\n      if (nm === 'id' || nm.indexOf('options') === 0){\n        setTimeout(function(){\n          syncPrice();\n          optionNames.forEach(function(optName){\n            var stkSel = sticky.querySelector('.sf-stk-sel[data-option-name=\"' + optName + '\"]');\n            if (!stkSel) return;\n            var g = optionGroups[optName];\n            if (g.type === 'INPUT'){\n              g.inputs.forEach(function(input){ if (input.checked) stkSel.value = input.value; });\n            } else if (g.type === 'SELECT'){\n              stkSel.value = g.inputs[0].value;\n            }\n          });\n        }, 100);\n      }\n    });\n    btn.addEventListener('click', function(){\n      var selects = sticky.querySelectorAll('.sf-stk-sel');\n      var missing = false;\n      selects.forEach(function(sel){ if (!sel.value) missing = true; });\n      if (missing){\n        var firstOpt = mainForm.querySelector('input[name^=\"options\"], select[name^=\"options\"]');\n        if (firstOpt){\n          try { firstOpt.scrollIntoView({behavior:'smooth', block:'center'}); } catch(e){}\n        }\n        sticky.classList.remove('is-visible');\n        setTimeout(function(){ sticky.classList.add('is-visible'); }, 50);\n        return;\n      }\n      var idInput = mainForm.querySelector('input[name=\"id\"]');\n      if (!idInput || !idInput.value) return;\n      var variantId = idInput.value;\n      btn.classList.add('is-loading');\n      fetch('\/cart\/add.js', {\n        method:'POST',\n        headers:{'Content-Type':'application\/json','Accept':'application\/json'},\n        body: JSON.stringify({items:[{id: parseInt(variantId,10), quantity:1}]})\n      }).then(function(r){\n        if (!r.ok) throw new Error('add failed');\n        return r.json();\n      }).then(function(){\n        if (typeof window.fbq === 'function'){\n          try { window.fbq('trackCustom', 'StickyCtaCheckout', { variant: variantId }); } catch(e){}\n        }\n        window.location.href = '\/checkout';\n      }).catch(function(){\n        btn.classList.remove('is-loading');\n        try { mainForm.submit(); } catch(e){}\n      });\n    });\n    var mainBtn = mainForm.querySelector('button[name=\"add\"]') || mainForm.querySelector('button[type=\"submit\"]');\n    if (mainBtn \u0026\u0026 'IntersectionObserver' in window){\n      try {\n        var io = new IntersectionObserver(function(entries){\n          entries.forEach(function(entry){\n            if (entry.isIntersecting){\n              sticky.classList.remove('is-visible');\n              sticky.setAttribute('aria-hidden','true');\n            } else {\n              var rect = entry.boundingClientRect;\n              if (rect.top \u003c 0){ sticky.classList.add('is-visible'); sticky.setAttribute('aria-hidden','false'); }\n              else { sticky.classList.remove('is-visible'); sticky.setAttribute('aria-hidden','true'); }\n            }\n          });\n        }, { threshold:0, rootMargin:'0px 0px -40px 0px' });\n        io.observe(mainBtn);\n      } catch(e){}\n    }\n  }\n  if (document.readyState === 'loading'){\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n})();\n\u003c\/script\u003e","brand":"Soyfaja","offers":[{"title":"Default Title","offer_id":43773429317674,"sku":null,"price":39990.0,"currency_code":"CLP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0659\/7728\/6698\/files\/1.png?v=1760886110","url":"https:\/\/www.soyfaja.cl\/products\/pack-2-fajas-body-colaless-ahorra-10-000","provider":"SOY FAJA","version":"1.0","type":"link"}