<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="build-version" content="2025-09-23-api-fix-v3"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no,viewport-fit=cover"><meta name="mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta name="format-detection" content="telephone=no"><title>Caramel</title><meta name="description" content="Customer engagement platform — loyalty, gift cards, forms, and marketing automation for businesses across industries"><meta name="author" content="Caramel"><meta property="og:title" content="Caramel"><meta property="og:description" content="Customer engagement platform — loyalty, gift cards, forms, and marketing automation for businesses across industries"><meta property="og:type" content="website"><meta property="og:image" content="/favicon.png"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@caramelme_com"><meta name="twitter:image" content="/favicon.png"><link rel="icon" type="image/png" href="/favicon.png"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Outfit:wght@500&display=swap" rel="stylesheet"><link href="/assets/main.5b585524.css" rel="stylesheet"></head><body><script>console.log("[HTML] Script execution started");try{console.log("[HTML] Console is working"),window.onerror=function(e,o,n,t,r){console.log("[HTML] Error caught by handler:",e);var i={message:e,source:o,line:n,column:t,error:r?r.toString():"No error object",stack:r?r.stack:"No stack trace",userAgent:navigator.userAgent,time:(new Date).toISOString()};if(console.error("[Global Error]",i),/iPad|iPhone|iPod/.test(navigator.userAgent)){var l=document.createElement("div");l.style.cssText="position:fixed;top:0;left:0;right:0;background:red;color:white;padding:10px;z-index:999999;font-size:12px;",l.innerHTML="<strong>Error:</strong> "+e+" (Line "+n+")",document.body.appendChild(l)}return!0},window.addEventListener("unhandledrejection",function(e){if(console.error("[Unhandled Promise]",e.reason),/iPad|iPhone|iPod/.test(navigator.userAgent)){var o=document.createElement("div");o.style.cssText="position:fixed;top:50px;left:0;right:0;background:orange;color:white;padding:10px;z-index:999999;font-size:12px;",o.innerHTML="<strong>Promise Rejected:</strong> "+(e.reason||"Unknown"),document.body.appendChild(o)}}),console.log("[HTML] Line 73 - Before iOS setup"),function(){console.log("[HTML] Line 77 - Starting iOS detection");var e=!1;try{e=/iPad|iPhone|iPod/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,console.log("[HTML] Line 82 - iOS detection result:",e)}catch(e){console.error("[HTML] Line 84 - Error detecting iOS:",e)}if(window.__IS_IOS__=e,console.log("[HTML] Line 87 - iOS flag set"),e){console.log("[HTML] Line 92 - Configuring iOS settings"),document.documentElement.classList.add("ios-device"),console.log("[HTML] Line 96 - Added iOS class");try{var o=document.querySelector('meta[name="viewport"]');o&&(o.content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover",console.log("[HTML] Line 103 - Viewport configured"))}catch(e){console.error("[HTML] Line 106 - Viewport error:",e)}try{Object.hasOwn||(Object.hasOwn=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)}),Array.prototype.at||(Array.prototype.at=function(e){var o=this.length,n=e<0?o+e:e;if(!(n<0||n>=o))return this[n]}),String.prototype.replaceAll||(String.prototype.replaceAll=function(e,o){return"string"==typeof e?this.split(e).join(o):this.replace(e,o)}),Promise.allSettled||(Promise.allSettled=function(e){return Promise.all(e.map(function(e){return Promise.resolve(e).then(function(e){return{status:"fulfilled",value:e}},function(e){return{status:"rejected",reason:e}})}))}),"undefined"==typeof globalThis&&(window.globalThis=window),console.log("[HTML] Line 122 - Essential polyfills loaded")}catch(e){console.error("[HTML] Line 125 - Polyfill error:",e)}window.__vite_is_modern_browser=!1,console.log("[HTML] Line 130 - Module polyfill set"),console.log("[HTML] Line 134 - Proxy setup DISABLED for debugging")}console.log("[HTML] Line 138 - iOS setup function completed"),"serviceWorker"in navigator&&e&&navigator.serviceWorker.getRegistrations().then(function(e){for(let o of e)o.unregister(),console.log("Service Worker unregistered for iOS")})}(),window.RUNTIME_CONFIG=window.RUNTIME_CONFIG||{},console.log("[HTML] Script block completed successfully")}catch(e){console.error("[HTML] FATAL ERROR in script block:",e),console.error("[HTML] Stack trace:",e.stack),document.body.innerHTML='<div style="padding: 20px; color: red;">Script error: '+e.message+"</div>"}</script><div id="root"><div id="initial-loading" style="padding:40px 20px;text-align:center;font-family:-apple-system,system-ui,sans-serif"><div style="margin-bottom:20px"><div style="width:40px;height:40px;border:3px solid #f3f3f3;border-top:3px solid #173a2c;border-radius:50%;margin:0 auto 20px;animation:spin 1s linear infinite"></div><style>@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}</style></div><p style="color:#666;font-size:16px;margin:0">Loading application...</p><p style="color:#999;font-size:12px;margin-top:8px">Please wait...</p><noscript><p style="color:red;margin-top:20px">JavaScript is required to run this application.</p></noscript></div></div><script>!function(){var e=(new Date).getTime();function t(){try{return window.self!==window.top}catch(e){return!0}}function o(){var e=window.location.pathname.match(/^\/f\/([^\/?#]+)/);return e?decodeURIComponent(e[1]):null}var n=["/f/","/store/","/card/","/q/","/n/","/pass/","/r/","/landing/","/rewards/","/loyalty/","/join/","/campaigns/","/order-confirmation/","/feedback"];var i="background:#173A2C;color:#fff;border:none;padding:10px 20px;border-radius:6px;cursor:pointer;font-size:14px;";function r(){var e=document.getElementById("initial-loading");e&&e.parentNode&&(t()||null!==o()?(e.innerHTML='<div style="max-width:420px;margin:0 auto;text-align:center;padding:8px 0;"><p style="color:#333;font-size:15px;line-height:1.6;margin:0 0 4px;">This form didn\'t load.</p><p style="color:#666;font-size:14px;line-height:1.6;margin:0 0 18px;">It may just be a slow connection. Please try again.</p><button onclick="location.reload()" style="'+i+'">Try again</button></div>',function(e){var n=o();if(n&&t()){var i="*";try{var r=window.location.search.match(/[?&]parentOrigin=([^&]+)/);r&&(i=decodeURIComponent(r[1]))}catch(e){}try{window.parent.postMessage({type:"caramel:frame:resize",formId:n,height:e},i),window.parent.postMessage({type:"caramel:form:load_failed",formId:n},i)}catch(e){}}}(180)):!function(){for(var e=window.location.pathname,t=0;t<n.length;t++)if(0===e.indexOf(n[t]))return!0;return!1}()?e.innerHTML='<div style="max-width:500px;margin:0 auto;text-align:left;"><h2 style="color:#d32f2f;margin-bottom:16px;">Unable to Load Application</h2><p style="color:#666;line-height:1.6;margin-bottom:16px;">The application failed to initialize. This could be due to:</p><ul style="color:#666;line-height:1.8;margin-bottom:20px;"><li>Browser cache showing old version</li><li>Network connectivity issues</li><li>Browser compatibility problems</li></ul><div style="margin-top:24px;"><button onclick="location.reload(true)" style="'+i+'margin-right:8px;">Hard Refresh</button><button onclick="window.location.href=\'/auth\'" style="background:#CDEA6C;color:#173A2C;border:none;padding:10px 20px;border-radius:6px;cursor:pointer;font-size:14px;">Go to Login</button></div><p style="color:#999;font-size:12px;margin-top:20px;padding-top:20px;border-top:1px solid #eee;">If the problem persists, try clearing your browser cache or using an incognito window.</p></div>':e.innerHTML='<div style="max-width:420px;margin:0 auto;text-align:center;"><h2 style="color:#173A2C;font-size:19px;margin:0 0 8px;">This page didn\'t load</h2><p style="color:#666;font-size:14px;line-height:1.6;margin:0 0 20px;">Something went wrong on the way here. Please try again — if it keeps happening, check back in a few minutes.</p><button onclick="location.reload()" style="'+i+'">Try again</button></div>')}setTimeout(function t(){if((o=document.getElementById("initial-loading"))&&o.parentNode){var o,n=(new Date).getTime()-e;"complete"!==document.readyState&&n<3e4?setTimeout(t,2e3):(console.warn("[HTML] React did not mount after "+n+"ms - showing error"),r())}},8e3)}()</script><script defer="defer" src="/assets/runtime.ad73179d.js"></script><script defer="defer" src="/assets/vendor-react.8965b113.js"></script><script defer="defer" src="/assets/vendor-supabase.4533998f.js"></script><script defer="defer" src="/assets/vendor-react-query.2505f004.js"></script><script defer="defer" src="/assets/vendor-posthog.c08e38b5.js"></script><script defer="defer" src="/assets/vendors.18386bad.js"></script><script defer="defer" src="/assets/main.0ea92837.js"></script></body></html>