{"schemaVersion":"2.0.0","defaultLanguage":"en-US","languages":["en-US"],"launchScreenId":"bts-editorial-back-to-style","screens":{"18c2d601-dbed-406c-a776-3df2205e1bbf":{"tags":[],"position":{"x":9904,"y":80},"screenType":"WebEmbed","updatedAt":"2026-08-07T17:15:29.242Z","id":"18c2d601-dbed-406c-a776-3df2205e1bbf","aiContent":{},"content":{"animated":true,"embed":{"childSections":[{"textContent":{"title":{"translations":{"en-US":"Finally! Stop buying, start styling"},"kind":"static","appearance":{}}},"kind":"Text","id":"headline","label":"headline","order":0},{"label":"cta_label","order":1,"textContent":{"title":{"translations":{"en-US":"Start my plan"},"appearance":{},"kind":"static"}},"id":"cta_label","kind":"Text"},{"kind":"Text","order":2,"id":"security_label","label":"security_label","textContent":{"title":{"appearance":{},"translations":{"en-US":"Secure & Personalized Plan"},"kind":"static"}}},{"id":"login_label","label":"login_label","textContent":{"title":{"appearance":{},"translations":{"en-US":"I already have an account"},"kind":"static"}},"order":3,"kind":"Text"},{"id":"logo_media","label":"logo_media","mediaContent":{"kind":"Image","content":{"image":{"translations":{"en-US":{"original":"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/images/20260613095024_of-menopause-intro-logo-media/origin.svg","small":"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/images/20260613095024_of-menopause-intro-logo-media/small.svg"}}}}},"kind":"Media","order":4},{"label":"outfit_1_media","id":"outfit_1_media","order":5,"kind":"Media","mediaContent":{"content":{"image":{"translations":{"en-US":{"original":"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/images/20260613095027_of-menopause-intro-outfit-1-media/origin.webp","small":"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/images/20260613095027_of-menopause-intro-outfit-1-media/small.webp"}}}},"kind":"Image"}},{"kind":"Media","mediaContent":{"kind":"Image","content":{"image":{"translations":{"en-US":{"original":"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/images/20260613095030_of-menopause-intro-outfit-2-media/origin.webp","small":"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/images/20260613095030_of-menopause-intro-outfit-2-media/small.webp"}}}}},"order":6,"label":"outfit_2_media","id":"outfit_2_media"},{"kind":"Media","order":7,"id":"outfit_3_media","label":"outfit_3_media","mediaContent":{"content":{"image":{"translations":{"en-US":{"original":"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/images/20260613095032_of-menopause-intro-outfit-3-media/origin.webp","small":"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/images/20260613095032_of-menopause-intro-outfit-3-media/small.webp"}}}},"kind":"Image"}},{"kind":"Media","id":"outfit_4_media","order":8,"label":"outfit_4_media","mediaContent":{"kind":"Image","content":{"image":{"translations":{"en-US":{"original":"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/images/20260613095037_of-menopause-intro-outfit-4-media/origin.webp","small":"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/images/20260613095037_of-menopause-intro-outfit-4-media/small.webp"}}}}}},{"label":"outfit_5_media","mediaContent":{"kind":"Image","content":{"image":{"translations":{"en-US":{"small":"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/images/20260613095034_of-menopause-intro-outfit-5-media/small.webp","original":"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/images/20260613095034_of-menopause-intro-outfit-5-media/origin.webp"}}}}},"order":9,"id":"outfit_5_media","kind":"Media"}],"html":"<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Account Created</title>\n  <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n  <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n  <link href=\"https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap\" rel=\"stylesheet\">\n  <style>\n    /* --- Base & Mobile-First Styles --- */\n    body, html {\n      margin: 0;\n      padding: 0;\n      width: 100%;\n      height: 100%;\n      font-family: 'Lato', -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n      background-color: #ffffff;\n    }\n    .screen-container {\n      width: 100%;\n      height: 100%;\n      box-sizing: border-box;\n      display: flex;\n      flex-direction: column;\n      overflow: hidden;\n      background: linear-gradient(to bottom, #ffffff 0%, #fff1f1 100%);\n    }\n\n    /* --- Desktop Preview Simulation --- */\n    @media (min-width: 600px) {\n      body {\n        background-color: #f0f2f5;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n      }\n      .screen-container {\n        width: 100%;\n        max-width: 430px;\n        aspect-ratio: 9 / 19.5;\n        height: auto;\n        max-height: 90vh;\n        border-radius: 40px;\n        box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);\n        border: 1px solid #ddd;\n        overflow: hidden;\n        position: relative;\n      }\n    }\n\n    /* --- Entrance Animations --- */\n    @keyframes fadeInUp {\n      from { opacity: 0; transform: translateY(16px); }\n      to   { opacity: 1; transform: none; }\n    }\n    @keyframes pop {\n      0%   { transform: scale(0.6); opacity: 0; }\n      60%  { transform: scale(1.08); opacity: 1; }\n      100% { transform: scale(1); opacity: 1; }\n    }\n    .anim-enter { opacity: 0; animation: fadeInUp 0.6s cubic-bezier(0.25, 1, 0.5, 1) forwards; }\n    .anim-d1 { animation-delay: 0.05s; }\n    .anim-d2 { animation-delay: 0.18s; }\n    .anim-d3 { animation-delay: 0.28s; }\n    .anim-d4 { animation-delay: 0.38s; }\n    .anim-d5 { animation-delay: 0.48s; }\n    .anim-d6 { animation-delay: 0.58s; }\n\n    /* --- Header Section --- */\n    .header-section {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      padding: 48px 32px 16px 32px;\n      flex-shrink: 0;\n      text-align: center;\n    }\n\n    /* --- Checkmark Badge --- */\n    .check-badge {\n      width: 72px;\n      height: 72px;\n      border-radius: 50%;\n      background-color: #ff2a6d;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      margin-bottom: 20px;\n      box-shadow: 0px 10px 20px -5px rgba(255, 42, 109, 0.35);\n      animation: pop 0.55s cubic-bezier(0.34, 1.56, 0.64, 1) both;\n    }\n    .check-badge svg {\n      width: 36px;\n      height: 36px;\n    }\n\n    .eyebrow {\n      font-size: 13px;\n      font-weight: 700;\n      letter-spacing: 1.6px;\n      text-transform: uppercase;\n      color: #ff2a6d;\n      margin: 0 0 8px 0;\n    }\n    #title_label {\n      font-size: 32px;\n      font-weight: 400;\n      line-height: 36px;\n      letter-spacing: -0.7px;\n      color: #2d2926;\n      margin: 0 0 12px 0;\n    }\n    #subtitle_label {\n      font-size: 16px;\n      font-weight: 400;\n      line-height: 24px;\n      color: #6d6a66;\n      margin: 0;\n      max-width: 340px;\n    }\n\n    /* --- Benefits List --- */\n    .benefits-container {\n      flex: 1;\n      overflow-y: auto;\n      padding: 24px 24px 8px 24px;\n      display: flex;\n      flex-direction: column;\n      gap: 12px;\n      min-height: 0;\n    }\n    .benefits-container::-webkit-scrollbar { display: none; }\n\n    .benefit-card {\n      display: flex;\n      align-items: center;\n      gap: 14px;\n      padding: 14px 16px;\n      background: #ffffff;\n      border: 1px solid #fbe1ea;\n      border-radius: 16px;\n      box-shadow: 0px 2px 8px -2px rgba(255, 42, 109, 0.06);\n    }\n    .benefit-icon {\n      width: 44px;\n      height: 44px;\n      border-radius: 12px;\n      flex-shrink: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .benefit-icon img {\n      width: 24px;\n      height: 24px;\n    }\n    .benefit-content {\n      flex: 1;\n      min-width: 0;\n    }\n    .benefit-title {\n      font-size: 15px;\n      font-weight: 700;\n      line-height: 20px;\n      color: #2d2926;\n      margin: 0 0 2px 0;\n    }\n    .benefit-desc {\n      font-size: 13px;\n      font-weight: 400;\n      line-height: 18px;\n      color: #6d6a66;\n      margin: 0;\n    }\n    .benefit-tick {\n      width: 22px;\n      height: 22px;\n      flex-shrink: 0;\n      color: #ff2a6d;\n    }\n\n    /* --- Footer --- */\n    .footer-section {\n      flex-shrink: 0;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      gap: 12px;\n      padding: 16px 24px 32px 24px;\n    }\n    #action_button {\n      width: 100%;\n      max-width: 360px;\n      padding: 16px 0;\n      box-sizing: border-box;\n      font-family: 'Lato', sans-serif;\n      font-size: 18px;\n      font-weight: 700;\n      border: none;\n      border-radius: 9999px;\n      cursor: pointer;\n      transition: opacity 0.2s, transform 0.2s;\n      background-color: #ff2a6d;\n      color: #FFFFFF;\n      box-shadow: 0px 10px 15px -3px #fbcfe8, 0px 4px 6px -4px #fbcfe8;\n    }\n    #action_button:hover:not(:disabled) { opacity: 0.92; }\n    #action_button:active:not(:disabled) { transform: scale(0.98); }\n\n    .footer-note {\n      font-size: 12px;\n      font-weight: 400;\n      line-height: 16px;\n      color: #8a8682;\n      text-align: center;\n      margin: 0;\n    }\n  </style>\n</head>\n<body>\n  <div class=\"screen-container\">\n\n    <div class=\"header-section\">\n      <div class=\"check-badge\" aria-hidden=\"true\">\n        <svg viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <path d=\"M30 10L14 26L6 18\" stroke=\"white\" stroke-width=\"3.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n        </svg>\n      </div>\n      <p class=\"eyebrow anim-enter anim-d1\" id=\"eyebrow_label\">Thank you</p>\n      <h1 id=\"title_label\" class=\"anim-enter anim-d2\">Your account is ready.</h1>\n      <p id=\"subtitle_label\" class=\"anim-enter anim-d3\">We&rsquo;ve created your Outfit Formulas account &mdash; here&rsquo;s what&rsquo;s waiting inside.</p>\n    </div>\n\n    <div class=\"benefits-container\">\n      <div class=\"benefit-card anim-enter anim-d3\">\n        <div class=\"benefit-icon\" style=\"background-color: #fdf2f8;\">\n          <img src=\"https://api.segmently.ai/assets/onboardings/a6KiG6PBrwmHwTTngXS2/images/en-US_1777463321211_icon-offer-calendar/origin.svg\" alt=\"\">\n        </div>\n        <div class=\"benefit-content\">\n          <p class=\"benefit-title\" id=\"benefit_1_title\">Outfit Calendar for each month</p>\n          <p class=\"benefit-desc\" id=\"benefit_1_desc\">See exactly what to wear every day of the month.</p>\n        </div>\n        <svg class=\"benefit-tick\" viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <circle cx=\"11\" cy=\"11\" r=\"11\" fill=\"currentColor\"/>\n          <path d=\"M6.5 11.2L9.6 14.3L15.5 8\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n        </svg>\n      </div>\n\n      <div class=\"benefit-card anim-enter anim-d4\">\n        <div class=\"benefit-icon\" style=\"background-color: #faf5ff;\">\n          <img src=\"https://api.segmently.ai/assets/onboardings/a6KiG6PBrwmHwTTngXS2/images/en-US_1777463321724_icon-offer-shopping/origin.svg\" alt=\"\">\n        </div>\n        <div class=\"benefit-content\">\n          <p class=\"benefit-title\" id=\"benefit_2_title\">Smart Shopping Lists</p>\n          <p class=\"benefit-desc\" id=\"benefit_2_desc\">We spot the gaps in your closet and tell you exactly what to add.</p>\n        </div>\n        <svg class=\"benefit-tick\" viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <circle cx=\"11\" cy=\"11\" r=\"11\" fill=\"currentColor\"/>\n          <path d=\"M6.5 11.2L9.6 14.3L15.5 8\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n        </svg>\n      </div>\n\n      <div class=\"benefit-card anim-enter anim-d5\">\n        <div class=\"benefit-icon\" style=\"background-color: #eff6ff;\">\n          <img src=\"https://api.segmently.ai/assets/onboardings/a6KiG6PBrwmHwTTngXS2/images/en-US_1777463322085_icon-offer-stylist/origin.svg\" alt=\"\">\n        </div>\n        <div class=\"benefit-content\">\n          <p class=\"benefit-title\" id=\"benefit_3_title\">ALI, your 24/7 stylist</p>\n          <p class=\"benefit-desc\" id=\"benefit_3_desc\">Ask what works, what matches, or how to dress for an event.</p>\n        </div>\n        <svg class=\"benefit-tick\" viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <circle cx=\"11\" cy=\"11\" r=\"11\" fill=\"currentColor\"/>\n          <path d=\"M6.5 11.2L9.6 14.3L15.5 8\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n        </svg>\n      </div>\n    </div>\n\n    <div class=\"footer-section\">\n      <button id=\"action_button\">Continue</button>\n      <p class=\"footer-note\" id=\"footer_note_label\">One more thing before we open your app.</p>\n    </div>\n\n  </div>\n\n  <script>\n    // ========================================================================\n    // --- OFFICIAL ONBOARDING.ONLINE COMMUNICATION SCRIPT ---\n    // ========================================================================\n\n    window.onboardingOnlineCustomScreenData = {\n      inputs: {},\n      labels: {},\n      userData: {},\n      customData: {},\n      webOnboarding: {},\n      incomeUserData: {},\n      language: '',\n      screenId: ''\n    };\n    window.leaveCustomScreen = () => {};\n    window.backScreen = () => {};\n\n    window.onmessage = (event) => {\n      if (typeof (event.data) === 'object' && event.data.eventName === 'InitCustomScreen') {\n        Object.assign(window.onboardingOnlineCustomScreenData, event.data.args);\n        const port = event.ports[0];\n        if (port) {\n          window.leaveCustomScreen = (args) => {\n            port.postMessage({ eventName: 'LeaveCustomScreen', args }, []);\n          };\n          window.backScreen = () => {\n            port.postMessage({ eventName: 'BackScreen', args: null }, []);\n          };\n        }\n        runInitialSetup();\n      }\n    };\n\n    // Standalone fallback\n    window.addEventListener('DOMContentLoaded', () => {\n      setTimeout(() => {\n        if (!window.onboardingOnlineCustomScreenData.screenId) {\n          console.log('Running in standalone mode');\n          runInitialSetup();\n        }\n      }, 100);\n    });\n\n    // ========================================================================\n    // --- SCREEN LOGIC ---\n    // ========================================================================\n\n    let initialized = false;\n\n    function runInitialSetup() {\n      if (initialized) return;\n      initialized = true;\n      console.log('Screen Initialized');\n      addEventListeners();\n      updateLabels();\n    }\n\n    function addEventListeners() {\n      const button = document.getElementById('action_button');\n      if (button) {\n        button.addEventListener('click', () => {\n          window.leaveCustomScreen({});\n        });\n      }\n    }\n\n    function applyLabel(elementId, labelKey) {\n      const el = document.getElementById(elementId);\n      const labels = window.onboardingOnlineCustomScreenData.labels;\n      const language = window.onboardingOnlineCustomScreenData.language;\n      if (!el || !labels || !language) return;\n      const value = labels[labelKey]?.value?.l10n?.[language];\n      if (value) el.innerHTML = value;\n    }\n\n    function updateLabels() {\n      const labels = window.onboardingOnlineCustomScreenData.labels;\n      const language = window.onboardingOnlineCustomScreenData.language;\n      if (!labels || !language) return;\n\n      applyLabel('eyebrow_label', 'eyebrow_label');\n      applyLabel('title_label', 'title_label');\n      applyLabel('subtitle_label', 'subtitle_label');\n\n      applyLabel('benefit_1_title', 'benefit_1_title');\n      applyLabel('benefit_1_desc',  'benefit_1_desc');\n      applyLabel('benefit_2_title', 'benefit_2_title');\n      applyLabel('benefit_2_desc',  'benefit_2_desc');\n      applyLabel('benefit_3_title', 'benefit_3_title');\n      applyLabel('benefit_3_desc',  'benefit_3_desc');\n\n      applyLabel('footer_note_label', 'footer_note_label');\n\n      const buttonElement = document.getElementById('action_button');\n      if (buttonElement && labels.button_text?.value?.l10n?.[language]) {\n        buttonElement.textContent = labels.button_text.value.l10n[language];\n      }\n    }\n  </script>\n</body>\n</html>\n","isIframe":true,"callback":{"action":{"kind":"advance","edges":[{"conditions":[],"transitionKind":"push","nextScreenId":"5826490f-40c6-4a54-8bbd-7e6adeb79782"}]}}},"canvas":{"background":{"content":{"color":"#f8fbfb"},"kind":"solid"}},"offlineFirst":false},"aiMeta":{"generationTimestamp":"2026-06-13T08:46:44.758Z","blockRole":"Menopause Intro","generationModel":"manual-cli","blockType":"WebEmbed","iterationCount":1,"source":"segmently-cli"},"order":6,"name":"waiting-inside","createdAt":"2026-06-13T08:46:44.758Z"},"3dd1ebc8-0550-4cdf-bcdc-3970ab859198":{"position":{"x":7936,"y":-496},"tags":[],"content":{"canvas":{"background":{"kind":"solid","content":{"color":"#f8fbfb"}},"insets":{"bottom":0,"start":16,"end":16,"top":0}},"animated":true,"systemPrompt":null,"textField":{"layout":{"insets":{"bottom":32,"top":16,"start":16,"end":16}},"appearance":{"borderColor":"#aaaaaa"},"fieldSubtype":"Email","value":"","errorMessage":{"appearance":{"fontFamily":"SF Pro","fontWeight":400,"color":"#fd0000","align":"start","lineHeight":22.5,"fontSize":12},"kind":"static","translations":{"en-US":"Please enter a valid email"}},"placeholder":{"kind":"static","appearance":{"fontWeight":400,"fontFamily":"SF Pro","align":"start","fontSize":17,"color":"#000000","lineHeight":22.5},"translations":{"en-US":"Enter your email"}},"fieldType":"string","validationRegex":"^[\\w.%+-]+@[\\w.-]+\\.[a-zA-Z]{2,}$"},"header":{"back":{"kind":"label","action":{"kind":"retreat","edges":[]},"content":{"translations":{"en-US":""},"appearance":{"fontWeight":400,"fontFamily":"SF Pro","fontSize":15,"color":"#000000","lineHeight":22.5},"kind":"static"},"layout":{"insets":{"top":0,"start":0,"end":0,"bottom":0}},"appearance":{}}},"copy":{"title":{"kind":"static","appearance":{"align":"center","fontFamily":"SF Pro","fontWeight":600,"fontSize":26,"lineHeight":32,"color":"#000000"},"layout":{"insets":{"start":0,"bottom":0,"top":32,"end":0}},"translations":{"en-US":"What's your email?"}},"subtitle":{"layout":{"insets":{"top":16,"bottom":16,"end":16,"start":16}},"translations":{"en-US":"Your email allows us to securely store and personalize your profile just for you"},"appearance":{"lineHeight":23.8,"align":"center","color":"#1f2a36","fontSize":17,"fontFamily":"SF Pro","fontWeight":300},"kind":"static"}},"offlineFirst":true,"actionBar":{"primary":{"action":{"edges":[{"transitionKind":"push","nextScreenId":"56aa975c-6909-48f2-abb3-f7dc00378e8d","conditions":[]}],"kind":"advance"},"appearance":{"backgroundColor":"#f5326d","fullWidth":true,"visibility":"disabledUntilValueEntered","borders":{"radius":{"uniform":25}},"dimensions":{"height":50}},"kind":"label","layout":{"insets":{"bottom":200,"end":16,"start":16,"top":32}},"content":{"translations":{"en-US":"Continue"},"kind":"static","appearance":{"lineHeight":22.5,"fontSize":18,"align":"center","insets":{"top":0,"bottom":0,"end":16,"start":16},"color":"#ffffff","fontFamily":"SF Pro","fontWeight":700}}}},"countdown":null},"id":"3dd1ebc8-0550-4cdf-bcdc-3970ab859198","screenType":"TextInput","name":"email"},"3e4839ee-e65c-4ed3-92a6-5b7e5b898921":{"screenType":"WebEmbed","tags":[],"position":{"x":11408,"y":128},"id":"3e4839ee-e65c-4ed3-92a6-5b7e5b898921","name":"final-screen","content":{"animated":true,"header":{},"canvas":{"background":{"kind":"solid","content":{"color":"#f8fbfb"}},"insets":{"start":16,"top":0,"end":16,"bottom":0}},"countdown":null,"actionBar":{},"systemPrompt":null,"offlineFirst":true,"embed":{"html":"<!DOCTYPE html>\n<html>\n\n<head>\n  <meta charset='UTF-8'>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>You're In!</title>\n  <!-- OO-PORT-MESSAGE-HANDLER-START -->\n  <!-- DO NOT REMOVE THIS CODE -->\n  <script>\n  // Helper function to find segmentlySDK in parent chain (up to 4 levels)\n  function getSegmentlySDK() {\n    let currentWindow = window;\n\n    // Check up to 4 levels up the parent chain\n    for (let i = 0; i < 4; i++) {\n      try {\n        // Try to access segmentlySDK (may fail due to cross-origin restrictions)\n        if (currentWindow.segmentlySDK) {\n          return currentWindow.segmentlySDK;\n        }\n\n        // Stop if we've reached the top window\n        if (currentWindow === currentWindow.parent) {\n          break;\n        }\n\n        currentWindow = currentWindow.parent;\n      } catch (e) {\n        // Cross-origin access blocked, stop searching\n        console.warn('Cross-origin access blocked at level', i);\n        break;\n      }\n    }\n\n    return null;\n  }\n\n\n    window.onboardingOnlineCustomScreenData = {\n      inputs: {},\n      labels: {},\n      userData: {},\n      customData: {},\n      webOnboarding: {},\n      incomeUserData: {},\n      language: '',\n      screenId: ''\n  };\n  window.leaveCustomScreen = () => {};\n\n  window.onmessage = (event) => {\n    if (typeof (event.data) === 'object' && event.data.eventName === 'InitCustomScreen') {\n      // 1. Store Data\n\n      Object.assign(window.onboardingOnlineCustomScreenData, event.data.args);\n\n      // 2. Setup Return Channel\n      const port = event.ports[0];\n      if (port) {\n        window.leaveCustomScreen = (args) => {\n          port.postMessage({\n            eventName: 'LeaveCustomScreen',\n            args,\n          }, []);\n        };\n      }\n      initScreen();\n    }\n  };\n  </script>\n  <!-- OO-PORT-MESSAGE-HANDLER-END -->\n  <style>\n    body, html {\n      margin: 0;\n      padding: 0;\n      width: 100%;\n      height: 100%;\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n      background-color: #FF2A6D;\n    }\n\n    .screen-container {\n      width: 100%;\n      height: 100%;\n      box-sizing: border-box;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n      padding: 32px;\n      text-align: center;\n      background-color: #FF2A6D;\n    }\n\n    /* --- Desktop Preview Simulation (iPhone Frame) --- */\n    @media (min-width: 600px) {\n      body {\n        background-color: #f0f2f5;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n      }\n      .screen-container {\n        width: 100%;\n        max-width: 430px;\n        aspect-ratio: 9 / 19.5;\n        height: auto;\n        max-height: 90vh;\n        border-radius: 40px;\n        box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);\n        overflow: hidden;\n        position: relative;\n      }\n    }\n\n    /* --- Checkmark Icon --- */\n    .check-icon {\n      width: 96px;\n      height: 96px;\n      border-radius: 50%;\n      background: rgba(255, 255, 255, 0.2);\n      border: 1px solid rgba(255, 255, 255, 0.3);\n      backdrop-filter: blur(6px);\n      -webkit-backdrop-filter: blur(6px);\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      margin-bottom: 32px;\n      box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);\n    }\n    .check-icon svg {\n      width: 48px;\n      height: 48px;\n    }\n\n    /* --- Title --- */\n    .title {\n      font-size: 30px;\n      font-weight: 600;\n      line-height: 36px;\n      color: #ffffff;\n      margin: 0 0 16px 0;\n    }\n\n    /* --- Subtitle --- */\n    .subtitle {\n      font-size: 16px;\n      line-height: 29px;\n      color: rgba(255, 255, 255, 0.9);\n      margin: 0 0 48px 0;\n      max-width: 329px;\n    }\n\n    /* --- Action Card --- */\n    .action-card {\n      background: #ffffff;\n      border-radius: 16px;\n      padding: 24px;\n      width: 100%;\n      max-width: 320px;\n      box-sizing: border-box;\n      box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);\n    }\n    .action-card-label {\n      font-size: 14px;\n      font-weight: 700;\n      letter-spacing: 0.35px;\n      text-transform: uppercase;\n      color: #FF2A6D;\n      margin: 0 0 16px 0;\n      text-align: center;\n    }\n    #submit-button {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      width: 100%;\n      height: 56px;\n      border: none;\n      border-radius: 12px;\n      background-color: #1A1A1A;\n      color: #ffffff;\n      font-family: inherit;\n      font-size: 16px;\n      font-weight: 700;\n      cursor: pointer;\n      transition: opacity 0.2s;\n    }\n    #submit-button:hover {\n      opacity: 0.9;\n    }\n  </style>\n</head>\n\n<body>\n  <form id='custom-form' class=\"screen-container\">\n\n    <div class=\"check-icon\">\n      <svg viewBox=\"0 0 48 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path d=\"M40 12L18 34L8 24\" stroke=\"white\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n      </svg>\n    </div>\n\n    <h1 class=\"title\">You're In!</h1>\n    <p class=\"subtitle\">Welcome to the Outfit Formulas!<br>Your journey to calm morning starts now.</p>\n\n    <div class=\"action-card\">\n      <p class=\"action-card-label\">Next Step</p>\n      <button id='submit-button'>Open App</button>\n    </div>\n\n  </form>\n\n  <script>\n\n    async function sendBrazeEmail({ email, userId, password, otpToken }) {\n      try {\n        const response = await fetch('https://us-central1-outfit-formulas.cloudfunctions.net/sendSubscriptionEmail', {\n          method: 'POST',\n          headers: {\n            'Content-Type': 'application/json',\n            'Authorization': 'Bearer kPq4Yz7wAbJ5sXft9gQFhR3Nc2uL0MVe'\n          },\n          body: JSON.stringify({ email, userId, password: password ?? \"****\", otpToken: otpToken ?? \"\" })\n        });\n\n        if (!response.ok) {\n          throw new Error(`Request failed: ${response.status}`);\n        }\n\n        const result = await response.json();\n        console.log('Email sent:', result);\n      } catch (error) {\n        console.error('Failed to trigger Braze email:', error);\n      }\n    }\n\n    // Helper function to get value — tries V2 SDK first, then falls back to legacy userData\n    function getValue(key, legacyKeys) {\n      // 1. Try V2 SDK getVariable (set by previous screens via sdk.setVariable)\n      try {\n        const sdk = getSegmentlySDK();\n        if (sdk && sdk.getVariable) {\n          const val = sdk.getVariable(key);\n          if (val) return val;\n        }\n      } catch (e) {\n        console.warn('SDK getVariable failed for', key, e);\n      }\n\n      // 2. Fall back to legacy userData search\n      const allKeys = legacyKeys || [key, \"input['\" + key + \"']\"];\n      const userData = window.onboardingOnlineCustomScreenData.userData || {};\n      for (const screenId in userData) {\n        const screenData = userData[screenId];\n        if (screenData) {\n          for (const k of allKeys) {\n            if (screenData[k]) {\n              return screenData[k];\n            }\n          }\n        }\n      }\n      return null;\n    }\n\n    // Initialize screen once data is available\n    function initScreen() {\n      console.log('Screen initialized');\n\n      // Track final screen initialization\n      const segmentlySDK = getSegmentlySDK();\n\n      if (segmentlySDK) {\n        segmentlySDK.trackEvent('FinalScreenReached', {\n          screenName: 'final_screen',\n          action: 'initialized'\n        });\n      }\n\n      // Load credentials and send Braze email\n      try {\n        // Get values — tries V2 SDK first, then legacy userData\n        let email;\n        try {\n          const sdk = getSegmentlySDK();\n          if (sdk && sdk.getEmail) email = sdk.getEmail();\n        } catch (e) {}\n        if (!email) email = getValue('email');\n\n        const userId = getValue('app_user_id') || email;\n        const existingUser = getValue('existing_user');\n        const otpToken = getValue('otp') || getValue('token');\n        const password = getValue('password');\n\n        console.log('User data retrieved successfully');\n        // full list\n        console.log(otpToken);\n        console.log(userId);\n\n        // Send Braze email only once (only if email exists)\n        if (email) {\n          const brazeEmailSentKey = `brazeEmailSent_${email}`;\n          if (!localStorage.getItem(brazeEmailSentKey)) {\n            sendBrazeEmail({ email, userId, password, otpToken })\n              .then(() => {\n                localStorage.setItem(brazeEmailSentKey, 'true');\n\n                // Track Braze email sent\n                const segmentlySDK = getSegmentlySDK();\n\n                if (segmentlySDK) {\n                  segmentlySDK.trackEvent('BrazeEmailSent', {\n                    screenName: 'final_screen',\n                    action: 'email_sent',\n                    existingUser: existingUser === 'true'\n                  });\n                }\n              });\n          } else {\n            console.log(\"Braze email already sent\");\n          }\n        } else {\n          console.warn(\"No email found in userData, skipping Braze email\");\n        }\n      } catch (error) {\n        console.error(\"Error retrieving data from userData:\", error);\n      }\n\n      // Setup form submit handler\n      const form = document.getElementById('custom-form');\n      form.addEventListener('submit', function (event) {\n        event.preventDefault();\n        // Get OTP token from userData\n        try {\n          const otpToken = getValue('otp') || getValue('token');\n          console.log('Submitting with OTP token');\n\n          // Track app opening\n          const segmentlySDK = getSegmentlySDK();\n\n          if (segmentlySDK) {\n            segmentlySDK.trackEvent('AppOpened', {\n              screenName: 'final_screen',\n              action: 'open_app',\n              hasToken: !!otpToken\n            });\n          }\n\n          if (otpToken) {\n            // Set variable before leaving so it's available for conditions\n            const sdk = getSegmentlySDK();\n            if (sdk && sdk.setVariable) {\n              sdk.setVariable('otp', otpToken);\n            }\n            // Open the app with the OTP token\n            window.leaveCustomScreen({ otp: otpToken });\n          } else {\n            console.error('No OTP token found in userData');\n            window.leaveCustomScreen({});\n          }\n        } catch (error) {\n          console.error('Error getting OTP token from userData:', error);\n\n          // Track error\n          const segmentlySDK = getSegmentlySDK();\n\n          if (segmentlySDK) {\n            segmentlySDK.trackEvent('FinalScreenError', {\n              screenName: 'final_screen',\n              action: 'token_error',\n              errorMessage: error.message\n            });\n          }\n\n          window.leaveCustomScreen({});\n        }\n      });\n    }\n  </script>\n</body>\n\n</html>","callback":{"action":{"edges":[],"kind":"advance"}}}}},"56aa975c-6909-48f2-abb3-f7dc00378e8d":{"position":{"y":-464,"x":8592},"content":{"canvas":{"background":{"content":{"color":"#f8fbfb"},"kind":"solid"},"insets":{"end":16,"top":0,"start":16,"bottom":0}},"header":{},"animated":true,"systemPrompt":null,"offlineFirst":true,"actionBar":{},"countdown":null,"embed":{"html":"<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Creating Profile Loading Screen</title>\n  <style>\n    /* =========================================\n       1. CORE RESPONSIVE BOILERPLATE\n       (Do not modify this section)\n       ========================================= */\n    body, html {\n      margin: 0;\n      padding: 0;\n      width: 100%;\n      height: 100%;\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n      background-color: #ffffff;\n    }\n    .screen-container {\n      width: 100%;\n      height: 100%;\n      box-sizing: border-box;\n      overflow-y: auto;\n      display: flex;\n      flex-direction: column;\n      justify-content: center;\n      align-items: center;\n    }\n\n    /* --- Desktop Preview Simulation --- */\n    @media (min-width: 600px) {\n      body {\n        background-color: #f0f2f5;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n      }\n      .screen-container {\n        width: 100%;\n        max-width: 430px; /* iPhone Pro Max width */\n        aspect-ratio: 9 / 19.5;\n        height: auto;\n        max-height: 90vh;\n        border-radius: 40px;\n        box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);\n        border: 1px solid #ddd;\n        overflow: hidden;\n        position: relative;\n        background-color: #ffffff;\n      }\n    }\n\n    /* =========================================\n       2. CUSTOM SCREEN STYLES\n       (Adjust colors and sizes here)\n       ========================================= */\n    :root {\n      --primary-color: #E91E63; /* Dark Pink */\n      --secondary-color: #F8BBD0; /* Light Pink */\n      --text-color: #000000;\n    }\n\n    /* The Container for the Loader */\n    .loader-wrapper {\n      position: relative;\n      width: 156px;\n      height: 156px;\n      margin-bottom: 30px;\n    }\n\n    /* Central User Icon */\n    .user-icon {\n      position: absolute;\n      top: 50%;\n      left: 50%;\n      transform: translate(-50%, -50%);\n      width: 65px;\n      height: 65px;\n      fill: var(--secondary-color);\n      z-index: 2;\n    }\n\n    /* The Spinning Ring */\n    .spinner {\n      color: official;\n      display: inline-block;\n      position: relative;\n      width: 100%;\n      height: 100%;\n    }\n    .spinner div {\n      transform-origin: 78px 78px; /* Half of width/height */\n      animation: spinner-fade 1.2s linear infinite;\n    }\n    .spinner div:after {\n      content: \" \";\n      display: block;\n      position: absolute;\n      top: 13px;\n      left: 74px; /* Center horizontally (78) minus half width (4) */\n      width: 8px;\n      height: 22px;\n      border-radius: 4px; /* Softens the edges like the image */\n      background: var(--primary-color);\n    }\n    \n    /* Rotation for the 12 segments */\n    .spinner div:nth-child(1) { transform: rotate(0deg); animation-delay: -1.1s; }\n    .spinner div:nth-child(2) { transform: rotate(30deg); animation-delay: -1.0s; }\n    .spinner div:nth-child(3) { transform: rotate(60deg); animation-delay: -0.9s; }\n    .spinner div:nth-child(4) { transform: rotate(90deg); animation-delay: -0.8s; }\n    .spinner div:nth-child(5) { transform: rotate(120deg); animation-delay: -0.7s; }\n    .spinner div:nth-child(6) { transform: rotate(150deg); animation-delay: -0.6s; }\n    .spinner div:nth-child(7) { transform: rotate(180deg); animation-delay: -0.5s; }\n    .spinner div:nth-child(8) { transform: rotate(210deg); animation-delay: -0.4s; }\n    .spinner div:nth-child(9) { transform: rotate(240deg); animation-delay: -0.3s; }\n    .spinner div:nth-child(10) { transform: rotate(270deg); animation-delay: -0.2s; }\n    .spinner div:nth-child(11) { transform: rotate(300deg); animation-delay: -0.1s; }\n    .spinner div:nth-child(12) { transform: rotate(330deg); animation-delay: 0s; }\n\n    @keyframes spinner-fade {\n      0% { opacity: 1; }\n      100% { opacity: 0.2; }\n    }\n\n    /* Text Styling */\n    h2 {\n      font-size: 18px;\n      font-weight: 600;\n      color: var(--text-color);\n      text-align: center;\n      margin: 0;\n    }\n  </style>\n</head>\n<body>\n\n<div class=\"screen-container\">\n  \n  <div class=\"loader-wrapper\">\n    <svg class=\"user-icon\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"/>\n    </svg>\n\n    <div class=\"spinner\">\n      <div></div><div></div><div></div><div></div>\n      <div></div><div></div><div></div><div></div>\n      <div></div><div></div><div></div><div></div>\n    </div>\n  </div>\n\n  <h2 id=\"loading_text\">Creating profile<br>please wait...</h2>\n\n</div>\n\n<script>\n  // Helper function to find segmentlySDK in parent chain (up to 4 levels)\n  function getSegmentlySDK() {\n    let currentWindow = window;\n\n    // Check up to 4 levels up the parent chain\n    for (let i = 0; i < 4; i++) {\n      try {\n        // Try to access segmentlySDK (may fail due to cross-origin restrictions)\n        if (currentWindow.segmentlySDK) {\n          return currentWindow.segmentlySDK;\n        }\n\n        // Stop if we've reached the top window\n        if (currentWindow === currentWindow.parent) {\n          break;\n        }\n\n        currentWindow = currentWindow.parent;\n      } catch (e) {\n        // Cross-origin access blocked, stop searching\n        console.warn('Cross-origin access blocked at level', i);\n        break;\n      }\n    }\n\n    return null;\n  }\n\n  // =====================================================================================\n  // CONFIGURATION\n  // =====================================================================================\n  const CREATE_USER_API_URL = 'https://us-central1-outfit-formulas.cloudfunctions.net/createOnboardingUser';\n  const STORE_ONBOARDING_API_URL = 'https://storeonboardingdata-gxwrbkza3q-uc.a.run.app/api/v1/users';\n  const BEARER_TOKEN = 'kPq4Yz7wAbJ5sXft9gQFhR3Nc2uL0MVe';\n  const MAX_RETRIES = 1;\n\n  // =====================================================================================\n  // HOST COMMUNICATION LOGIC\n  // =====================================================================================\n  window.onboardingOnlineCustomScreenData = {\n      inputs: {},\n      labels: {},\n      userData: {},\n      customData: {},\n      webOnboarding: {},\n      incomeUserData: {},\n      language: '',\n      screenId: ''\n  };\n  window.leaveCustomScreen = () => {};\n\n  let initialSetupStarted = false;\n\n  window.onmessage = (event) => {\n    if (typeof (event.data) === 'object' && event.data.eventName === 'InitCustomScreen') {\n      // 1. Store Data (always refresh — later inits may carry newer args)\n      Object.assign(window.onboardingOnlineCustomScreenData, event.data.args);\n\n      // 2. Setup Return Channel (refresh port too)\n      const port = event.ports[0];\n      if (port) {\n        window.leaveCustomScreen = (args) => {\n          port.postMessage({\n            eventName: 'LeaveCustomScreen',\n            args,\n          }, []);\n        };\n      }\n\n      // 3. Start the Screen Logic — only once per screen lifetime\n      if (initialSetupStarted) {\n        console.log('InitCustomScreen received again — data/port refreshed, skipping duplicate setup');\n        return;\n      }\n      initialSetupStarted = true;\n      runInitialSetup();\n    }\n  };\n\n  // Safe Amplitude tracking helper — never throws, always logs\n  function trackAmplitude(eventName, props) {\n    try {\n      const sdk = getSegmentlySDK();\n      if (sdk) {\n        sdk.trackEvent(eventName, props);\n      } else {\n        console.warn('[Amplitude] SDK unavailable, event lost:', eventName, props);\n      }\n    } catch (e) {\n      console.warn('[Amplitude] Failed to track event:', eventName, e.message);\n    }\n  }\n\n  function runInitialSetup() {\n    console.log(\"Screen Initialized. Starting API call...\");\n\n    // Track loading screen initialization\n    trackAmplitude('LoadingScreenStarted', {\n      screenName: 'loading_screen',\n      action: 'initialized',\n      sdkAvailable: !!getSegmentlySDK()\n    });\n\n    // Optional: Update text if Dynamic Labels are provided\n    updateLabels();\n\n    // Call API to create user profile\n    callCreateUserAPI();\n  }\n\n  function updateLabels() {\n    const labels = window.onboardingOnlineCustomScreenData.labels;\n    const language = window.onboardingOnlineCustomScreenData.language;\n    \n    if (labels && labels.loading_text?.value?.l10n?.[language]) {\n        document.getElementById('loading_text').innerHTML = labels.loading_text.value.l10n[language];\n    }\n  }\n\n  // Poll for SDK + email so we don't flash the retry button when the host\n  // simply hasn't injected segmentlySDK / userData yet.\n  async function waitForSDKReady(timeoutMs = 3000, intervalMs = 100) {\n    const start = Date.now();\n    let lastError = null;\n    while (Date.now() - start < timeoutMs) {\n      const sdk = getSegmentlySDK();\n      if (sdk) {\n        try {\n          const email = sdk.getEmail();\n          if (email) {\n            return { sdk, email, platformUserId: sdk.getPlatformUserId() };\n          }\n        } catch (e) {\n          lastError = e;\n        }\n      }\n      await new Promise(r => setTimeout(r, intervalMs));\n    }\n    return { error: lastError };\n  }\n\n  async function callCreateUserAPI(retryCount = 0) {\n    try {\n      const ready = await waitForSDKReady();\n\n      if (!ready || !ready.sdk) {\n        console.error('segmentlySDK not available after wait');\n        trackAmplitude('LoadingScreenError', {\n          screenName: 'loading_screen',\n          action: 'sdk_unavailable',\n          errorMessage: 'segmentlySDK is null',\n          retryAttempt: retryCount + 1\n        });\n        showErrorAlert('sdk_unavailable');\n        return;\n      }\n\n      if (ready.error) {\n        console.error('Failed to get email/userId from SDK:', ready.error);\n        trackAmplitude('LoadingScreenError', {\n          screenName: 'loading_screen',\n          action: 'sdk_method_error',\n          errorMessage: ready.error.message,\n          retryAttempt: retryCount + 1\n        });\n        showErrorAlert('sdk_method_error');\n        return;\n      }\n\n      if (!ready.email) {\n        console.error('No email found after wait');\n        trackAmplitude('LoadingScreenError', {\n          screenName: 'loading_screen',\n          action: 'no_email',\n          errorMessage: 'Email is empty or undefined',\n          retryAttempt: retryCount + 1\n        });\n        showErrorAlert('no_email');\n        return;\n      }\n\n      const segmentlySDK = ready.sdk;\n      const email = ready.email;\n      const platformUserId = ready.platformUserId;\n\n      console.log('Using email:', email, 'platformUserId:', platformUserId);\n\n      // Step 1: Create user and get Firebase token\n      const createUserBody = { email: email };\n      if (platformUserId) {\n        createUserBody.userId = platformUserId;\n      }\n\n      // Flag menopause-stage users (2nd/3rd/4th answers on of-menopause-journey).\n      // The inputs dictionary is the canonical source of prior screen answers\n      // inside the iframe; fall back to the SDK variable if not yet populated.\n      const MENOPAUSE_JOURNEY_STAGES = ['hormonal_midlife', 'rediscovering', 'body_changing'];\n      const readJourneyStage = () => {\n        try {\n          const inputs = window.onboardingOnlineCustomScreenData && window.onboardingOnlineCustomScreenData.inputs;\n          if (inputs && inputs.journey_stage !== undefined) {\n            const v = inputs.journey_stage;\n            if (Array.isArray(v)) return v[0];\n            if (v && typeof v === 'object' && 'value' in v) return v.value;\n            return v;\n          }\n        } catch (e) { /* noop */ }\n        try {\n          const sdk = getSegmentlySDK();\n          if (sdk && sdk.getVariable) {\n            const v = sdk.getVariable('journey_stage');\n            return Array.isArray(v) ? v[0] : v;\n          }\n        } catch (e) { /* noop */ }\n        return null;\n      };\n      const journeyStage = readJourneyStage();\n      if (journeyStage && MENOPAUSE_JOURNEY_STAGES.indexOf(journeyStage) !== -1) {\n        createUserBody.userData = {\n          is_web_menopause_user: true\n        };\n      }\n\n      const createUserResponse = await fetch(CREATE_USER_API_URL, {\n        method: 'POST',\n        headers: {\n          'Authorization': `Bearer ${BEARER_TOKEN}`,\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify(createUserBody)\n      });\n\n      if (!createUserResponse.ok) {\n        throw new Error(`Create user API returned ${createUserResponse.status}`);\n      }\n\n      const createUserResult = await createUserResponse.json();\n      console.log('Create user API call successful');\n\n      // Track user creation success\n      trackAmplitude('UserCreated', {\n        screenName: 'loading_screen',\n        action: 'user_created',\n        existingUser: createUserResult.existing_user\n      });\n\n      // Validate all required fields exist in response\n      const requiredFields = ['token', 'idToken', 'email', 'existing_user', 'user_id'];\n      const missingFields = requiredFields.filter(field => !createUserResult[field] && createUserResult[field] !== '');\n\n      if (missingFields.length > 0) {\n        console.error('Missing required fields:', missingFields);\n        throw new Error(`Missing fields: ${missingFields.join(', ')}`);\n      }\n\n      // Navigate to next screen with all response data (token first)\n      finishLoading(createUserResult);\n\n    } catch (error) {\n      console.error('API call failed:', error);\n\n      // Track API error\n      trackAmplitude('LoadingScreenError', {\n        screenName: 'loading_screen',\n        action: 'api_error',\n        errorMessage: error.message,\n        retryAttempt: retryCount + 1\n      });\n\n      // Retry once if this is the first attempt\n      if (retryCount < MAX_RETRIES) {\n        console.log(`Retrying API call (attempt ${retryCount + 2}/${MAX_RETRIES + 1})...`);\n        trackAmplitude('LoadingScreenRetry', {\n          screenName: 'loading_screen',\n          action: 'retry',\n          retryAttempt: retryCount + 2,\n          errorMessage: error.message\n        });\n        await callCreateUserAPI(retryCount + 1);\n      } else {\n        // Show user-friendly error after retry exhausted\n        showErrorAlert('api_error_exhausted');\n      }\n    }\n  }\n\n  function showErrorAlert(reason) {\n    // Track error screen shown\n    trackAmplitude('ErrorScreenShown', {\n      screenName: 'loading_screen',\n      action: 'error_screen_shown',\n      errorReason: reason || 'unknown'\n    });\n\n    // Hide spinner\n    document.querySelector('.loader-wrapper').style.display = 'none';\n\n    // Update text to show error message\n    const loadingText = document.getElementById('loading_text');\n    loadingText.innerHTML = 'Something went wrong<br>Please try again';\n\n    // Create retry button\n    const retryButton = document.createElement('button');\n    retryButton.textContent = 'Retry';\n    retryButton.style.cssText = `\n      margin-top: 20px;\n      padding: 12px 32px;\n      background-color: var(--primary-color);\n      color: white;\n      border: none;\n      border-radius: 8px;\n      font-size: 16px;\n      font-weight: 600;\n      cursor: pointer;\n      box-shadow: 0 2px 8px rgba(233, 30, 99, 0.3);\n      transition: transform 0.2s, box-shadow 0.2s;\n    `;\n\n    // Add hover effect\n    retryButton.onmouseover = () => {\n      retryButton.style.transform = 'translateY(-2px)';\n      retryButton.style.boxShadow = '0 4px 12px rgba(233, 30, 99, 0.4)';\n    };\n    retryButton.onmouseout = () => {\n      retryButton.style.transform = 'translateY(0)';\n      retryButton.style.boxShadow = '0 2px 8px rgba(233, 30, 99, 0.3)';\n    };\n\n    // Retry on button click\n    retryButton.onclick = () => {\n      // Track retry button tap\n      trackAmplitude('RetryButtonTapped', {\n        screenName: 'loading_screen',\n        action: 'retry_tapped',\n        errorReason: reason || 'unknown'\n      });\n\n      // Remove button and show spinner again\n      retryButton.remove();\n      loadingText.innerHTML = 'Creating profile<br>please wait...';\n      document.querySelector('.loader-wrapper').style.display = 'block';\n\n      // Retry API call\n      callCreateUserAPI(0);\n    };\n\n    // Add button to screen\n    document.querySelector('.screen-container').appendChild(retryButton);\n  }\n\n  function finishLoading(result) {\n    try {\n      // Check if user has active subscription\n      if (result.hasActiveSubscription === true) {\n        console.log('Active subscription detected, redirecting to active subscription screen');\n\n        trackAmplitude('ActiveSubscriptionDetected', {\n          screenName: 'loading_screen',\n          action: 'redirect_to_active_subscription'\n        });\n\n        // Set variable before leaving\n        const sdk1 = getSegmentlySDK();\n        if (sdk1 && sdk1.setVariable) {\n          sdk1.setVariable('app_user_id', 'active-subscription');\n        }\n\n        window.leaveCustomScreen({\n          app_user_id: \"active-subscription\"\n        });\n      } else {\n        // Track successful completion before navigating\n        trackAmplitude('LoadingScreenCompleted', {\n          screenName: 'loading_screen',\n          action: 'navigating_to_next',\n          hasUserId: !!result.user_id,\n          hasToken: !!result.token,\n          existingUser: result.existing_user\n        });\n\n        // Set variables before leaving\n        const sdk2 = getSegmentlySDK();\n        if (sdk2 && sdk2.setVariable) {\n          if (result.user_id) sdk2.setVariable('app_user_id', result.user_id);\n          if (result.token) sdk2.setVariable('token', result.token);\n          if (result.email) sdk2.setVariable('email', result.email);\n          if (result.existing_user) sdk2.setVariable('existing_user', result.existing_user);\n          if (result.password) sdk2.setVariable('password', result.password);\n        }\n\n        // Navigate to next screen with all response data (token as first property)\n        window.leaveCustomScreen({\n          app_user_id: result.user_id,\n          token: result.token,\n          email: result.email,\n          existing_user: result.existing_user,\n          password: result.password\n        });\n      }\n    } catch (error) {\n      console.error('finishLoading failed:', error);\n      trackAmplitude('LoadingScreenError', {\n        screenName: 'loading_screen',\n        action: 'finish_loading_error',\n        errorMessage: error.message\n      });\n      showErrorAlert('finish_loading_error');\n    }\n  }\n</script>\n\n</body>\n</html>","callback":{"action":{"edges":[{"conditions":[{"key":"app_user_id","value":"active-subscription","operator":"eq"}],"nextScreenId":"cb294cac-75d6-4276-934c-1e28c2865b10","transitionKind":"push"},{"conditions":[],"transitionKind":"push","nextScreenId":"of-menopause-paywall"}],"kind":"advance"}}}},"id":"56aa975c-6909-48f2-abb3-f7dc00378e8d","name":"creating-profile","screenType":"WebEmbed","tags":[],"updatedAt":"2026-06-16T15:08:52.776Z"},"5826490f-40c6-4a54-8bbd-7e6adeb79782":{"aiContent":{},"aiMeta":{"blockType":"WebEmbed","source":"segmently-cli","iterationCount":1,"generationTimestamp":"2026-06-15T12:52:32.359Z","blockRole":"Paywall (visual)","generationModel":"manual-cli"},"updatedAt":"2026-08-08T09:58:07.327Z","tags":[],"order":6,"createdAt":"2026-06-15T12:52:32.359Z","id":"5826490f-40c6-4a54-8bbd-7e6adeb79782","position":{"y":112,"x":10672},"name":"the-paywall-menopause","content":{"animated":true,"canvas":{"background":{"content":{"color":"#f8fbfb"},"kind":"solid"}},"offlineFirst":false,"embed":{"childSections":[{"textContent":{"title":{"appearance":{},"kind":"static","translations":{"en-US":"Lifetime membership"}}},"id":"badge_label","order":0,"label":"badge_label","kind":"Text"},{"id":"headline_label","kind":"Text","textContent":{"title":{"kind":"static","translations":{"en-US":"Never Renew Again"},"appearance":{}}},"order":1,"label":"headline_label"},{"textContent":{"title":{"translations":{"en-US":"Planner, formulas, calendars, guides and community. Yours forever."},"kind":"static","appearance":{}}},"kind":"Text","label":"subtitle_label","order":2,"id":"subtitle_label"},{"id":"price_label","textContent":{"title":{"kind":"static","translations":{"en-US":"$199"},"appearance":{}}},"label":"price_label","kind":"Text","order":3},{"order":4,"kind":"Text","label":"urgency_label","id":"urgency_label","textContent":{"title":{"appearance":{},"kind":"static","translations":{"en-US":"This deal disappears when you leave"}}}},{"label":"cta_label","textContent":{"title":{"translations":{"en-US":"Continue for {price}"},"appearance":{},"kind":"static"}},"order":5,"kind":"Text","id":"cta_label"},{"order":6,"kind":"Text","textContent":{"title":{"translations":{"en-US":"One time payment"},"appearance":{},"kind":"static"}},"label":"cta_sublabel","id":"cta_sublabel"},{"kind":"Media","mediaContent":{"kind":"Image","content":{"image":{"translations":{"en-US":{"small":"https://api.segmently.ai/assets/onboardings/IFLK5ND2oF4bL89nekmO/images/en-US_1786183331596_origin-copy/small.jpg","original":"https://api.segmently.ai/assets/onboardings/IFLK5ND2oF4bL89nekmO/images/en-US_1786183331596_origin-copy/origin.jpg"}}}}},"order":7,"id":"hero_media","label":"hero_media"},{"kind":"ProductCatalog","order":8,"id":"paywall_products","label":"paywall_products","productCatalogContent":{"items":[{"isSelected":true,"productId":"plbx4BvAZ2r5B1BeP8y9","isDefault":true,"id":"lifetime"}]}}],"isIframe":false,"html":"<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Never Renew Again</title>\n  <style>\n    :root, :host {\n      --brand-primary: #F5326D;\n      --text-dark: #000000;\n      --text-muted: #656363;\n      --text-note: #5E5E5E;\n    }\n    * { box-sizing: border-box; }\n    :host {\n      display: block;\n      width: 100%;\n      height: 100vh;\n      height: 100dvh;\n      overflow: hidden;\n      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n    }\n    body, html {\n      margin: 0; padding: 0;\n      width: 100%;\n      height: 100vh;\n      height: 100dvh;\n      overflow: hidden;\n      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n      background: #FFF7F3;\n    }\n    .screen {\n      position: relative;\n      width: 100%;\n      height: 100vh;\n      height: 100dvh;\n      display: flex; flex-direction: column;\n      overflow: hidden;\n      background: #FFF7F3;\n      -webkit-tap-highlight-color: transparent;\n    }\n\n    .hero {\n      position: absolute;\n      inset: 0;\n      z-index: 0;\n      overflow: hidden;\n    }\n    .hero img {\n      position: absolute;\n      top: 0; left: 0;\n      width: 100%; height: 100%;\n      object-fit: cover;\n      object-position: center top;\n      display: block;\n    }\n\n    .panel {\n      margin-top: auto;\n      position: relative;\n      z-index: 1;\n      width: 100%;\n      display: flex; flex-direction: column;\n      align-items: center;\n      padding: 28px 24px calc(24px + env(safe-area-inset-bottom)) 24px;\n      background: linear-gradient(180deg, rgba(255,247,243,0) 0%, rgba(255,247,243,0.92) 14%, #FFF7F3 30%);\n    }\n\n    .badge {\n      background: #FFFFFF;\n      border-radius: 6px;\n      padding: 5px 14px;\n      margin-bottom: 8px;\n      font-size: 16px;\n      line-height: 22px;\n      font-weight: 600;\n      letter-spacing: 0.02em;\n      color: var(--brand-primary);\n      text-transform: uppercase;\n      text-align: center;\n    }\n\n    .heading {\n      width: 100%;\n      text-align: center;\n      color: var(--text-dark);\n      font-weight: 600;\n      font-size: 32px;\n      line-height: 1.3;\n      margin: 0 0 8px 0;\n    }\n\n    .subtitle {\n      width: 100%;\n      max-width: 330px;\n      text-align: center;\n      color: var(--text-muted);\n      font-weight: 400;\n      font-size: 14px;\n      line-height: 1.55;\n      margin: 0 0 16px 0;\n    }\n\n    .price {\n      text-align: center;\n      color: var(--text-dark);\n      font-weight: 600;\n      font-size: 48px;\n      line-height: 1.15;\n      margin: 0 0 20px 0;\n    }\n\n    .urgency {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      gap: 10px;\n      margin: 0 0 16px 0;\n    }\n    .urgency .clock {\n      width: 24px; height: 24px;\n      flex-shrink: 0;\n      background-color: var(--brand-primary);\n      -webkit-mask: url(\"https://api.segmently.ai/assets/onboardings/IFLK5ND2oF4bL89nekmO/images/en-US_1786183331596_origin-copy/origin.jpg\") center / contain no-repeat;\n      mask: url(\"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/images/20260721164618_clock/origin.webp\") center / contain no-repeat;\n    }\n    .urgency span {\n      color: var(--text-note);\n      font-weight: 600;\n      font-size: 17px;\n      line-height: 1.5;\n    }\n\n    .cta {\n      width: 100%;\n      max-width: 340px;\n      min-height: 62px;\n      padding: 8px 24px;\n      margin: 0;\n      border: none;\n      border-radius: 9999px;\n      background: var(--brand-primary);\n      color: #FFFFFF;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n      gap: 2px;\n      cursor: pointer;\n      outline: none;\n      appearance: none;\n      -webkit-appearance: none;\n      -webkit-tap-highlight-color: transparent;\n      font-family: inherit;\n      box-shadow: 0 6px 16px rgba(245, 50, 109, 0.35);\n    }\n    .cta:disabled { opacity: 0.5; cursor: not-allowed; }\n    .cta:not(:disabled):active { opacity: 0.9; }\n    .cta-main { font-weight: 600; font-size: 16px; line-height: 24px; }\n    .cta-sub { font-weight: 300; font-size: 12px; line-height: 18px; }\n    .value-note {\n      text-align: center;\n      color: var(--text-muted);\n      font-weight: 500;\n      font-size: 13px;\n      line-height: 1.4;\n      margin: -12px 0 16px 0;\n    }\n    .cta-decline {\n      width: 100%;\n      max-width: 340px;\n      min-height: 54px;\n      margin-top: 12px;\n      padding: 8px 24px;\n      border: 1.5px solid #D9CFCC;\n      border-radius: 9999px;\n      background: #FFFFFF;\n      color: var(--text-dark);\n      font-family: inherit;\n      font-weight: 600;\n      font-size: 15px;\n      line-height: 22px;\n      cursor: pointer;\n      -webkit-appearance: none;\n      appearance: none;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .cta-decline:active { background: #F4EEEB; }\n  </style>\n</head>\n<body>\n  <div class=\"screen\" data-testid=\"screen-root\">\n    <div class=\"hero\">\n      <img id=\"hero_img\" alt=\"\" aria-hidden=\"true\" src=\"https://api.segmently.ai/assets/onboardings/IFLK5ND2oF4bL89nekmO/images/en-US_1786183331596_origin-copy/origin.jpg\">\n    </div>\n\n    <div class=\"panel\">\n      <div class=\"badge\" id=\"badge_label\">One-time offer</div>\n      <h1 class=\"heading\" id=\"headline_label\">Never renew again</h1>\n      <p class=\"subtitle\" id=\"subtitle_label\">Keep everything you just unlocked, plus bonuses: planner, formulas, calendars, guides and community. No subscription, no renewals.</p>\n      <div class=\"price\" id=\"price_label\" data-testid=\"price-label\">$199</div>\n      <p class=\"value-note\" id=\"value_note\">One payment. Yours forever.</p>\n\n      <div class=\"urgency\">\n        <div class=\"clock\" aria-hidden=\"true\"></div>\n        <span id=\"urgency_label\">This offer is gone once you leave.</span>\n      </div>\n\n      <button class=\"cta\" id=\"cta_button\" data-testid=\"cta-button\">\n        <span class=\"cta-main\" id=\"cta_label\">Upgrade to lifetime</span>\n        <span class=\"cta-sub\" id=\"cta_sublabel\">One-time payment</span>\n      </button>\n\n      <button class=\"cta-decline\" id=\"decline_button\" data-testid=\"decline-button\" type=\"button\">No thanks, I’ll keep renewing</button>\n    </div>\n  </div>\n\n  <script>\n    var state = { selectedId: null, sdk: null, products: [] };\n\n    function readText(sdk, label, fallback) {\n      try {\n        var s = sdk.getChildSectionText(label);\n        return (s && s.title) ? s.title : fallback;\n      } catch (e) { return fallback; }\n    }\n    function readMediaUrl(sdk, label) {\n      try {\n        var m = sdk.getChildSectionMedia(label);\n        return (m && m.url) ? m.url : null;\n      } catch (e) { return null; }\n    }\n\n    function parsePriceFromDisplay(s) {\n      if (!s) return NaN;\n      var m = String(s).replace(/,/g, '').match(/-?\\d+(?:\\.\\d+)?/);\n      return m ? parseFloat(m[0]) : NaN;\n    }\n    function fmtMoney(amount, currency) {\n      if (!Number.isFinite(amount)) return '';\n      var isWhole = Math.abs(amount - Math.round(amount)) < 0.005;\n      var digits = isWhole ? 0 : 2;\n      try {\n        return new Intl.NumberFormat('en-US', {\n          style: 'currency',\n          currency: (currency || 'USD').toUpperCase(),\n          minimumFractionDigits: digits,\n          maximumFractionDigits: digits\n        }).format(amount);\n      } catch (e) { return '$' + (isWhole ? Math.round(amount) : amount.toFixed(2)); }\n    }\n\n    // Resolve the display price of the (single) lifetime product from the SDK.\n    // Falls back to the static child-section copy when no price is exposed.\n    function resolvePriceText(sdk, product, productId) {\n      var candidates = [];\n      try { candidates.push(sdk && sdk.getProductPrice && sdk.getProductPrice(productId)); } catch (e) { /* noop */ }\n      if (product) {\n        candidates.push(product.price, product.defaultPrice, product.currentPrice);\n        if (Array.isArray(product.prices) && product.prices.length) candidates.push(product.prices[0]);\n      }\n      for (var i = 0; i < candidates.length; i += 1) {\n        var c = candidates[i];\n        if (!c) continue;\n        // displayPrice is formatted by the platform .  most reliable source.\n        var dollars = parsePriceFromDisplay(c.displayPrice);\n        // amount is in currency units; unitAmount is Stripe-style cents.\n        if (!Number.isFinite(dollars) && typeof c.amount === 'number') dollars = c.amount;\n        if (!Number.isFinite(dollars) && typeof c.unitAmount === 'number') dollars = c.unitAmount / 100;\n        if (Number.isFinite(dollars)) return fmtMoney(dollars, c.currency);\n      }\n      return null;\n    }\n\n    function applyContent(sdk) {\n      var setText = function (id, label) {\n        var el = document.getElementById(id);\n        if (!el) return;\n        el.textContent = readText(sdk, label, el.textContent);\n      };\n      // Copy is hardcoded in the HTML (new upsell copy); data sources left inert\n      // so stale editor content doesn't override it. Only the price stays dynamic.\n      var heroUrl = readMediaUrl(sdk, 'hero_media');\n      if (heroUrl) document.getElementById('hero_img').src = heroUrl;\n    }\n\n    function applyLivePrice(sdk) {\n      var priceEl = document.getElementById('price_label');\n      var product = state.products[0];\n      var pid = product ? (product.productId || product.id) : null;\n      var priceText = product ? resolvePriceText(sdk, product, pid) : null;\n      if (priceText) priceEl.textContent = priceText;\n    }\n\n    function bindCta(sdk) {\n      var btn = document.getElementById('cta_button');\n      var inFlight = false;\n      btn.addEventListener('click', function (e) {\n        e.preventDefault(); e.stopPropagation();\n        if (inFlight) return;\n        inFlight = true;\n        btn.disabled = true;\n        var reset = function () {\n          inFlight = false;\n          btn.disabled = false;\n        };\n        // Embedded checkout: purchase inside the funnel, advance on success.\n        try {\n          if (!state.selectedId) { reset(); return; }\n          sdk.selectProduct(state.selectedId);\n          sdk.purchaseProduct(state.selectedId, {\n            onSuccess: function () {\n              try { sdk.navigateNext(); }\n              catch (err) { console.error('navigateNext failed', err); reset(); }\n            },\n            onCancel: function () { reset(); },\n            onError: function (err) {\n              console.error('purchase failed', err);\n              reset();\n            }\n          });\n        } catch (err) {\n          console.error('purchaseProduct threw', err);\n          reset();\n        }\n      });\n    }\n\n    function bindDecline(sdk) {\n      var btn = document.getElementById('decline_button');\n      if (!btn) return;\n      var done = false;\n      btn.addEventListener('click', function (e) {\n        e.preventDefault(); e.stopPropagation();\n        if (done) return;\n        done = true;\n        // Skip the upsell and continue the funnel (no purchase).\n        try { sdk.navigateNext(); }\n        catch (err) { console.error('navigateNext failed', err); done = false; }\n      });\n    }\n\n    function loadProducts(sdk) {\n      try {\n        var products = sdk && sdk.getProducts && sdk.getProducts();\n        if (Array.isArray(products) && products.length) return products;\n      } catch (e) { /* noop */ }\n      // Local-preview fallback (no SDK). Real runtime IDs are resolved by the platform.\n      return [{ productId: 'preview-lifetime', name: 'Lifetime' }];\n    }\n\n    function init(sdk) {\n      state.sdk = sdk;\n      applyContent(sdk);\n      state.products = loadProducts(sdk);\n      var first = state.products[0];\n      state.selectedId = first ? (first.productId || first.id) : null;\n      try { if (state.selectedId) sdk.selectProduct(state.selectedId); } catch (e) { /* noop */ }\n      applyLivePrice(sdk);\n      bindCta(sdk);\n      bindDecline(sdk);\n    }\n\n    if (window.segmentlySDK && segmentlySDK.ready) {\n      segmentlySDK.ready().then(init).catch(function (e) { console.error('SDK ready failed', e); });\n    } else {\n      console.warn('Segmently SDK not available; running standalone preview.');\n      state.products = loadProducts(null);\n    }\n  </script>\n</body>\n</html>\n","callback":{"action":{"edges":[{"nextScreenId":"3e4839ee-e65c-4ed3-92a6-5b7e5b898921","transitionKind":"push","conditions":[]}],"kind":"advance"}}}},"screenType":"WebEmbed"},"bts-editorial-back-to-style":{"position":{"x":7168,"y":-480},"updatedAt":"2026-08-08T10:40:02.857Z","name":"Editorial - Back to Style","id":"bts-editorial-back-to-style","aiContent":{},"screenType":"WebEmbed","aiMeta":{"blockRole":"Editorial - Back to Style","source":"segmently-cli","iterationCount":1,"generationModel":"manual-cli","generationTimestamp":"2026-08-08T10:26:02.341Z","blockType":"WebEmbed"},"content":{"offlineFirst":false,"animated":true,"embed":{"html":"<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Back to School Season Is Here. But What About You? | Outfit Formulas</title>\n<link href=\"https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;0,9..40,800;0,9..40,900;1,9..40,400&family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap\" rel=\"stylesheet\">\n<style>\n  :root {\n    --bg:         #F7F5F2;\n    --bg-card:    #EFECE8;\n    --white:      #FFFFFF;\n    --black:      #111110;\n    --near-black: #1A1917;\n    --pink:       #EF3070;\n    --pink-dark:  #CC1F55;\n    --pink-light: #F9608E;\n    --pink-pale:  #FEE8EF;\n    --gray-mid:   #6B6760;\n    --gray-light: #C4C1BC;\n    --gray-rule:  #E2DED9;\n    --text:       #1A1917;\n    --text-soft:  #4A4742;\n    --text-muted: #8A8782;\n  }\n\n  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n\n  html { scroll-behavior: smooth; }\n\n  body {\n    background: var(--white);\n    color: var(--text);\n    font-family: 'Cormorant Garamond', Georgia, serif;\n    font-size: 21px;\n    line-height: 1.8;\n    font-weight: 400;\n    -webkit-font-smoothing: antialiased;\n  }\n\n  /* ── MASTHEAD ── */\n  .masthead {\n    background: var(--black);\n    padding: 22px 24px 0;\n    text-align: center;\n  }\n\n  .masthead-eyebrow {\n    font-family: 'DM Sans', sans-serif;\n    font-size: 9px;\n    font-weight: 500;\n    letter-spacing: 3px;\n    text-transform: uppercase;\n    color: var(--pink);\n    display: block;\n    margin-bottom: 4px;\n  }\n\n  .masthead-logo {\n    font-family: 'DM Sans', sans-serif;\n    font-size: 26px;\n    font-weight: 900;\n    letter-spacing: 6px;\n    text-transform: uppercase;\n    color: var(--white);\n    display: block;\n    line-height: 1;\n    text-decoration: none;\n  }\n\n  .masthead-rule {\n    width: 100%;\n    height: 1px;\n    background: var(--gray-rule);\n    opacity: 0.15;\n    margin-top: 22px;\n  }\n\n  /* ── HERO ── */\n  .hero {\n    background: var(--white);\n    padding: 64px 40px 56px;\n    max-width: 820px;\n    margin: 0 auto;\n  }\n\n  .hero-eyebrow {\n    font-family: 'DM Sans', sans-serif;\n    font-size: 11px;\n    font-weight: 700;\n    letter-spacing: 2.5px;\n    text-transform: uppercase;\n    color: var(--pink);\n    display: block;\n    margin-bottom: 20px;\n  }\n\n  .hero h1 {\n    font-family: 'DM Sans', sans-serif;\n    font-size: clamp(36px, 6vw, 58px);\n    font-weight: 900;\n    line-height: 1.05;\n    color: var(--black);\n    margin-bottom: 10px;\n    letter-spacing: -1.5px;\n  }\n\n  .hero h1 .pink {\n    color: var(--pink);\n  }\n\n  .hero-deck {\n    font-family: 'Cormorant Garamond', Georgia, serif;\n    font-size: 22px;\n    font-weight: 400;\n    font-style: italic;\n    color: var(--text-soft);\n    line-height: 1.6;\n    margin-top: 20px;\n    max-width: 560px;\n  }\n\n  /* ── AUTHOR BAR ── */\n  .author-bar {\n    max-width: 820px;\n    margin: 0 auto;\n    background: var(--white);\n    border-top: 1px solid var(--gray-rule);\n    border-bottom: 1px solid var(--gray-rule);\n    padding: 18px 40px;\n    display: flex;\n    align-items: center;\n    gap: 14px;\n  }\n\n  .author-photo {\n    width: 46px;\n    height: 46px;\n    border-radius: 50%;\n    object-fit: cover;\n    object-position: center top;\n    flex-shrink: 0;\n    background: var(--bg-card);\n    border: 2px solid var(--gray-rule);\n  }\n\n  .author-info {\n    font-size: 13px;\n    line-height: 1.4;\n  }\n\n  .author-name {\n    font-weight: 800;\n    color: var(--black);\n    display: block;\n    font-family: 'DM Sans', sans-serif;\n  }\n\n  .author-title {\n    color: var(--text-muted);\n    font-family: 'Cormorant Garamond', Georgia, serif;\n    font-size: 16px;\n    font-weight: 400;\n  }\n\n  /* ── ARTICLE BODY ── */\n  .article-body {\n    max-width: 680px;\n    margin: 0 auto;\n    padding: 52px 40px 80px;\n  }\n\n  p {\n    margin-bottom: 24px;\n    color: var(--text);\n    font-family: 'Cormorant Garamond', Georgia, serif;\n    font-weight: 400;\n    font-size: 21px;\n  }\n\n  /* ── H2 ── */\n  h2 {\n    font-family: 'DM Sans', sans-serif;\n    font-size: clamp(24px, 3.5vw, 32px);\n    font-weight: 900;\n    color: var(--black);\n    margin: 52px 0 18px;\n    line-height: 1.1;\n    letter-spacing: -0.5px;\n  }\n\n  /* ── PULL QUOTE ── */\n  .pull-quote {\n    background: var(--pink);\n    border-radius: 16px;\n    padding: 36px 40px;\n    margin: 40px 0;\n    position: relative;\n  }\n\n  .pull-quote p {\n    font-family: 'DM Sans', sans-serif;\n    font-size: clamp(20px, 2.8vw, 26px);\n    font-weight: 800;\n    line-height: 1.3;\n    color: var(--white);\n    margin-bottom: 20px;\n    letter-spacing: -0.3px;\n  }\n\n  .pull-quote p:last-child { margin-bottom: 0; }\n\n  .pull-quote p .pink { color: var(--white); }\n\n  .pull-quote-cite {\n    display: inline-block;\n    background: var(--white);\n    color: var(--black);\n    font-family: 'DM Sans', sans-serif;\n    font-size: 11px;\n    font-weight: 700;\n    letter-spacing: 1px;\n    text-transform: uppercase;\n    font-style: normal;\n    padding: 6px 14px;\n    border-radius: 100px;\n  }\n\n  /* ── INSET BOX ── */\n  .inset {\n    background: var(--pink-pale);\n    border-radius: 16px;\n    padding: 32px 36px;\n    margin: 36px 0;\n  }\n\n  .inset-label {\n    display: inline-block;\n    font-family: 'DM Sans', sans-serif;\n    font-size: 12px;\n    font-weight: 700;\n    letter-spacing: 1.5px;\n    text-transform: uppercase;\n    color: var(--pink);\n    margin-bottom: 14px;\n  }\n\n  .inset p {\n    font-family: 'Cormorant Garamond', Georgia, serif;\n    font-size: 21px;\n    color: var(--text-soft);\n    margin-bottom: 0;\n  }\n\n  .inset p + p { margin-top: 14px; margin-bottom: 0; }\n\n  /* ── OUTFIT FORMULA EXAMPLE ── */\n  .formula-box {\n    background: var(--bg-card);\n    border-radius: 16px;\n    padding: 32px 36px;\n    margin: 36px 0;\n    border-left: 4px solid var(--pink);\n  }\n\n  .formula-label {\n    display: inline-block;\n    font-family: 'DM Sans', sans-serif;\n    font-size: 12px;\n    font-weight: 700;\n    letter-spacing: 1.5px;\n    text-transform: uppercase;\n    color: var(--pink);\n    margin-bottom: 16px;\n  }\n\n  .formula-pieces {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px;\n    margin-bottom: 16px;\n  }\n\n  .formula-piece {\n    background: var(--white);\n    border: 1.5px solid var(--gray-rule);\n    border-radius: 100px;\n    padding: 6px 18px;\n    font-family: 'DM Sans', sans-serif;\n    font-size: 13px;\n    font-weight: 600;\n    color: var(--text);\n  }\n\n  .formula-piece.pink {\n    background: var(--pink);\n    border-color: var(--pink);\n    color: var(--white);\n  }\n\n  .formula-note {\n    font-family: 'Cormorant Garamond', Georgia, serif;\n    font-size: 19px;\n    font-style: italic;\n    color: var(--text-soft);\n    margin-bottom: 0;\n  }\n\n  /* ── STEPS LIST ── */\n  .steps-box {\n    background: var(--bg-card);\n    border-radius: 16px;\n    padding: 32px 36px;\n    margin: 36px 0;\n    border-left: 4px solid var(--pink);\n  }\n\n  .steps-label {\n    display: inline-block;\n    font-family: 'DM Sans', sans-serif;\n    font-size: 12px;\n    font-weight: 700;\n    letter-spacing: 1.5px;\n    text-transform: uppercase;\n    color: var(--pink);\n    margin-bottom: 20px;\n  }\n\n  .steps-list {\n    list-style: none;\n    display: flex;\n    flex-direction: column;\n    gap: 18px;\n  }\n\n  .steps-list li {\n    display: flex;\n    align-items: flex-start;\n    gap: 16px;\n    font-family: 'Cormorant Garamond', Georgia, serif;\n    font-size: 20px;\n    color: var(--text);\n    line-height: 1.5;\n  }\n\n  .step-num {\n    flex-shrink: 0;\n    width: 30px;\n    height: 30px;\n    border-radius: 50%;\n    background: var(--pink);\n    color: var(--white);\n    font-family: 'DM Sans', sans-serif;\n    font-size: 14px;\n    font-weight: 800;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    margin-top: 2px;\n  }\n\n  /* ── TESTIMONIALS ── */\n  .testimonials {\n    margin: 32px 0;\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n  }\n\n  .testimonial-item {\n    background: var(--pink-pale);\n    border-radius: 12px;\n    padding: 20px 24px;\n    display: flex;\n    gap: 14px;\n    align-items: flex-start;\n  }\n\n  .t-mark {\n    font-family: 'DM Sans', sans-serif;\n    font-size: 32px;\n    font-weight: 900;\n    color: var(--pink);\n    line-height: 0.9;\n    flex-shrink: 0;\n    margin-top: 4px;\n  }\n\n  .testimonial-item p {\n    font-family: 'Cormorant Garamond', Georgia, serif;\n    font-size: 20px;\n    font-weight: 500;\n    color: var(--text-soft);\n    margin-bottom: 0;\n    font-style: italic;\n    line-height: 1.55;\n  }\n\n  /* ── SCENE DIVIDER ── */\n  .divider {\n    display: flex;\n    align-items: center;\n    gap: 14px;\n    margin: 48px 0;\n  }\n\n  .divider-line {\n    flex: 1;\n    height: 1px;\n    background: var(--gray-rule);\n  }\n\n  .divider-dot {\n    width: 8px;\n    height: 8px;\n    border-radius: 50%;\n    background: var(--pink);\n    flex-shrink: 0;\n  }\n\n  /* ── CTA BLOCK ── */\n  .cta-block {\n    background: var(--black);\n    border-radius: 20px;\n    padding: 52px 48px;\n    text-align: center;\n    margin: 60px 0 0;\n    position: relative;\n    overflow: hidden;\n  }\n\n  .cta-eyebrow {\n    font-family: 'DM Sans', sans-serif;\n    font-size: 11px;\n    font-weight: 700;\n    letter-spacing: 2.5px;\n    text-transform: uppercase;\n    color: var(--pink-light);\n    display: block;\n    margin-bottom: 14px;\n    position: relative;\n  }\n\n  .cta-block h3 {\n    font-family: 'DM Sans', sans-serif;\n    font-size: clamp(28px, 4vw, 40px);\n    font-weight: 900;\n    color: var(--white);\n    line-height: 1.1;\n    margin-bottom: 16px;\n    letter-spacing: -1px;\n    position: relative;\n  }\n\n  .cta-block h3 .pink { color: var(--pink-light); }\n\n  .cta-block > p {\n    font-family: 'DM Sans', sans-serif;\n    font-size: 16px;\n    font-weight: 500;\n    color: rgba(255,255,255,0.85);\n    margin-bottom: 32px;\n    line-height: 1.65;\n    max-width: 420px;\n    margin-left: auto;\n    margin-right: auto;\n    position: relative;\n  }\n\n  .cta-btn {\n    display: inline-block;\n    background: var(--pink);\n    color: var(--white);\n    text-decoration: none;\n    font-family: 'DM Sans', sans-serif;\n    font-size: 13px;\n    font-weight: 800;\n    letter-spacing: 1.5px;\n    text-transform: uppercase;\n    padding: 17px 44px;\n    border-radius: 100px;\n    transition: background 0.2s, transform 0.15s;\n    position: relative;\n  }\n\n  .cta-btn:hover {\n    background: var(--pink-dark);\n    transform: translateY(-1px);\n  }\n\n  .cta-guarantee {\n    display: block;\n    font-family: 'DM Sans', sans-serif;\n    font-size: 12px;\n    font-weight: 600;\n    color: rgba(255,255,255,0.7);\n    margin-top: 16px;\n    letter-spacing: 0.5px;\n    position: relative;\n  }\n\n  /* ── BIO ── */\n  .bio {\n    background: var(--bg);\n    border-radius: 16px;\n    padding: 28px 32px;\n    margin-top: 48px;\n    display: flex;\n    align-items: flex-start;\n    gap: 20px;\n  }\n\n  .bio img {\n    width: 68px;\n    height: 68px;\n    border-radius: 50%;\n    object-fit: cover;\n    object-position: center top;\n    flex-shrink: 0;\n    background: var(--bg-card);\n    border: 2px solid var(--gray-rule);\n  }\n\n  .bio-text {\n    font-family: 'Cormorant Garamond', Georgia, serif;\n    font-size: 18px;\n    color: var(--text-soft);\n    line-height: 1.7;\n  }\n\n  .bio-name {\n    display: block;\n    font-family: 'DM Sans', sans-serif;\n    font-weight: 900;\n    color: var(--black);\n    font-size: 15px;\n    letter-spacing: -0.2px;\n    margin-bottom: 6px;\n  }\n\n  /* ── FOOTER ── */\n  .footer {\n    background: var(--white);\n    border-top: 1px solid var(--gray-rule);\n    padding: 28px 40px;\n    margin-top: 80px;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    flex-wrap: wrap;\n    gap: 12px;\n  }\n\n  .footer-logo {\n    font-family: 'DM Sans', sans-serif;\n    font-weight: 900;\n    font-size: 18px;\n    color: var(--black);\n    letter-spacing: -0.5px;\n    text-transform: lowercase;\n    text-decoration: none;\n  }\n\n  .footer-text {\n    font-family: 'DM Sans', sans-serif;\n    font-size: 11px;\n    font-weight: 600;\n    letter-spacing: 0.5px;\n    color: var(--text-muted);\n    text-transform: uppercase;\n  }\n\n  /* ── RESPONSIVE ── */\n  @media (max-width: 640px) {\n    .hero { padding: 44px 20px 36px; }\n    .author-bar { padding: 16px 20px; }\n    .article-body { padding: 40px 20px 64px; }\n    .cta-block { padding: 40px 24px; border-radius: 16px; }\n    .pull-quote { padding: 28px 24px; }\n    .bio { flex-direction: column; padding: 24px 20px; }\n    .footer { padding: 20px; flex-direction: column; align-items: flex-start; }\n    .formula-box, .steps-box { padding: 24px 20px; }\n  }\n\n  /* Formula image section */\n  .formula-image-wrap {\n    margin: 36px 0;\n    text-align: center;\n  }\n  .formula-image-wrap img {\n    width: 100%;\n    max-width: 480px;\n    border-radius: 4px;\n    display: block;\n    margin: 0 auto;\n  }\n  .formula-image-caption {\n    font-family: 'DM Sans', sans-serif;\n    font-size: 13px;\n    color: #888;\n    text-align: center;\n    margin-top: 10px;\n    letter-spacing: 0.04em;\n  }\n\n  /* Community photos section */\n  .community-section {\n    margin: 48px 0 40px;\n  }\n  .community-label {\n    font-family: 'DM Sans', sans-serif;\n    font-size: 11px;\n    font-weight: 600;\n    letter-spacing: 0.12em;\n    text-transform: uppercase;\n    color: #c9a0a0;\n    margin-bottom: 14px;\n    display: block;\n  }\n  .community-heading {\n    font-family: 'Cormorant Garamond', serif;\n    font-size: 22px;\n    font-style: italic;\n    color: #1a1a1a;\n    margin: 0 0 20px;\n    line-height: 1.3;\n  }\n  .community-grid {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 12px;\n    margin-bottom: 14px;\n  }\n  .community-grid img {\n    width: 100%;\n    aspect-ratio: 2/3;\n    object-fit: cover;\n    object-position: top;\n    border-radius: 3px;\n    display: block;\n  }\n  .community-note {\n    font-family: 'DM Sans', sans-serif;\n    font-size: 13px;\n    color: #777;\n    text-align: center;\n    font-style: italic;\n    line-height: 1.5;\n  }\n  @media (max-width: 480px) {\n    .community-grid { gap: 8px; }\n  }\n\n\n  /* App mockup */\n  .app-mockup-wrap {\n    margin: 32px auto 8px;\n    text-align: center;\n    max-width: 403px;\n  }\n  .app-mockup-wrap img {\n    width: 100%;\n    display: block;\n    border-radius: 4px;\n  }\n  .app-mockup-caption {\n    font-family: 'DM Sans', sans-serif;\n    font-size: 12px;\n    color: #999;\n    text-align: center;\n    margin-top: 8px;\n    letter-spacing: 0.04em;\n    font-style: italic;\n  }\n\n\n  /* embed guards */\n  html, body { overflow-x: hidden; max-width: 100%; }\n  img { max-width: 100%; height: auto; }\n  /* Force intrinsic aspect on the full-width content images so neither an\n     old-Safari height presentational-hint nor any platform-injected CSS can\n     stretch them. Avatars are intentionally excluded (they keep fixed sizes). */\n  .formula-image-wrap img, .app-mockup-wrap img, .community-grid img,\n  .inline-figure img, .figure img, figure img { height: auto !important; }\n</style>\n</head>\n<body>\n\n<!-- MASTHEAD -->\n<header class=\"masthead\">\n  \n  <a class=\"masthead-logo\" role=\"text\" aria-disabled=\"true\">Outfit Formulas</a>\n  <div class=\"masthead-rule\"></div>\n</header>\n\n<!-- HERO -->\n<div class=\"hero\">\n  <span class=\"hero-eyebrow\">Back to Style</span>\n  <h1>Back to school<br>season is here.<br><span class=\"pink\">But what about<br>you?</span></h1>\n  <p class=\"hero-deck\">You spent weeks getting everyone else ready for September. This fall, it's your turn.</p>\n</div>\n\n<!-- AUTHOR -->\n<div class=\"author-bar\">\n  <img class=\"author-photo\"\n       \n       alt=\"Alison Lumbatis\" src=\"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/bts-editorials/20260808102003_author-alison/origin.webp\" width=\"400\" height=\"400\" loading=\"lazy\" decoding=\"async\">\n  <div class=\"author-info\">\n    <span class=\"author-name\">Alison Lumbatis</span>\n    <span class=\"author-title\">Bestselling author &amp; personal style coach · Founder of Outfit Formulas</span>\n  </div>\n</div>\n\n<!-- BODY -->\n<div class=\"article-body\">\n\n  <p>Every August, you do it.</p>\n\n  <p>You spend weeks getting everyone else ready. New shoes for the kids. New supplies. New schedules printed and posted and color-coded. You coordinate drop-offs and pick-ups and after-school activities, and you do it all without being asked because that's just what you do.</p>\n\n  <p>And then September arrives and you look in your closet and realize that everything is exactly the same as it was in June.</p>\n\n  <div class=\"pull-quote\">\n    <p>You prepared everyone for a new year. Except yourself.</p>\n  </div>\n\n  <h2>The getting-dressed problem nobody talks about.</h2>\n\n  <p>For most women, getting dressed in the morning is a low-grade daily stress that nobody counts as stress.</p>\n\n  <p>You open the closet. Nothing jumps out. You try on three things, hate two of them, wear the one that's fine but not great, and get on with your day feeling slightly off before it even starts.</p>\n\n  <div class=\"inset\">\n    <span class=\"inset-label\">Do the math</span>\n    <p>Multiply that by 260 workdays a year and you've spent an enormous amount of mental energy on something that should take five minutes.</p>\n  </div>\n\n  <p>This is not a small problem. It's a daily drain on the mental bandwidth you need for everything else.</p>\n\n  <div class=\"divider\">\n    <div class=\"divider-line\"></div>\n    <div class=\"divider-dot\"></div>\n    <div class=\"divider-line\"></div>\n  </div>\n\n  <h2>The meal planning approach to your closet.</h2>\n\n  <p>Think about how meal planning changed the way you eat.</p>\n\n  <p>Instead of staring into the fridge at 6pm wondering what to make, you have a plan. You know what's coming, you have what you need, and dinner gets made without the daily negotiation with yourself.</p>\n\n  <p>Your wardrobe can work the same way.</p>\n\n  <p>Outfit Formulas gives you a weekly outfit plan, complete outfits, already styled, waiting in the app every morning. You check off what you already own. You fill in the gaps at your favorite stores. You get dressed.</p>\n\n  <div class=\"formula-image-wrap\">\n    <img alt=\"One of this season's outfit formulas inside the Outfit Formulas app\" / src=\"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/bts-editorials/20260808102004_outfit-formula/origin.webp\" width=\"820\" height=\"1010\" loading=\"eager\" fetchpriority=\"high\" decoding=\"async\">\n    <p class=\"formula-image-caption\">One of hundreds of formulas inside the app. Recreate it with what you already own.</p>\n  </div>\n\n  <div class=\"inset\">\n    <span class=\"inset-label\">What changes</span>\n    <p>No more standing in front of the closet.</p>\n    <p>No more \"I have nothing to wear\" when you own a full wardrobe.</p>\n    <p>No more arriving places feeling like you got dressed in the dark.</p>\n  </div>\n\n  <h2>What Back to Style looks like this fall.</h2>\n\n  <p>We've built a complete fall capsule wardrobe inside Outfit Formulas. Outfits that work for real life, the classroom, the office, the errands, the dinner out, and the days you just want to feel put together without trying too hard.</p>\n\n  <div class=\"community-section\">\n    <span class=\"community-label\">From the Outfit Formulas community</span>\n    <p class=\"community-heading\">Real women. Real closets. Same formula.</p>\n    <div class=\"community-grid\">\n      <img alt=\"Community member styling the formula with her own wardrobe\" / src=\"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/bts-editorials/20260808102006_community-1/origin.webp\" width=\"820\" height=\"1021\" loading=\"lazy\" decoding=\"async\">\n      <img alt=\"Community member styling the formula with her own wardrobe\" / src=\"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/bts-editorials/20260808102007_community-2/origin.webp\" width=\"760\" height=\"944\" loading=\"lazy\" decoding=\"async\">\n      <img alt=\"Community member styling the formula with her own wardrobe\" / src=\"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/bts-editorials/20260808102008_community-3/origin.webp\" width=\"760\" height=\"948\" loading=\"lazy\" decoding=\"async\">\n    </div>\n    <p class=\"community-note\">Different women, different wardrobes, same fall formula. That's the point.</p>\n  </div>\n\n  <div class=\"steps-box\">\n    <span class=\"steps-label\">The fall formula</span>\n    <ol class=\"steps-list\">\n      <li><span class=\"step-num\">1</span>Open the app and see your outfit for today.</li>\n      <li><span class=\"step-num\">2</span>Check off what you already own (most women own 80% of what they need).</li>\n      <li><span class=\"step-num\">3</span>Fill in the gaps purposefully, only what you actually need.</li>\n      <li><span class=\"step-num\">4</span>Get dressed in five minutes and move on with your day.</li>\n    </ol>\n  </div>\n\n  <div class=\"pull-quote\">\n    <p>That's it. We handle the thinking. You handle the living.</p>\n  </div>\n\n  <div class=\"app-mockup-wrap\">\n    <img alt=\"The Outfit Formulas app showing a weekly outfit plan\" / src=\"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/bts-editorials/20260808102010_app-weekly-plan/origin.webp\" width=\"820\" height=\"1025\" loading=\"lazy\" decoding=\"async\">\n    <p class=\"app-mockup-caption\">Your weekly outfit plan, built right into the app.</p>\n  </div>\n\n  <h2>What women say when they finally get themselves ready too.</h2>\n\n  <div class=\"testimonials\">\n    <div class=\"testimonial-item\">\n      <span class=\"t-mark\">\"</span>\n      <p>I used to spend every September getting everyone else ready and never think about myself. This is the first fall I didn't skip that part.</p>\n    </div>\n    <div class=\"testimonial-item\">\n      <span class=\"t-mark\">\"</span>\n      <p>Back to school used to mean my own wardrobe fell apart from the stress of everything else. Now it doesn't.</p>\n    </div>\n    <div class=\"testimonial-item\">\n      <span class=\"t-mark\">\"</span>\n      <p>Five minutes and I'm dressed and it actually looks right. That used to take me twenty and still feel off.</p>\n    </div>\n  </div>\n\n  <h2>This fall, get yourself ready too.</h2>\n\n  <p>You deserve to walk into September feeling like you. Not like the version of you that's been wearing the same rotation since June.</p>\n\n  <p>A fresh start doesn't have to mean a shopping spree. It means a plan. And we've already built it for you.</p>\n\n  <!-- CTA -->\n  <div class=\"cta-block\">\n    <span class=\"cta-eyebrow\">Back to Style</span>\n    <h3>You got everyone else ready.<br><span class=\"pink\">Now get yourself ready too.</span></h3>\n    <p>Try the full fall capsule inside Outfit Formulas for 30 days for just $1. A complete outfit plan, already styled, waiting in the app every morning.</p>\n    <a class=\"cta-btn\" href=\"https://onboarding.outfitformulas.com/welcome\">Start Your Fall Capsule</a>\n    <span class=\"cta-guarantee\">30-day trial · Cancel anytime · No questions asked</span>\n  </div>\n\n  <!-- BIO -->\n  <div class=\"bio\">\n    <img alt=\"Alison Lumbatis\" src=\"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/bts-editorials/20260808102003_author-alison/origin.webp\" width=\"400\" height=\"400\" loading=\"lazy\" decoding=\"async\">\n    <div class=\"bio-text\">\n      <span class=\"bio-name\">Alison Lumbatis</span>\n      Alison Lumbatis is a bestselling author, personal style coach, and the founder and CEO of Outfit Formulas. An engineer by training, she built a practical wardrobe strategy system and has helped over a hundred thousand women stop over-consuming and start using the clothes they already own.\n    </div>\n  </div>\n\n</div><!-- /article-body -->\n\n<footer class=\"footer\">\n  <a class=\"footer-logo\" role=\"text\" aria-disabled=\"true\">outfit formulas</a>\n  <span class=\"footer-text\">&copy; Outfit Formulas</span>\n</footer>\n\n\n<script>\n  /* Wire funnel CTA(s) -> advance to next screen. Any onboarding.outfitformulas.com\n     link becomes a navigateNext() trigger; href stays as local-preview fallback. */\n  (function () {\n    function wire() {\n      document.querySelectorAll('a[href*=\"onboarding.outfitformulas.com\"]').forEach(function (a) {\n        a.setAttribute('role', 'button');\n        a.addEventListener('click', function (e) {\n          e.preventDefault();\n          if (window.segmentlySDK) { window.segmentlySDK.navigateNext(); }\n        });\n      });\n    }\n    if (window.segmentlySDK && segmentlySDK.ready) {\n      segmentlySDK.ready().then(wire).catch(function (e) { console.error('SDK ready failed', e); });\n    } else {\n      console.warn('Segmently SDK unavailable (local preview) - CTAs keep href fallback.');\n    }\n  })();\n</script>\n</body>\n</html>\n","callback":{"action":{"kind":"advance","edges":[{"transitionKind":"push","nextScreenId":"3dd1ebc8-0550-4cdf-bcdc-3970ab859198","conditions":[]}]}},"isIframe":true},"canvas":{"background":{"content":{"color":"#1a1a1a"},"kind":"solid"}}},"tags":[],"createdAt":"2026-08-08T10:26:02.341Z","order":6},"cb294cac-75d6-4276-934c-1e28c2865b10":{"screenType":"WebEmbed","position":{"x":9152,"y":1216},"name":"has-subscription","content":{"header":{},"canvas":{"background":{"kind":"solid","content":{"color":"#f8fbfb"}},"insets":{"end":16,"start":16,"top":0,"bottom":0}},"offlineFirst":true,"systemPrompt":null,"actionBar":{},"countdown":null,"animated":true,"embed":{"callback":{"action":{"kind":"advance","edges":[]}},"html":"<!DOCTYPE html>\n<html>\n\n<head>\n  <meta charset='UTF-8'>\n  <title>Your account is ready</title>\n  <!-- OO-PORT-MESSAGE-HANDLER-START -->\n  <!-- DO NOT REMOVE THIS CODE -->\n  <script>\n  // Helper function to find segmentlySDK in parent chain (up to 4 levels)\n  function getSegmentlySDK() {\n    let currentWindow = window;\n\n    // Check up to 4 levels up the parent chain\n    for (let i = 0; i < 4; i++) {\n      try {\n        // Try to access segmentlySDK (may fail due to cross-origin restrictions)\n        if (currentWindow.segmentlySDK) {\n          return currentWindow.segmentlySDK;\n        }\n\n        // Stop if we've reached the top window\n        if (currentWindow === currentWindow.parent) {\n          break;\n        }\n\n        currentWindow = currentWindow.parent;\n      } catch (e) {\n        // Cross-origin access blocked, stop searching\n        console.warn('Cross-origin access blocked at level', i);\n        break;\n      }\n    }\n\n    return null;\n  }\n\n    \n    window.onboardingOnlineCustomScreenData = {\n      inputs: {},\n      labels: {},\n      userData: {},\n      customData: {},\n      webOnboarding: {},\n      incomeUserData: {},\n      language: '',\n      screenId: ''\n  };\n  window.leaveCustomScreen = () => {};\n\n  window.onmessage = (event) => {\n    if (typeof (event.data) === 'object' && event.data.eventName === 'InitCustomScreen') {\n      // 1. Store Data\n      \n      Object.assign(window.onboardingOnlineCustomScreenData, event.data.args);\n\n      // 2. Setup Return Channel\n      const port = event.ports[0];\n      if (port) {\n        window.leaveCustomScreen = (args) => {\n          port.postMessage({\n            eventName: 'LeaveCustomScreen',\n            args, \n          }, []);\n        };\n      }\n      initScreen();\n    }\n  };\n  </script>\n  <!-- OO-PORT-MESSAGE-HANDLER-END -->\n  <style>\n    body {\n      background-color: #ffffff;\n      margin: 0;\n      padding: 0;\n      font-family: 'SF Pro', Arial, sans-serif;\n    }\n\n    #custom-form {\n      display: flex;\n      flex-direction: column;\n      justify-content: flex-start;\n      align-items: center;\n      height: 100vh;\n      padding: 16px 16px 0;\n      box-sizing: border-box;\n      text-align: center;\n    }\n\n    #top-icon {\n      margin-top: 70px;\n      height: 200px;\n      width: auto;\n      object-fit: contain;\n      display: block;\n    }\n\n    h1 {\n      margin-bottom: 16px;\n    }\n\n    p {\n      margin-bottom: 16px;\n      color: #333;\n    }\n\n\n    #submit-button {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      width: 100%;\n      height: 55px;\n      border: 1px solid #000;\n      border-radius: 12px;\n      background-color: #000;\n      color: #fff;\n      font-family: 'SF Pro', Arial, sans-serif;\n      font-size: 22px;\n      font-weight: 500;\n      line-height: 22.5px;\n      text-align: center;\n      padding: 0 16px;\n      cursor: pointer;\n      margin-top: 20px;\n    }\n\n    #submit-button:hover {\n      opacity: 0.9;\n    }\n  </style>\n</head>\n\n<body>\n  <form id='custom-form'>\n    <img id=\"top-icon\"\n      src=\"https://api.segmently.ai/assets/onboardings/6OwufOr1PtCg8dN7pR6O/custom-images/en-US_1769779434112_1740675632418-of-icon.png/origin.png\"\n      alt=\"OF\" />\n\n    <h1>Active subscription found</h1>\n    <div style=\"text-align: left; max-width: 400px; margin: 0 auto;\">\n      <p style=\"margin-bottom: 16px;\">You can open the app with the button below.</p>\n      <p style=\"margin-bottom: 16px;\">If you forgot the password, you can restore it inside the app.</p>\n    </div>\n\n    <button id='submit-button'>Open App</button>\n\n    <p style=\"margin-top: 24px; font-size: 14px; color: #666;\">You can also find more details in your email inbox.</p>\n  </form>\n\n  <script>\n\n    // Initialize screen once data is available\n    function initScreen() {\n      console.log('Screen initialized');\n\n      // Track final screen initialization\n      const segmentlySDK = getSegmentlySDK();\n\n      if (segmentlySDK) {\n        segmentlySDK.trackEvent('FinalScreenReached', {\n          screenName: 'final_screen',\n          action: 'initialized'\n        });\n      }\n\n      // Setup form submit handler\n      const form = document.getElementById('custom-form');\n      form.addEventListener('submit', function (event) {\n        event.preventDefault();\n        window.leaveCustomScreen({});\n      });\n    }\n  </script>\n</body>\n\n</html>"}},"id":"cb294cac-75d6-4276-934c-1e28c2865b10","tags":[]},"of-menopause-paywall":{"id":"of-menopause-paywall","tags":[],"aiContent":{},"content":{"embed":{"html":"<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, viewport-fit=cover\">\n  <title>This fall get yourself ready too</title>\n  <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n  <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n  <link href=\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Poppins:wght@600;700&display=swap\" rel=\"stylesheet\">\n  <style>\n    :root, :host {\n      --grad-top: #fff4f6;\n      --grad-bottom: #e3c2c8;\n      --pink: #d4607b;\n      --pink-strong: #ce516f;\n      --ink: #33222b;\n      --ink-title: #8c7b83;\n      --muted: #6b545f;\n      --guarantee: #3c2c23;\n      --cta-bg: #130f11;\n      --glass-bg: rgba(253,251,250,0.20);\n      --glass-border: rgba(255,255,255,0.40);\n      --card-bg: rgba(255,255,255,0.44);\n      --card-border: rgba(255,255,255,0.25);\n    }\n    * { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }\n    :host { display: block; width: 100%; background: #e3c2c8; }\n    html, body { margin: 0; padding: 0; min-height: 100%; }\n    html { background: #e3c2c8; }   /* overscroll fallback */\n    body {\n      font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n      color: var(--ink);\n      background: #e3c2c8;\n      -webkit-font-smoothing: antialiased;\n    }\n    .screen {\n      position: relative;\n      flex-shrink: 0;          /* never let a host flex container squeeze the screen */\n      width: 100%;\n      max-width: 440px;\n      margin: 0 auto;\n      display: flex; flex-direction: column;\n      gap: 24px;\n      background: linear-gradient(180deg, var(--grad-top) 0%, var(--grad-bottom) 100%);\n    }\n    /* soft pink glow, upper-middle-left (Figma bg-glow) */\n    .screen > .glow {\n      position: absolute; z-index: 0; pointer-events: none;\n      left: -60px; top: 250px; width: 360px; height: 360px;\n      background: radial-gradient(circle at 50% 50%, rgba(230,143,162,0.35) 0%, rgba(230,143,162,0.16) 45%, rgba(230,143,162,0) 70%);\n    }\n    .brand, .hero, .carousel, .step, .guarantee, .cta-wrap { position: relative; z-index: 1; }\n    .screen > * { flex-shrink: 0; }   /* content keeps its size; overflow scrolls, not collapses */\n\n    /* ---------- brand header ---------- */\n    .brand { padding: 16px 24px 8px; }\n    .logo { display: block; height: 16.3px; width: 52.29px; }\n    .logo svg { display: block; width: 100%; height: 100%; }\n\n    /* ---------- hero title ---------- */\n    .hero { padding: 12px 24px 16px; }\n    .hero h1 {\n      margin: 0;\n      font-family: 'Poppins', 'Inter', sans-serif;\n      font-weight: 700;\n      font-size: clamp(42px, 12.9vw, 54px);\n      line-height: 1.02;\n      letter-spacing: -1.2px;\n      color: var(--ink-title);\n      max-width: 381px;\n    }\n    .hero h1 .hl-dark { display: block; color: #1b131d; }\n\n    /* ---------- carousel (auto-scrolling marquee) ---------- */\n    .carousel {\n      flex: 0 0 auto;\n      height: 166px;           /* 158px tile + 4px top/bottom padding — fixed so it can't collapse */\n      overflow: hidden;\n      padding: 4px 0;\n    }\n    .car-track {\n      display: flex;\n      width: max-content;\n      animation: marquee 45s linear infinite;\n      will-change: transform;\n    }\n    .carousel.paused .car-track { animation-play-state: paused; }\n    @keyframes marquee {\n      from { transform: translateX(0); }\n      to   { transform: translateX(-50%); }\n    }\n    /* Reduced motion: stop the marquee, fall back to manual swipe */\n    @media (prefers-reduced-motion: reduce) {\n      .car-track { animation: none; }\n      .carousel { overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }\n      .carousel::-webkit-scrollbar { display: none; }\n    }\n    .tile {\n      flex: 0 0 auto;\n      width: 128px; height: 158px;\n      margin-right: 12px;\n      border-radius: 22px;\n      overflow: hidden;\n      background: var(--card-bg);\n      border: 1px solid var(--card-border);\n      box-shadow: 0 6px 18px rgba(190,120,140,0.12);\n    }\n    .tile img {\n      width: 100%; height: 100%;\n      object-fit: contain; display: block;\n      padding: 4px;\n      opacity: 0; transition: opacity .35s ease;\n    }\n    .tile img.loaded { opacity: 1; }\n\n    /* ---------- pricing stack ---------- */\n    .pricing-stack { width: 100%; padding: 0 20px; display: flex; flex-direction: column; gap: 12px; }\n    .tier {\n      border-radius: 24px; cursor: pointer; width: 100%;\n      background: rgba(250,241,243,0.4);\n      border: 1.5px solid rgba(255,255,255,0.3);\n      transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;\n    }\n    .tier.selected {\n      background: rgba(255,251,251,0.25);\n      border-color: #c85c7b;\n      box-shadow: 0 8px 16px rgba(53,36,39,0.05);\n    }\n    .tier-annual { display: flex; flex-direction: column; gap: 12px; padding: 16px; }\n    .tier-monthly { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 20px; }\n    .tier-head { display: flex; align-items: center; justify-content: space-between; width: 100%; gap: 8px; }\n    .tier-left { display: flex; align-items: center; gap: 12px; min-width: 0; }\n    .tier-title { font-weight: 700; font-size: 18px; color: #2a1e21; white-space: nowrap; }\n    .radio { width: 22px; height: 22px; flex: 0 0 auto; }\n    .radio.on {\n      background: #c85c7b; border-radius: 11px;\n      display: flex; align-items: center; justify-content: center;\n    }\n    .radio.on svg { display: block; width: 10px; height: 10px; }\n    .radio.off svg { display: block; width: 22px; height: 22px; }\n    .bv-badge {\n      background: #c85c7b; color: #fff; font-weight: 700; font-size: 10px;\n      text-transform: uppercase; letter-spacing: .3px;\n      padding: 4px 10px; border-radius: 8px; white-space: nowrap; flex: 0 0 auto;\n    }\n    .timeline { display: flex; align-items: flex-start; padding-left: 6px; width: 100%; }\n    .timeline > svg { width: 12px; height: 42px; flex: 0 0 auto; }\n    .tl-rows { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 8px; padding-left: 12px; font-size: 14px; }\n    .tl-row { display: flex; justify-content: space-between; align-items: center; gap: 8px; }\n    .tl-label { font-weight: 500; color: #2a1e21; }\n    .tl-label.muted { color: #6f5c61; }\n    .tl-amt { font-weight: 700; color: #2a1e21; }\n    .tier-note { font-weight: 500; font-size: 11px; color: #6b545f; text-align: right; }\n\n    /* guarantee */\n    .guarantee { padding: 0 24px; margin-top: -12px; margin-bottom: -12px; text-align: center; font-weight: 700; font-size: 12px; color: var(--guarantee); }\n\n    /* CTA */\n    .cta-wrap {\n      width: 100%;\n      padding: 6px 20px calc(10px + env(safe-area-inset-bottom));\n      display: flex; flex-direction: column; align-items: center;\n    }\n    .cta {\n      width: 100%; height: 56px; border: 0; cursor: pointer;\n      background: var(--cta-bg); border-radius: 28px;\n      display: flex; align-items: center; justify-content: space-between;\n      padding: 0 8px 0 24px;\n      font-family: 'Inter', sans-serif; font-weight: 700; font-size: 16px; color: #fff;\n    }\n    .cta:disabled { opacity: .7; }\n    .cta .cta-arrow {\n      width: 40px; height: 40px; border-radius: 50%; background: #fff; flex: 0 0 auto;\n      display: flex; align-items: center; justify-content: center;\n    }\n    .cta .cta-arrow svg { display: block; width: 16px; height: 16px; }\n    .footer { padding-top: 10px; text-align: center; font-weight: 600; font-size: 12px; color: var(--guarantee); }\n    .footer a { color: inherit; text-decoration: none; }\n\n    /* ---------- full-page scroll behavior ---------- */\n    html { scroll-padding-bottom: 96px; }\n    /* tall-enough screens still show the whole thing without scrolling; short\n       ones scroll naturally at full size instead of being compressed. */\n  </style>\n</head>\n<body>\n  <div class=\"screen\">\n    <div class=\"glow\"></div>\n\n    <!-- brand -->\n    <div class=\"brand\">\n      <span class=\"logo\" aria-label=\"Outfit Formulas\"><svg preserveAspectRatio=\"none\" overflow=\"visible\" style=\"display: block;\" width=\"52.2893\" height=\"16.3028\" viewBox=\"0 0 52.2893 16.3028\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <g id=\"Logo container\"> <path id=\"Vector\" d=\"M51.3084 2.86106C50.7676 2.86106 50.3275 2.40214 50.3275 1.83823C50.3275 1.27432 50.7676 0.815401 51.3084 0.815401C51.8492 0.815401 52.2893 1.27432 52.2893 1.83823C52.2893 2.40214 51.8492 2.86106 51.3084 2.86106ZM51.3084 1.02539C50.878 1.02539 50.5289 1.38947 50.5289 1.83823C50.5289 2.28699 50.878 2.65108 51.3084 2.65108C51.7388 2.65108 52.0879 2.28699 52.0879 1.83823C52.0879 1.38947 51.7388 1.02539 51.3084 1.02539Z\" fill=\"black\"/> <path id=\"Vector_2\" d=\"M51.1637 2.26612H50.985V1.37706H51.3342C51.5307 1.37706 51.6428 1.48544 51.6428 1.65987C51.6428 1.77333 51.5859 1.87155 51.4885 1.91219L51.6688 2.26442H51.4674L51.3082 1.93928H51.1653V2.26442L51.1637 2.26612ZM51.1637 1.8055H51.318C51.4073 1.8055 51.4609 1.75131 51.4609 1.66325C51.4609 1.5752 51.4057 1.52101 51.3164 1.52101H51.1653V1.80381L51.1637 1.8055Z\" fill=\"black\"/> <path id=\"Vector_3\" d=\"M2.68252 3.27751C3.63909 2.89818 4.5648 2.89818 5.49051 3.27751C6.44707 3.6416 7.31107 4.27494 7.8129 5.41293C8.31311 6.53567 8.31311 8.02419 7.8129 9.14863C7.31107 10.2714 6.44707 10.9047 5.49051 11.2688C4.5648 11.6329 3.63909 11.6329 2.68252 11.2688C1.75682 10.9047 0.876581 10.2731 0.376374 9.14863C-0.125458 8.02589 -0.125458 6.53736 0.376374 5.41293C0.878205 4.27325 1.75682 3.6416 2.68252 3.27751ZM1.58954 7.28078C1.58954 8.13596 1.84776 8.79979 2.34797 9.29088C2.86442 9.78197 3.44096 10.0191 4.09382 10.0191C4.74669 10.0191 5.32323 9.78197 5.82344 9.29088C6.33988 8.79979 6.59811 8.13596 6.59811 7.28078C6.59811 6.4256 6.33988 5.74653 5.82344 5.25544C5.32161 4.76604 4.74669 4.51202 4.09382 4.51202C3.44096 4.51202 2.86442 4.76604 2.34797 5.25544C1.84776 5.74653 1.58954 6.41036 1.58954 7.28078Z\" fill=\"black\"/> <path id=\"Vector_4\" d=\"M14.8855 11.5368C14.0669 11.5368 13.3686 11.237 12.7904 10.6189C12.2139 10.0025 11.9248 9.09991 11.9248 7.91281V3.1492H13.5635V7.81798C13.5635 9.28957 14.3528 10.033 15.4458 10.033C16.0532 10.033 16.5534 9.81115 16.9334 9.3844C17.328 8.94073 17.5554 8.49874 17.6009 8.0703V3.1492H19.2395V11.3776H17.6009V9.6689C17.4336 10.1431 16.6135 11.5351 14.8838 11.5351L14.8855 11.5368Z\" fill=\"black\"/> <path id=\"Vector_5\" d=\"M27.0693 3.15154V4.57572H25.3998V9.18015C25.3998 9.70173 25.6434 9.95574 26.1436 9.95574C26.4327 9.95574 26.7347 9.89309 27.0693 9.76608V11.175C26.6893 11.3799 26.2345 11.4748 25.7035 11.4748C24.4887 11.4748 23.7611 10.9684 23.7611 9.55948V4.57402H22.6681V3.14985H23.7611V1.04661H25.3998V3.14985H27.0693V3.15154Z\" fill=\"black\"/> <path id=\"Vector_6\" d=\"M34.0769 1.4734C33.273 1.4734 32.8621 1.90184 32.8621 2.75533V3.15159H34.8954V4.57577H32.8621V11.38H31.2234V4.57407H30.2831V3.1499H31.2234V2.67574C31.2234 1.58347 31.5726 0.792643 32.1183 0.459037C32.6656 0.127125 33.1349 0.000117659 33.7277 0.000117659C34.4715 0.000117659 35.0789 0.174541 35.5791 0.506453L35.0481 1.69355C34.759 1.5513 34.4407 1.47171 34.0769 1.47171V1.4734Z\" fill=\"black\"/> <path id=\"Vector_7\" d=\"M39.6557 0.136671H39.719C40.1835 0.136671 40.5603 0.529547 40.5603 1.01387C40.5603 1.49819 40.1835 1.89106 39.719 1.89106H39.6557C39.1912 1.89106 38.8144 1.49819 38.8144 1.01387C38.8144 0.529547 39.1912 0.136671 39.6557 0.136671ZM38.868 3.14928H40.5067V11.3777H38.868V3.15098V3.14928Z\" fill=\"black\"/> <path id=\"Vector_8\" d=\"M48.812 3.15154V4.57572H47.1425V9.18015C47.1425 9.70173 47.3861 9.95574 47.8863 9.95574C48.1754 9.95574 48.4775 9.89309 48.812 9.76608V11.175C48.432 11.3799 47.9773 11.4748 47.4462 11.4748C46.2314 11.4748 45.5038 10.9684 45.5038 9.55948V4.57402H44.4109V3.14985H45.5038V1.04661H47.1425V3.14985H48.812V3.15154Z\" fill=\"black\"/> <path id=\"Vector_9\" d=\"M0.996519 16.2646V13.2571H2.86418V13.4704H1.19628V14.6541H2.50039V14.8709H1.19628V16.2629H0.996519V16.2646Z\" fill=\"black\"/> <path id=\"Vector_10\" d=\"M8.25149 16.2965C7.9884 16.2965 7.74479 16.2288 7.51905 16.0899C7.2933 15.9528 7.11628 15.7665 6.98636 15.5294C6.85644 15.294 6.79147 15.0366 6.79147 14.7589C6.79147 14.4812 6.85644 14.2255 6.98636 13.9884C7.11628 13.753 7.2933 13.5667 7.51905 13.4279C7.74317 13.2907 7.9884 13.223 8.25149 13.223C8.51459 13.223 8.7582 13.2907 8.98394 13.4279C9.20806 13.565 9.3867 13.7513 9.51663 13.9884C9.64655 14.2238 9.71151 14.4812 9.71151 14.7589C9.71151 15.0366 9.64655 15.2923 9.51663 15.5294C9.3867 15.7648 9.20968 15.9528 8.98394 16.0899C8.7582 16.2271 8.51459 16.2965 8.25149 16.2965ZM8.25149 13.438C8.02413 13.438 7.81462 13.4973 7.62136 13.6158C7.42972 13.7344 7.27544 13.8953 7.16176 14.0968C7.04807 14.2983 6.99123 14.5201 6.99123 14.7606C6.99123 15.0011 7.04807 15.2229 7.16176 15.4244C7.27544 15.6259 7.4281 15.7868 7.62136 15.9054C7.813 16.0239 8.0225 16.0832 8.25149 16.0832C8.48049 16.0832 8.68999 16.0239 8.88162 15.9054C9.07326 15.7868 9.22592 15.6259 9.33798 15.4244C9.45004 15.2229 9.50688 15.0011 9.50688 14.7606C9.50688 14.5201 9.45004 14.2983 9.33798 14.0968C9.22592 13.8953 9.07326 13.7344 8.88162 13.6158C8.68999 13.4973 8.47886 13.438 8.25149 13.438Z\" fill=\"black\"/> <path id=\"Vector_11\" d=\"M15.6276 16.2639L14.4291 14.7466H14.7847C15.004 14.7466 15.181 14.7178 15.3174 14.6585C15.4181 14.6094 15.5058 14.5349 15.5789 14.435C15.6536 14.3351 15.6893 14.225 15.6893 14.1048C15.6893 13.9964 15.6585 13.8948 15.5968 13.7965C15.535 13.7 15.4457 13.6204 15.3304 13.5578C15.2151 13.4968 15.0819 13.4663 14.9309 13.4663H14.1237V16.2656H13.924V13.258H14.9309C15.0673 13.258 15.194 13.2801 15.3125 13.3258C15.4311 13.3715 15.535 13.4342 15.6227 13.5171C15.7088 13.5967 15.7738 13.6882 15.8209 13.7898C15.8663 13.8914 15.8891 13.9964 15.8891 14.1048C15.8891 14.2741 15.8404 14.4265 15.7429 14.5603C15.6455 14.6941 15.5302 14.7906 15.397 14.8499C15.306 14.8922 15.2151 14.9193 15.129 14.9311C15.0413 14.9413 14.9488 14.9481 14.8513 14.9481L15.894 16.2673H15.6276V16.2639Z\" fill=\"black\"/> <path id=\"Vector_12\" d=\"M22.9508 16.2638V13.8863L21.6726 15.788L20.3767 13.8812V16.2638H20.1769V13.2191L21.6726 15.4205L23.1505 13.2191V16.2638H22.9508Z\" fill=\"black\"/> <path id=\"Vector_13\" d=\"M28.638 16.2968C28.4934 16.2968 28.3538 16.2663 28.219 16.207C28.0842 16.1461 27.9656 16.0614 27.8617 15.9496C27.7577 15.8446 27.6798 15.721 27.6246 15.5788C27.5693 15.4365 27.5417 15.2875 27.5417 15.13V13.2571H27.7415V15.13C27.7415 15.2587 27.7642 15.3823 27.8097 15.5009C27.8552 15.6177 27.9201 15.7193 28.003 15.8057C28.0858 15.892 28.1865 15.9632 28.2953 16.0123C28.4041 16.0597 28.5194 16.0834 28.638 16.0834C28.7565 16.0834 28.8751 16.0597 28.9839 16.0123C29.0927 15.9649 29.1901 15.8954 29.2762 15.8057C29.359 15.7193 29.424 15.6177 29.4695 15.5009C29.5149 15.384 29.5377 15.2604 29.5377 15.13V13.2571H29.7374V15.13C29.7374 15.2875 29.7098 15.4365 29.6562 15.5788C29.601 15.721 29.5231 15.8446 29.4191 15.9496C29.3152 16.0614 29.1966 16.1461 29.0635 16.207C28.9303 16.268 28.789 16.2968 28.638 16.2968Z\" fill=\"black\"/> <path id=\"Vector_14\" d=\"M34.1272 16.2646V13.2571H34.3269V16.0563H35.9461V16.2646H34.1272Z\" fill=\"black\"/> <path id=\"Vector_15\" d=\"M40.6186 15.5001L40.2776 16.2638H40.0551L41.4128 13.2191L42.6942 16.2638H42.4765L42.1533 15.5001H40.6186ZM41.4047 13.7322L40.7128 15.2918H42.0656L41.4047 13.7322Z\" fill=\"black\"/> <path id=\"Vector_16\" d=\"M48.6268 15.1005C48.7015 15.2156 48.7405 15.3409 48.7405 15.473C48.7405 15.5865 48.7145 15.6949 48.6609 15.7998C48.6073 15.9031 48.531 15.9929 48.4303 16.0708C48.2241 16.2249 47.9821 16.3028 47.7076 16.3028C47.5712 16.3028 47.4413 16.2825 47.3179 16.2418C47.1944 16.2012 47.0824 16.1453 46.9849 16.0708C46.816 15.9421 46.7137 15.7829 46.678 15.5949L46.8696 15.4832C46.8777 15.6525 46.9573 15.7914 47.1084 15.8998C47.1847 15.9607 47.2756 16.0081 47.3796 16.0403C47.4835 16.0725 47.5923 16.0894 47.7076 16.0894C47.9447 16.0894 48.1445 16.0268 48.3069 15.8998C48.4628 15.7795 48.5424 15.6373 48.5424 15.4747C48.5424 15.3799 48.5132 15.2901 48.4563 15.2055C48.3978 15.1225 48.3183 15.0514 48.2143 14.9921C48.1169 14.9396 47.9415 14.8972 47.6914 14.8668C47.6703 14.8634 47.5956 14.8515 47.4673 14.8295C47.339 14.8075 47.2285 14.7736 47.1376 14.7279C46.993 14.6534 46.8794 14.5569 46.7965 14.4349C46.7137 14.313 46.6731 14.1809 46.6731 14.0387C46.6731 13.9252 46.7007 13.8185 46.7543 13.7169C46.8095 13.617 46.8875 13.529 46.9865 13.4511C47.084 13.3765 47.1944 13.3207 47.3195 13.28C47.4429 13.2394 47.5745 13.2191 47.7092 13.2191C47.9837 13.2191 48.2257 13.297 48.432 13.4511C48.6041 13.5865 48.7048 13.744 48.734 13.9235L48.5424 14.0353C48.5391 13.9574 48.518 13.8846 48.4774 13.8135C48.4384 13.7423 48.38 13.678 48.3069 13.6187C48.2273 13.5577 48.1348 13.5103 48.0324 13.4782C47.9285 13.446 47.8213 13.429 47.7092 13.429C47.5972 13.429 47.4884 13.446 47.3828 13.4782C47.2773 13.5103 47.1863 13.5577 47.11 13.6187C47.0336 13.678 46.9736 13.7423 46.933 13.8151C46.8907 13.888 46.8712 13.9625 46.8712 14.0387C46.8712 14.1335 46.9053 14.2283 46.9736 14.3232C47.0418 14.418 47.1262 14.4908 47.2269 14.5433C47.2886 14.5738 47.3568 14.5958 47.4332 14.6111C47.5095 14.6263 47.6053 14.6398 47.7239 14.6551C47.745 14.6585 47.7969 14.6652 47.8798 14.6788C47.9626 14.6923 48.0422 14.7076 48.1201 14.7296C48.1965 14.7516 48.2614 14.777 48.315 14.8075C48.4514 14.8871 48.557 14.9853 48.6317 15.1005H48.6268Z\" fill=\"black\"/> </g> </svg></span>\n    </div>\n\n    <!-- hero title -->\n    <div class=\"hero\">\n      <h1 id=\"headline_label\"><span class=\"hl-dark\">This fall,</span>get yourself ready too.</h1>\n    </div>\n\n    <!-- carousel -->\n    <div class=\"carousel\" id=\"carousel\" aria-label=\"Outfit formulas\"></div>\n\n    <!-- pricing stack -->\n    <div class=\"pricing-stack\" id=\"plans_list\"></div>\n\n    <!-- guarantee -->\n    <div class=\"guarantee\">30-day money-back guarantee, no questions asked.</div>\n\n    <!-- CTA -->\n    <div class=\"cta-wrap\">\n      <button class=\"cta\" id=\"cta_button\" type=\"button\">\n        <span id=\"cta_label\">Start 30 days trial for $1</span>\n        <span class=\"cta-arrow\"><svg preserveAspectRatio=\"none\" overflow=\"visible\" style=\"display: block;\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <g id=\"arrow-right\"> <path id=\"Vector\" d=\"M3.3328 8H12.6672M8 12.6672L12.6672 8L8 3.3328\" stroke=\"#130F11\" stroke-width=\"2.5\" stroke-linecap=\"round\"/> </g> </svg></span>\n      </button>\n      <div class=\"footer\"><a href=\"https://outfitformulas.com/terms-and-conditions/\" target=\"_blank\" rel=\"noopener\">Terms</a> · <span id=\"privacy_link\">Privacy</span></div>\n    </div>\n  </div>\n\n  <script>\n    // ---- carousel images (CDN, lazy-loaded) ----\n    var CAROUSEL_IMAGES = [\n      \"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/paywall-carousel/20260808074800_new-01-day1/origin.webp\",\n      \"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/paywall-carousel/20260808074803_new-02/origin.webp\",\n      \"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/paywall-carousel/20260808074805_new-03/origin.webp\",\n      \"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/paywall-carousel/20260808074807_new-04/origin.webp\",\n      \"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/paywall-carousel/20260808074809_new-05-day30/origin.webp\",\n      \"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/paywall-carousel/20260807162411_bts-carousel-01/origin.webp\",\n      \"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/paywall-carousel/20260807162412_bts-carousel-02/origin.webp\",\n      \"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/paywall-carousel/20260807162414_bts-carousel-03/origin.webp\",\n      \"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/paywall-carousel/20260807162415_bts-carousel-04/origin.webp\",\n      \"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/paywall-carousel/20260807162417_bts-carousel-05/origin.webp\",\n      \"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/paywall-carousel/20260807162418_bts-carousel-06/origin.webp\",\n      \"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/paywall-carousel/20260807162420_bts-carousel-07/origin.webp\",\n      \"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/paywall-carousel/20260807162421_bts-carousel-08/origin.webp\",\n      \"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/paywall-carousel/20260807162422_bts-carousel-09/origin.webp\",\n      \"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/paywall-carousel/20260807162424_bts-carousel-10/origin.webp\"\n    ];\n\n    // ---- plan copy keyed by catalog index (index 0 = Annual/default, 1 = Monthly) ----\n    // Catalog: index 0 = Annual ($1/30d trial then $99/yr), index 1 = Monthly ($19, no trial)\n    var COPY_BY_INDEX = [\n      { key: 'annual',  fallbackAmount: 99, currency: 'USD' },\n      { key: 'monthly', fallbackAmount: 19, currency: 'USD' }\n    ];\n\n    var state = { selectedId: null, sdk: null, products: [] };\n\n    /* ---------- carousel: auto-scrolling marquee ---------- */\n    function buildCarousel() {\n      var root = document.getElementById('carousel');\n      var track = document.createElement('div');\n      track.className = 'car-track';\n      // Two identical halves -> translateX(-50%) loops seamlessly.\n      // Same URL twice = one network fetch (browser cache).\n      for (var half = 0; half < 2; half += 1) {\n        CAROUSEL_IMAGES.forEach(function (url, i) {\n          var tile = document.createElement('div'); tile.className = 'tile';\n          var img = document.createElement('img');\n          img.alt = half ? '' : ('Outfit formula ' + (i + 1));\n          if (half) img.setAttribute('aria-hidden', 'true');\n          img.width = 128; img.height = 158;\n          img.decoding = 'async';\n          img.addEventListener('load', function () { img.classList.add('loaded'); });\n          img.src = url;\n          tile.appendChild(img); track.appendChild(tile);\n        });\n      }\n      root.appendChild(track);\n      // Pause the run while the user is touching it.\n      ['touchstart', 'pointerdown'].forEach(function (ev) {\n        root.addEventListener(ev, function () { root.classList.add('paused'); }, { passive: true });\n      });\n      ['touchend', 'touchcancel', 'pointerup', 'pointerleave'].forEach(function (ev) {\n        root.addEventListener(ev, function () { root.classList.remove('paused'); }, { passive: true });\n      });\n    }\n\n    /* ---------- pricing ---------- */\n    function asDollars(a) {\n      if (typeof a !== 'number') return NaN;\n      return Number.isInteger(a) && Math.abs(a) >= 100 ? a / 100 : a;\n    }\n    function fmtMoney(a, cur) {\n      if (!Number.isFinite(a)) return '';\n      var whole = Math.abs(a - Math.round(a)) < 0.005;\n      try {\n        return new Intl.NumberFormat('en-US', { style: 'currency', currency: (cur || 'USD').toUpperCase(),\n          minimumFractionDigits: whole ? 0 : 2, maximumFractionDigits: whole ? 0 : 2 }).format(a);\n      } catch (e) { return '$' + (whole ? Math.round(a) : a.toFixed(2)); }\n    }\n    function productAmount(sdk, product, pid) {\n      var cands = [];\n      try { cands.push(sdk && sdk.getProductPrice && sdk.getProductPrice(pid)); } catch (e) {}\n      if (product) {\n        cands.push(product.price, product.defaultPrice, product.currentPrice);\n        if (Array.isArray(product.prices) && product.prices.length) cands.push(product.prices[0]);\n        if (product.amount !== undefined || product.unitAmount !== undefined || product.displayPrice)\n          cands.push({ amount: product.amount, unitAmount: product.unitAmount, currency: product.currency, displayPrice: product.displayPrice });\n      }\n      for (var i = 0; i < cands.length; i++) {\n        var c = cands[i]; if (!c) continue;\n        var raw = c.amount; if (raw == null) raw = c.unitAmount;\n        if (raw == null && c.displayPrice) { var m = String(c.displayPrice).replace(/,/g, '').match(/-?\\d+(?:\\.\\d+)?/); raw = m ? parseFloat(m[0]) : null; }\n        if (raw != null) return { amount: asDollars(raw), currency: c.currency || 'USD' };\n      }\n      return null;\n    }\n\n    function planPriceText(index) {\n      var copy = COPY_BY_INDEX[index] || { fallbackAmount: 0, currency: 'USD' };\n      var product = state.products[index];\n      var amount = copy.fallbackAmount, currency = copy.currency;\n      if (product) {\n        var pid = product.productId || product.id;\n        var price = productAmount(state.sdk, product, pid);\n        if (price && Number.isFinite(price.amount)) { amount = price.amount; currency = price.currency || currency; }\n      }\n      return fmtMoney(amount, currency);\n    }\n\n    var RADIO_ON_HTML = '<span class=\"radio on\"><svg viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.333 2.5L3.75013 7.083L1.667 4.99982\" stroke=\"white\" stroke-width=\"3\" stroke-linecap=\"round\"/></svg></span>';\n    var RADIO_OFF_HTML = '<span class=\"radio off\"><svg viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"11\" cy=\"11\" r=\"10.5\" stroke=\"#6F5C61\"/></svg></span>';\n\n    function renderPlans() {\n      var list = document.getElementById('plans_list');\n      list.innerHTML = '';\n      var annual = state.products[0];\n      var monthly = state.products[1];\n      var annualId = annual ? (annual.productId || annual.id) : null;\n      var monthlyId = monthly ? (monthly.productId || monthly.id) : null;\n      var annualSel = state.selectedId === annualId;\n      var monthlyPrice = planPriceText(1);\n\n      var a = document.createElement('div');\n      a.className = 'tier tier-annual' + (annualSel ? ' selected' : '');\n      a.setAttribute('data-testid', 'plan-annual');\n      a.innerHTML =\n        '<div class=\"tier-head\">' +\n          '<div class=\"tier-left\">' + (annualSel ? RADIO_ON_HTML : RADIO_OFF_HTML) +\n            '<span class=\"tier-title\">30 days for $1</span>' +\n          '</div>' +\n          '<span class=\"bv-badge\">Best Value</span>' +\n        '</div>' +\n        '<div class=\"timeline\"><svg viewBox=\"0 0 12 42\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"6\" cy=\"4\" r=\"4\" fill=\"#C85C7B\"/><line x1=\"6.75\" y1=\"12\" x2=\"6.75\" y2=\"30\" stroke=\"#F2D8DA\" stroke-width=\"1.5\"/><circle cx=\"6\" cy=\"38\" r=\"4\" fill=\"#C6BAC0\"/></svg>' +\n          '<div class=\"tl-rows\">' +\n            '<div class=\"tl-row\"><span class=\"tl-label\">Today</span><span class=\"tl-amt\">$1</span></div>' +\n            '<div class=\"tl-row\"><span class=\"tl-label muted\">Day 30, then every year</span><span class=\"tl-amt\">' + planPriceText(0) + '</span></div>' +\n          '</div>' +\n        '</div>';\n      if (annualId) a.addEventListener('click', function () { choose(annualId); });\n      list.appendChild(a);\n\n      var m = document.createElement('div');\n      m.className = 'tier tier-monthly' + (!annualSel ? ' selected' : '');\n      m.setAttribute('data-testid', 'plan-monthly');\n      m.innerHTML =\n        '<div class=\"tier-left\">' + (!annualSel ? RADIO_ON_HTML : RADIO_OFF_HTML) +\n          '<span class=\"tier-title\">' + monthlyPrice + ' a month</span>' +\n        '</div>' +\n        '<span class=\"tier-note\">No trial, renews every month</span>';\n      if (monthlyId) m.addEventListener('click', function () { choose(monthlyId); });\n      list.appendChild(m);\n\n      var cta = document.getElementById('cta_label');\n      if (cta) cta.textContent = annualSel ? 'Start 30 days trial for $1' : ('Continue to pay ' + monthlyPrice);\n    }\n\n    function choose(pid) {\n      state.selectedId = pid;\n      try { state.sdk && state.sdk.selectProduct(pid); } catch (e) {}\n      renderPlans();\n      // reveal the CTA after a selection so it's never hidden below the fold\n      try {\n        var cta = document.querySelector('.cta-wrap') || document.getElementById('cta_button');\n        if (cta && cta.scrollIntoView) cta.scrollIntoView({ behavior: 'smooth', block: 'end' });\n      } catch (e) {}\n    }\n\n    function bindCta(sdk) {\n      var btn = document.getElementById('cta_button');\n      var inFlight = false;\n      btn.addEventListener('click', function (e) {\n        e.preventDefault(); e.stopPropagation();\n        if (inFlight || !state.selectedId) return;\n        inFlight = true; btn.disabled = true;\n        var reset = function () { inFlight = false; btn.disabled = false; };\n        try {\n          sdk.purchaseProduct(state.selectedId, {\n            onSuccess: function () { try { sdk.navigateNext(); } catch (err) { console.error('navigateNext failed', err); reset(); } },\n            onCancel: function () { reset(); },\n            onError: function (err) { console.warn('purchase failed', err); reset(); }\n          });\n        } catch (err) { console.warn('purchaseProduct threw', err); reset(); }\n      });\n    }\n\n    function loadProducts(sdk) {\n      try { var p = sdk && sdk.getProducts && sdk.getProducts(); if (Array.isArray(p) && p.length) return p; } catch (e) {}\n      return [ { productId: 'preview-annual', name: 'Annual' }, { productId: 'preview-monthly', name: 'Monthly' } ];\n    }\n\n    function init(sdk) {\n      state.sdk = sdk;\n      state.products = loadProducts(sdk);\n      var first = state.products[0];               // index 0 = Annual (isDefault)\n      state.selectedId = first ? (first.productId || first.id) : null;\n      try { if (state.selectedId) sdk.selectProduct(state.selectedId); } catch (e) {}\n      renderPlans();\n      bindCta(sdk);\n    }\n\n    buildCarousel();\n    if (window.segmentlySDK && segmentlySDK.ready) {\n      segmentlySDK.ready().then(init).catch(function (e) { console.error('SDK ready failed', e); });\n    } else {\n      console.warn('Segmently SDK not available; standalone preview.');\n      state.products = loadProducts(null);\n      state.selectedId = state.products[0].productId;\n      renderPlans();\n    }\n  </script>\n</body>\n</html>\n","isIframe":false,"childSections":[{"textContent":{"title":{"kind":"static","appearance":{},"translations":{"en-US":"Dress the body<br>you have now"}}},"label":"headline_label","id":"headline_label","kind":"Text","order":0},{"textContent":{"title":{"kind":"static","appearance":{},"translations":{"en-US":"16,000+ women"}}},"kind":"Text","id":"reviews_label","order":1,"label":"reviews_label"},{"kind":"Text","order":2,"id":"best_tag_label","textContent":{"title":{"kind":"static","translations":{"en-US":"Best value"},"appearance":{}}},"label":"best_tag_label"},{"id":"cta_label","label":"cta_label","order":3,"textContent":{"title":{"kind":"static","appearance":{},"translations":{"en-US":"Start my 7 days trial"}}},"kind":"Text"},{"order":4,"kind":"Media","mediaContent":{"content":{"image":{"translations":{"en-US":{"original":"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/images/20260615125226_of-menopause-paywall-hero-media/origin.png","small":"https://api.segmently.ai/assets/projects/43fc320f-9156-4e95-a34d-e0b5cc57d852/cli-assets/images/20260615125226_of-menopause-paywall-hero-media/small.png"}}}},"kind":"Image"},"label":"hero_media","id":"hero_media"},{"id":"paywall_products","kind":"ProductCatalog","label":"paywall_products","productCatalogContent":{"items":[{"isDefault":true,"productId":"g1hWypMeqlVVNWuCI5lP","id":"annual","isSelected":true},{"productId":"SzkZ8ucbr7iASF4921YG","id":"monthly"}]},"order":5}],"callback":{"action":{"kind":"advance","edges":[{"conditions":[],"nextScreenId":"18c2d601-dbed-406c-a776-3df2205e1bbf","transitionKind":"push"}]}}},"canvas":{"background":{"kind":"solid","content":{"color":"#f8fbfb"}}},"offlineFirst":false,"animated":true},"order":6,"screenType":"WebEmbed","updatedAt":"2026-08-08T09:26:10.555Z","createdAt":"2026-06-15T12:52:32.359Z","position":{"x":9312,"y":64},"name":"the-paywall","aiMeta":{"source":"segmently-cli","blockRole":"Paywall (visual)","generationModel":"manual-cli","iterationCount":1,"blockType":"WebEmbed","generationTimestamp":"2026-06-15T12:52:32.359Z"}}},"metadata":{"projectId":"43fc320f-9156-4e95-a34d-e0b5cc57d852","projectName":"43fc320f-9156-4e95-a34d-e0b5cc57d852","onboardingId":"Vd8aVlzjzQR4skSazaTh","onboardingName":"[paid] BTS-editorial-1$-30d-99","webOnboardingId":"Z3bj7MCzhxagasaRATKy","webOnboardingName":"[paid] BTS-editorial-1$-30d-99","versionId":"3RiOTzDtZ9sIDl5yTBsL","urlAlias":"m8n-80gv-iyp"},"variables":{"password":{"id":"password","createdAt":{},"required":false,"excludeFromAnalytics":true,"scope":"global","type":"string","updatedAt":{},"name":"password"},"otp":{"createdAt":{},"id":"otp","required":false,"updatedAt":{},"scope":"global","excludeFromAnalytics":true,"type":"string","name":"otp"},"outfit_ideas_agreement":{"createdAt":"2026-06-18T08:12:06.668Z","required":false,"excludeFromAnalytics":false,"options":[{"id":"agree","label":"Agree"},{"id":"somewhat_agree","label":"Somewhat Agree"},{"label":"Somewhat Disagree","id":"somewhat_disagree"},{"id":"disagree","label":"Disagree"}],"id":"outfit_ideas_agreement","boundSectionId":"agreement_options","type":"enum","name":"Outfit ideas agreement","boundScreenIds":["of-menopause-outfit-ideas-statement"],"updatedAt":{},"scope":"screen"},"nothing_to_wear_freq":{"name":"Nothing-to-wear frequency","type":"enum","updatedAt":{},"options":[{"label":"Almost everyday","id":"daily"},{"id":"few_weekly","label":"A few times a week"},{"id":"weekly","label":"Once a week or so"},{"label":"Rarely","id":"rarely"}],"createdAt":"2026-06-15T11:55:29.336Z","boundSectionId":"nothing_to_wear_options","required":false,"scope":"screen","excludeFromAnalytics":false,"id":"nothing_to_wear_freq","boundScreenIds":["of-menopause-nothing-to-wear"]},"closet_size":{"options":[{"id":"under_50","label":"Under 50"},{"id":"50_100","label":"50-100"},{"label":"100-200","id":"100_200"},{"label":"200+","id":"200_plus"}],"boundScreenIds":["of-menopause-closet-size"],"excludeFromAnalytics":false,"createdAt":"2026-06-15T11:45:41.828Z","boundSectionId":"closet_options","id":"closet_size","scope":"screen","name":"Closet size","type":"enum","updatedAt":{},"required":false},"walk_out_feeling":{"name":"Walk-out feeling","type":"enum","excludeFromAnalytics":false,"createdAt":"2026-06-15T12:26:50.398Z","id":"walk_out_feeling","required":false,"scope":"screen","boundSectionId":"walk_out_options","options":[{"id":"confident","label":"Confident"},{"label":"Calm","id":"calm"},{"id":"put_together","label":"Put-together"},{"label":"Like myself","id":"like_myself"}],"updatedAt":{},"boundScreenIds":["of-menopause-feeling"]},"primary_goals":{"updatedAt":{},"boundScreenIds":["of-menopause-goals"],"excludeFromAnalytics":false,"options":[{"id":"confident","label":"Feel confident in what I wear"},{"label":"Spend less time getting dressed","id":"less_time"},{"label":"Build a wardrobe I actually love","id":"wardrobe_love"},{"id":"put_together","label":"Look put-together, effortlessly"},{"id":"stop_buying","label":"Stop buying clothes I never wear"},{"label":"Calmer, easier mornings","id":"calmer_mornings"}],"boundSectionId":"goals_options","required":false,"id":"primary_goals","type":"enum[]","name":"Primary goals","createdAt":"2026-06-15T10:36:52.541Z","scope":"screen"},"hardest_part":{"required":false,"screenBindings":{"of-menopause-challenge":{"never_pairs":"never_pairs","packed_not_flexible":"packed_not_flexible","too_long":"too_long","no_confidence":"no_confidence","buying_no_works":"buying_no_works"}},"id":"hardest_part","createdAt":"2026-06-15T11:37:59.658Z","name":"Hardest part","boundSectionId":"challenge_options","type":"enum","updatedAt":{},"excludeFromAnalytics":false,"options":[{"id":"never_pairs","label":"Never know what goes together"},{"id":"packed_not_flexible","label":"Packed closet, not flexible"},{"label":"Nothing feels confident","id":"no_confidence"},{"label":"Takes too long","id":"too_long"},{"label":"Keep buying, nothing works","id":"buying_no_works"}],"boundScreenIds":["of-menopause-challenge"],"scope":"screen"},"app_user_id":{"id":"app_user_id","createdAt":{},"excludeFromAnalytics":false,"required":false,"scope":"global","type":"string","updatedAt":{},"name":"app_user_id"},"routine_type":{"scope":"screen","name":"Routine type","required":false,"type":"enum","createdAt":"2026-06-15T12:22:43.998Z","id":"routine_type","excludeFromAnalytics":false,"boundSectionId":"routine_options","updatedAt":{},"boundScreenIds":["of-menopause-routine"],"options":[{"id":"casual","label":"Mostly casual"},{"label":"Mostly work","id":"work"},{"id":"mix","label":"Mix of both"},{"label":"Variety","id":"variety"}]},"journey_stage":{"screenBindings":{"of-menopause-journey":{"hormonal_midlife":"hormonal_midlife","none":"none","figuring_out":"figuring_out","body_changing":"body_changing","rediscovering":"rediscovering"}},"updatedAt":{},"id":"journey_stage","name":"Journey stage","type":"enum","boundScreenIds":["of-menopause-journey"],"excludeFromAnalytics":false,"required":false,"createdAt":"2026-06-13T10:12:52.961Z","options":[{"label":"Figuring out personal style","id":"figuring_out"},{"label":"Body and style changing","id":"body_changing"},{"id":"hormonal_midlife","label":"Hormonal / midlife changes"},{"label":"Rediscovering style","id":"rediscovering"},{"id":"none","label":"None of these apply"},{"id":"prefer_not_to_say","label":"Prefer not to say"}],"boundSectionId":"journey_options","scope":"screen"},"body_changing_agreement":{"boundSectionId":"agreement_options","updatedAt":{},"excludeFromAnalytics":false,"boundScreenIds":["of-menopause-body-changing-statement"],"required":false,"id":"body_changing_agreement","options":[{"id":"agree","label":"Agree"},{"label":"Somewhat Agree","id":"somewhat_agree"},{"label":"Somewhat Disagree","id":"somewhat_disagree"},{"label":"Disagree","id":"disagree"}],"scope":"screen","type":"enum","name":"Body changing agreement","createdAt":"2026-06-18T07:48:58.539Z"},"dressing_challenges":{"name":"Dressing challenges","type":"enum[]","required":false,"createdAt":"2026-06-17T17:07:46.481Z","excludeFromAnalytics":false,"boundScreenIds":["of-menopause-dressing-challenges"],"scope":"screen","updatedAt":{},"boundSectionId":"challenges_options","options":[{"label":"Nothing fits me like it used to","id":"nothing_fits"},{"label":"I get too hot in certain fabrics","id":"too_hot"},{"label":"I don’t know what suits me anymore","id":"dont_know"},{"id":"same_outfits","label":"I end up wearing the same outfits"},{"id":"feel_confident","label":"I want to feel confident again"}],"id":"dressing_challenges"},"payment_result":{"createdAt":"2026-06-15T13:01:11.193Z","required":false,"scope":"screen","updatedAt":{},"name":"Payment result","id":"payment_result","type":"string","excludeFromAnalytics":false},"token":{"required":false,"updatedAt":{},"type":"string","id":"token","name":"token","excludeFromAnalytics":true,"createdAt":{},"scope":"global"},"too_warm_agreement":{"name":"Too warm agreement","excludeFromAnalytics":false,"type":"enum","scope":"screen","options":[{"id":"agree","label":"Agree"},{"id":"somewhat_agree","label":"Somewhat Agree"},{"id":"somewhat_disagree","label":"Somewhat Disagree"},{"id":"disagree","label":"Disagree"}],"updatedAt":{},"id":"too_warm_agreement","createdAt":"2026-06-18T08:10:15.892Z","required":false,"boundSectionId":"agreement_options","boundScreenIds":["of-menopause-too-warm-statement"]},"shopping_habit":{"required":false,"boundSectionId":"shopping_options","updatedAt":{},"boundScreenIds":["of-menopause-shopping"],"excludeFromAnalytics":false,"scope":"screen","id":"shopping_habit","type":"enum","name":"Shopping habit","createdAt":"2026-06-15T12:00:34.882Z","options":[{"label":"Mostly impulsive","id":"impulsive"},{"label":"Mostly planned","id":"planned"},{"id":"event_driven","label":"Event driven"},{"label":"Emotional spending","id":"emotional"},{"id":"no_pattern","label":"No pattern"}]},"mornings_feeling":{"id":"mornings_feeling","scope":"screen","boundSectionId":"mornings_options","type":"enum","name":"Mornings feeling","boundScreenIds":["of-menopause-mornings"],"options":[{"label":"Stressful, dread it","id":"stressful"},{"id":"meh","label":"Meh, manageable"},{"id":"hit_or_miss","label":"Hit or miss"},{"id":"usually_fine","label":"Usually fine"}],"updatedAt":{},"excludeFromAnalytics":false,"createdAt":"2026-06-15T11:13:52.468Z","required":false},"email":{"boundScreenIds":["3dd1ebc8-0550-4cdf-bcdc-3970ab859198"],"required":false,"excludeFromAnalytics":false,"createdAt":{"seconds":1775830179,"nanoseconds":987000000,"type":"firestore/timestamp/1.0"},"id":"email","scope":"screen","name":"email","updatedAt":{},"type":"string"},"clothes_fit_agreement":{"boundSectionId":"agreement_options","options":[{"label":"Agree","id":"agree"},{"label":"Somewhat Agree","id":"somewhat_agree"},{"label":"Somewhat Disagree","id":"somewhat_disagree"},{"id":"disagree","label":"Disagree"}],"boundScreenIds":["of-menopause-clothes-fit-statement"],"required":false,"createdAt":"2026-06-18T08:06:40.194Z","excludeFromAnalytics":false,"updatedAt":{},"id":"clothes_fit_agreement","scope":"screen","name":"Clothes fit agreement","type":"enum"},"has_work_at_office":{"createdAt":{},"name":"has_work_at_office","required":false,"scope":"global","type":"string","id":"has_work_at_office","excludeFromAnalytics":false,"updatedAt":{}},"existing_user":{"updatedAt":{},"excludeFromAnalytics":false,"name":"existing_user","required":false,"type":"string","id":"existing_user","createdAt":{},"scope":"global"}},"edgeGatewayUrl":"https://api.segmently.ai","paymentConfig":{"provider":"stripe","stripePublishableKey":"pk_live_51SjiZb395YNMwCRzfclogqltqHi79TTCpRmHJJuQxOHJdkIQXQWgpHkOxQc6da2WQvsGiZ65NgBQ9JEkkpQrc1ZV00xFpaf3gj","connectedAccountId":"acct_1IMgtiExVPMzcN93","stripePublishableKeys":{"test":"pk_test_51SjiZlKaKpC2BFmMgUmLxqSLmQpySWA14JCS13fV9aSULVix5IReigQYkliM4rG23gz5nL1jPb6t4zBoGfcegfi100prXHJJza","live":"pk_live_51SjiZb395YNMwCRzfclogqltqHi79TTCpRmHJJuQxOHJdkIQXQWgpHkOxQc6da2WQvsGiZ65NgBQ9JEkkpQrc1ZV00xFpaf3gj"},"connectedAccountIds":{"testAccountId":"acct_1T9XpcEZqT44MscJ","liveAccountId":"acct_1IMgtiExVPMzcN93"},"projectId":"43fc320f-9156-4e95-a34d-e0b5cc57d852","mode":"live","preBakedPrices":{"plbx4BvAZ2r5B1BeP8y9":{"productId":"prod_U7M5BIftql9ypA","priceId":"price_1T97NdExVPMzcN933ndmMFrs","localized":{"en-US":{"displayPrice":"$199.00","priceAmount":"$199.00","priceAndCurrency":"$199.00 USD","duration":"","intervalCount":"","interval":"","trialDays":"","fullTrialDays":"","introPrice":"","introProduct":"","introDuration":""}},"raw":{"unitAmount":19900,"currency":"usd","currencyOptions":{"usd":{"unitAmount":19900}}},"bakedAt":"2026-08-08T10:46:49.504Z","checkoutMode":"embedded","type":"one_time","stripeProductId":"prod_U7M5BIftql9ypA","productName":"Lifetime 199","mode":"live","connectedAccountId":"acct_1IMgtiExVPMzcN93"},"g1hWypMeqlVVNWuCI5lP":{"productId":"prod_RqBL6TJHSczr1Z","priceId":"price_1QwUz2ExVPMzcN93d6zG29HH","localized":{"en-US":{"displayPrice":"$99.00/year","priceAmount":"$99.00","priceAndCurrency":"$99.00 USD","duration":"yearly","intervalCount":"1","interval":"1 year","trialDays":"30","fullTrialDays":"30 Days","introPrice":"$1.00","introProduct":"Annual-1$-30d-paid-trial-then-99","introDuration":""}},"raw":{"unitAmount":9900,"currency":"usd","interval":"year","intervalCount":1,"currencyOptions":{"usd":{"unitAmount":9900}},"trialDays":"30","introOffer":{"unitAmount":100,"currency":"usd","productName":"Annual-1$-30d-paid-trial-then-99"}},"bakedAt":"2026-08-08T10:46:49.898Z","checkoutMode":"embedded","type":"subscription","stripeProductId":"prod_RqBL6TJHSczr1Z","productName":"Annual-1$-30d-paid-trial-then-99","subscription":{"interval":"year","intervalCount":1,"trialDays":"30","paidTrial":{"enabled":true,"stripePriceId":"price_1TWgYUExVPMzcN93izPsmRDj"}},"mode":"live","connectedAccountId":"acct_1IMgtiExVPMzcN93"},"SzkZ8ucbr7iASF4921YG":{"productId":"prod_RqBevU147GnJHs","priceId":"price_1QwVH2ExVPMzcN93vrVzx232","localized":{"en-US":{"displayPrice":"$19.00/month","priceAmount":"$19.00","priceAndCurrency":"$19.00 USD","duration":"monthly","intervalCount":"1","interval":"1 month","trialDays":"","fullTrialDays":"","introPrice":"","introProduct":"","introDuration":""}},"raw":{"unitAmount":1900,"currency":"usd","interval":"month","intervalCount":1,"currencyOptions":{"usd":{"unitAmount":1900}}},"bakedAt":"2026-08-08T10:46:50.176Z","checkoutMode":"embedded","type":"subscription","stripeProductId":"prod_RqBevU147GnJHs","productName":"Monthly-no-trial","subscription":{"interval":"month","intervalCount":1},"mode":"live","connectedAccountId":"acct_1IMgtiExVPMzcN93"}},"bakedAt":"2026-08-08T10:46:50.177Z"},"dataCollectionConfig":{"version":"1.0","sources":[{"id":"server_data","type":"server_data","enabled":true,"fields":["ip","userAgent","facebook.fbp","facebook.fbc","tiktok.ttp","tiktok.ttclid"]},{"id":"variable","type":"variable","enabled":true,"fields":["app_user_id","token","has_work_at_office","password","otp","existing_user","email"]}],"destinations":[{"id":"stripe_metadata","type":"stripe_metadata","enabled":true,"triggerEvents":["OnboardingFinished"],"config":{"type":"stripe_metadata","maxKeys":20}},{"id":"redirect_url","type":"redirect_url","enabled":true,"triggerEvents":["OnboardingFinished"],"config":{"type":"redirect_url","baseUrl":"https://outfit-formulas.app.link/C7YWvCiPKUb","urlEncode":false,"fallbackUrl":"https://outfit-formulas.app.link/C7YWvCiPKUb","redirectMappings":[{"sourceKey":"otp","sourceType":"variable"}]}}],"fieldMappings":[{"source":"server.ip","destination":"client_ip"},{"source":"server.userAgent","destination":"client_user_agent"},{"source":"server.facebook.fbp","destination":"facebook.fbp"},{"source":"server.facebook.fbc","destination":"facebook.fbc"},{"source":"server.tiktok.ttp","destination":"tiktok.ttp"},{"source":"server.tiktok.ttclid","destination":"tiktok.ttclid"},{"source":"variable.app_user_id","destination":"app_user_id"},{"source":"variable.token","destination":"token"},{"source":"variable.has_work_at_office","destination":"has_work_at_office"},{"source":"variable.password","destination":"password"},{"source":"variable.otp","destination":"otp"},{"source":"variable.existing_user","destination":"existing_user"},{"source":"variable.email","destination":"email"}],"stripeMetadataMappings":[{"sourceKey":"client_ip","sourceType":"server"},{"sourceKey":"client_user_agent","sourceType":"server"},{"sourceType":"server","sourceKey":"facebook.fbp"},{"sourceKey":"facebook.fbc","sourceType":"server"},{"sourceKey":"tiktok.ttp","sourceType":"server"},{"sourceType":"server","sourceKey":"tiktok.ttclid"},{"sourceType":"variable","sourceKey":"app_user_id"}],"redirectMappings":[{"sourceKey":"otp","sourceType":"variable"}],"settings":{"debug":false,"collectOnLoad":true}},"seo":{"title":"OutfitFormulas"},"projectAnalytics":{"integrations":[{"enabled":true,"createdAt":"2026-01-27T11:27:03.361Z","name":"Facebook Conversion API","platform":"facebook_capi","config":{"testEventCode":"TEST2976","pixelId":"3152172401607943","accessToken":"EAAbBN3SU4gIBO5KwkgyNiFJGe6SzIcbF1LBAejWF30h0xuwx4FmBpise8fiYdA1O9raj8uF2a5VeoMuaaRJTKbKZAE4IzM1pSdvdgbx6WpjSiNrcSYKz6YZATkSzVuOvAgSxnCHlNqCMZBs0wKmSsYs23gmNfB0VFZBHRkLMEfxEiaOsfjO7YNxWNPb55pIHQwZDZD"},"updatedAt":"2026-01-28T18:59:29.098Z","id":"int_mkwihhhj_40oiik"},{"id":"int_mkwii1qb_y8sfhy","config":{"apiKey":"d67673b689e94b684a9704ed1e18bac","serverZone":"US","trackSessionEvents":true},"platform":"amplitude","name":"Amplitude","updatedAt":"2026-02-17T18:05:08.862Z","enabled":true,"createdAt":"2026-01-27T11:27:29.597Z"},{"id":"int_mkwiiwp0_ej10sk","createdAt":"2026-01-27T11:28:09.724Z","enabled":true,"platform":"custom_script","name":"Header Injection Script","updatedAt":"2026-04-18T12:05:27.838Z","config":{"name":"Header Injection Script","bodyScript":"","headScript":"(function() {\n  // Flag to track if we've already stored this during this page load\n  if (window._ooUserEmailStored) {\n    return;\n  }\n\n  function getQueryParam(name) {\n    const urlParams = new URLSearchParams(window.location.search);\n    return urlParams.get(name);\n  }\n\n  let email = getQueryParam('email');\n\n  if (email !== null && email.trim() !== '') {\n    email = email.trim();\n  \n    if (!email.includes('@')) {\n      email = '';\n    }\n\n    localStorage.setItem('oo-user-email', email);\n    // Mark as stored for this page session\n    window._ooUserEmailStored = true;\n  }\n})();\n\nwindow.dataLayer = window.dataLayer || [];                                    \n  function gtag(){dataLayer.push(arguments);}                                   \n  gtag('consent', 'default', {                                                  \n    'analytics_storage': 'granted',                                             \n    'ad_storage': 'granted',                                                    \n    'ad_user_data': 'granted',                                                  \n    'ad_personalization': 'granted'\n  });"}},{"id":"int_mkwijit5_083yyi","enabled":true,"createdAt":"2026-01-27T11:28:38.384Z","platform":"tiktok_pixel","name":"TikTok Pixel","updatedAt":"2026-02-18T16:48:40.500Z","config":{"advancedMatching":{"email":true},"pixelId":"C92D9GF6ARQ791KLP7Q0"}},{"id":"int_mkwikdsj_s07qoq","name":"Google Analytics 4","config":{"debugMode":false,"measurementId":"G-MYLSX9351Z","sendPageView":true},"platform":"ga4","updatedAt":"2026-01-27T11:29:18.538Z","enabled":true,"createdAt":"2026-01-27T11:29:18.538Z"},{"platform":"facebook_pixel","updatedAt":"2026-01-27T11:30:02.304Z","config":{"autoConfig":true,"pixelId":"3152172401607943"},"name":"Facebook Pixel","createdAt":"2026-01-27T11:30:02.304Z","enabled":true,"id":"int_mkwilbkc_vtyijc"},{"createdAt":"2026-01-28T18:58:53.116Z","enabled":true,"updatedAt":"2026-02-17T18:05:15.653Z","platform":"amplitude_server","config":{"serverZone":"US","apiKey":"d67673b689e94b684a9704ed1e18bac"},"name":"Amplitude (Server-Side)","id":"int_mkye2e72_yd068j"},{"enabled":true,"createdAt":"2026-02-18T16:50:44.803Z","config":{"accessToken":"97cc66b5202a8af03bd1db544d72ae97e377353f","pixelCode":"C92D9GF6ARQ791KLP7Q0","testEventCode":"TEST48190"},"name":"TikTok Events API","platform":"tiktok_events_api","updatedAt":"2026-02-18T16:50:44.803Z","id":"int_mls9qhva_pakjya"},{"createdAt":"2026-04-17T07:25:23.754Z","enabled":true,"platform":"gtm","updatedAt":"2026-04-17T07:25:23.754Z","name":"Google Tag Manager","config":{"containerId":"GTM-NCG89PJV","dataLayerName":"dataLayer"},"id":"int_mo2l2uuz_qxlvjb"},{"enabled":true,"createdAt":"2026-06-03T10:34:05.233Z","name":"Segmently Analytics","updatedAt":"2026-06-03T10:34:05.233Z","platform":"segmently_internal","config":{"mode":"http"},"id":"int_mpxxijwl_okdefh"},{"updatedAt":"2026-06-03T10:36:07.405Z","name":"PostHog","config":{"projectToken":"phc_CScx24Mx5vqEqbfiknuFhWqZ54jCtcLpMTvFJaDuiXES","defaults":"2026-01-30","host":"https://us.i.posthog.com"},"platform":"posthog","enabled":true,"createdAt":"2026-06-03T10:36:07.405Z","id":"int_mpxxl66e_ruzjj7"},{"platform":"posthog_server","name":"PostHog (Server-Side)","enabled":true,"config":{"projectToken":"phc_CScx24Mx5vqEqbfiknuFhWqZ54jCtcLpMTvFJaDuiXES","host":"https://us.i.posthog.com","defaults":"2026-01-30"},"createdAt":"2026-06-03T10:36:28.009Z","updatedAt":"2026-06-03T10:36:28.009Z","id":"int_mpxxlm35_l62ens"}]},"stripeEmailConfig":{"emailVariableId":"email"},"saveUserData":false,"meta":{"funnelId":"Vd8aVlzjzQR4skSazaTh","versionId":"3RiOTzDtZ9sIDl5yTBsL","alias":"m8n-80gv-iyp","generatedAt":"2026-08-08T10:46:50.623Z","platform":"web","webShellVersion":"1.0.74"}}