{"id":509,"date":"2026-04-25T21:05:58","date_gmt":"2026-04-25T19:05:58","guid":{"rendered":"https:\/\/bikepatent.com\/?page_id=509"},"modified":"2026-05-04T13:52:22","modified_gmt":"2026-05-04T11:52:22","slug":"login-page","status":"publish","type":"page","link":"https:\/\/bikepatent.com\/?page_id=509","title":{"rendered":"Sign Up Page"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"509\" class=\"elementor elementor-509\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8ef6e5b e-flex e-con-boxed e-con e-parent\" data-id=\"8ef6e5b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-bb1e51c e-con-full e-flex e-con e-child\" data-id=\"bb1e51c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5eb4f59 elementor-button-info elementor-align-center elementor-widget elementor-widget-button\" data-id=\"5eb4f59\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/bikepatent.com\">\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\">Bikepatent<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\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\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f18c36e e-flex e-con-boxed e-con e-parent\" data-id=\"f18c36e\" 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-e989bf5 elementor-widget elementor-widget-html\" data-id=\"e989bf5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n\n*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n:root {\n  --purple: #85408F; --purple-light: #6d3375;\n  --purple-dim: rgba(133,64,143,0.08); --purple-border: rgba(133,64,143,0.2);\n  --bg: #ffffff; --surface: #ffffff;\n  --border: #e2dfd8; --border2: #d4d0c8;\n  --text: #1a1814; --muted: #6b6560; --muted2: #9b958e;\n  --green: #16a34a; --red: #dc2626;\n  --font: 'Montserrat', sans-serif; --mono: 'DM Mono', monospace;\n}\n\n.bp-wrap {\n  font-family: var(--font);\n  background: var(--bg);\n  color: var(--text);\n  min-height: 100vh;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: flex-start;\n  padding: 48px 20px 80px;\n}\n\n\/* \u2500\u2500 LOGO \/ TOP \u2500\u2500 *\/\n.auth-logo {\n  display: flex; align-items: center; gap: 8px;\n  margin-bottom: 32px;\n}\n.auth-logo-dot { width: 8px; height: 8px; border-radius: 50%; background: #b8860b; }\n.auth-logo-name {\n  font-family: var(--mono); font-size: 11px; font-weight: 500;\n  text-transform: uppercase; letter-spacing: 2.5px; color: var(--muted2);\n}\n\n\/* \u2500\u2500 CARD \u2500\u2500 *\/\n.auth-card {\n  background: var(--surface);\n  border: 1px solid var(--border);\n  border-radius: 16px;\n  padding: 44px 40px;\n  width: 100%; max-width: 500px;\n  box-shadow: 0 8px 40px rgba(26,24,20,.07);\n}\n\n.auth-header { text-align: center; margin-bottom: 36px; }\n.auth-header h2 {\n  font-size: 26px; font-weight: 900;\n  color: var(--text); letter-spacing: -.5px; margin-bottom: 8px;\n}\n.auth-header p { font-size: 14px; color: var(--muted); line-height: 1.6; }\n\n\/* \u2500\u2500 FORM FIELDS \u2500\u2500 *\/\n.field { margin-bottom: 18px; }\n.field label {\n  display: block; font-size: 11px; font-weight: 700;\n  text-transform: uppercase; letter-spacing: 1.5px;\n  color: var(--muted); margin-bottom: 6px;\n}\n.field input {\n  width: 100%; padding: 12px 16px;\n  font-size: 14px; font-family: var(--font);\n  background: var(--bg); border: 1px solid var(--border);\n  border-radius: 8px; color: var(--text);\n  transition: border-color .2s, box-shadow .2s;\n  -webkit-appearance: none;\n}\n.field input::placeholder { color: var(--muted2); }\n.field input:focus {\n  outline: none; border-color: var(--purple);\n  box-shadow: 0 0 0 3px var(--purple-dim);\n  background: var(--surface);\n}\nform.submitted .field input:invalid {\n  border-color: var(--red);\n  box-shadow: 0 0 0 3px rgba(220,38,38,.08);\n}\n\n\/* \u2500\u2500 FIELD GRID (2 col) \u2500\u2500 *\/\n.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }\n\n\/* \u2500\u2500 PASSWORD REQUIREMENTS \u2500\u2500 *\/\n.pw-reqs {\n  display: none; margin-top: 10px; padding: 12px 14px;\n  background: var(--bg); border: 1px solid var(--border);\n  border-radius: 8px; list-style: none;\n}\n.pw-reqs li {\n  font-size: 11px; color: var(--muted2);\n  display: flex; align-items: center; gap: 7px;\n  padding: 3px 0;\n  font-family: var(--mono);\n}\n.pw-reqs li::before { content: \"\u2717\"; color: var(--red); font-weight: 800; font-size: 10px; }\n.pw-reqs li.valid { color: var(--green); }\n.pw-reqs li.valid::before { content: \"\u2713\"; color: var(--green); }\n\n\/* \u2500\u2500 DIVIDER \u2500\u2500 *\/\n.field-divider {\n  display: flex; align-items: center; gap: 12px;\n  margin: 8px 0 20px;\n}\n.field-divider-line { flex: 1; height: 1px; background: var(--border); }\n.field-divider-label {\n  font-family: var(--mono); font-size: 9px; text-transform: uppercase;\n  letter-spacing: 2px; color: var(--muted2);\n}\n\n\/* \u2500\u2500 TERMS CHECKBOX \u2500\u2500 *\/\n.terms-box {\n  background: var(--bg); border: 1px solid var(--border);\n  border-radius: 10px; padding: 16px 18px; margin: 8px 0 22px;\n}\n.terms-label {\n  display: flex; align-items: flex-start; gap: 12px;\n  font-size: 12px; color: var(--muted); line-height: 1.6; cursor: pointer;\n}\n.terms-label input[type=\"checkbox\"] {\n  width: 16px; height: 16px; flex-shrink: 0;\n  margin-top: 2px; accent-color: var(--purple); cursor: pointer;\n}\n.terms-label a { color: var(--purple); text-decoration: underline; font-weight: 700; }\n.terms-label a:hover { text-decoration: none; }\n\n\/* \u2500\u2500 ERROR BOX \u2500\u2500 *\/\n.error-box {\n  display: none;\n  background: rgba(220,38,38,.06); color: #b91c1c;\n  border: 1px solid rgba(220,38,38,.2);\n  border-radius: 8px; padding: 12px 16px;\n  font-size: 12px; text-align: center;\n  margin-bottom: 16px; line-height: 1.5;\n}\n.error-box.show { display: block; }\n\n\/* \u2500\u2500 SUBMIT BUTTON \u2500\u2500 *\/\n.submit-btn {\n  width: 100%; padding: 15px;\n  border-radius: 50px; border: none;\n  font-family: var(--font); font-size: 14px; font-weight: 700;\n  text-transform: uppercase; letter-spacing: 1px;\n  background: var(--purple); color: #fff;\n  box-shadow: 0 8px 24px rgba(133,64,143,.3);\n  cursor: pointer; transition: all .25s;\n}\n.submit-btn:hover { background: var(--purple-light); transform: translateY(-2px); box-shadow: 0 12px 28px rgba(133,64,143,.4); }\n.submit-btn:disabled { background: var(--border2); color: var(--muted2); cursor: not-allowed; transform: none; box-shadow: none; }\n\n\/* \u2500\u2500 FOOTER LINK \u2500\u2500 *\/\n.auth-switch {\n  text-align: center; margin-top: 24px;\n  font-size: 13px; color: var(--muted);\n}\n.auth-switch a { color: var(--purple); font-weight: 700; text-decoration: none; }\n.auth-switch a:hover { text-decoration: underline; }\n\n@media (max-width: 540px) {\n  .bp-wrap .auth-card { padding: 30px 22px; }\n  .field-row { grid-template-columns: 1fr; }\n  .site-footer { flex-direction: column; align-items: center; text-align: center; }\n}\n\n<\/style>\n\n<div class=\"bp-wrap\">\n<\/head>\n<body>\n\n<!-- BRANDING -->\n<div class=\"auth-logo\">\n  <div class=\"auth-logo-dot\"><\/div>\n  <span class=\"auth-logo-name\">Bikepatent \u00b7 Soul\u2011Kozak<\/span>\n<\/div>\n\n<!-- SIGNUP CARD -->\n<div class=\"auth-card\">\n  <div class=\"auth-header\">\n    <h2>Create an account<\/h2>\n    <p>Join Bikepatent and manage your projects.<\/p>\n  <\/div>\n\n  <form data-ms-form=\"signup\" id=\"signupForm\">\n\n    <!-- Account -->\n    <div class=\"field-divider\">\n      <div class=\"field-divider-line\"><\/div>\n      <span class=\"field-divider-label\">Account<\/span>\n      <div class=\"field-divider-line\"><\/div>\n    <\/div>\n\n    <div class=\"field\">\n      <label>Email *<\/label>\n      <input type=\"email\" data-ms-member=\"email\" placeholder=\"your@email.com\" required>\n    <\/div>\n\n    <div class=\"field\">\n      <label>Password *<\/label>\n      <input type=\"password\" id=\"pwInput\" data-ms-member=\"password\"\n             placeholder=\"Create a strong password\"\n             pattern=\"(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\\W_]).{8,}\"\n             title=\"Password must meet all requirements\" required>\n      <ul class=\"pw-reqs\" id=\"pwReqs\">\n        <li id=\"req-len\">Min. 8 characters<\/li>\n        <li id=\"req-low\">Lowercase letter<\/li>\n        <li id=\"req-up\">Uppercase letter<\/li>\n        <li id=\"req-num\">Number<\/li>\n        <li id=\"req-spc\">Special character (!@#$%^&*)<\/li>\n      <\/ul>\n    <\/div>\n\n    <!-- Personal -->\n    <div class=\"field-divider\">\n      <div class=\"field-divider-line\"><\/div>\n      <span class=\"field-divider-label\">Personal info<\/span>\n      <div class=\"field-divider-line\"><\/div>\n    <\/div>\n\n    <div class=\"field-row\">\n      <div class=\"field\">\n        <label>First Name *<\/label>\n        <input type=\"text\" data-ms-member=\"first-name\" placeholder=\"John\" required>\n      <\/div>\n      <div class=\"field\">\n        <label>Last Name *<\/label>\n        <input type=\"text\" data-ms-member=\"last-name\" placeholder=\"Smith\" required>\n      <\/div>\n    <\/div>\n\n    <!-- Business -->\n    <div class=\"field-divider\">\n      <div class=\"field-divider-line\"><\/div>\n      <span class=\"field-divider-label\">Business<\/span>\n      <div class=\"field-divider-line\"><\/div>\n    <\/div>\n\n    <div class=\"field\">\n      <label>Company Name *<\/label>\n      <input type=\"text\" data-ms-member=\"company-name\" placeholder=\"ABC Bikes LLC\" required>\n    <\/div>\n\n    <div class=\"field\">\n      <label>Brand *<\/label>\n      <input type=\"text\" data-ms-member=\"brand\" placeholder=\"Brand name\" required>\n    <\/div>\n\n    <div class=\"field-row\">\n      <div class=\"field\">\n        <label>Interest *<\/label>\n        <input type=\"text\" data-ms-member=\"interest\" placeholder=\"M-Netic, StandardOne\u2026\" required>\n      <\/div>\n      <div class=\"field\">\n        <label>Type *<\/label>\n        <input type=\"text\" data-ms-member=\"type\" placeholder=\"frame, wheels\u2026\" required>\n      <\/div>\n    <\/div>\n\n    <!-- Terms -->\n    <div class=\"terms-box\">\n      <label class=\"terms-label\">\n        <input type=\"checkbox\" data-ms-member=\"tos-agreement\" id=\"tosCheck\" required>\n        <span>\n          I hereby declare that I have read the\n          <a href=\"https:\/\/bikepatent.com\/?page_id=1030\" target=\"_blank\">Terms of Service<\/a>\n          of the Bike Patent Website, accept its content, and agree to comply with it \u2014 in particular the rules regarding the Account, the Protected Area, downloading Documentation, Licenses, protection of know-how, trade secrets, and Soul\u2011Kozak's intellectual property rights. *\n        <\/span>\n      <\/label>\n    <\/div>\n\n    <!-- Error -->\n    <div class=\"error-box\" id=\"errorBox\">\n      Please fill in all required fields, accept the Terms of Service, and ensure your password meets all requirements.\n    <\/div>\n\n    <button type=\"submit\" class=\"submit-btn\" id=\"submitBtn\">Create Account \u2192<\/button>\n\n  <\/form>\n\n  <div class=\"auth-switch\">\n    Already have an account? <a href=\"https:\/\/bikepatent.com\/?page_id=546\" data-ms-action=\"show-login\">Sign in<\/a>\n  <\/div>\n<\/div>\n\n<script>\n\/* \u2500\u2500 PASSWORD VALIDATION \u2500\u2500 *\/\nconst pwInput = document.getElementById('pwInput');\nconst pwReqs  = document.getElementById('pwReqs');\nif (pwInput) {\n  pwInput.addEventListener('focus', () => pwReqs.style.display = 'block');\n  pwInput.addEventListener('input', () => {\n    const v = pwInput.value;\n    const set = (id, ok) => document.getElementById(id).classList.toggle('valid', ok);\n    set('req-len', v.length >= 8);\n    set('req-low', \/[a-z]\/.test(v));\n    set('req-up',  \/[A-Z]\/.test(v));\n    set('req-num', \/[0-9]\/.test(v));\n    set('req-spc', \/[\\W_]\/.test(v));\n  });\n}\n\n\/* \u2500\u2500 FORM SUBMIT \u2500\u2500 *\/\nconst form      = document.getElementById('signupForm');\nconst submitBtn = document.getElementById('submitBtn');\nconst errorBox  = document.getElementById('errorBox');\n\nform.addEventListener('submit', async function(e) {\n  errorBox.classList.remove('show');\n\n  if (!form.checkValidity()) {\n    e.preventDefault();\n    form.classList.add('submitted');\n    errorBox.classList.add('show');\n    errorBox.scrollIntoView({ behavior: 'smooth', block: 'center' });\n    return;\n  }\n\n  \/* Save log to Memberstack *\/\n  submitBtn.textContent = '\u23f3 Saving...';\n  submitBtn.disabled = true;\n\n  try {\n    let ip = 'Unknown', loc = 'Unknown';\n    try {\n      const geo = await fetch('https:\/\/ipapi.co\/json\/');\n      const g   = await geo.json();\n      ip  = g.ip || 'Unknown';\n      loc = `${g.city || ''}, ${g.country_name || ''}`.trim().replace(\/^,\\s*\/, '');\n    } catch (_) {}\n\n    const ms = window.$memberstackDom || window.$memberstack;\n    if (ms) {\n      await ms.createDataRecord({\n        table: 'signup_logs',\n        data: {\n          email:          form.querySelector('[data-ms-member=\"email\"]').value,\n          first_name:     form.querySelector('[data-ms-member=\"first-name\"]').value,\n          last_name:      form.querySelector('[data-ms-member=\"last-name\"]').value,\n          company:        form.querySelector('[data-ms-member=\"company-name\"]').value,\n          brand:          form.querySelector('[data-ms-member=\"brand\"]').value,\n          interest:       form.querySelector('[data-ms-member=\"interest\"]').value,\n          type:           form.querySelector('[data-ms-member=\"type\"]').value,\n          checkbox_terms: document.getElementById('tosCheck').checked ? 'Accepted' : 'No',\n          ip_address:     ip,\n          location:       loc,\n          signup_time:    new Date().toLocaleString('pl-PL')\n        }\n      });\n    }\n  } catch (err) {\n    console.warn('Log error:', err);\n  }\n  \/* Memberstack handles the rest of the signup flow *\/\n});\n<\/script>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-705b121 e-flex e-con-boxed e-con e-parent\" data-id=\"705b121\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;position&quot;:&quot;fixed&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-75ab2af elementor-widget elementor-widget-html\" data-id=\"75ab2af\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n  \/* Zmienne (je\u015bli nie masz ich zadeklarowanych wy\u017cej na stronie logowania) *\/\n  :root {\n    --purple: #85408F;\n    --muted: #6b6560;\n    --muted2: #9b958e;\n    --border: #e2dfd8;\n    --font: 'Montserrat', sans-serif;\n    --mono: 'DM Mono', monospace;\n  }\n\n  \/* \u2500\u2500 STOPKA LOGOWANIA \u2500\u2500 *\/\n  .auth-footer {\n    width: 100%;\n    padding: 32px 24px;\n    border-top: 1px solid var(--border);\n    background-color: #ffffff; \/* Zmiana z transparent na bia\u0142e t\u0142o *\/\n    font-family: var(--font);\n    margin-top: auto;\n  }\n\n  .auth-footer-inner {\n    max-width: 1000px;\n    margin: 0 auto;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    flex-wrap: wrap;\n    gap: 16px;\n  }\n\n  .auth-footer-copy {\n    font-size: 12px;\n    color: var(--muted);\n    font-weight: 500;\n  }\n\n  .auth-footer-links {\n    display: flex;\n    gap: 24px;\n    align-items: center;\n  }\n\n  .auth-footer-links a {\n    font-size: 12px;\n    font-weight: 600;\n    color: var(--muted);\n    text-decoration: none;\n    transition: color 0.2s ease;\n  }\n\n  .auth-footer-links a:hover {\n    color: var(--purple);\n  }\n\n  .auth-footer-patent {\n    width: 100%;\n    text-align: center;\n    margin-top: 24px;\n    font-family: var(--mono);\n    font-size: 10px;\n    color: var(--muted2);\n    text-transform: uppercase;\n    letter-spacing: 1.5px;\n  }\n\n  \/* RWD *\/\n  @media (max-width: 640px) {\n    .auth-footer-inner {\n      flex-direction: column;\n      justify-content: center;\n      text-align: center;\n    }\n    .auth-footer-links {\n      gap: 16px;\n      justify-content: center;\n      flex-wrap: wrap;\n    }\n  }\n<\/style>\n\n<!-- KOD HTML STOPKI -->\n<footer class=\"auth-footer\">\n  <div class=\"auth-footer-inner\">\n    <div class=\"auth-footer-copy\">\n      &copy; 2026 Soul\u2011Kozak. All rights reserved.\n    <\/div>\n    \n    <div class=\"auth-footer-links\">\n      <a href=\"https:\/\/bikepatent.com\/?page_id=1030\">Terms of Service<\/a>\n      <a href=\"https:\/\/bikepatent.com\/?page_id=1030\">Privacy Policy<\/a>\n      <a href=\"mailto:info@bikepatent.com\">Contact Support<\/a>\n    <\/div>\n  <\/div>\n  \n  <div class=\"auth-footer-patent\">\n    StandardOne\u2122 \u2022 LoopsDrive\u2122 \u2022 M-netic\u2122 | Patent Pending EU\/US\/CN\/PL\n  <\/div>\n<\/footer>\t\t\t\t<\/div>\n\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":"<p>Bikepatent Bikepatent \u00b7 Soul\u2011Kozak Create an account Join Bikepatent and manage your projects. Account Email * Password * Min. 8 characters Lowercase letter Uppercase letter Number Special character (!@#$%^&#038;*) Personal info First Name * Last Name * Business Company Name * Brand * Interest * Type * I hereby declare that I have read the [&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-509","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/bikepatent.com\/index.php?rest_route=\/wp\/v2\/pages\/509","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bikepatent.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bikepatent.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bikepatent.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bikepatent.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=509"}],"version-history":[{"count":116,"href":"https:\/\/bikepatent.com\/index.php?rest_route=\/wp\/v2\/pages\/509\/revisions"}],"predecessor-version":[{"id":1310,"href":"https:\/\/bikepatent.com\/index.php?rest_route=\/wp\/v2\/pages\/509\/revisions\/1310"}],"wp:attachment":[{"href":"https:\/\/bikepatent.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=509"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}