{"id":3016,"date":"2025-12-31T16:42:16","date_gmt":"2025-12-31T16:42:16","guid":{"rendered":"https:\/\/www.cconnectgh.org\/?page_id=3016"},"modified":"2025-12-31T17:04:36","modified_gmt":"2025-12-31T17:04:36","slug":"delete-account","status":"publish","type":"page","link":"https:\/\/www.cconnectgh.org\/?page_id=3016","title":{"rendered":"delete-account"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3016\" class=\"elementor elementor-3016\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cd1b896 e-flex e-con-boxed e-con e-parent\" data-id=\"cd1b896\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a145c8c elementor-widget elementor-widget-shortcode\" data-id=\"a145c8c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">        <style>\r\n          :root{\r\n            --cc-bg:#0b0f14;\r\n            --cc-surface:#101824;\r\n            --cc-surface2:#0f1722;\r\n            --cc-border:rgba(255,255,255,.10);\r\n            --cc-text:rgba(255,255,255,.92);\r\n            --cc-muted:rgba(255,255,255,.70);\r\n            --cc-muted2:rgba(255,255,255,.55);\r\n            --cc-focus:rgba(255,255,255,.18);\r\n\r\n            --cc-primary:#22c55e;    \/* green *\/\r\n            --cc-danger:#ef4444;     \/* red   *\/\r\n            --cc-neutral:#334155;    \/* slate *\/\r\n          }\r\n\r\n          .ccdel-wrap{max-width:720px;margin:28px auto;padding:0 14px;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial}\r\n          .ccdel-card{\r\n            background:linear-gradient(180deg,var(--cc-surface),var(--cc-surface2));\r\n            border:1px solid var(--cc-border);\r\n            border-radius:18px;\r\n            box-shadow:0 18px 50px rgba(0,0,0,.35);\r\n            overflow:hidden;\r\n          }\r\n          .ccdel-head{padding:18px 18px 12px;border-bottom:1px solid var(--cc-border)}\r\n          .ccdel-title{margin:0;font-size:20px;font-weight:900;color:var(--cc-text)}\r\n          .ccdel-sub{margin:8px 0 0;color:var(--cc-muted);font-size:14px;line-height:1.45}\r\n\r\n          .ccdel-body{padding:18px}\r\n          .ccdel-msg{margin:0 0 14px}\r\n          .ccdel-msg .box{padding:10px 12px;border-radius:14px;border:1px solid var(--cc-border);font-size:14px}\r\n          .ccdel-msg .ok{background:rgba(34,197,94,.10);border-color:rgba(34,197,94,.28);color:rgba(235,255,243,.92)}\r\n          .ccdel-msg .err{background:rgba(239,68,68,.10);border-color:rgba(239,68,68,.28);color:rgba(255,235,235,.92)}\r\n\r\n          .ccdel-grid{\r\n            display:grid;\r\n            grid-template-columns:1fr 1fr;\r\n            gap:14px;\r\n          }\r\n          @media (max-width: 640px){\r\n            .ccdel-grid{grid-template-columns:1fr;}\r\n          }\r\n\r\n          .ccdel-panel{\r\n            border:1px solid var(--cc-border);\r\n            border-radius:16px;\r\n            padding:14px;\r\n            background:rgba(255,255,255,.03);\r\n          }\r\n          .ccdel-panel h4{\r\n            margin:0 0 8px;\r\n            font-size:15px;\r\n            font-weight:900;\r\n            color:var(--cc-text);\r\n          }\r\n          .ccdel-panel p{\r\n            margin:0 0 12px;\r\n            color:var(--cc-muted2);\r\n            font-size:13px;\r\n            line-height:1.45;\r\n          }\r\n\r\n          .ccdel-field{margin:0 0 12px}\r\n          .ccdel-label{display:block;margin:0 0 6px;color:var(--cc-muted);font-size:13px;font-weight:800}\r\n          .ccdel-input{\r\n            width:100%;\r\n            padding:12px 12px;\r\n            border-radius:12px;\r\n            border:1px solid var(--cc-border);\r\n            background:rgba(0,0,0,.18);\r\n            color:var(--cc-text);\r\n            outline:none;\r\n            font-size:15px;\r\n          }\r\n          .ccdel-input:focus{\r\n            border-color:rgba(255,255,255,.22);\r\n            box-shadow:0 0 0 4px rgba(34,197,94,.12);\r\n          }\r\n\r\n          .ccdel-actions{\r\n            display:flex;\r\n            gap:10px;\r\n            flex-wrap:wrap;\r\n          }\r\n          .ccdel-actions .ccdel-btn{\r\n            flex:1 1 180px;\r\n            min-width:180px;\r\n          }\r\n          @media (max-width: 420px){\r\n            .ccdel-actions .ccdel-btn{min-width:100%;}\r\n          }\r\n\r\n          .ccdel-btn{\r\n            appearance:none;\r\n            border:0;\r\n            border-radius:12px;\r\n            padding:12px 14px;\r\n            font-weight:900;\r\n            cursor:pointer;\r\n            width:100%;\r\n          }\r\n          .ccdel-btn:disabled{opacity:.65;cursor:not-allowed}\r\n          .ccdel-primary{background:var(--cc-primary);color:#04210f}\r\n          .ccdel-danger{background:var(--cc-danger);color:#2a0606}\r\n          .ccdel-neutral{background:rgba(255,255,255,.08);color:var(--cc-text);border:1px solid var(--cc-border)}\r\n          .ccdel-foot{\r\n            margin-top:14px;\r\n            padding-top:12px;\r\n            border-top:1px solid var(--cc-border);\r\n            color:var(--cc-muted2);\r\n            font-size:12px;\r\n            line-height:1.4;\r\n          }\r\n\r\n          \/* Ensure WP themes don't force weird button\/input sizes *\/\r\n          .ccdel-wrap input, .ccdel-wrap button { box-sizing: border-box; }\r\n        <\/style>\r\n\r\n        <div class=\"ccdel-wrap\">\r\n          <div class=\"ccdel-card\">\r\n            <div class=\"ccdel-head\">\r\n              <h3 class=\"ccdel-title\">Delete your CConnectGH account<\/h3>\r\n              <p class=\"ccdel-sub\">\r\n                Request a deletion token by email, then confirm with the token.\r\n                Your profile\/contact information will be deleted. Community reports may remain visible but will no longer be linked to you.\r\n              <\/p>\r\n            <\/div>\r\n\r\n            <div class=\"ccdel-body\">\r\n              <div id=\"ccdel-msg\" class=\"ccdel-msg\"><\/div>\r\n\r\n              <div class=\"ccdel-grid\">\r\n                <!-- Step 1 -->\r\n                <div class=\"ccdel-panel\">\r\n                  <h4>Step 1 \u2014 Request token<\/h4>\r\n                  <p>Enter the email for your account. We\u2019ll send a 6-digit token (expires in 30 minutes).<\/p>\r\n\r\n                  <div class=\"ccdel-field\">\r\n                    <label class=\"ccdel-label\" for=\"ccdel-email\">Email<\/label>\r\n                    <input class=\"ccdel-input\" id=\"ccdel-email\" type=\"email\" autocomplete=\"email\" placeholder=\"you@example.com\" required>\r\n                  <\/div>\r\n\r\n                  <div class=\"ccdel-actions\">\r\n                    <button type=\"button\" id=\"ccdel-request\" class=\"ccdel-btn ccdel-primary\">Request deletion token<\/button>\r\n                    <button type=\"button\" id=\"ccdel-clear\" class=\"ccdel-btn ccdel-neutral\">Clear<\/button>\r\n                  <\/div>\r\n\r\n                  <div class=\"ccdel-foot\">\r\n                    If you don\u2019t see the email, check Spam\/Promotions.\r\n                  <\/div>\r\n                <\/div>\r\n\r\n                <!-- Step 2 -->\r\n                <div class=\"ccdel-panel\">\r\n                  <h4>Step 2 \u2014 Confirm deletion<\/h4>\r\n                  <p>Enter the token from your email to confirm deletion.<\/p>\r\n\r\n                  <div class=\"ccdel-field\">\r\n                    <label class=\"ccdel-label\" for=\"ccdel-token\">Token<\/label>\r\n                    <input class=\"ccdel-input\" id=\"ccdel-token\" type=\"text\" inputmode=\"numeric\" autocomplete=\"one-time-code\" placeholder=\"6-digit token\">\r\n                  <\/div>\r\n\r\n                  <div class=\"ccdel-field\">\r\n                    <label class=\"ccdel-label\" for=\"ccdel-reason\">Reason (optional)<\/label>\r\n                    <input class=\"ccdel-input\" id=\"ccdel-reason\" type=\"text\" placeholder=\"Tell us why (optional)\">\r\n                  <\/div>\r\n\r\n                  <button type=\"button\" id=\"ccdel-confirm\" class=\"ccdel-btn ccdel-danger\">Confirm deletion<\/button>\r\n\r\n                  <div class=\"ccdel-foot\">\r\n                    If you no longer have access to the email, contact support.\r\n                  <\/div>\r\n                <\/div>\r\n              <\/div>\r\n\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <script>\r\n        (function(){\r\n          const API_BASE = \"https:\\\/\\\/api.cconnectgh.org\\\/\";\r\n\r\n          const elMsg = document.getElementById('ccdel-msg');\r\n          const elEmail = document.getElementById('ccdel-email');\r\n          const elToken = document.getElementById('ccdel-token');\r\n          const elReason = document.getElementById('ccdel-reason');\r\n\r\n          const btnRequest = document.getElementById('ccdel-request');\r\n          const btnConfirm = document.getElementById('ccdel-confirm');\r\n          const btnClear   = document.getElementById('ccdel-clear');\r\n\r\n          function setMsg(type, text){\r\n            elMsg.innerHTML = '<div class=\"box '+type+'\">'+text+'<\/div>';\r\n          }\r\n          function clearMsg(){ elMsg.innerHTML = ''; }\r\n\r\n          function setBusy(btn, busy){\r\n            btn.disabled = !!busy;\r\n          }\r\n\r\n          async function postJson(path, payload){\r\n            const res = await fetch(API_BASE + path.replace(\/^\\\/\/,''), {\r\n              method: 'POST',\r\n              headers: { 'Content-Type': 'application\/json' },\r\n              body: JSON.stringify(payload || {})\r\n            });\r\n\r\n            let data = null;\r\n            try { data = await res.json(); } catch(e) {}\r\n\r\n            if(!res.ok){\r\n              const detail = (data && (data.detail || data.message)) ? (data.detail || data.message) : ('HTTP ' + res.status);\r\n              throw new Error(detail);\r\n            }\r\n            return data;\r\n          }\r\n\r\n          btnRequest.addEventListener('click', async function(){\r\n            clearMsg();\r\n            const email = (elEmail.value || '').trim().toLowerCase();\r\n            if(!email){\r\n              setMsg('err', 'Please enter your email.');\r\n              return;\r\n            }\r\n\r\n            setBusy(btnRequest, true);\r\n            try{\r\n              await postJson('\/account\/request-delete', { email });\r\n              setMsg('ok', 'If an account exists for that email, a deletion token has been sent. Check your email.');\r\n              elToken.focus();\r\n            }catch(e){\r\n              console.error(e);\r\n              setMsg('err', 'Could not send token. Please try again.');\r\n            }finally{\r\n              setBusy(btnRequest, false);\r\n            }\r\n          });\r\n\r\n          btnConfirm.addEventListener('click', async function(){\r\n            clearMsg();\r\n            const email = (elEmail.value || '').trim().toLowerCase();\r\n            const token = (elToken.value || '').trim();\r\n            const reason = (elReason.value || '').trim();\r\n\r\n            if(!email){\r\n              setMsg('err', 'Please enter your email.');\r\n              return;\r\n            }\r\n            if(!token){\r\n              setMsg('err', 'Please enter the token from your email.');\r\n              return;\r\n            }\r\n\r\n            setBusy(btnConfirm, true);\r\n            try{\r\n              await postJson('\/account\/confirm-delete', { email, token, reason: reason || null });\r\n              setMsg('ok', 'Deletion confirmed. If the token was valid, your account deletion is now processed.');\r\n            }catch(e){\r\n              console.error(e);\r\n              setMsg('err', 'Could not confirm deletion. Please check the token and try again.');\r\n            }finally{\r\n              setBusy(btnConfirm, false);\r\n            }\r\n          });\r\n\r\n          btnClear.addEventListener('click', function(){\r\n            elEmail.value = '';\r\n            elToken.value = '';\r\n            elReason.value = '';\r\n            clearMsg();\r\n            elEmail.focus();\r\n          });\r\n        })();\r\n        <\/script>\r\n        <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3016","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/pages\/3016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3016"}],"version-history":[{"count":7,"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/pages\/3016\/revisions"}],"predecessor-version":[{"id":3023,"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/pages\/3016\/revisions\/3023"}],"wp:attachment":[{"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}