{"id":19,"date":"2026-04-12T12:59:35","date_gmt":"2026-04-12T12:59:35","guid":{"rendered":"http:\/\/192.168.0.11:8092\/register\/"},"modified":"2026-04-18T23:06:19","modified_gmt":"2026-04-18T23:06:19","slug":"register","status":"publish","type":"page","link":"https:\/\/store.hiddenhorizon.org\/nl\/register\/","title":{"rendered":"Account aanmaken"},"content":{"rendered":"    <div class=\"hs-register-wrap\">\n        <div class=\"hs-reg-plan-summary\" style=\"background:#f5f3ff;border:2px solid #4338ca;border-radius:14px;padding:18px 22px;margin-bottom:28px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;\">\n            <div>\n                <div style=\"font-size:.8em;color:#888;text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px;\">Selected Plan<\/div>\n                <div style=\"font-size:1.3em;font-weight:800;color:#4338ca\">Standard<\/div>\n                <div style=\"color:#666;font-size:.9em;\">250 GB storage<\/div>\n                            <\/div>\n            <a href=\"https:\/\/store.hiddenhorizon.org\/nl\/pricing\/\" style=\"font-size:.85em;color:#4338ca;\">Change plan &rarr;<\/a>\n        <\/div>\n\n        <form id=\"hs-reg-form\">\n            <input type=\"hidden\" id=\"hs_reg_nonce\" name=\"hs_reg_nonce\" value=\"28d99c18c1\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/nl\/wp-json\/wp\/v2\/pages\/19\" \/>            <input type=\"hidden\" name=\"plan\" value=\"standard\">\n\n            <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:16px;\">\n                <div class=\"hs-field\">\n                    <label for=\"hs-fname\">First name <span style=\"color:#ef4444;\">*<\/span><\/label>\n                    <input type=\"text\" id=\"hs-fname\" name=\"first_name\" placeholder=\"Jane\" autocomplete=\"given-name\" required>\n                <\/div>\n                <div class=\"hs-field\">\n                    <label for=\"hs-lname\">Last name <span style=\"color:#ef4444;\">*<\/span><\/label>\n                    <input type=\"text\" id=\"hs-lname\" name=\"last_name\" placeholder=\"Doe\" autocomplete=\"family-name\" required>\n                <\/div>\n            <\/div>\n\n            <div class=\"hs-field\">\n                <label for=\"hs-username\">Username <span style=\"color:#ef4444;\">*<\/span><\/label>\n                <input type=\"text\" id=\"hs-username\" name=\"username\" placeholder=\"e.g. jane_doe\" autocomplete=\"username\" required>\n                <div id=\"hs-username-status\" style=\"margin-top:4px;font-size:.82em;min-height:18px;\"><\/div>\n                <span class=\"hs-field-hint\">This will be your Hidden Horizon login. Letters, numbers and underscores only.<\/span>\n            <\/div>\n\n            <div class=\"hs-field\">\n                <label for=\"hs-email\">Email address <span style=\"color:#ef4444;\">*<\/span><\/label>\n                <input type=\"email\" id=\"hs-email\" name=\"email\" placeholder=\"jane@example.com\" autocomplete=\"email\" required>\n                <div id=\"hs-email-status\" style=\"margin-top:4px;font-size:.82em;min-height:18px;\"><\/div>\n            <\/div>\n\n            <div class=\"hs-field\">\n                <label for=\"hs-pass\">Password <span style=\"color:#ef4444;\">*<\/span><\/label>\n                <input type=\"password\" id=\"hs-pass\" name=\"password\" placeholder=\"Create a strong password\" autocomplete=\"new-password\" required>\n                <div class=\"cs-pw-wrap\">\n                    <div class=\"cs-pw-bar-track\"><div class=\"cs-pw-bar\" id=\"cs-pw-bar\"><\/div><\/div>\n                    <ul class=\"cs-pw-reqs\">\n                        <li id=\"cs-req-len\"  class=\"cs-req\">At least 8 characters<\/li>\n                        <li id=\"cs-req-up\"   class=\"cs-req\">At least one uppercase letter (A\u2013Z)<\/li>\n                        <li id=\"cs-req-num\"  class=\"cs-req\">At least one number (0\u20139)<\/li>\n                        <li id=\"cs-req-spec\" class=\"cs-req\">At least one special character (! @ # $ % &amp;)<\/li>\n                    <\/ul>\n                <\/div>\n            <\/div>\n\n            <div class=\"hs-field\">\n                <label style=\"display:flex;align-items:flex-start;gap:10px;font-size:.93em;color:#444;cursor:pointer;font-weight:400;\">\n                    <input type=\"checkbox\" name=\"hs_agree_tos\" id=\"hs-tos\" style=\"margin-top:3px;flex-shrink:0;\">\n                    <span>I have read and agree to the\n                        <a href=\"#\" onclick=\"hsOpenModal('privacy');return false;\" style=\"color:#4338ca;font-weight:600;\">Privacy Policy<\/a>,\n                        <a href=\"#\" onclick=\"hsOpenModal('tos');return false;\" style=\"color:#4338ca;font-weight:600;\">Terms of Service<\/a>,\n                        and <a href=\"#\" onclick=\"hsOpenModal('refund');return false;\" style=\"color:#4338ca;font-weight:600;\">Refund Policy<\/a>.\n                    <\/span>\n                <\/label>\n            <\/div>\n\n            <div id=\"hs-reg-error\" style=\"display:none;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:12px 16px;color:#b91c1c;margin-bottom:16px;font-size:.92em;\"><\/div>\n\n            <button type=\"submit\" id=\"hs-reg-btn\" class=\"plan-btn\" style=\"width:100%;margin-top:8px;\">\n                Continue to Payment &rarr;\n            <\/button>\n            <p style=\"text-align:center;font-size:.82em;color:#9ca3af;margin-top:12px;\">You&rsquo;ll be redirected to Stripe&rsquo;s secure payment page.<\/p>\n        <\/form>\n    <\/div>\n\n    <script>\n    document.getElementById('hs-reg-form').addEventListener('submit', async function(e) {\n        e.preventDefault();\n        var btn = document.getElementById('hs-reg-btn');\n        var err = document.getElementById('hs-reg-error');\n        var tos = document.getElementById('hs-tos');\n        err.style.display = 'none';\n        if (!tos.checked) {\n            err.textContent = 'You must agree to the Privacy Policy and Terms of Service.';\n            err.style.display = 'block';\n            return;\n        }\n        btn.textContent = 'Redirecting to payment\u2026';\n        btn.disabled = true;\n        var form = new FormData(this);\n        var body = {\n            plan:       form.get('plan'),\n            first_name: form.get('first_name'),\n            last_name:  form.get('last_name'),\n            username:   form.get('username'),\n            email:      form.get('email'),\n            password:   form.get('password')\n        };\n        try {\n            var res = await fetch('https:\/\/store.hiddenhorizon.org\/nl\/wp-json\/hs\/v1\/create-checkout', {\n                method: 'POST',\n                headers: { 'Content-Type': 'application\/json' },\n                body: JSON.stringify(body)\n            });\n            var data = await res.json();\n            if (data.url) {\n                window.location.href = data.url;\n            } else {\n                err.textContent = data.message || 'Something went wrong. Please try again.';\n                err.style.display = 'block';\n                btn.textContent = 'Continue to Payment \u2192';\n                btn.disabled = false;\n            }\n        } catch (ex) {\n            err.textContent = 'Network error. Please try again.';\n            err.style.display = 'block';\n            btn.textContent = 'Continue to Payment \u2192';\n            btn.disabled = false;\n        }\n    });\n    <\/script>\n\n    <script>\n    \/\/ Live email availability check\n    (function() {\n        var input    = document.getElementById('hs-email');\n        var status   = document.getElementById('hs-email-status');\n        var checkUrl = 'https:\/\/store.hiddenhorizon.org\/nl\/wp-json\/hs\/v1\/check-email';\n        var timer;\n        input.addEventListener('input', function() {\n            clearTimeout(timer);\n            var val = input.value.trim();\n            if (!val.includes('@')) { status.textContent = ''; return; }\n            status.style.color = '#888';\n            status.textContent = 'Checking\u2026';\n            timer = setTimeout(async function() {\n                try {\n                    var r = await fetch(checkUrl + '?email=' + encodeURIComponent(val));\n                    var d = await r.json();\n                    if (d.available) {\n                        status.style.color = '#16a34a';\n                        status.textContent = '\u2713 Email available';\n                    } else if (d.reason === 'taken') {\n                        status.style.color = '#dc2626';\n                        status.textContent = '\u2717 An account with that email already exists';\n                    } else {\n                        status.textContent = '';\n                    }\n                } catch(e) { status.textContent = ''; }\n            }, 500);\n        });\n    })();\n    <\/script>\n\n    <script>\n    \/\/ Live username availability check\n    (function() {\n        var input    = document.getElementById('hs-username');\n        var status   = document.getElementById('hs-username-status');\n        var checkUrl = 'https:\/\/store.hiddenhorizon.org\/nl\/wp-json\/hs\/v1\/check-username';\n        var timer;\n        input.addEventListener('input', function() {\n            clearTimeout(timer);\n            var val = input.value.trim();\n            if (val.length < 3) { status.textContent = ''; return; }\n            status.style.color = '#888';\n            status.textContent = 'Checking\u2026';\n            timer = setTimeout(async function() {\n                try {\n                    var r = await fetch(checkUrl + '?username=' + encodeURIComponent(val));\n                    var d = await r.json();\n                    if (d.available) {\n                        status.style.color = '#16a34a';\n                        status.textContent = '\u2713 Username available';\n                    } else {\n                        status.style.color = '#dc2626';\n                        status.textContent = '\u2717 Username already taken \u2014 please choose another';\n                    }\n                } catch(e) { status.textContent = ''; }\n            }, 500);\n        });\n    })();\n    <\/script>\n\n    <script>\n    (function() {\n        var pw   = document.getElementById('hs-pass');\n        if (!pw) return;\n        var bar  = document.getElementById('cs-pw-bar');\n        var rLen = document.getElementById('cs-req-len');\n        var rUp  = document.getElementById('cs-req-up');\n        var rNum = document.getElementById('cs-req-num');\n        var rSpc = document.getElementById('cs-req-spec');\n        function chk(el, ok) { el.classList.toggle('cs-met', ok); }\n        pw.addEventListener('input', function() {\n            var v    = pw.value;\n            var len  = v.length >= 8;\n            var up   = \/[A-Z]\/.test(v);\n            var num  = \/[0-9]\/.test(v);\n            var spec = \/[!@#$%^&*()\\-_=+\\[\\]{};':\"\\\\|,.<>\\\/?]\/.test(v);\n            chk(rLen, len); chk(rUp, up); chk(rNum, num); chk(rSpc, spec);\n            var score = [len, up, num, spec].filter(Boolean).length;\n            bar.style.width      = ['0%','25%','50%','75%','100%'][score];\n            bar.style.background = ['','#ef4444','#f97316','#eab308','#16a34a'][score];\n        });\n    })();\n    <\/script>\n\n    <style>\n    @import url('https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700;800&display=swap');\n    .hs-register-wrap { max-width: 480px; margin: 0 auto; font-family: 'Inter', system-ui, sans-serif; }\n    .plan-btn { display: inline-block; background: linear-gradient(135deg,#6366f1,#8b5cf6); color: #fff; padding: 13px 28px; border-radius: 50px; text-decoration: none; font-weight: 700; text-align: center; border: none; cursor: pointer; font-size: 1em; box-shadow: 0 4px 16px rgba(99,102,241,.28); transition: opacity .2s, transform .2s; }\n    .plan-btn:hover { opacity: .9; transform: translateY(-1px); color: #fff; }\n    .hs-field { margin-bottom: 20px; }\n    .hs-field label { display: block; font-weight: 600; margin-bottom: 6px; color: #0f172a; font-size: .93em; }\n    .hs-field input[type=text],\n    .hs-field input[type=email],\n    .hs-field input[type=password] { width: 100%; padding: 11px 14px; border: 1.5px solid #d1d5db; border-radius: 10px; font-size: .95em; transition: border-color .2s; box-sizing: border-box; font-family: inherit; }\n    .hs-field input:focus { outline: none; border-color: #6366f1; box-shadow: 0 0 0 3px rgba(99,102,241,.12); }\n    .hs-field-hint { display: block; font-size: .8em; color: #9ca3af; margin-top: 4px; }\n    .cs-pw-wrap { margin: 10px 0 6px; }\n    .cs-pw-bar-track { height: 6px; background: #e5e7eb; border-radius: 4px; overflow: hidden; margin-bottom: 10px; }\n    .cs-pw-bar { height: 100%; width: 0; border-radius: 4px; transition: width .3s ease, background .3s ease; }\n    .cs-pw-reqs { list-style: none !important; padding: 0 !important; margin: 0 !important; }\n    .cs-pw-reqs li { font-size: .82em; color: #9ca3af; padding: 3px 0 3px 22px; position: relative; }\n    .cs-pw-reqs li::before { content: \"\u2717\"; position: absolute; left: 0; font-weight: 700; color: #ef4444; }\n    .cs-pw-reqs li.cs-met { color: #374151; }\n    .cs-pw-reqs li.cs-met::before { content: \"\u2713\"; color: #16a34a; }\n    @media(max-width:500px) { .hs-register-wrap [style*=\"grid-template-columns\"] { grid-template-columns: 1fr !important; } }\n    <\/style>\n    \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":0,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"page-builder","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-19","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/store.hiddenhorizon.org\/nl\/wp-json\/wp\/v2\/pages\/19","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/store.hiddenhorizon.org\/nl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/store.hiddenhorizon.org\/nl\/wp-json\/wp\/v2\/types\/page"}],"replies":[{"embeddable":true,"href":"https:\/\/store.hiddenhorizon.org\/nl\/wp-json\/wp\/v2\/comments?post=19"}],"version-history":[{"count":1,"href":"https:\/\/store.hiddenhorizon.org\/nl\/wp-json\/wp\/v2\/pages\/19\/revisions"}],"predecessor-version":[{"id":75,"href":"https:\/\/store.hiddenhorizon.org\/nl\/wp-json\/wp\/v2\/pages\/19\/revisions\/75"}],"wp:attachment":[{"href":"https:\/\/store.hiddenhorizon.org\/nl\/wp-json\/wp\/v2\/media?parent=19"}],"curies":[{"name":"We gaan naar het strand","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}