{"id":895,"date":"2026-03-26T13:51:28","date_gmt":"2026-03-26T13:51:28","guid":{"rendered":"https:\/\/staging5.symphony-solution.com\/selfseawp\/?page_id=895"},"modified":"2026-04-17T10:09:12","modified_gmt":"2026-04-17T10:09:12","slug":"signup","status":"publish","type":"page","link":"https:\/\/staging5.symphony-solution.com\/selfseawp\/signup\/","title":{"rendered":"signup"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"895\" class=\"elementor elementor-895\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4af5273 e-con-full e-flex e-con e-parent\" data-id=\"4af5273\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-792ab0a e-con-full elementor-hidden-mobile e-flex e-con e-child\" data-id=\"792ab0a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-87f1773 e-con-full e-flex e-con e-child\" data-id=\"87f1773\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-049fba6 e-con-full e-flex e-con e-child\" data-id=\"049fba6\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-7cfacf9 e-con-full e-flex e-con e-child\" data-id=\"7cfacf9\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6463774 elementor-widget elementor-widget-heading\" data-id=\"6463774\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">sign up and join selfsea\u2019s community<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b9a8217 elementor-align-center elementor-widget__width-inherit auth_google_button elementor-widget elementor-widget-button\" data-id=\"b9a8217\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\"><g fill=\"none\" fill-rule=\"evenodd\"><path d=\"M17.6 9.2l-.1-1.8H9v3.4h4.8C13.6 12 13 13 12 13.6v2.2h3a8.8 8.8 0 0 0 2.6-6.6z\" fill=\"#4285F4\" fill-rule=\"nonzero\"><\/path><path d=\"M9 18c2.4 0 4.5-.8 6-2.2l-3-2.2a5.4 5.4 0 0 1-8-2.9H1V13a9 9 0 0 0 8 5z\" fill=\"#34A853\" fill-rule=\"nonzero\"><\/path><path d=\"M4 10.7a5.4 5.4 0 0 1 0-3.4V5H1a9 9 0 0 0 0 8l3-2.3z\" fill=\"#FBBC05\" fill-rule=\"nonzero\"><\/path><path d=\"M9 3.6c1.3 0 2.5.4 3.4 1.3L15 2.3A9 9 0 0 0 1 5l3 2.4a5.4 5.4 0 0 1 5-3.7z\" fill=\"#EA4335\" fill-rule=\"nonzero\"><\/path><path d=\"M0 0h18v18H0z\"><\/path><\/g><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Sign in with Google<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-786f2c9 elementor-widget-divider--view-line_text elementor-widget-divider--element-align-center elementor-widget elementor-widget-divider\" data-id=\"786f2c9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t\t<span class=\"elementor-divider__text elementor-divider__element\">\n\t\t\t\tor\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2c2b1d7 selfsea-signup-form elementor-widget elementor-widget-form\" data-id=\"2c2b1d7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"form.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cad305e elementor-widget elementor-widget-html\" data-id=\"cad305e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n\/* ===== Base error text ===== *\/\n.custom-field-error,\n.birth-row-error {\n  display: none;\n  color: #ef4b3f;\n  font-size: 14px;\n  line-height: 1.55;\n  margin-top: 8px;\n}\n\n\/* ===== Red border on error ===== *\/\n.elementor-field-group.has-error input,\n.elementor-field-group.has-error select,\n.elementor-field-group.has-error .elementor-field-textual {\n  border-color: #ef4b3f !important;\n}\n\n\/* ===== Keep field layout stable ===== *\/\n.elementor-form .elementor-field-group {\n  position: relative;\n}\n\n\/* Password field wrapper *\/\n.elementor-field-group-password {\n  position: relative !important;\n  padding-bottom: 0 !important;\n}\n\n\/* Password input *\/\n.elementor-field-group-password input {\n  padding-right: 48px !important;\n}\n\n\/* Password error message *\/\n.elementor-field-group-password .custom-field-error,\n.elementor-field-group-password .password-error {\n  display: block;\n  margin-top: 8px;\n}\n\n\/* Eye icon fixed to password input only *\/\n.elementor-field-group-password .toggle-password {\n  position: absolute !important;\n  right: 14px !important;\n  top: 30px !important;   \/* adjust 44-48 if needed *\/\n  transform: none !important;\n  z-index: 20 !important;\n  display: flex !important;\n  align-items: center;\n  justify-content: center;\n  line-height: 1 !important;\n  width: 20px;\n  height: 20px;\n  pointer-events: auto;\n}\n\n\n\n\/* Make icon image stable *\/\n.elementor-field-group-password .toggle-password img,\n.elementor-field-group-password .toggle-password svg {\n  display: block !important;\n  width: 18px;\n  height: 18px;\n}\n\n\/* ===== Birth month + year row ===== *\/\n.elementor-field-group-birth_month,\n.elementor-field-group-birth_year {\n  margin-bottom: 0 !important;\n}\n\n.birth-row-error-wrap {\n  width: 100%;\n  display: block;\n  clear: both;\n  margin-top: 8px;\n}\n\n.birth-row-error {\n  width: 100%;\n}\n\n\/* ===== Checkbox error spacing ===== *\/\n.elementor-field-group-agree_terms .custom-field-error {\n  margin-top: 8px;\n}\n\n\/* ===== Hidden state stays clean ===== *\/\n.custom-field-error:empty,\n.birth-row-error:empty {\n  display: none !important;\n}\n<\/style>\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  const form = document.querySelector(\".elementor-form\");\n  if (!form) return;\n\n  form.setAttribute(\"novalidate\", \"novalidate\");\n\n  const emailField = form.querySelector(\"[name='form_fields[email]']\");\n  const passwordField = form.querySelector(\"[name='form_fields[password]']\");\n  const monthField = form.querySelector(\"[name='form_fields[birth_month]']\");\n  const yearField = form.querySelector(\"[name='form_fields[birth_year]']\");\n  const submitBtn = form.querySelector(\"button[type='submit']\");\n\n  const emailGroup = form.querySelector(\".elementor-field-group-email\");\n  const passwordGroup = form.querySelector(\".elementor-field-group-password\");\n  const monthGroup = form.querySelector(\".elementor-field-group-birth_month\");\n  const yearGroup = form.querySelector(\".elementor-field-group-birth_year\");\n\n  const agreeField =\n    form.querySelector(\"[name='form_fields[agree_terms]']\") ||\n    form.querySelector(\"[name='form_fields[agree_terms][]']\");\n\n  const agreeGroup = agreeField ? agreeField.closest(\".elementor-field-group\") : null;\n\n  let hasSubmitted = false;\n\n  function ensureErrorEl(group, className) {\n    if (!group) return null;\n\n    let el = group.querySelector(\".\" + className);\n    if (!el) {\n      el = document.createElement(\"div\");\n      el.className = \"custom-field-error \" + className;\n      group.appendChild(el);\n    }\n    return el;\n  }\n\n  function ensureBirthRowError() {\n    if (!monthGroup || !yearGroup) return null;\n\n    let wrap = form.querySelector(\".birth-row-error-wrap\");\n    let el = form.querySelector(\".birth-row-error\");\n\n    if (!wrap) {\n      wrap = document.createElement(\"div\");\n      wrap.className = \"elementor-column elementor-col-100 birth-row-error-wrap\";\n      yearGroup.insertAdjacentElement(\"afterend\", wrap);\n    }\n\n    if (!el) {\n      el = document.createElement(\"div\");\n      el.className = \"birth-row-error\";\n      wrap.appendChild(el);\n    }\n\n    return el;\n  }\n\n  const emailError = ensureErrorEl(emailGroup, \"email-error\");\n  const passwordError = ensureErrorEl(passwordGroup, \"password-error\");\n  const agreeError = ensureErrorEl(agreeGroup, \"agree-error\");\n  const birthRowError = ensureBirthRowError();\n\n  function showError(group, errorEl, message) {\n    if (group) group.classList.add(\"has-error\");\n    if (errorEl) {\n      errorEl.textContent = message;\n      errorEl.style.display = \"block\";\n    }\n  }\n\n  function hideError(group, errorEl) {\n    if (group) group.classList.remove(\"has-error\");\n    if (errorEl) {\n      errorEl.textContent = \"\";\n      errorEl.style.display = \"none\";\n    }\n  }\n\n  function showBirthRowError(message) {\n    if (monthGroup) monthGroup.classList.add(\"has-error\");\n    if (yearGroup) yearGroup.classList.add(\"has-error\");\n    if (birthRowError) {\n      birthRowError.textContent = message;\n      birthRowError.style.display = \"block\";\n    }\n  }\n\n  function hideBirthRowError() {\n    if (monthGroup) monthGroup.classList.remove(\"has-error\");\n    if (yearGroup) yearGroup.classList.remove(\"has-error\");\n    if (birthRowError) {\n      birthRowError.textContent = \"\";\n      birthRowError.style.display = \"none\";\n    }\n  }\n\n  function clearErrors() {\n    hideError(emailGroup, emailError);\n    hideError(passwordGroup, passwordError);\n    hideError(agreeGroup, agreeError);\n    hideBirthRowError();\n  }\n\n  function isValidEmail(email) {\n    return \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email);\n  }\n\n  function getAge() {\n    const month = parseInt((monthField?.value || \"\").trim(), 10);\n    const year = parseInt((yearField?.value || \"\").trim(), 10);\n\n    if (!month || !year) return null;\n\n    const today = new Date();\n    let age = today.getFullYear() - year;\n    const monthDiff = (today.getMonth() + 1) - month;\n\n    if (monthDiff < 0) age--;\n    return age;\n  }\n\n  function validateForm(showErrors) {\n    let valid = true;\n\n    clearErrors();\n\n    const emailVal = emailField ? emailField.value.trim() : \"\";\n    const passwordVal = passwordField ? passwordField.value.trim() : \"\";\n    const monthVal = monthField ? monthField.value.trim() : \"\";\n    const yearVal = yearField ? yearField.value.trim() : \"\";\n    const agreeVal = agreeField ? agreeField.checked : false;\n\n    if (!emailVal) {\n      valid = false;\n      if (showErrors) showError(emailGroup, emailError, \"Email is required.\");\n    } else if (!isValidEmail(emailVal)) {\n      valid = false;\n      if (showErrors) showError(emailGroup, emailError, \"Please enter a valid email address.\");\n    }\n\n    if (!passwordVal) {\n      valid = false;\n      if (showErrors) showError(passwordGroup, passwordError, \"Password is required.\");\n    }\n\n    if (!monthVal || !yearVal) {\n      valid = false;\n      if (showErrors) {\n        showBirthRowError(\"Please select your birth month and birth year.\");\n      }\n    } else {\n      const age = getAge();\n      if (age !== null && age < 13) {\n        valid = false;\n        if (showErrors) {\n          showBirthRowError(\"Since you're under 13, you can't create a login, but you are still welcome to check out the many resources available on selfsea.\");\n        }\n      }\n    }\n\n    if (agreeField && !agreeVal) {\n      valid = false;\n      if (showErrors) showError(agreeGroup, agreeError, \"Please accept terms.\");\n    }\n\n    return valid;\n  }\n\n  function liveValidate() {\n    if (hasSubmitted) validateForm(true);\n  }\n\n  if (emailField) emailField.addEventListener(\"input\", liveValidate);\n  if (passwordField) passwordField.addEventListener(\"input\", liveValidate);\n  if (monthField) monthField.addEventListener(\"change\", liveValidate);\n  if (yearField) yearField.addEventListener(\"change\", liveValidate);\n  if (agreeField) agreeField.addEventListener(\"change\", liveValidate);\n\n  if (submitBtn) {\n    submitBtn.addEventListener(\"click\", function (e) {\n      hasSubmitted = true;\n      const isValid = validateForm(true);\n\n      if (!isValid) {\n        e.preventDefault();\n        e.stopPropagation();\n      }\n    });\n  }\n\n\/\/   form.addEventListener(\"submit\", function (e) {\n\/\/     hasSubmitted = true;\n\/\/     const isValid = validateForm(true);\n\n\/\/     if (!isValid) {\n\/\/       e.preventDefault();\n\/\/       e.stopPropagation();\n\/\/     }\n\/\/   });\n\n    form.addEventListener(\"submit\", function (e) {\n  const isValid = validateForm();\n\n  if (!isValid) {\n    e.preventDefault();\n    e.stopPropagation();\n  } else {\n    \/\/ \u2705 PHIR REDIRECT\n    setTimeout(function () {\n      window.location.href = \"\/selfseawp\/verify-email-signup\/\";\n    }, 1000);\n  }\n});\n});\n\n\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-239d949 e-con-full e-flex e-con e-child\" data-id=\"239d949\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-10a6560 e-con-full e-flex e-con e-child\" data-id=\"10a6560\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-096a1dc elementor-widget elementor-widget-text-editor\" data-id=\"096a1dc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>don\u2019t have an account yet?<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-78f7130 elementor-widget elementor-widget-button\" data-id=\"78f7130\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/staging5.symphony-solution.com\/selfseawp\/login\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">log in<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7007df2 e-con-full elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex e-con e-child\" data-id=\"7007df2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"likebtn_container\" style=\"\"><!-- LikeBtn.com BEGIN --><span class=\"likebtn-wrapper\"  data-identifier=\"page_895\"  data-site_id=\"69cae70cfa8fdf484b53ce90\"  data-style=\"\"  data-unlike_allowed=\"\"  data-show_copyright=\"\"  data-item_url=\"https:\/\/staging5.symphony-solution.com\/selfseawp\/signup\/\"  data-item_title=\"signup\"  data-item_date=\"2026-03-26T13:51:28+00:00\"  data-engine=\"WordPress\"  data-plugin_v=\"2.6.59\"  data-prx=\"https:\/\/staging5.symphony-solution.com\/selfseawp\/wp-admin\/admin-ajax.php?action=likebtn_prx\"  data-event_handler=\"likebtn_eh\" ><\/span><!-- LikeBtn.com END --><\/div>","protected":false},"excerpt":{"rendered":"<p>sign up and join selfsea\u2019s community Sign in with Google or don\u2019t have an account yet? log in<\/p>\n<div class=\"likebtn_container\" style=\"\"><!-- LikeBtn.com BEGIN --><span class=\"likebtn-wrapper\"  data-identifier=\"page_895\"  data-site_id=\"69cae70cfa8fdf484b53ce90\"  data-style=\"\"  data-unlike_allowed=\"\"  data-show_copyright=\"\"  data-item_url=\"https:\/\/staging5.symphony-solution.com\/selfseawp\/signup\/\"  data-item_title=\"signup\"  data-item_date=\"2026-03-26T13:51:28+00:00\"  data-engine=\"WordPress\"  data-plugin_v=\"2.6.59\"  data-prx=\"https:\/\/staging5.symphony-solution.com\/selfseawp\/wp-admin\/admin-ajax.php?action=likebtn_prx\"  data-event_handler=\"likebtn_eh\" ><\/span><!-- LikeBtn.com END --><\/div>","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_angie_page":false,"footnotes":""},"class_list":["post-895","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/staging5.symphony-solution.com\/selfseawp\/wp-json\/wp\/v2\/pages\/895","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/staging5.symphony-solution.com\/selfseawp\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/staging5.symphony-solution.com\/selfseawp\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/staging5.symphony-solution.com\/selfseawp\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/staging5.symphony-solution.com\/selfseawp\/wp-json\/wp\/v2\/comments?post=895"}],"version-history":[{"count":178,"href":"https:\/\/staging5.symphony-solution.com\/selfseawp\/wp-json\/wp\/v2\/pages\/895\/revisions"}],"predecessor-version":[{"id":6419,"href":"https:\/\/staging5.symphony-solution.com\/selfseawp\/wp-json\/wp\/v2\/pages\/895\/revisions\/6419"}],"wp:attachment":[{"href":"https:\/\/staging5.symphony-solution.com\/selfseawp\/wp-json\/wp\/v2\/media?parent=895"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}