{"roots":["0:3"],"nodeById":{"0:3":{"type":"WEBPAGE","id":"0:3","name":"/","absoluteBoundingBox":{"x":0.0,"y":0.0,"width":1408.0,"height":1244.0},"isolatedAbsoluteRenderBounds":{"x":0.0,"y":0.0,"width":1408.0,"height":1244.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,0.0]],"size":{"x":1408.0,"y":1244.0},"fills":[{"opacity":0.0470588244497776,"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true}],"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"children":["0:4"]},"0:4":{"type":"FRAME","id":"0:4","name":"Desktop","absoluteBoundingBox":{"x":64.0,"y":100.0,"width":1280.0,"height":1080.0},"isolatedAbsoluteRenderBounds":{"x":64.0,"y":100.0,"width":1280.0,"height":1080.0},"relativeTransform":[[1.0,0.0,64.0],[0.0,1.0,100.0]],"size":{"x":1280.0,"y":1080.0},"fills":[{"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true,"opacity":1.0}],"strokeAlign":"INSIDE","strokes":[],"effects":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"clipsContent":true,"overflowDirection":"VERTICAL_SCROLLING","layoutMode":"VERTICAL","counterAxisSizingMode":"FIXED","isBreakpointFrame":true,"children":["0:7"]},"0:7":{"type":"CODE_INSTANCE","id":"0:7","name":"App","absoluteBoundingBox":{"x":64.0,"y":100.0,"width":1280.0,"height":1080.0},"isolatedAbsoluteRenderBounds":{"x":64.0,"y":100.0,"width":1280.0,"height":1080.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,0.0]],"size":{"x":1280.0,"y":1080.0},"fills":[],"strokeAlign":"INSIDE","layoutAlign":"STRETCH","layoutGrow":1.0,"strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"codeExportName":"Code0_8.default","componentProperties":{}}},"assetIdToGuid":{},"guidToUrl":{"0:3":"/"},"fonts":{},"assets":{"164abd9d9155d5da5b7e8de1a2b2de507b32938b":{"type":"GENERATED_ASSET","url":"164abd9d9155d5da5b7e8de1a2b2de507b32938b.png","size":{"x":1200.0,"y":630.0},"offsets":{"top":{"value":0,"unit":"PIXELS"},"right":{"value":0,"unit":"PIXELS"},"bottom":{"value":0,"unit":"PIXELS"},"left":{"value":0,"unit":"PIXELS"}},"format":"PNG"},"1588aef1a22da91cd953eb9da82b9add9bb27946":{"type":"GENERATED_ASSET","url":"1588aef1a22da91cd953eb9da82b9add9bb27946.png","size":{"x":48.0,"y":48.0},"offsets":{"top":{"value":0,"unit":"PIXELS"},"right":{"value":0,"unit":"PIXELS"},"bottom":{"value":0,"unit":"PIXELS"},"left":{"value":0,"unit":"PIXELS"}},"format":"PNG"}},"stablePathToAssetInfo":{"133:6":{"hash":"164abd9d9155d5da5b7e8de1a2b2de507b32938b"},"131:3":{"hash":"1588aef1a22da91cd953eb9da82b9add9bb27946"}},"animateRootIds":[],"siteSettings":{"title":"Simply Nonno's | Restaurant-Born Creamy Pesto","description":"Born inside Nonno's Italian Restaurant in Central Florida, Simply Nonno's Creamy Basil Pesto is packed with basil, garlic, cheese, pine nuts, and bold flavor. Restaurant-made. Jar-raised. Fix your food.","scalingMode":"REFLOW","lang":"en","googleAnalyticsID":"G-CN3ZX7PFCD","customCodeHeadStart":"<meta name=\"google-site-verification\" content=\"Vxe7UFLZIUbwgH_7G3c6aFV9Ke8gGTfeVozk_Z_rq9Q\" />\n<link rel=\"canonical\" href=\"https://www.simplynonnossauces.com/\" />\n<meta property=\"og:image:alt\" content=\"Nonno Approved — Simply Nonno's Restaurant-Born Creamy Pesto\" />","customCodeBodyEnd":"<script>\nconst SUPABASE_URL = 'https://rujkxwpfhfohcroxctut.supabase.co';\nconst SUPABASE_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJ1amt4d3BmaGZvaGNyb3hjdHV0Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3ODE0NzIxNDksImV4cCI6MjA5NzA0ODE0OX0.0MGHYfXXbzssL_2C4vqUTdzJDTzMXmZkKitUS7mPU-I';\n\nasync function submitToSupabase(table, data) {\n  const res = await fetch(`${SUPABASE_URL}/rest/v1/${table}`, {\n    method: 'POST',\n    headers: {\n      'apikey': SUPABASE_KEY,\n      'Authorization': `Bearer ${SUPABASE_KEY}`,\n      'Content-Type': 'application/json',\n      'Prefer': 'return=minimal'\n    },\n    body: JSON.stringify(data)\n  });\n  return res.ok;\n}\n\nfunction showConfirmation(container, lines) {\n  container.innerHTML = `\n    <div style=\"padding: 2rem 1.5rem; text-align: left;\">\n      ${lines.map((line, i) => `\n        <p style=\"\n          margin: 0 0 ${i === lines.length - 1 ? '0' : '0.75rem'} 0;\n          font-size: ${i === 0 ? '20px' : '15px'};\n          font-weight: ${i === 0 ? '700' : '400'};\n          color: ${i === 0 ? '#c8a96e' : '#ffffff'};\n          line-height: 1.5;\n          letter-spacing: ${i === 0 ? '0.5px' : '0'};\n        \">${line}</p>\n      `).join('')}\n    </div>\n  `;\n}\n\ndocument.addEventListener('click', async function(e) {\n  const btn = e.target.closest('button, [role=\"button\"], a');\n  if (!btn) return;\n  const text = btn.textContent.trim().toUpperCase();\n\n  if (text.includes(\"I'M IN\") || text.includes('IM IN') || text.includes('SUBSCRIBE')) {\n    e.preventDefault();\n    const input = document.querySelector('input[type=\"email\"], input[placeholder*=\"email\" i]');\n    if (!input || !input.value) return;\n    btn.textContent = 'SENDING...';\n    const ok = await submitToSupabase('newsletter_signups', { email: input.value });\n    if (ok) {\n      const container = input.closest('form, section, div') || input.parentElement;\n      showConfirmation(container, [\n        \"You're on the list.\",\n        \"New products, new stores, and new ways to Fix Your Food are headed your way.\",\n        \"Check your inbox.\"\n      ]);\n    } else {\n      btn.textContent = 'TRY AGAIN';\n      setTimeout(() => btn.textContent = \"I'M IN\", 3000);\n    }\n  }\n\n  if (text.includes('SEND MESSAGE')) {\n    e.preventDefault();\n    const inputs = document.querySelectorAll('input, textarea');\n    const data = {};\n    inputs.forEach(i => {\n      const ph = (i.placeholder || '').toLowerCase();\n      if (ph.includes('who')) data.name = i.value;\n      if (ph.includes('reach') || ph.includes('email')) data.email = i.value;\n      if (ph.includes('inquiry')) data.inquiry_type = i.value;\n      if (ph.includes('mind') || i.tagName === 'TEXTAREA') data.message = i.value;\n    });\n    if (!data.email) return;\n    btn.textContent = 'SENDING...';\n    const ok = await submitToSupabase('contact_submissions', data);\n    if (ok) {\n      const container = btn.closest('form, section, div') || btn.parentElement;\n      showConfirmation(container, [\n        \"Message received.\",\n        \"A real human will get back to you soon.\",\n        \"No robots. No canned responses.\"\n      ]);\n    } else {\n      btn.textContent = 'TRY AGAIN';\n      setTimeout(() => btn.textContent = 'SEND MESSAGE →', 3000);\n    }\n  }\n});\n</script>","faviconFilename":"1588aef1a22da91cd953eb9da82b9add9bb27946.png","socialImageFilename":"164abd9d9155d5da5b7e8de1a2b2de507b32938b.png","labs":{"E5FBBA911B2B7A09E649D4BE6CDF8591EAEFC881":false}},"sourceCodeHash":"04a6b4778a9455818c756031cc36d0f944d762df"}