{"id":1250,"date":"2026-04-05T14:43:04","date_gmt":"2026-04-05T19:43:04","guid":{"rendered":"https:\/\/driving-firefly-dev.10web.cloud\/contact\/"},"modified":"2026-05-21T22:31:27","modified_gmt":"2026-05-22T03:31:27","slug":"contact","status":"publish","type":"page","link":"https:\/\/aquaforge.ai\/en\/contact\/","title":{"rendered":"Contact"},"content":{"rendered":"\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f1622-o1\" lang=\"en-US\" dir=\"ltr\" data-wpcf7-id=\"1622\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/en\/wp-json\/wp\/v2\/pages\/1250#wpcf7-f1622-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"1622\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.6\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f1622-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<\/fieldset>\n<div class=\"af-form-grid\">\n\t<div class=\"af-form-row\">\n\t\t<p><label>Your Name *<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Your name\" value=\"\" type=\"text\" name=\"your-name\" \/><\/span><\/label>\n\t\t<\/p>\n\t<\/div>\n\t<div class=\"af-form-row\">\n\t\t<p><label>Email Address *<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"your@email.com\" value=\"\" type=\"email\" name=\"your-email\" \/><\/span><\/label>\n\t\t<\/p>\n\t<\/div>\n\t<div class=\"af-form-row\">\n\t\t<p><label>Company<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-company\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" aria-invalid=\"false\" placeholder=\"Company name\" value=\"\" type=\"text\" name=\"your-company\" \/><\/span><\/label>\n\t\t<\/p>\n\t<\/div>\n\t<div class=\"af-form-row\">\n\t\t<p><label>How can we help? *<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"purpose\"><select class=\"wpcf7-form-control wpcf7-select wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" name=\"purpose\"><option value=\"Demo Request\">Demo Request<\/option><option value=\"ROI Conversation\">ROI Conversation<\/option><option value=\"Partnership Inquiry\">Partnership Inquiry<\/option><option value=\"General Question\">General Question<\/option><\/select><\/span><\/label>\n\t\t<\/p>\n\t<\/div>\n\t<div class=\"af-form-row\">\n\t\t<p><label>Message<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-message\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea\" aria-invalid=\"false\" placeholder=\"Tell us about your needs...\" name=\"your-message\"><\/textarea><\/span><\/label>\n\t\t<\/p>\n\t<\/div>\n\t<div class=\"af-form-row af-turnstile\">\n<!-- Turnstile widget injected by cf7-turnstile.php -->\n\t<\/div>\n\t<div class=\"af-form-row\">\n\t\t<p><input class=\"wpcf7-form-control wpcf7-submit has-spinner af-btn af-btn-primary\" type=\"submit\" value=\"Send Message\" \/>\n\t\t<\/p>\n\t<\/div>\n<\/div><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n\n\n\n\n<style>\n\/* Hide the native CF7 form \u2014 we submit it silently in the background *\/\n.wpcf7-form { display: none !important; }\n\n.aq-wrap { max-width: 620px; margin: 0 auto; padding: 2.5rem 0 3rem; font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif; }\n.aq-eyebrow { font-size: 12px; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; color: #185FA5; margin: 0 0 0.6rem; }\n.aq-h1 { font-size: 28px; font-weight: 600; color: #1a1a1a; margin: 0 0 0.5rem; line-height: 1.25; }\n.aq-lead { font-size: 15px; color: #555; margin: 0 0 2.5rem; line-height: 1.65; }\n.aq-lead a { color: #185FA5; text-decoration: none; }\n.aq-lead a:hover { text-decoration: underline; }\n.aq-steps { display: flex; align-items: center; justify-content: center; margin-bottom: 1rem; }\n.aq-dot { width: 30px; height: 30px; border-radius: 50%; border: 1px solid #ccc; background: #fff; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 500; color: #888; transition: all 0.3s; position: relative; z-index: 1; }\n.aq-dot.active { background: #185FA5; border-color: #185FA5; color: #fff; }\n.aq-dot.done { background: #1D9E75; border-color: #1D9E75; color: #fff; }\n.aq-line { width: 72px; height: 1px; background: #ddd; transition: background 0.4s; }\n.aq-line.done { background: #1D9E75; }\n.aq-step-labels { display: flex; justify-content: center; margin-top: 6px; margin-bottom: 1.75rem; }\n.aq-sl { width: 30px; text-align: center; font-size: 11px; color: #888; }\n.aq-sp { width: 72px; }\n.aq-card { background: #fff; border: 1px solid #e5e5e5; border-radius: 12px; padding: 2rem 2.25rem; }\n.aq-slide { display: none; animation: aqIn 0.3s ease; }\n.aq-slide.active { display: block; }\n@keyframes aqIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }\n.aq-sh { font-size: 17px; font-weight: 600; color: #1a1a1a; margin: 0 0 0.2rem; }\n.aq-ss { font-size: 13px; color: #777; margin: 0 0 1.5rem; }\n.aq-field { margin-bottom: 1rem; }\n.aq-field label { display: block; font-size: 12px; color: #555; margin-bottom: 4px; font-weight: 500; }\n.aq-field input,\n.aq-field textarea {\n  width: 100%;\n  box-sizing: border-box;\n  border: 1px solid #ddd;\n  border-radius: 8px;\n  padding: 9px 12px;\n  font-size: 14px;\n  color: #1a1a1a;\n  background: #fff;\n  outline: none;\n  transition: border-color 0.2s;\n  font-family: inherit;\n}\n.aq-field input:focus,\n.aq-field textarea:focus { border-color: #185FA5; box-shadow: 0 0 0 3px rgba(24,95,165,0.1); }\n.aq-field textarea { min-height: 88px; resize: vertical; }\n.aq-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }\n.intent-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 2px; }\n.intent-btn { padding: 9px 12px; border: 1px solid #ddd; border-radius: 8px; background: #fff; font-size: 13px; color: #1a1a1a; cursor: pointer; display: flex; align-items: center; gap: 8px; transition: all 0.18s; text-align: left; font-family: inherit; }\n.intent-btn:hover { background: #f5f5f5; }\n.intent-btn.sel { border-color: #185FA5; background: #E6F1FB; color: #0C447C; }\n.urg-row { display: flex; gap: 8px; }\n.urg-opt { flex: 1; padding: 7px 0; text-align: center; border: 1px solid #ddd; border-radius: 8px; font-size: 13px; color: #555; cursor: pointer; transition: all 0.18s; font-family: inherit; background: #fff; }\n.urg-opt:hover { background: #f5f5f5; }\n.urg-opt.sel { border-color: #185FA5; background: #E6F1FB; color: #0C447C; font-weight: 500; }\n.aq-actions { display: flex; justify-content: space-between; align-items: center; margin-top: 1.75rem; }\n.btn-back { background: none; border: 1px solid #ddd; border-radius: 8px; padding: 8px 16px; font-size: 13px; color: #555; cursor: pointer; font-family: inherit; transition: background 0.18s; }\n.btn-back:hover { background: #f5f5f5; }\n.btn-fwd { background: #185FA5; border: none; border-radius: 8px; padding: 9px 20px; font-size: 13px; color: #fff; cursor: pointer; display: flex; align-items: center; gap: 6px; transition: background 0.18s; font-family: inherit; }\n.btn-fwd:hover { background: #0C447C; }\n.btn-fwd:disabled { background: #aaa; cursor: not-allowed; }\n\n\/* ---- REVIEW ROWS: keep label + value on one line ---- *\/\n.rev-row {\n  display: flex;\n  flex-wrap: nowrap;            \/* never wrap onto two lines *\/\n  align-items: baseline;\n  justify-content: space-between;\n  gap: 12px;\n  padding: 8px 0;\n  border-bottom: 1px solid #eee;\n  font-size: 13px;\n}\n.rev-row:last-child { border-bottom: none; }\n.rev-lbl { color: #777; white-space: nowrap; flex: 0 0 auto; }\n.rev-val {\n  color: #1a1a1a;\n  font-weight: 500;\n  text-align: right;\n  flex: 1 1 auto;\n  min-width: 0;                 \/* allow ellipsis inside a flex item *\/\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n\/* ---- PRIVACY CONSENT CHECKBOX ---- *\/\n.aq-consent {\n  display: flex;\n  align-items: flex-start;\n  gap: 10px;\n  margin-top: 1.25rem;\n  padding: 12px 14px;\n  background: #f8fafc;\n  border: 1px solid #e5e5e5;\n  border-radius: 8px;\n}\n.aq-consent input[type=\"checkbox\"] {\n  width: 16px;\n  height: 16px;\n  margin: 2px 0 0;\n  flex: 0 0 auto;\n  accent-color: #185FA5;\n  cursor: pointer;\n}\n.aq-consent label {\n  font-size: 12.5px;\n  color: #555;\n  line-height: 1.55;\n  cursor: pointer;\n  margin: 0;\n}\n.aq-consent a { color: #185FA5; text-decoration: none; font-weight: 500; }\n.aq-consent a:hover { text-decoration: underline; }\n.aq-consent.error { border-color: #c0392b; background: #fdf3f3; }\n\n.success-wrap { text-align: center; padding: 1rem 0; }\n.success-ico { width: 52px; height: 52px; border-radius: 50%; background: #E1F5EE; display: flex; align-items: center; justify-content: center; margin: 0 auto 1.25rem; font-size: 22px; color: #1D9E75; }\n.aq-divider { height: 1px; background: #eee; margin: 2rem 0 1.5rem; }\n.aq-direct { display: flex; align-items: center; gap: 8px; font-size: 14px; color: #555; }\n.aq-direct a { color: #185FA5; text-decoration: none; font-weight: 500; }\n.aq-direct a:hover { text-decoration: underline; }\n.aq-error-msg { font-size: 12px; color: #c0392b; margin-top: 6px; display: none; }\n\n\/* ---------------------------------------------------------------\n   RESPONSIVE\n--------------------------------------------------------------- *\/\n@media (max-width: 600px) {\n  .aq-wrap { padding: 1.75rem 0 2.25rem; }\n  .aq-h1 { font-size: 23px; }\n  .aq-lead { margin-bottom: 1.75rem; }\n  .aq-card { padding: 1.5rem 1.25rem; border-radius: 10px; }\n  .aq-line, .aq-sp { width: 48px; }\n}\n@media (max-width: 480px) {\n  .aq-row { grid-template-columns: 1fr; }\n  .intent-grid { grid-template-columns: 1fr; }\n  .rev-val { max-width: 60%; }   \/* keep room for label, still single line *\/\n  .aq-actions { gap: 10px; }\n  .btn-fwd, .btn-back { padding: 9px 14px; }\n}\n@media (max-width: 360px) {\n  .aq-line, .aq-sp { width: 34px; }\n}\n<\/style>\n\n<div class=\"aq-wrap\">\n  <p class=\"aq-eyebrow\">Contact AquaForge<\/p>\n  <h1 class=\"aq-h1\">AI-powered water treatment strategies, built for impact<\/h1>\n  <p class=\"aq-lead\">Request a demo, schedule an ROI conversation, or just say hello \u2014 we respond within 1 business day.<\/p>\n\n  <div class=\"aq-steps\">\n    <div class=\"aq-dot active\" id=\"aq-dot-1\">1<\/div>\n    <div class=\"aq-line\" id=\"aq-line-1\"><\/div>\n    <div class=\"aq-dot\" id=\"aq-dot-2\">2<\/div>\n    <div class=\"aq-line\" id=\"aq-line-2\"><\/div>\n    <div class=\"aq-dot\" id=\"aq-dot-3\">3<\/div>\n  <\/div>\n  <div class=\"aq-step-labels\">\n    <div class=\"aq-sl\">You<\/div>\n    <div class=\"aq-sp\"><\/div>\n    <div class=\"aq-sl\">Need<\/div>\n    <div class=\"aq-sp\"><\/div>\n    <div class=\"aq-sl\">Review<\/div>\n  <\/div>\n\n  <div class=\"aq-card\">\n\n    <!-- Step 1: Contact info -->\n    <div class=\"aq-slide active\" id=\"aq-slide-1\">\n      <p class=\"aq-sh\">Nice to meet you<\/p>\n      <p class=\"aq-ss\">Who should we reach back to?<\/p>\n      <div class=\"aq-row\">\n        <div class=\"aq-field\">\n          <label for=\"aq-fname\">First name<\/label>\n          <input type=\"text\" id=\"aq-fname\" placeholder=\"Ada\">\n        <\/div>\n        <div class=\"aq-field\">\n          <label for=\"aq-lname\">Last name<\/label>\n          <input type=\"text\" id=\"aq-lname\" placeholder=\"Lovelace\">\n        <\/div>\n      <\/div>\n      <div class=\"aq-field\">\n        <label for=\"aq-email\">Work email<\/label>\n        <input type=\"email\" id=\"aq-email\" placeholder=\"ada@utility.com\">\n        <p class=\"aq-error-msg\" id=\"aq-email-err\">Please enter a valid email address.<\/p>\n      <\/div>\n      <div class=\"aq-field\">\n        <label for=\"aq-org\">Organization<\/label>\n        <input type=\"text\" id=\"aq-org\" placeholder=\"City of Montreal Water Works\">\n      <\/div>\n      <div class=\"aq-field\">\n        <label for=\"aq-role\">Role <span style=\"font-size:11px;color:#999;\">(optional)<\/span><\/label>\n        <input type=\"text\" id=\"aq-role\" placeholder=\"e.g. Plant manager, Consultant, Engineer\">\n      <\/div>\n      <div class=\"aq-actions\">\n        <span><\/span>\n        <button class=\"btn-fwd\" onclick=\"aqGoTo(2)\">Next &#8594;<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Step 2: Intent & message -->\n    <div class=\"aq-slide\" id=\"aq-slide-2\">\n      <p class=\"aq-sh\">What brings you here?<\/p>\n      <p class=\"aq-ss\">Tell us about your project or question.<\/p>\n      <div class=\"aq-field\">\n        <label>I&#8217;d like to&hellip;<\/label>\n        <div class=\"intent-grid\">\n          <button class=\"intent-btn\" onclick=\"aqSelIntent(this,'Request a demo')\">&#128202; Request a demo<\/button>\n          <button class=\"intent-btn\" onclick=\"aqSelIntent(this,'Discuss ROI &amp; savings')\">&#128200; Discuss ROI &amp; savings<\/button>\n          <button class=\"intent-btn\" onclick=\"aqSelIntent(this,'Technical question')\">&#128295; Technical question<\/button>\n          <button class=\"intent-btn\" onclick=\"aqSelIntent(this,'Partnership')\">&#129309; Partnership<\/button>\n        <\/div>\n      <\/div>\n      <div class=\"aq-field\" style=\"margin-top:1rem;\">\n        <label for=\"aq-msg\">Tell us more<\/label>\n        <textarea id=\"aq-msg\" placeholder=\"Describe your water network, current challenges, or what you'd like to explore with AquaForge.\"><\/textarea>\n      <\/div>\n      <div class=\"aq-field\">\n        <label>Timeline<\/label>\n        <div class=\"urg-row\">\n          <div class=\"urg-opt\" onclick=\"aqSelUrg(this,'Just exploring')\">Just exploring<\/div>\n          <div class=\"urg-opt\" onclick=\"aqSelUrg(this,'Within 3 months')\">Within 3 months<\/div>\n          <div class=\"urg-opt\" onclick=\"aqSelUrg(this,'Urgent')\">Urgent<\/div>\n        <\/div>\n      <\/div>\n      <div class=\"aq-actions\">\n        <button class=\"btn-back\" onclick=\"aqGoTo(1)\">&#8592; Back<\/button>\n        <button class=\"btn-fwd\" onclick=\"aqGoTo(3)\">Review &#8594;<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Step 3: Review -->\n    <div class=\"aq-slide\" id=\"aq-slide-3\">\n      <p class=\"aq-sh\">Ready to send?<\/p>\n      <p class=\"aq-ss\">Double-check your details before we connect.<\/p>\n      <div id=\"aq-review-rows\"><\/div>\n\n      <!-- Mandatory privacy consent -->\n      <div class=\"aq-consent\" id=\"aq-consent-box\">\n        <input type=\"checkbox\" id=\"aq-privacy\" onchange=\"aqTogglePrivacy()\">\n        <label for=\"aq-privacy\">\n          I agree to the <a href=\"\/privacy-policy\" target=\"_blank\" rel=\"noopener\">Privacy Policy<\/a> and consent to AquaForge processing my information to respond to my enquiry. <span style=\"color:#c0392b;\">*<\/span>\n        <\/label>\n      <\/div>\n      <p class=\"aq-error-msg\" id=\"aq-privacy-err\">Please agree to the Privacy Policy to continue.<\/p>\n\n      <div class=\"aq-actions\">\n        <button class=\"btn-back\" onclick=\"aqGoTo(2)\">&#8592; Back<\/button>\n        <button class=\"btn-fwd\" id=\"aq-send-btn\" onclick=\"aqSubmit()\" disabled>&#9993; Send message<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Success screen -->\n    <div class=\"aq-slide\" id=\"aq-slide-done\">\n      <div class=\"success-wrap\">\n        <div class=\"success-ico\">&#10003;<\/div>\n        <p style=\"font-size:17px;font-weight:600;margin:0 0 0.4rem;color:#1a1a1a;\">Message received<\/p>\n        <p style=\"font-size:14px;color:#777;margin:0 0 1.5rem;\">We&#8217;ll be in touch at <span id=\"aq-confirm-email\" style=\"color:#1a1a1a;font-weight:600;\"><\/span> within 1 business day.<\/p>\n        <button class=\"btn-fwd\" style=\"margin:0 auto;\" onclick=\"aqReset()\">&#8635; Send another message<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Error \/ fallback screen -->\n    <div class=\"aq-slide\" id=\"aq-slide-err\">\n      <div class=\"success-wrap\">\n        <div class=\"success-ico\" style=\"background:#FCEBEB;color:#A32D2D;font-size:26px;\">&#33;<\/div>\n        <p style=\"font-size:17px;font-weight:600;margin:0 0 0.4rem;color:#1a1a1a;\">Something went wrong<\/p>\n        <p style=\"font-size:14px;color:#777;margin:0 0 1.5rem;\">Your message could not be sent. Please try again or reach us directly at <a href=\"mailto:info@aquaforge.ai\" style=\"color:#185FA5;\">info@aquaforge.ai<\/a>.<\/p>\n        <button class=\"btn-fwd\" style=\"margin:0 auto;\" onclick=\"aqGoTo(3)\">&#8592; Try again<\/button>\n      <\/div>\n    <\/div>\n\n  <\/div><!-- \/.aq-card -->\n\n  <div class=\"aq-divider\"><\/div>\n  <div class=\"aq-direct\">\n    &#9993; You can also reach us directly at <a href=\"mailto:info@aquaforge.ai\">info@aquaforge.ai<\/a>\n  <\/div>\n<\/div><!-- \/.aq-wrap -->\n\n<script>\n(function () {\n  var cur = 1, intent = '', urg = '';\n\n  \/* ---------------------------------------------------------------\n     STEP NAVIGATION\n  --------------------------------------------------------------- *\/\n  window.aqGoTo = function (n) {\n    if (n === 2) {\n      var email = document.getElementById('aq-email').value.trim();\n      var ok = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email);\n      document.getElementById('aq-email-err').style.display = ok ? 'none' : 'block';\n      if (!ok) return;\n    }\n    document.getElementById('aq-slide-' + cur).classList.remove('active');\n    cur = n;\n    document.getElementById('aq-slide-' + n).classList.add('active');\n    aqUpdateDots(n);\n    if (n === 3) { aqBuildReview(); aqTogglePrivacy(); }\n  };\n\n  window.aqUpdateDots = function (n) {\n    for (var i = 1; i <= 3; i++) {\n      var d = document.getElementById('aq-dot-' + i);\n      d.classList.remove('active', 'done');\n      if (i < n)       { d.classList.add('done');   d.textContent = '\\u2713'; }\n      else if (i === n) { d.classList.add('active'); d.textContent = i; }\n      else              { d.textContent = i; }\n      if (i < 3) {\n        var l = document.getElementById('aq-line-' + i);\n        if (i < n) l.classList.add('done'); else l.classList.remove('done');\n      }\n    }\n  };\n\n  \/* ---------------------------------------------------------------\n     SELECTORS\n  --------------------------------------------------------------- *\/\n  window.aqSelIntent = function (el, val) {\n    document.querySelectorAll('.intent-btn').forEach(function (b) { b.classList.remove('sel'); });\n    el.classList.add('sel'); intent = val;\n  };\n\n  window.aqSelUrg = function (el, val) {\n    document.querySelectorAll('.urg-opt').forEach(function (b) { b.classList.remove('sel'); });\n    el.classList.add('sel'); urg = val;\n  };\n\n  \/* ---------------------------------------------------------------\n     PRIVACY CONSENT \u2014 gates the Send button\n  --------------------------------------------------------------- *\/\n  window.aqTogglePrivacy = function () {\n    var checked = document.getElementById('aq-privacy').checked;\n    document.getElementById('aq-send-btn').disabled = !checked;\n    if (checked) {\n      document.getElementById('aq-consent-box').classList.remove('error');\n      document.getElementById('aq-privacy-err').style.display = 'none';\n    }\n  };\n\n  \/* ---------------------------------------------------------------\n     REVIEW BUILDER\n  --------------------------------------------------------------- *\/\n  window.aqBuildReview = function () {\n    var fn = document.getElementById('aq-fname').value || '\\u2014';\n    var ln = document.getElementById('aq-lname').value || '\\u2014';\n    var em = document.getElementById('aq-email').value  || '\\u2014';\n    var og = document.getElementById('aq-org').value;\n    var rl = document.getElementById('aq-role').value;\n    var ms = document.getElementById('aq-msg').value    || '\\u2014';\n    var rows = [\n      ['Name',         fn + ' ' + ln],\n      ['Email',        em],\n      og ? ['Organization', og] : null,\n      rl ? ['Role',    rl] : null,\n      ['Intent',       intent || '\\u2014'],\n      ['Timeline',     urg    || '\\u2014'],\n      ['Message',      ms.length > 90 ? ms.slice(0, 90) + '\\u2026' : ms],\n    ].filter(Boolean);\n    document.getElementById('aq-review-rows').innerHTML = rows.map(function (r) {\n      \/* title attribute lets users hover to see truncated values in full *\/\n      return '<div class=\"rev-row\"><span class=\"rev-lbl\">' + r[0] +\n             '<\/span><span class=\"rev-val\" title=\"' + String(r[1]).replace(\/\"\/g, '&quot;') + '\">' +\n             r[1] + '<\/span><\/div>';\n    }).join('');\n  };\n\n  \/* ---------------------------------------------------------------\n     CF7 FIELD MAP\n     These keys must match the field *names* in your CF7 form editor\n     (the name inside [text your-name], [email your-email], etc.).\n     Open Contact > AquaForge Contact and verify \u2014 update if needed.\n  --------------------------------------------------------------- *\/\n  var CF7_FIELD_MAP = {\n    'your-name': function () {\n      return (document.getElementById('aq-fname').value + ' ' +\n              document.getElementById('aq-lname').value).trim();\n    },\n    'your-email': function () {\n      return document.getElementById('aq-email').value;\n    },\n    'your-subject': function () {\n      return intent || 'General enquiry';\n    },\n    'your-message': function () {\n      var parts = [];\n      if (document.getElementById('aq-org').value)\n        parts.push('Organization: ' + document.getElementById('aq-org').value);\n      if (document.getElementById('aq-role').value)\n        parts.push('Role: '         + document.getElementById('aq-role').value);\n      if (urg)\n        parts.push('Timeline: '     + urg);\n      parts.push('Privacy policy: Agreed');\n      parts.push('');\n      parts.push(document.getElementById('aq-msg').value);\n      return parts.join('\\n');\n    },\n  };\n\n  \/* ---------------------------------------------------------------\n     SUBMIT \u2014 populates CF7 fields then fires CF7's own AJAX submit\n  --------------------------------------------------------------- *\/\n  window.aqSubmit = function () {\n    \/* Hard guard: privacy consent is mandatory *\/\n    if (!document.getElementById('aq-privacy').checked) {\n      document.getElementById('aq-consent-box').classList.add('error');\n      document.getElementById('aq-privacy-err').style.display = 'block';\n      return;\n    }\n\n    var btn = document.getElementById('aq-send-btn');\n    btn.disabled = true;\n    btn.textContent = 'Sending\\u2026';\n\n    var cf7Form = document.querySelector('.wpcf7-form');\n    if (!cf7Form) { aqShowError(); return; }\n\n    \/* Populate hidden CF7 inputs *\/\n    Object.keys(CF7_FIELD_MAP).forEach(function (name) {\n      var el = cf7Form.querySelector('[name=\"' + name + '\"]');\n      if (el) el.value = CF7_FIELD_MAP[name]();\n    });\n\n    \/* If the CF7 form itself has an acceptance checkbox, tick it too *\/\n    var cf7Accept = cf7Form.querySelector('.wpcf7-acceptance input[type=\"checkbox\"], [name^=\"acceptance\"]');\n    if (cf7Accept) cf7Accept.checked = true;\n\n    \/* Bind to CF7's custom DOM events *\/\n    var wpcf7El = cf7Form.closest('.wpcf7');\n    if (wpcf7El) {\n      wpcf7El.addEventListener('wpcf7mailsent',  function () { aqShowSuccess(); }, { once: true });\n      wpcf7El.addEventListener('wpcf7mailfailed', function () { aqShowError();   }, { once: true });\n      wpcf7El.addEventListener('wpcf7invalid',    function () { aqShowError();   }, { once: true });\n    }\n\n    \/* Trigger CF7's own submit button (preserves nonce, reCAPTCHA, etc.) *\/\n    var cf7Btn = cf7Form.querySelector('[type=\"submit\"]');\n    if (cf7Btn) {\n      cf7Btn.click();\n    } else {\n      cf7Form.dispatchEvent(new Event('submit', { bubbles: true, cancelable: true }));\n    }\n\n    \/* Safety timeout \u2014 10 s *\/\n    setTimeout(function () { if (cur !== 4) aqShowError(); }, 10000);\n  };\n\n  function aqShowSuccess() {\n    document.getElementById('aq-confirm-email').textContent =\n      document.getElementById('aq-email').value || 'you';\n    document.getElementById('aq-slide-3').classList.remove('active');\n    document.getElementById('aq-slide-done').classList.add('active');\n    for (var i = 1; i <= 3; i++) {\n      var d = document.getElementById('aq-dot-' + i);\n      d.classList.remove('active'); d.classList.add('done'); d.textContent = '\\u2713';\n      if (i < 3) document.getElementById('aq-line-' + i).classList.add('done');\n    }\n    cur = 4;\n  }\n\n  function aqShowError() {\n    var btn = document.getElementById('aq-send-btn');\n    btn.disabled = false;\n    btn.innerHTML = '&#9993; Send message';\n    document.getElementById('aq-slide-3').classList.remove('active');\n    document.getElementById('aq-slide-err').classList.add('active');\n    cur = 5;\n  }\n\n  \/* ---------------------------------------------------------------\n     RESET\n  --------------------------------------------------------------- *\/\n  window.aqReset = function () {\n    ['aq-fname','aq-lname','aq-email','aq-org','aq-role','aq-msg'].forEach(function (id) {\n      document.getElementById(id).value = '';\n    });\n    document.querySelectorAll('.intent-btn,.urg-opt').forEach(function (el) {\n      el.classList.remove('sel');\n    });\n    document.getElementById('aq-email-err').style.display = 'none';\n    document.getElementById('aq-privacy').checked = false;\n    document.getElementById('aq-consent-box').classList.remove('error');\n    document.getElementById('aq-privacy-err').style.display = 'none';\n    intent = ''; urg = '';\n    ['aq-slide-done','aq-slide-err'].forEach(function (id) {\n      document.getElementById(id).classList.remove('active');\n    });\n    var btn = document.getElementById('aq-send-btn');\n    btn.disabled = true; btn.innerHTML = '&#9993; Send message';\n    cur = 1;\n    document.getElementById('aq-slide-1').classList.add('active');\n    aqUpdateDots(1);\n  };\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Contact AquaForge AI-powered water treatment strategies, built for impact Request a demo, schedule an ROI conversation, or just say hello \u2014 we respond within 1 business day. 1 2 3 You Need Review Nice to meet you Who should we reach back to? First name Last name Work email Please enter a valid email address. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1250","page","type-page","status-publish","hentry"],"blocksy_meta":{"has_hero_section":"disabled","styles_descriptor":{"styles":{"desktop":"[data-prefix=\"single_page\"] [class*=\"ct-container\"] > article[class*=\"post\"] {--has-boxed:var(--false);--has-wide:var(--true);}","tablet":"","mobile":""},"google_fonts":[],"version":6},"content_style_source":"custom","vertical_spacing_source":"inherit"},"_links":{"self":[{"href":"https:\/\/aquaforge.ai\/en\/wp-json\/wp\/v2\/pages\/1250","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aquaforge.ai\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aquaforge.ai\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aquaforge.ai\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/aquaforge.ai\/en\/wp-json\/wp\/v2\/comments?post=1250"}],"version-history":[{"count":2,"href":"https:\/\/aquaforge.ai\/en\/wp-json\/wp\/v2\/pages\/1250\/revisions"}],"predecessor-version":[{"id":1856,"href":"https:\/\/aquaforge.ai\/en\/wp-json\/wp\/v2\/pages\/1250\/revisions\/1856"}],"wp:attachment":[{"href":"https:\/\/aquaforge.ai\/en\/wp-json\/wp\/v2\/media?parent=1250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}