{"product_id":"stone-contrast-pants-custom-made","title":"Stone Contrast Pants — Custom Made","description":"\u003cp class=\"p1\"\u003e\u003cspan class=\"s1\"\u003eEmbrace versatility and refined elegance with these Black  luxe oversized pants. Designed to redefine sport-casual sophistication, they are crafted from a luxurious cotton-elastane blend, ensuring the perfect balance of stretch and structure. The dark grey pocket detail introduces a subtle yet striking contrast, while metallic fasteners at the hem allow for customizable volume, offering relaxed or tapered silhouettes. Paired seamlessly with the matching oversized sweatshirt, these pants become a cornerstone of Saint Issa’s Capsule Collection, delivering effortless modernity, comfort, and elevated sporty chic appeal.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"p1\"\u003e\u003cspan class=\"s1\"\u003eThis model is 6'2\" (188 cm) and wears a size M.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"p1\"\u003e \u003c\/p\u003e\n\n\u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600\u0026amp;family=Jost:wght@200;300;400;500;600\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\n\n\u003cstyle\u003e\n#si-cl-widget, #si-cl-widget *, #si-cl-widget *::before, #si-cl-widget *::after {\n  box-sizing: border-box !important;\n  font-family: 'Jost', -apple-system, sans-serif !important;\n}\n#si-cl-widget { margin: 24px 0 !important; width: 100% !important; }\n\n#si-cl-trigger {\n  width: 100% !important;\n  display: flex !important; align-items: center !important; justify-content: space-between !important;\n  padding: 14px 20px !important;\n  background: transparent !important;\n  border: 1.5px solid rgba(184,147,90,0.5) !important;\n  border-radius: 4px !important;\n  cursor: pointer !important;\n  transition: all 0.3s !important;\n}\n#si-cl-trigger:hover { background: rgba(184,147,90,0.04) !important; border-color: #B8935A !important; }\n#si-cl-trigger.active {\n  background: rgba(184,147,90,0.06) !important;\n  border-color: #B8935A !important;\n  border-bottom-left-radius: 0 !important; border-bottom-right-radius: 0 !important;\n  border-bottom: none !important;\n}\n.si-cl-trigger-left { display: flex !important; align-items: center !important; gap: 12px !important; }\n.si-cl-trigger-icon {\n  width: 32px !important; height: 32px !important;\n  background: rgba(184,147,90,0.1) !important;\n  border: 1px solid rgba(184,147,90,0.3) !important;\n  border-radius: 50% !important;\n  display: flex !important; align-items: center !important; justify-content: center !important;\n  color: #B8935A !important; font-size: 14px !important; flex-shrink: 0 !important;\n}\n.si-cl-trigger-text { text-align: left !important; }\n.si-cl-trigger-title {\n  font-size: 11px !important; letter-spacing: 0.2em !important; text-transform: uppercase !important;\n  color: #18181A !important; font-weight: 500 !important; display: block !important; margin-bottom: 1px !important;\n}\n.si-cl-trigger-sub { font-size: 11px !important; color: #7A7268 !important; font-weight: 300 !important; }\n.si-cl-trigger-fee {\n  font-family: 'Cormorant Garamond', serif !important; font-style: italic !important;\n  font-size: 1.1rem !important; color: #B8935A !important; font-weight: 500 !important;\n}\n.si-cl-trigger-arrow { color: #B8935A !important; font-size: 14px !important; transition: transform 0.3s !important; flex-shrink: 0 !important; }\n#si-cl-trigger.active .si-cl-trigger-arrow { transform: rotate(180deg) !important; }\n\n#si-cl-panel {\n  display: none !important;\n  border: 1.5px solid #B8935A !important;\n  border-top: none !important;\n  border-bottom-left-radius: 4px !important; border-bottom-right-radius: 4px !important;\n  padding: 20px !important;\n  background: #FAFAF7 !important;\n}\n#si-cl-panel.open { display: block !important; }\n\n.si-cl-unit-toggle {\n  display: flex !important; align-items: center !important; justify-content: flex-end !important;\n  gap: 8px !important; margin-bottom: 20px !important;\n}\n.si-cl-unit-label { font-size: 9px !important; letter-spacing: 0.3em !important; text-transform: uppercase !important; color: #7A7268 !important; }\n.si-cl-toggle-btn {\n  display: flex !important; background: rgba(26,26,24,0.06) !important;\n  border-radius: 100px !important; padding: 2px !important; gap: 2px !important;\n}\n.si-cl-toggle-opt {\n  padding: 5px 12px !important; border-radius: 100px !important;\n  font-size: 10px !important; letter-spacing: 0.15em !important; text-transform: uppercase !important;\n  color: #7A7268 !important; cursor: pointer !important; transition: all 0.2s !important;\n  font-weight: 400 !important; border: none !important; background: transparent !important;\n  font-family: 'Jost', sans-serif !important;\n}\n.si-cl-toggle-opt.active { background: #18181A !important; color: #FAFAF7 !important; }\n\n.si-cl-measure-block { margin-bottom: 22px !important; }\n.si-cl-measure-block:last-of-type { margin-bottom: 0 !important; }\n\n.si-cl-mblock-header {\n  display: flex !important; align-items: center !important; justify-content: space-between !important;\n  margin-bottom: 8px !important;\n}\n.si-cl-mblock-left { display: flex !important; align-items: center !important; gap: 8px !important; }\n.si-cl-mblock-num {\n  font-family: 'Cormorant Garamond', serif !important; font-style: italic !important;\n  font-size: 1rem !important; color: rgba(184,147,90,0.5) !important;\n  font-weight: 400 !important; min-width: 20px !important;\n}\n.si-cl-mblock-name {\n  font-size: 10px !important; letter-spacing: 0.18em !important; text-transform: uppercase !important;\n  color: #18181A !important; font-weight: 500 !important;\n}\n.si-cl-mblock-value {\n  font-family: 'Cormorant Garamond', serif !important; font-style: italic !important;\n  font-size: 1.2rem !important; color: #B8935A !important; font-weight: 500 !important;\n  min-width: 60px !important; text-align: right !important;\n}\n\n.si-cl-slider {\n  width: 100% !important; height: 4px !important;\n  -webkit-appearance: none !important; appearance: none !important;\n  background: linear-gradient(to right, #B8935A 0%, #B8935A var(--progress, 50%), rgba(26,26,24,0.1) var(--progress, 50%), rgba(26,26,24,0.1) 100%) !important;\n  outline: none !important; border-radius: 100px !important;\n  cursor: pointer !important; border: none !important; margin: 6px 0 10px !important;\n}\n.si-cl-slider::-webkit-slider-thumb {\n  -webkit-appearance: none !important; width: 22px !important; height: 22px !important;\n  background: #18181A !important; border: 3px solid #FAFAF7 !important;\n  border-radius: 50% !important; cursor: pointer !important;\n  box-shadow: 0 2px 8px rgba(0,0,0,0.2) !important;\n}\n.si-cl-slider::-moz-range-thumb {\n  width: 22px !important; height: 22px !important; background: #18181A !important;\n  border: 3px solid #FAFAF7 !important; border-radius: 50% !important; cursor: pointer !important;\n}\n\n\/* PRESETS - GRID FOR ALIGNMENT *\/\n.si-cl-presets {\n  display: grid !important;\n  grid-template-columns: repeat(4, 1fr) !important;\n  gap: 6px !important;\n  margin-top: 8px !important;\n}\n.si-cl-preset {\n  padding: 6px 10px !important;\n  font-size: 9px !important; letter-spacing: 0.15em !important; text-transform: uppercase !important;\n  border: 1px solid rgba(26,26,24,0.12) !important;\n  border-radius: 100px !important; cursor: pointer !important;\n  color: #7A7268 !important; background: transparent !important;\n  transition: all 0.2s !important;\n  font-family: 'Jost', sans-serif !important; font-weight: 400 !important;\n  text-align: center !important;\n}\n.si-cl-preset:hover { border-color: #B8935A !important; color: #B8935A !important; }\n.si-cl-preset.active { background: #18181A !important; border-color: #18181A !important; color: #FAFAF7 !important; }\n\n.si-cl-divider { height: 1px !important; background: rgba(26,26,24,0.08) !important; margin: 18px 0 !important; }\n\n.si-cl-optional-title {\n  font-size: 9px !important; letter-spacing: 0.35em !important; text-transform: uppercase !important;\n  color: #C4BAB0 !important; margin-bottom: 14px !important;\n  display: flex !important; align-items: center !important; gap: 8px !important;\n}\n.si-cl-optional-title::after {\n  content: '' !important; flex: 1 !important; height: 1px !important;\n  background: rgba(26,26,24,0.06) !important;\n}\n\n.si-cl-opt-row { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 12px !important; align-items: start !important; }\n.si-cl-opt-field { display: flex !important; flex-direction: column !important; }\n.si-cl-opt-label {\n  font-size: 9px !important; letter-spacing: 0.2em !important; text-transform: uppercase !important;\n  color: #7A7268 !important; margin-bottom: 6px !important; display: block !important; height: 14px !important;\n}\n.si-cl-opt-input {\n  width: 100% !important;\n  border: 1px solid rgba(26,26,24,0.12) !important;\n  border-radius: 4px !important; padding: 8px 12px !important;\n  font-size: 13px !important; font-family: 'Jost', sans-serif !important;\n  color: #18181A !important; background: #FFFFFF !important;\n  outline: none !important; -webkit-appearance: none !important;\n}\n.si-cl-opt-input:focus { border-color: #B8935A !important; }\n\n.si-cl-price-box {\n  display: flex !important; align-items: center !important; justify-content: space-between !important;\n  background: rgba(184,147,90,0.06) !important;\n  border: 1px solid rgba(184,147,90,0.2) !important;\n  border-radius: 4px !important;\n  padding: 12px 16px !important;\n  margin: 18px 0 12px !important;\n}\n.si-cl-price-label {\n  font-size: 9px !important; letter-spacing: 0.3em !important; text-transform: uppercase !important;\n  color: #7A7268 !important; margin-bottom: 2px !important; display: block !important;\n}\n.si-cl-price-total {\n  font-family: 'Cormorant Garamond', serif !important;\n  font-size: 1.6rem !important; font-weight: 500 !important; color: #18181A !important; line-height: 1 !important;\n}\n.si-cl-price-breakdown { font-size: 10px !important; color: #7A7268 !important; margin-top: 3px !important; }\n.si-cl-price-fee {\n  font-family: 'Cormorant Garamond', serif !important; font-style: italic !important;\n  font-size: 1.1rem !important; color: #B8935A !important; text-align: right !important;\n}\n\n\/* DELIVERY NOTE *\/\n.si-cl-delivery {\n  background: rgba(184,147,90,0.06) !important;\n  border-left: 3px solid #B8935A !important;\n  border-radius: 0 4px 4px 0 !important;\n  padding: 12px 14px !important;\n  margin-bottom: 12px !important;\n}\n.si-cl-delivery-title {\n  font-family: 'Cormorant Garamond', serif !important;\n  font-style: italic !important;\n  font-size: 0.95rem !important;\n  color: #18181A !important;\n  margin-bottom: 4px !important;\n  font-weight: 500 !important;\n}\n.si-cl-delivery-text {\n  font-size: 10px !important;\n  line-height: 1.6 !important;\n  color: #7A7268 !important;\n}\n\n\/* WARNING *\/\n.si-cl-warning {\n  display: flex !important; gap: 8px !important; padding: 10px 12px !important;\n  background: rgba(26,26,24,0.04) !important;\n  border-left: 2px solid rgba(184,147,90,0.4) !important;\n  border-radius: 0 4px 4px 0 !important;\n  margin-bottom: 14px !important;\n}\n.si-cl-warning-icon { color: #B8935A !important; font-size: 12px !important; flex-shrink: 0 !important; margin-top: 1px !important; }\n.si-cl-warning-text { font-size: 10px !important; line-height: 1.55 !important; color: #7A7268 !important; }\n.si-cl-warning-text strong { color: #18181A !important; font-weight: 500 !important; }\n\n.si-cl-add-btn {\n  width: 100% !important;\n  padding: 14px !important;\n  background: #18181A !important;\n  color: #FAFAF7 !important;\n  border: none !important;\n  border-radius: 4px !important;\n  font-size: 10px !important; letter-spacing: 0.32em !important; text-transform: uppercase !important;\n  font-family: 'Jost', sans-serif !important; font-weight: 500 !important;\n  cursor: pointer !important; transition: all 0.3s !important;\n}\n.si-cl-add-btn:hover { background: #B8935A !important; }\n\n.si-cl-success {\n  display: none !important;\n  text-align: center !important;\n  padding: 16px !important;\n  background: rgba(184,147,90,0.06) !important;\n  border: 1px solid rgba(184,147,90,0.3) !important;\n  border-radius: 4px !important;\n  margin-top: 12px !important;\n}\n.si-cl-success.show { display: block !important; }\n.si-cl-success-title {\n  font-family: 'Cormorant Garamond', serif !important; font-style: italic !important;\n  font-size: 1.1rem !important; color: #18181A !important; margin-bottom: 4px !important;\n}\n.si-cl-success-sub { font-size: 11px !important; color: #7A7268 !important; }\n\n@media (max-width: 480px) {\n  .si-cl-opt-row { grid-template-columns: 1fr !important; }\n  .si-cl-trigger-sub { display: none !important; }\n}\n\u003c\/style\u003e\n\n\u003cdiv id=\"si-cl-widget\" data-product-type=\"pants\" data-base-price=\"75\" data-currency=\"£\" data-tailoring-variant=\"52898519974224\"\u003e\n\n  \u003cbutton id=\"si-cl-trigger\" onclick=\"siClToggle()\" type=\"button\"\u003e\n    \u003cdiv class=\"si-cl-trigger-left\"\u003e\n      \u003cdiv class=\"si-cl-trigger-icon\"\u003e+\u003c\/div\u003e\n      \u003cdiv class=\"si-cl-trigger-text\"\u003e\n        \u003cspan class=\"si-cl-trigger-title\"\u003eCustomize Length\u003c\/span\u003e\n        \u003cspan class=\"si-cl-trigger-sub\"\u003eTailored to your exact measurements\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"display:flex;align-items:center;gap:10px;\"\u003e\n      \u003cspan class=\"si-cl-trigger-fee\"\u003e+£10\u003c\/span\u003e\n      \u003cspan class=\"si-cl-trigger-arrow\"\u003e▼\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/button\u003e\n\n  \u003cdiv id=\"si-cl-panel\"\u003e\n\n\n\u003cdiv class=\"si-cl-unit-toggle\"\u003e\n  \u003cspan class=\"si-cl-unit-label\"\u003eUnits\u003c\/span\u003e\n  \u003cdiv class=\"si-cl-toggle-btn\"\u003e\n    \u003cbutton class=\"si-cl-toggle-opt active\" onclick=\"siClSetUnit('cm')\" type=\"button\"\u003eCM\u003c\/button\u003e\n    \u003cbutton class=\"si-cl-toggle-opt\" onclick=\"siClSetUnit('in')\" type=\"button\"\u003eIN\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv id=\"si-cl-measurements\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"si-cl-divider\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"si-cl-optional-title\"\u003eYour details (optional)\u003c\/div\u003e\n\u003cdiv class=\"si-cl-opt-row\"\u003e\n  \u003cdiv class=\"si-cl-opt-field\"\u003e\n    \u003clabel class=\"si-cl-opt-label\"\u003eYour Height\u003c\/label\u003e\n    \u003cinput type=\"text\" class=\"si-cl-opt-input\" id=\"si-cl-height\" placeholder=\"e.g. 5'11 or 180cm\"\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"si-cl-opt-field\"\u003e\n    \u003clabel class=\"si-cl-opt-label\"\u003eYour Weight\u003c\/label\u003e\n    \u003cinput type=\"text\" class=\"si-cl-opt-input\" id=\"si-cl-weight\" placeholder=\"e.g. 75kg\"\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"si-cl-price-box\"\u003e\n  \u003cdiv\u003e\n    \u003cspan class=\"si-cl-price-label\"\u003eTotal Price\u003c\/span\u003e\n    \u003cdiv class=\"si-cl-price-total\" id=\"si-cl-price-total\"\u003e£70.00\u003c\/div\u003e\n    \u003cdiv class=\"si-cl-price-breakdown\" id=\"si-cl-price-breakdown\"\u003e£60 + \u003cspan style=\"color:#B8935A\"\u003e£10 custom tailoring\u003c\/span\u003e\n\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"si-cl-price-fee\"\u003e+£10\u003cbr\u003e\u003cspan style=\"font-size:9px;letter-spacing:0.2em;color:#7A7268;font-family:'Jost',sans-serif;font-style:normal;\"\u003eBESPOKE FEE\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"si-cl-delivery\"\u003e\n  \u003cdiv class=\"si-cl-delivery-title\"\u003eCrafted just for you.\u003c\/div\u003e\n  \u003cdiv class=\"si-cl-delivery-text\"\u003eBecause each piece is tailored to your exact measurements, please allow \u003cstrong style=\"color:#18181A;\"\u003e2 working weeks\u003c\/strong\u003e for production and delivery. This ensures perfect fit and premium quality.\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"si-cl-warning\"\u003e\n  \u003cdiv class=\"si-cl-warning-icon\"\u003e+\u003c\/div\u003e\n  \u003cdiv class=\"si-cl-warning-text\"\u003e\n\u003cstrong\u003ePlease note:\u003c\/strong\u003e Custom length items are made to your exact specifications and are \u003cstrong\u003enon-returnable\u003c\/strong\u003e unless there is a production error on our side. Please measure carefully before confirming.\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cbutton class=\"si-cl-add-btn\" onclick=\"siClAddToCart()\" type=\"button\"\u003eAdd to Cart with Custom Length\u003c\/button\u003e\n\n\u003cdiv class=\"si-cl-success\" id=\"si-cl-success\"\u003e\n  \u003cdiv class=\"si-cl-success-title\"\u003eCustom length saved.\u003c\/div\u003e\n  \u003cdiv class=\"si-cl-success-sub\"\u003eYour measurements and tailoring fee have been added to your cart. Complete checkout above.\u003c\/div\u003e\n\u003c\/div\u003e\n\n\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function() {\n  var SI_CL_FEE = 10;\n  var SI_CL_UNIT = 'cm';\n\n  var SI_CL_CONFIGS = {\n    top: {\n      measures: [\n        { id: 'body', name: 'Body Length', num: '01',\n          cm: { min: 50, max: 80, def: 62 },\n          inches: { min: 20, max: 32, def: 24 },\n          presets_cm: [{l:'Crop',v:50},{l:'Regular',v:62},{l:'Long',v:72},{l:'Maxi',v:80}],\n          presets_in: [{l:'Crop',v:20},{l:'Regular',v:24},{l:'Long',v:28},{l:'Maxi',v:32}]\n        },\n        { id: 'sleeve', name: 'Sleeve Length', num: '02',\n          cm: { min: 55, max: 95, def: 64 },\n          inches: { min: 22, max: 37, def: 25 },\n          presets_cm: [{l:'Short',v:55},{l:'Regular',v:64},{l:'Long',v:75},{l:'Ext',v:85}],\n          presets_in: [{l:'Short',v:22},{l:'Regular',v:25},{l:'Long',v:30},{l:'Ext',v:33}]\n        }\n      ]\n    },\n    crop: {\n      measures: [\n        { id: 'body', name: 'Body Length', num: '01',\n          cm: { min: 38, max: 65, def: 48 },\n          inches: { min: 15, max: 26, def: 19 },\n          presets_cm: [{l:'Mini',v:38},{l:'Crop',v:48},{l:'Mid',v:56},{l:'Long',v:65}],\n          presets_in: [{l:'Mini',v:15},{l:'Crop',v:19},{l:'Mid',v:22},{l:'Long',v:26}]\n        },\n        { id: 'sleeve', name: 'Sleeve Length', num: '02',\n          cm: { min: 55, max: 95, def: 64 },\n          inches: { min: 22, max: 37, def: 25 },\n          presets_cm: [{l:'Short',v:55},{l:'Regular',v:64},{l:'Long',v:75},{l:'Ext',v:85}],\n          presets_in: [{l:'Short',v:22},{l:'Regular',v:25},{l:'Long',v:30},{l:'Ext',v:33}]\n        }\n      ]\n    },\n    pants: {\n      measures: [\n        { id: 'inseam', name: 'Inseam \/ Leg Length', num: '01',\n          cm: { min: 60, max: 100, def: 76 },\n          inches: { min: 24, max: 40, def: 30 },\n          presets_cm: [{l:'Capri',v:60},{l:'Crop',v:70},{l:'Regular',v:76},{l:'Full',v:90}],\n          presets_in: [{l:'Capri',v:24},{l:'Crop',v:28},{l:'Regular',v:30},{l:'Full',v:35}]\n        }\n      ]\n    }\n  };\n\n  var siClValues = {};\n\n  function siClGetConfig() {\n    var widget = document.getElementById('si-cl-widget');\n    var type = widget ? (widget.getAttribute('data-product-type') || 'top') : 'top';\n    return SI_CL_CONFIGS[type] || SI_CL_CONFIGS['top'];\n  }\n\n  function siClGetBasePrice() {\n    var widget = document.getElementById('si-cl-widget');\n    return parseFloat(widget ? (widget.getAttribute('data-base-price') || '60') : '60');\n  }\n\n  function siClGetCurrency() {\n    var widget = document.getElementById('si-cl-widget');\n    return widget ? (widget.getAttribute('data-currency') || '£') : '£';\n  }\n\n  function siClGetTailoringVariant() {\n    var widget = document.getElementById('si-cl-widget');\n    return widget ? widget.getAttribute('data-tailoring-variant') : null;\n  }\n\n  function siClBuildMeasurements() {\n    var config = siClGetConfig();\n    var container = document.getElementById('si-cl-measurements');\n    if (!container) return;\n    var html = '';\n    config.measures.forEach(function(m, idx) {\n      var range = SI_CL_UNIT === 'cm' ? m.cm : m.inches;\n      var presets = SI_CL_UNIT === 'cm' ? m.presets_cm : m.presets_in;\n      var unit = SI_CL_UNIT;\n      var val = siClValues[m.id] !== undefined ? siClValues[m.id] : range.def;\n      siClValues[m.id] = val;\n      var progress = ((val - range.min) \/ (range.max - range.min) * 100).toFixed(1);\n\n      html += '\u003cdiv class=\"si-cl-measure-block\"\u003e';\n      html += '\u003cdiv class=\"si-cl-mblock-header\"\u003e';\n      html += '\u003cdiv class=\"si-cl-mblock-left\"\u003e';\n      html += '\u003cspan class=\"si-cl-mblock-num\"\u003e' + m.num + '\u003c\/span\u003e';\n      html += '\u003cspan class=\"si-cl-mblock-name\"\u003e' + m.name + '\u003c\/span\u003e';\n      html += '\u003c\/div\u003e';\n      html += '\u003cspan class=\"si-cl-mblock-value\" id=\"si-cl-val-' + m.id + '\"\u003e' + val + ' ' + unit + '\u003c\/span\u003e';\n      html += '\u003c\/div\u003e';\n      html += '\u003cinput type=\"range\" class=\"si-cl-slider\" id=\"si-cl-slider-' + m.id + '\"';\n      html += ' min=\"' + range.min + '\" max=\"' + range.max + '\" value=\"' + val + '\" step=\"1\"';\n      html += ' style=\"--progress:' + progress + '%\"';\n      html += ' oninput=\"siClSlide(\\'' + m.id + '\\', this)\"\u003e';\n      html += '\u003cdiv class=\"si-cl-presets\"\u003e';\n      presets.forEach(function(p) {\n        var isActive = Math.abs(p.v - val) \u003c 1 ? ' active' : '';\n        html += '\u003cbutton class=\"si-cl-preset' + isActive + '\" onclick=\"siClPreset(\\'' + m.id + '\\',' + p.v + ')\" type=\"button\"\u003e' + p.l + '\u003c\/button\u003e';\n      });\n      html += '\u003c\/div\u003e';\n      html += '\u003c\/div\u003e';\n    });\n    container.innerHTML = html;\n  }\n\n  function siClUpdatePrice() {\n    var base = siClGetBasePrice();\n    var currency = siClGetCurrency();\n    var total = base + SI_CL_FEE;\n    var totalEl = document.getElementById('si-cl-price-total');\n    var breakEl = document.getElementById('si-cl-price-breakdown');\n    if (totalEl) totalEl.textContent = currency + total.toFixed(2);\n    if (breakEl) breakEl.innerHTML = currency + base + ' + \u003cspan style=\"color:#B8935A\"\u003e' + currency + SI_CL_FEE + ' custom tailoring\u003c\/span\u003e';\n  }\n\n  window.siClToggle = function() {\n    var trigger = document.getElementById('si-cl-trigger');\n    var panel = document.getElementById('si-cl-panel');\n    if (!trigger || !panel) return;\n    var isOpen = panel.classList.contains('open');\n    if (isOpen) {\n      panel.classList.remove('open');\n      trigger.classList.remove('active');\n    } else {\n      panel.classList.add('open');\n      trigger.classList.add('active');\n      siClBuildMeasurements();\n      siClUpdatePrice();\n      setTimeout(function() {\n        panel.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n      }, 100);\n    }\n  };\n\n  window.siClSetUnit = function(unit) {\n    SI_CL_UNIT = unit === 'cm' ? 'cm' : 'inches';\n    siClValues = {};\n    var opts = document.querySelectorAll('.si-cl-toggle-opt');\n    for (var i = 0; i \u003c opts.length; i++) {\n      opts[i].classList.remove('active');\n      var btnText = opts[i].textContent.trim().toLowerCase();\n      if ((unit === 'cm' \u0026\u0026 btnText === 'cm') || (unit === 'in' \u0026\u0026 btnText === 'in')) {\n        opts[i].classList.add('active');\n      }\n    }\n    siClBuildMeasurements();\n  };\n\n  window.siClSlide = function(id, input) {\n    var val = parseInt(input.value);\n    siClValues[id] = val;\n    var valEl = document.getElementById('si-cl-val-' + id);\n    var unitDisplay = SI_CL_UNIT === 'inches' ? 'in' : 'cm';\n    if (valEl) valEl.textContent = val + ' ' + unitDisplay;\n    var min = parseInt(input.min);\n    var max = parseInt(input.max);\n    var progress = ((val - min) \/ (max - min) * 100).toFixed(1);\n    input.style.setProperty('--progress', progress + '%');\n    var presets = input.closest('.si-cl-measure-block').querySelectorAll('.si-cl-preset');\n    var config = siClGetConfig();\n    var measure = null;\n    for (var i = 0; i \u003c config.measures.length; i++) {\n      if (config.measures[i].id === id) { measure = config.measures[i]; break; }\n    }\n    if (measure) {\n      var presetList = SI_CL_UNIT === 'cm' ? measure.presets_cm : measure.presets_in;\n      for (var j = 0; j \u003c presets.length; j++) {\n        presets[j].classList.remove('active');\n        if (presetList[j] \u0026\u0026 Math.abs(presetList[j].v - val) \u003c 1) {\n          presets[j].classList.add('active');\n        }\n      }\n    }\n  };\n\n  window.siClPreset = function(id, val) {\n    siClValues[id] = val;\n    var slider = document.getElementById('si-cl-slider-' + id);\n    var valEl = document.getElementById('si-cl-val-' + id);\n    var unitDisplay = SI_CL_UNIT === 'inches' ? 'in' : 'cm';\n    if (slider) {\n      slider.value = val;\n      var min = parseInt(slider.min);\n      var max = parseInt(slider.max);\n      var progress = ((val - min) \/ (max - min) * 100).toFixed(1);\n      slider.style.setProperty('--progress', progress + '%');\n    }\n    if (valEl) valEl.textContent = val + ' ' + unitDisplay;\n    var block = slider ? slider.closest('.si-cl-measure-block') : null;\n    if (block) {\n      var presets = block.querySelectorAll('.si-cl-preset');\n      for (var i = 0; i \u003c presets.length; i++) {\n        presets[i].classList.remove('active');\n        var presetVal = parseFloat(presets[i].getAttribute('onclick').match(\/[\\d.]+\/g).pop());\n        if (Math.abs(presetVal - val) \u003c 0.1) {\n          presets[i].classList.add('active');\n        }\n      }\n    }\n  };\n\n  function siClGetVariantId() {\n    var variantSelect = document.querySelector('select[name=\"id\"]') || document.querySelector('input[name=\"id\"]');\n    if (variantSelect \u0026\u0026 variantSelect.value) return variantSelect.value;\n    if (window.ShopifyAnalytics \u0026\u0026 window.ShopifyAnalytics.meta \u0026\u0026 window.ShopifyAnalytics.meta.selectedVariantId) {\n      return window.ShopifyAnalytics.meta.selectedVariantId;\n    }\n    return null;\n  }\n\n  window.siClAddToCart = function() {\n    var config = siClGetConfig();\n    var height = document.getElementById('si-cl-height') ? document.getElementById('si-cl-height').value : '';\n    var weight = document.getElementById('si-cl-weight') ? document.getElementById('si-cl-weight').value : '';\n    var unitDisplay = SI_CL_UNIT === 'inches' ? 'in' : 'cm';\n\n    var productVariantId = siClGetVariantId();\n    var tailoringVariantId = siClGetTailoringVariant();\n\n    if (!productVariantId) {\n      alert('Please select your size first, then add to cart with custom length.');\n      return;\n    }\n\n    if (!tailoringVariantId) {\n      alert('Configuration error. Please contact support.');\n      return;\n    }\n\n    \/\/ Build properties for the main product\n    var productProps = {};\n    config.measures.forEach(function(m) {\n      var val = siClValues[m.id] !== undefined ? siClValues[m.id] : (SI_CL_UNIT === 'cm' ? m.cm.def : m.inches.def);\n      productProps[m.name] = val + ' ' + unitDisplay;\n    });\n    if (height) productProps['Customer Height'] = height;\n    if (weight) productProps['Customer Weight'] = weight;\n    productProps['_custom_length'] = 'true';\n\n    \/\/ Build matching properties for the tailoring product (so they link in cart)\n    var tailoringProps = {};\n    config.measures.forEach(function(m) {\n      var val = siClValues[m.id] !== undefined ? siClValues[m.id] : (SI_CL_UNIT === 'cm' ? m.cm.def : m.inches.def);\n      tailoringProps[m.name] = val + ' ' + unitDisplay;\n    });\n    tailoringProps['_for_product'] = productVariantId;\n\n    \/\/ Add BOTH items to cart in one request\n    fetch('\/cart\/add.js', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application\/json', 'Accept': 'application\/json' },\n      body: JSON.stringify({\n        items: [\n          { id: parseInt(productVariantId), quantity: 1, properties: productProps },\n          { id: parseInt(tailoringVariantId), quantity: 1, properties: tailoringProps }\n        ]\n      })\n    }).then(function(res) {\n      return res.json();\n    }).then(function(data) {\n      if (data.status === 422 || data.errors) {\n        alert('Please select your size first, then add to cart.');\n        return;\n      }\n      var success = document.getElementById('si-cl-success');\n      if (success) success.classList.add('show');\n      setTimeout(function() {\n        if (success) success.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n      }, 100);\n      \/\/ Trigger cart refresh in Prestige theme\n      document.dispatchEvent(new CustomEvent('cart:refresh'));\n      document.dispatchEvent(new CustomEvent('cart:updated'));\n      \/\/ Open cart drawer if Prestige has one\n      setTimeout(function() {\n        var cartLink = document.querySelector('[data-cart-drawer-trigger]') || document.querySelector('[href=\"\/cart\"]');\n        if (cartLink) cartLink.click();\n      }, 800);\n    }).catch(function(err) {\n      alert('Please select your size first, then add to cart.');\n    });\n  };\n})();\n\u003c\/script\u003e","brand":"Saint Issa","offers":[{"title":"XS","offer_id":53029138366800,"sku":null,"price":116.0,"currency_code":"USD","in_stock":false},{"title":"S","offer_id":53029138170192,"sku":null,"price":116.0,"currency_code":"USD","in_stock":false},{"title":"M","offer_id":53029138202960,"sku":null,"price":116.0,"currency_code":"USD","in_stock":false},{"title":"L","offer_id":53029138235728,"sku":null,"price":116.0,"currency_code":"USD","in_stock":false},{"title":"XL","offer_id":53029138268496,"sku":null,"price":116.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0875\/6409\/1728\/files\/JV6A4576_2f732e37-81e4-4813-bd77-6e5ed9f921a6.webp?v=1742362847","url":"https:\/\/saintissa.com\/products\/stone-contrast-pants-custom-made","provider":"Saint Issa ","version":"1.0","type":"link"}