{"status":200,"features":{},"experiments":[{"key":"test-script-ve-locally","changeId":"c6ba7d2052add73a8b1553362f6f040d027220937f09fcc54bb4d077cf91c55a","status":"running","variations":[{"css":"","js":"","domMutations":[]},{"css":"","js":"","domMutations":[{"selector":"a[data-testid=Button]","action":"set","attribute":"html","value":"Subscribe Now!!"}]}],"hashVersion":2,"hashAttribute":"id","fallbackAttribute":"","disableStickyBucketing":false,"urlPatterns":[{"include":true,"type":"simple","pattern":"https://stag.vogue.com/*"},{"include":true,"type":"simple","pattern":"https://multiverso.vogue.com/*?branch=growthbook/script-tag"},{"include":true,"type":"simple","pattern":"localhost:7777/glamour/*"},{"include":true,"type":"simple","pattern":"https://stag.glamour.com/*"},{"include":true,"type":"simple","pattern":"https://multiverso.glamour.com/?branch=growthbook/script-tag"},{"include":true,"type":"simple","pattern":"https://multiverso.glamour.com/?branch=growthbook-implementation"}],"weights":[0.5,0.5],"meta":[{"key":"0","name":"Control"},{"key":"1","name":"Variation 1"}],"filters":[],"seed":"6d346d63-9c29-47b9-bba1-84d3ec1a3f91","name":"Test Script VE locally","phase":"0","coverage":1},{"key":"script-testing-visual","changeId":"b08a6662b6bca09d9f1abc59e8471956c04f5602246891d5c0cc09b010e0aa12","status":"running","variations":[{"css":"","js":"","domMutations":[{"selector":".hzwRuG","action":"set","attribute":"html","value":"Subscribe!!!"}]},{"css":"","js":"","domMutations":[{"selector":".hzwRuG","action":"set","attribute":"html","value":"SUBSCRIBE NOW!!!!!!!"}]}],"hashVersion":2,"hashAttribute":"id","fallbackAttribute":"","disableStickyBucketing":false,"urlPatterns":[{"include":true,"type":"simple","pattern":"https://stag.glamour.com/"},{"include":true,"type":"simple","pattern":"https://multiverso.glamour.com/?branch=growthbook/script-tag"},{"include":true,"type":"simple","pattern":"localhost:7777/glamour-staging"}],"weights":[0.5,0.5],"meta":[{"key":"0","name":"Control"},{"key":"1","name":"Variation 1"}],"filters":[],"seed":"d5507e31-eb6d-4935-8f56-602e58ef0e57","name":"script-testing-visual","phase":"0","coverage":1},{"key":"script-tag-visual-experiment","changeId":"5493009dad1f447870f98de0c8fa8091048e20ef1cc4d571d6d46fec0d1396cb","status":"running","variations":[{"css":".summary-item__hed{\n  background: blue;\n}","js":"","domMutations":[]},{"css":".summary-item__hed{\n  background:red;\n}","js":"","domMutations":[]}],"hashVersion":2,"hashAttribute":"id","fallbackAttribute":"","disableStickyBucketing":false,"urlPatterns":[{"include":true,"type":"simple","pattern":"https://multiverso.glamour.com/?branch=growthbook/*"}],"weights":[0.5,0.5],"meta":[{"key":"0","name":"Control"},{"key":"1","name":"Variation 1"}],"filters":[],"seed":"be15da7f-ab3d-4a9b-9e15-6ebe92d9592e","name":"script-tag-visual-experiment","phase":"0","coverage":1},{"key":"glamour_higher_cta","changeId":"cf79e0de4afe363a5aacf38c45e568c8b2722f9d48b5033add4056d53570fd75","status":"running","variations":[{"css":"","js":"","domMutations":[]},{"css":"","js":"(() => {\n  const productCards = document.querySelectorAll('.UnifiedProductCardBody-bwXbNM');\n\n  productCards.forEach(card => {\n    const offerWrapper = card.querySelector('.UnifiedProductCardOfferWrapper-ggbazM');\n    const firstContent = card.firstElementChild;\n\n    if (offerWrapper && firstContent && offerWrapper !== firstContent) {\n      // Move the buy button to the top\n      card.insertBefore(offerWrapper, firstContent);\n\n      // Add top padding to visually separate it from the image above\n      offerWrapper.style.paddingTop = '12px';\n    }\n  });\n})();","domMutations":[]}],"hashVersion":2,"hashAttribute":"id","fallbackAttribute":"","disableStickyBucketing":false,"urlPatterns":[{"include":true,"type":"simple","pattern":"https://www.glamour.com/story/best-jewelry-brands"}],"weights":[0,1],"meta":[{"key":"0","name":"control"},{"key":"1","name":"variation"}],"filters":[],"seed":"5020bd1d-663a-4ad8-b1a6-6f72bf31bfe7","name":"glamour_higher_cta","phase":"0","condition":{"id":"0c3a3ab2-e1eb-4236-a45e-b3aa5c7d7936"},"coverage":1},{"key":"cmjnjcb","changeId":"f085a22aa193a508f21506084f50855fa786995c0a4b2d69e09581a0dda047b4","status":"running","variations":[{"css":"/* Hide ARIA-based headings followed by a list */\ndiv[role=\"heading\"][aria-level=\"3\"]:has(+ ul) {\n  display: none !important;\n}\n\ndiv[role=\"heading\"][aria-level=\"3\"]:has(+ ul) + ul {\n  display: none !important;\n}\n\n/* Hide semantic h2 (with strong) followed by a list */\nh2:has(> strong):has(+ ul) {\n  display: none !important;\n}\n\nh2:has(> strong):has(+ ul) + ul {\n  display: none !important;\n}\n\n/* Hide semantic h3 followed by a list */\nh3:has(+ ul) {\n  display: none !important;\n}\n\nh3:has(+ ul) + ul {\n  display: none !important;\n}","js":"function waitFor(selector) {\n  return new Promise(resolve => {\n    const el = document.querySelector(selector);\n    if (el) return resolve(el);\n\n    const observer = new MutationObserver(() => {\n      const el = document.querySelector(selector);\n      if (el) {\n        observer.disconnect();\n        resolve(el);\n      }\n    });\n\n    observer.observe(document, { childList: true, subtree: true });\n  });\n}\n\nwaitFor('[role=\"heading\"]').then(() => {\n\n  document.querySelectorAll('[role=\"heading\"]').forEach(function(heading) {\n\n    // Determine starting element (wrapper or heading itself)\n    var startElement =\n      heading.parentElement &&\n      heading.parentElement !== document.body &&\n      heading.parentElement.firstElementChild === heading\n        ? heading.parentElement\n        : heading;\n\n    // Hide the heading itself\n    heading.style.display = 'none';\n\n    // Hide wrapper if it exists and is different from heading\n    if (startElement !== heading) {\n      startElement.style.display = 'none';\n    }\n\n    var sibling = startElement.nextElementSibling;\n\n    while (sibling) {\n\n      var tag = sibling.tagName ? sibling.tagName.toLowerCase() : '';\n\n      // Skip native ads\n      if (tag === 'native-ad') {\n        sibling = sibling.nextElementSibling;\n        continue;\n      }\n\n      // Stop if we hit another heading section\n      if (sibling.querySelector && sibling.querySelector('[role=\"heading\"]')) {\n        break;\n      }\n\n      // Hide first UL found\n      if (tag === 'ul') {\n        sibling.style.display = 'none';\n        break;\n      }\n\n      sibling = sibling.nextElementSibling;\n    }\n\n  });\n\n});","domMutations":[]},{"css":"/* Hide all Product Summary Grid wrappers (any variant / hash) */\n[class^=\"ProductSummaryGridWrapper-\"] {\n  display: none !important;\n}","js":"","domMutations":[]}],"hashVersion":2,"hashAttribute":"id","fallbackAttribute":"","disableStickyBucketing":false,"urlPatterns":[{"include":true,"type":"simple","pattern":"https://www.glamour.com/preview/story/66a006e840028aab332ff1f4?status=draft&debug_config=copliot;t=1772124099528"},{"include":true,"type":"simple","pattern":"https://www.glamour.com/story/best-korean-cleansers"},{"include":true,"type":"simple","pattern":"https://www.glamour.com/story/best-scalp-serums"},{"include":true,"type":"simple","pattern":"https://www.glamour.com/gallery/best-pimple-patches"},{"include":true,"type":"simple","pattern":"https://www.glamour.com/story/best-shampoos-for-curly-hair"}],"weights":[0.5,0.5],"meta":[{"key":"0","name":"psg"},{"key":"1","name":"link-list"}],"filters":[],"seed":"5be6cfc7-8da8-46b3-8fd8-5b89f9ad999b","name":"CMjNJCb","phase":"0","coverage":1},{"key":"cmabxmq","changeId":"39d5010546f46b205d496c639a35cbfa4b1c3aed6c62e6984182f5baec05b489","status":"running","variations":[{"css":"/* Hide ARIA-based headings followed by a list */\ndiv[role=\"heading\"][aria-level=\"3\"]:has(+ ul) {\n  display: none !important;\n}\n\ndiv[role=\"heading\"][aria-level=\"3\"]:has(+ ul) + ul {\n  display: none !important;\n}\n\n/* Hide semantic h2 (with strong) followed by a list */\nh2:has(> strong):has(+ ul) {\n  display: none !important;\n}\n\nh2:has(> strong):has(+ ul) + ul {\n  display: none !important;\n}\n\n/* Hide semantic h3 followed by a list */\nh3:has(+ ul) {\n  display: none !important;\n}\n\nh3:has(+ ul) + ul {\n  display: none !important;\n}","js":"function waitFor(selector) {\n  return new Promise(resolve => {\n    const el = document.querySelector(selector);\n    if (el) return resolve(el);\n\n    const observer = new MutationObserver(() => {\n      const el = document.querySelector(selector);\n      if (el) {\n        observer.disconnect();\n        resolve(el);\n      }\n    });\n\n    observer.observe(document, { childList: true, subtree: true });\n  });\n}\n\nwaitFor('[role=\"heading\"]').then(() => {\n\n  document.querySelectorAll('[role=\"heading\"]').forEach(function(heading) {\n\n    // Determine starting element (wrapper or heading itself)\n    var startElement =\n      heading.parentElement &&\n      heading.parentElement !== document.body &&\n      heading.parentElement.firstElementChild === heading\n        ? heading.parentElement\n        : heading;\n\n    // Hide the heading itself\n    heading.style.display = 'none';\n\n    // Hide wrapper if it exists and is different from heading\n    if (startElement !== heading) {\n      startElement.style.display = 'none';\n    }\n\n    var sibling = startElement.nextElementSibling;\n\n    while (sibling) {\n\n      var tag = sibling.tagName ? sibling.tagName.toLowerCase() : '';\n\n      // Skip native ads\n      if (tag === 'native-ad') {\n        sibling = sibling.nextElementSibling;\n        continue;\n      }\n\n      // Stop if we hit another heading section\n      if (sibling.querySelector && sibling.querySelector('[role=\"heading\"]')) {\n        break;\n      }\n\n      // Hide first UL found\n      if (tag === 'ul') {\n        sibling.style.display = 'none';\n        break;\n      }\n\n      sibling = sibling.nextElementSibling;\n    }\n\n  });\n\n});","domMutations":[]},{"css":"/* Hide all Product Summary Grid wrappers (any variant / hash) */\n[class^=\"ProductSummaryGridWrapper-\"] {\n  display: none !important;\n}","js":"","domMutations":[]}],"hashVersion":2,"hashAttribute":"id","fallbackAttribute":"","disableStickyBucketing":false,"urlPatterns":[{"include":true,"type":"simple","pattern":"https://www.glamour.com/story/best-swimsuit-brands"},{"include":true,"type":"simple","pattern":"https://www.glamour.com/story/boot-trends-2026"},{"include":true,"type":"simple","pattern":"https://www.glamour.com/gallery/best-cheap-online-clothing-stores-women"},{"include":true,"type":"simple","pattern":"https://www.glamour.com/gallery/best-fleece-lined-tights-for-women"}],"weights":[0.5,0.5],"meta":[{"key":"0","name":"psg"},{"key":"1","name":"link-list"}],"filters":[],"seed":"5be6cfc7-8da8-46b3-8fd8-5b89f9ad999b","name":"CMABXmQ","phase":"0","coverage":1}],"dateUpdated":"2026-04-29T19:31:32.410Z"}