{"id":3470,"date":"2026-08-13T18:22:02","date_gmt":"2026-08-13T18:22:02","guid":{"rendered":"https:\/\/twssolutions.us\/?page_id=3470"},"modified":"2026-08-13T21:00:14","modified_gmt":"2026-08-13T21:00:14","slug":"register","status":"publish","type":"page","link":"https:\/\/twssolutions.us\/vi\/register\/","title":{"rendered":"Register"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"3470\" class=\"elementor elementor-3470\" data-elementor-post-type=\"page\">\r\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f55405a e-con-full e-flex e-con\" data-id=\"f55405a\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;full&quot;}\">\r\n\t\t\t\t<div class=\"elementor-element elementor-element-4184824 elementor-widget elementor-widget-html\" data-id=\"4184824\" data-element_type=\"widget\" data-widget_type=\"html.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<style>\n  @import url(\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700;800;900&display=swap\");\n\n  \/*\n       * Full-bleed in Elementor\/WP: neutralize parent wrappers and break out of\n       * boxed containers so the signup spans the viewport.\n       *\/\n  .elementor-section:has(.tws-signup-page),\n  .elementor-element:has(.tws-signup-page),\n  .elementor-widget:has(.tws-signup-page),\n  .elementor-widget-wrap:has(.tws-signup-page),\n  .elementor-widget-container:has(.tws-signup-page) {\n    margin: 0 !important;\n    padding: 0 !important;\n    background: transparent !important;\n    border: 0 !important;\n    box-shadow: none !important;\n  }\n\n  .elementor-section:has(.tws-signup-page) {\n    width: 100% !important;\n    max-width: none !important;\n  }\n\n  .elementor-section:has(.tws-signup-page) > .elementor-container,\n  .elementor-section:has(.tws-signup-page) .elementor-column-wrap,\n  .elementor-section:has(.tws-signup-page) .elementor-widget-wrap {\n    max-width: none !important;\n    width: 100% !important;\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .tws-signup-page {\n    --tws-green: #18b66a;\n    --tws-green-dark: #159a59;\n    --tws-green-pressed: #117a48;\n    --tws-green-soft: #e9f8f1;\n    --tws-green-border: #afe2c7;\n    --tws-ink: #202a3a;\n    --tws-muted: #667085;\n    --tws-line: #dde5ea;\n    --tws-bg: #f7f9fc;\n    --tws-ok: #0f9f6e;\n    --tws-ok-soft: #e8faf3;\n    --tws-warn: #c27803;\n    --tws-warn-soft: #fff7e8;\n    --tws-danger: #c81e1e;\n    --tws-shadow: 0 10px 32px rgba(24, 182, 106, 0.12);\n    color: var(--tws-ink);\n    background: linear-gradient(180deg, #ffffff 0%, var(--tws-bg) 48%, #e9f8f1 100%);\n    font-family:\n      \"Inter\",\n      system-ui,\n      -apple-system,\n      BlinkMacSystemFont,\n      \"Segoe UI\",\n      sans-serif;\n    min-height: 100vh;\n    width: 100vw;\n    max-width: 100vw;\n    margin-left: calc(50% - 50vw);\n    margin-right: calc(50% - 50vw);\n    position: relative;\n    overflow-x: clip;\n  }\n\n  .tws-signup-page,\n  .tws-signup-page *,\n  .tws-signup-page *::before,\n  .tws-signup-page *::after {\n    box-sizing: border-box;\n    font-family:\n      \"Inter\",\n      system-ui,\n      -apple-system,\n      BlinkMacSystemFont,\n      \"Segoe UI\",\n      Roboto,\n      \"Helvetica Neue\",\n      Arial,\n      sans-serif !important;\n  }\n\n  .tws-signup-page input,\n  .tws-signup-page select,\n  .tws-signup-page textarea,\n  .tws-signup-page button {\n    font-family:\n      \"Inter\",\n      system-ui,\n      -apple-system,\n      BlinkMacSystemFont,\n      \"Segoe UI\",\n      Roboto,\n      \"Helvetica Neue\",\n      Arial,\n      sans-serif !important;\n  }\n\n  .tws-signup-page a {\n    color: var(--tws-green-dark);\n  }\n\n  .tws-signup-page a:focus-visible,\n  .tws-signup-page button:focus-visible,\n  .tws-signup-page input:focus-visible,\n  .tws-signup-page select:focus-visible,\n  .tws-signup-page textarea:focus-visible {\n    outline: 3px solid var(--tws-green);\n    outline-offset: 2px;\n  }\n\n  .tws-su-shell {\n    width: min(920px, calc(100% - 32px));\n    margin: 0 auto;\n    padding: 28px 0 64px;\n  }\n\n  .tws-su-top {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 16px;\n    margin-bottom: 22px;\n  }\n\n  .tws-su-brand {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    text-decoration: none;\n    color: inherit;\n    min-width: 0;\n  }\n\n  .tws-su-brand img {\n    width: auto;\n    height: 34px;\n    display: block;\n  }\n\n  .tws-su-tagline {\n    margin: 0;\n    color: var(--tws-muted);\n    font-size: 13px;\n    line-height: 1.35;\n    max-width: 34ch;\n  }\n\n  .tws-su-signin {\n    font-size: 14px;\n    font-weight: 600;\n    white-space: nowrap;\n    text-decoration: none;\n  }\n\n  .tws-su-card {\n    background: #fff;\n    border: 1px solid var(--tws-line);\n    border-radius: 18px;\n    box-shadow: var(--tws-shadow);\n    padding: 28px 28px 24px;\n  }\n\n  .tws-su-progress {\n    display: grid;\n    grid-template-columns: repeat(6, minmax(0, 1fr));\n    gap: 6px;\n    margin-bottom: 28px;\n  }\n\n  .tws-su-step {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 6px;\n    min-width: 0;\n  }\n\n  .tws-su-step-dot {\n    width: 28px;\n    height: 28px;\n    border-radius: 999px;\n    display: grid;\n    place-items: center;\n    font-size: 12px;\n    font-weight: 800;\n    color: var(--tws-muted);\n    background: #f1f5f7;\n    border: 2px solid #e3ebef;\n    position: relative;\n    z-index: 1;\n  }\n\n  .tws-su-step.is-active .tws-su-step-dot {\n    background: var(--tws-green);\n    border-color: var(--tws-green);\n    color: #fff;\n  }\n\n  .tws-su-step.is-done .tws-su-step-dot {\n    background: var(--tws-green-soft);\n    border-color: var(--tws-green);\n    color: var(--tws-green-dark);\n  }\n\n  .tws-su-step-label {\n    font-size: 11px;\n    font-weight: 700;\n    color: var(--tws-muted);\n    letter-spacing: 0.02em;\n    text-align: center;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    max-width: 100%;\n  }\n\n  .tws-su-step.is-active .tws-su-step-label,\n  .tws-su-step.is-done .tws-su-step-label {\n    color: var(--tws-ink);\n  }\n\n  .tws-su-panel[hidden] {\n    display: none !important;\n  }\n\n  .tws-su-head {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    margin: 0 0 8px;\n  }\n\n  .tws-su-head h1 {\n    margin: 0;\n    font-size: clamp(24px, 3vw, 30px);\n    line-height: 1.15;\n    font-weight: 900;\n  }\n\n  .tws-su-icon {\n    width: 40px;\n    height: 40px;\n    border-radius: 12px;\n    background: var(--tws-green-soft);\n    color: var(--tws-green-dark);\n    display: grid;\n    place-items: center;\n    flex: 0 0 auto;\n  }\n\n  .tws-su-icon svg {\n    width: 22px;\n    height: 22px;\n    display: block;\n  }\n\n  .tws-su-lead {\n    margin: 0 0 22px;\n    color: var(--tws-muted);\n    font-size: 15px;\n    line-height: 1.5;\n  }\n\n  .tws-su-form {\n    display: grid;\n    gap: 14px;\n  }\n\n  .tws-su-grid-2 {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 14px;\n  }\n\n  .tws-su-field {\n    display: grid;\n    gap: 6px;\n  }\n\n  .tws-su-field label {\n    font-size: 13px;\n    font-weight: 700;\n    color: var(--tws-ink);\n  }\n\n  .tws-su-field .tws-su-hint {\n    font-size: 12px;\n    color: var(--tws-muted);\n    font-weight: 500;\n  }\n\n  .tws-su-field input,\n  .tws-su-field select,\n  .tws-su-field textarea {\n    width: 100%;\n    border: 1px solid #cfd9de;\n    border-radius: 10px;\n    padding: 12px 14px;\n    font: inherit;\n    font-size: 15px;\n    color: var(--tws-ink);\n    background: #fff;\n    transition:\n      border-color 0.15s ease,\n      box-shadow 0.15s ease;\n  }\n\n  .tws-su-field textarea {\n    min-height: 96px;\n    resize: vertical;\n  }\n\n  .tws-su-field input:focus,\n  .tws-su-field select:focus,\n  .tws-su-field textarea:focus {\n    border-color: var(--tws-green);\n    box-shadow: 0 0 0 3px rgba(24, 182, 106, 0.18);\n    outline: none;\n  }\n\n  .tws-su-field.is-error input,\n  .tws-su-field.is-error select,\n  .tws-su-field.is-error textarea {\n    border-color: var(--tws-danger);\n  }\n\n  .tws-su-error {\n    margin: 0;\n    color: var(--tws-danger);\n    font-size: 12px;\n    font-weight: 600;\n    display: none;\n  }\n\n  .tws-su-field.is-error .tws-su-error {\n    display: block;\n  }\n\n  .tws-su-check {\n    display: flex;\n    gap: 10px;\n    align-items: flex-start;\n    font-size: 13px;\n    line-height: 1.45;\n    color: var(--tws-muted);\n  }\n\n  .tws-su-check input {\n    margin-top: 3px;\n    width: 16px;\n    height: 16px;\n    accent-color: var(--tws-green);\n    flex: 0 0 auto;\n  }\n\n  .tws-su-check.is-error {\n    color: var(--tws-danger);\n  }\n\n  .tws-su-actions {\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n    margin-top: 8px;\n  }\n\n  .tws-su-btn {\n    appearance: none;\n    border: 0;\n    border-radius: 12px;\n    padding: 14px 18px;\n    font: inherit;\n    font-size: 16px;\n    font-weight: 800;\n    cursor: pointer;\n    text-align: center;\n    text-decoration: none;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n    transition:\n      background 0.15s ease,\n      transform 0.15s ease;\n  }\n\n  .tws-su-btn:active {\n    transform: translateY(1px);\n  }\n\n  .tws-su-btn-primary {\n    background: var(--tws-green);\n    color: #fff;\n  }\n\n  .tws-su-btn-primary:hover {\n    background: var(--tws-green-dark);\n  }\n\n  .tws-su-btn-primary:disabled,\n  .tws-su-btn-primary.is-loading {\n    opacity: 0.55;\n    cursor: not-allowed;\n    transform: none;\n  }\n\n  .tws-su-btn-secondary {\n    background: #fff;\n    color: var(--tws-ink);\n    border: 1px solid var(--tws-line);\n  }\n\n  .tws-su-btn-secondary:hover {\n    border-color: var(--tws-green);\n    color: var(--tws-green-dark);\n  }\n\n  .tws-su-btn-ok {\n    background: var(--tws-ok);\n    color: #fff;\n  }\n\n  .tws-su-btn-ok:hover {\n    background: #0b875d;\n  }\n\n  .tws-su-btn-ghost {\n    background: transparent;\n    color: var(--tws-muted);\n    font-weight: 700;\n    padding: 8px;\n  }\n\n  .tws-su-legal {\n    margin: 4px 0 0;\n    text-align: center;\n    font-size: 12px;\n    color: var(--tws-muted);\n    line-height: 1.45;\n  }\n\n  .tws-su-verify-block {\n    border: 1px solid var(--tws-line);\n    border-radius: 14px;\n    padding: 16px;\n    background: #fafcfd;\n    display: grid;\n    gap: 12px;\n  }\n\n  .tws-su-verify-block h2 {\n    margin: 0;\n    font-size: 16px;\n    font-weight: 800;\n  }\n\n  .tws-su-verify-meta {\n    margin: 0;\n    font-size: 13px;\n    color: var(--tws-muted);\n  }\n\n  .tws-su-otp {\n    display: flex;\n    gap: 8px;\n    flex-wrap: wrap;\n  }\n\n  .tws-su-otp input {\n    width: 44px;\n    height: 48px;\n    text-align: center;\n    font-size: 18px;\n    font-weight: 800;\n    border: 1px solid #cfd9de;\n    border-radius: 10px;\n    font-family: inherit;\n  }\n\n  .tws-su-resend {\n    font-size: 13px;\n    font-weight: 700;\n    color: var(--tws-green-dark);\n    background: none;\n    border: 0;\n    padding: 0;\n    cursor: pointer;\n    text-align: left;\n  }\n\n  .tws-su-resend:disabled {\n    color: var(--tws-muted);\n    cursor: default;\n  }\n\n  .tws-su-plans {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 16px;\n  }\n\n  .tws-su-plan {\n    border: 2px solid var(--tws-line);\n    border-radius: 16px;\n    padding: 18px 16px 16px;\n    display: flex;\n    flex-direction: column;\n    gap: 10px;\n    background: #fff;\n    position: relative;\n    min-height: 100%;\n  }\n\n  .tws-su-plan.is-featured {\n    border-color: var(--tws-green);\n    background: linear-gradient(180deg, #fff 0%, var(--tws-green-soft) 140%);\n  }\n\n  .tws-su-plan-badge {\n    position: absolute;\n    top: -11px;\n    left: 14px;\n    background: var(--tws-green);\n    color: #fff;\n    font-size: 11px;\n    font-weight: 800;\n    letter-spacing: 0.04em;\n    text-transform: uppercase;\n    padding: 4px 10px;\n    border-radius: 999px;\n  }\n\n  .tws-su-plan h2 {\n    margin: 4px 0 0;\n    font-size: 18px;\n    font-weight: 900;\n  }\n\n  .tws-su-plan-price {\n    font-size: 32px;\n    font-weight: 900;\n    line-height: 1;\n  }\n\n  .tws-su-plan-price span {\n    font-size: 14px;\n    font-weight: 700;\n    color: var(--tws-muted);\n  }\n\n  .tws-su-plan-desc {\n    margin: 0;\n    font-size: 13px;\n    color: var(--tws-muted);\n    line-height: 1.4;\n  }\n\n  .tws-su-plan ul {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n    display: grid;\n    gap: 8px;\n    flex: 1;\n  }\n\n  .tws-su-plan li {\n    position: relative;\n    padding-left: 22px;\n    font-size: 13px;\n    line-height: 1.4;\n    color: var(--tws-ink);\n  }\n\n  .tws-su-plan li::before {\n    content: \"\";\n    position: absolute;\n    left: 0;\n    top: 5px;\n    width: 12px;\n    height: 12px;\n    border-radius: 999px;\n    background: var(--tws-green-soft);\n    box-shadow: inset 0 0 0 3px var(--tws-green);\n  }\n\n  .tws-su-plan .tws-su-btn {\n    width: 100%;\n    margin-top: 6px;\n  }\n\n  .tws-su-secure {\n    margin: 18px 0 0;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n    color: var(--tws-muted);\n    font-size: 12px;\n    font-weight: 600;\n  }\n\n  .tws-su-secure svg {\n    width: 16px;\n    height: 16px;\n  }\n\n  .tws-su-split {\n    display: grid;\n    grid-template-columns: 1.1fr 0.9fr;\n    gap: 16px;\n  }\n\n  .tws-su-box {\n    border: 1px solid var(--tws-line);\n    border-radius: 14px;\n    padding: 16px;\n    background: #fafcfd;\n  }\n\n  .tws-su-box h2 {\n    margin: 0 0 12px;\n    font-size: 15px;\n    font-weight: 800;\n  }\n\n  .tws-su-rows {\n    display: grid;\n    gap: 10px;\n  }\n\n  .tws-su-row {\n    display: flex;\n    justify-content: space-between;\n    gap: 12px;\n    font-size: 14px;\n  }\n\n  .tws-su-row span:first-child {\n    color: var(--tws-muted);\n  }\n\n  .tws-su-row strong {\n    font-weight: 800;\n    text-align: right;\n  }\n\n  .tws-su-card-chip {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 12px;\n    padding: 12px 14px;\n    border-radius: 12px;\n    border: 1px solid var(--tws-line);\n    background: #fff;\n    font-size: 14px;\n    font-weight: 700;\n  }\n\n  .tws-su-success {\n    text-align: center;\n    padding: 18px 8px 8px;\n  }\n\n  .tws-su-success-icon {\n    width: 72px;\n    height: 72px;\n    margin: 0 auto 16px;\n    border-radius: 999px;\n    display: grid;\n    place-items: center;\n  }\n\n  .tws-su-success-icon.is-ok {\n    background: var(--tws-ok-soft);\n    color: var(--tws-ok);\n  }\n\n  .tws-su-success-icon.is-pending {\n    background: var(--tws-warn-soft);\n    color: var(--tws-warn);\n  }\n\n  .tws-su-success-icon svg {\n    width: 36px;\n    height: 36px;\n  }\n\n  .tws-su-success h1 {\n    margin: 0 0 10px;\n    font-size: 28px;\n    font-weight: 900;\n  }\n\n  .tws-su-success p {\n    margin: 0 auto 22px;\n    max-width: 46ch;\n    color: var(--tws-muted);\n    font-size: 15px;\n    line-height: 1.55;\n  }\n\n  .tws-su-success-actions {\n    display: grid;\n    gap: 10px;\n    max-width: 360px;\n    margin: 0 auto;\n  }\n\n  .tws-su-file {\n    display: grid;\n    gap: 8px;\n  }\n\n  .tws-su-file input[type=\"file\"] {\n    font-size: 13px;\n  }\n\n  .tws-su-note {\n    margin: 0;\n    padding: 12px 14px;\n    border-radius: 12px;\n    background: var(--tws-green-soft);\n    color: var(--tws-green-pressed);\n    font-size: 13px;\n    line-height: 1.45;\n  }\n\n  \/* NMI CollectCheckout trigger (matches Goat Payments button styling) *\/\n  #checkout_button.tws-su-nmi-btn,\n  .tws-su-nmi-btn {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    font-family:\n      \"Inter\",\n      system-ui,\n      -apple-system,\n      BlinkMacSystemFont,\n      \"Segoe UI\",\n      sans-serif !important;\n    font-size: 18px;\n    font-weight: 800;\n    background-color: #0bd992;\n    color: #fff;\n    border-radius: 12px;\n    padding: 14px 28px;\n    border: 0;\n    cursor: pointer;\n    text-align: center;\n    user-select: none;\n    transition:\n      filter 0.15s ease,\n      transform 0.15s ease;\n  }\n\n  #checkout_button.tws-su-nmi-btn:hover,\n  .tws-su-nmi-btn:hover {\n    filter: brightness(0.96);\n  }\n\n  #checkout_button.tws-su-nmi-btn:active,\n  .tws-su-nmi-btn:active {\n    transform: translateY(1px);\n  }\n\n  #checkout_button.tws-su-nmi-btn.is-loading {\n    opacity: 0.7;\n    pointer-events: none;\n  }\n\n  .tws-su-summary {\n    display: grid;\n    gap: 8px;\n    margin: 0 0 16px;\n    padding: 14px;\n    border-radius: 12px;\n    border: 1px solid var(--tws-line);\n    background: #fafcfd;\n    font-size: 14px;\n  }\n\n  .tws-su-summary div {\n    display: flex;\n    justify-content: space-between;\n    gap: 12px;\n  }\n\n  .tws-su-summary span:first-child {\n    color: var(--tws-muted);\n  }\n\n  .tws-su-equip {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 12px;\n  }\n\n  .tws-su-equip-card {\n    position: relative;\n    border: 2px solid var(--tws-line);\n    border-radius: 14px;\n    padding: 14px 12px 12px;\n    background: #fff;\n    cursor: pointer;\n    text-align: left;\n    display: grid;\n    gap: 8px;\n    transition:\n      border-color 0.15s ease,\n      box-shadow 0.15s ease,\n      background 0.15s ease;\n  }\n\n  .tws-su-equip-card:hover {\n    border-color: var(--tws-green-border);\n  }\n\n  .tws-su-equip-card.is-selected {\n    border-color: var(--tws-green);\n    background: linear-gradient(180deg, #fff 0%, var(--tws-green-soft) 160%);\n    box-shadow: 0 0 0 1px var(--tws-green);\n  }\n\n  .tws-su-equip-card img {\n    width: 100%;\n    height: 88px;\n    object-fit: contain;\n    background: #f7faf8;\n    border-radius: 10px;\n  }\n\n  .tws-su-equip-card h3 {\n    margin: 0;\n    font-size: 15px;\n    font-weight: 800;\n  }\n\n  .tws-su-equip-card p {\n    margin: 0;\n    font-size: 12px;\n    color: var(--tws-muted);\n    line-height: 1.35;\n  }\n\n  .tws-su-equip-price {\n    font-size: 14px;\n    font-weight: 800;\n    color: var(--tws-green-dark);\n  }\n\n  .tws-su-equip-check {\n    position: absolute;\n    top: 10px;\n    right: 10px;\n    width: 22px;\n    height: 22px;\n    border-radius: 999px;\n    border: 2px solid #cfd9de;\n    background: #fff;\n    display: grid;\n    place-items: center;\n    font-size: 12px;\n    font-weight: 900;\n    color: transparent;\n  }\n\n  .tws-su-equip-card.is-selected .tws-su-equip-check {\n    border-color: var(--tws-green);\n    background: var(--tws-green);\n    color: #fff;\n  }\n\n  .tws-su-chip-row {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 8px;\n  }\n\n  .tws-su-chip {\n    appearance: none;\n    border: 1px solid var(--tws-line);\n    background: #fff;\n    color: var(--tws-ink);\n    border-radius: 999px;\n    padding: 8px 12px;\n    font: inherit;\n    font-size: 13px;\n    font-weight: 700;\n    cursor: pointer;\n  }\n\n  .tws-su-chip.is-selected {\n    border-color: var(--tws-green);\n    background: var(--tws-green-soft);\n    color: var(--tws-green-pressed);\n  }\n\n  @media (max-width: 760px) {\n    .tws-su-equip {\n      grid-template-columns: 1fr;\n    }\n  }\n\n  @media (max-width: 760px) {\n    .tws-su-shell {\n      width: min(100%, calc(100% - 20px));\n      padding-top: 18px;\n    }\n\n    .tws-su-top {\n      flex-direction: column;\n      align-items: flex-start;\n    }\n\n    .tws-su-card {\n      padding: 20px 16px 18px;\n      border-radius: 14px;\n    }\n\n    .tws-su-progress {\n      grid-template-columns: repeat(6, minmax(0, 1fr));\n      gap: 4px;\n    }\n\n    .tws-su-step-label {\n      display: none;\n    }\n\n    .tws-su-grid-2,\n    .tws-su-plans,\n    .tws-su-split {\n      grid-template-columns: 1fr;\n    }\n\n    .tws-su-otp input {\n      width: 40px;\n      height: 44px;\n    }\n  }\n<\/style>\n\n<div class=\"tws-signup-page\" id=\"twsSignupApp\" data-tws-signup>\n  <div class=\"tws-su-shell\">\n    <div class=\"tws-su-top\">\n      <a class=\"tws-su-brand\" href=\"https:\/\/twssolutions.us\/vi\/\" aria-label=\"TWS Solutions home\">\n        <img loading=\"lazy\" decoding=\"async\"\n          src=\"https:\/\/twssolutions.us\/wp-content\/uploads\/2023\/08\/Frame-9-1.svg\"\n          alt=\"TWS Solutions\"\n          width=\"140\"\n          height=\"34\"\n        \/>\n        <p class=\"tws-su-tagline\">\n          Fast. Simple. Built for specialty retail. Promotional $99.99\/month available.\n        <\/p>\n      <\/a>\n      <a class=\"tws-su-signin\" href=\"https:\/\/app.twssolutions.us\/login\"\n        >Already have an account? Sign In<\/a\n>\n    <\/div>\n\n    <div class=\"tws-su-card\">\n      <nav class=\"tws-su-progress\" aria-label=\"Sign up progress\" data-tws-progress>\n        <div class=\"tws-su-step is-active\" data-step-key=\"account\">\n          <span class=\"tws-su-step-dot\">1<\/span>\n          <span class=\"tws-su-step-label\">Account<\/span>\n        <\/div>\n        <div class=\"tws-su-step\" data-step-key=\"business\">\n          <span class=\"tws-su-step-dot\">2<\/span>\n          <span class=\"tws-su-step-label\">Business<\/span>\n        <\/div>\n        <div class=\"tws-su-step\" data-step-key=\"plan\">\n          <span class=\"tws-su-step-dot\">3<\/span>\n          <span class=\"tws-su-step-label\">Plan<\/span>\n        <\/div>\n        <div class=\"tws-su-step\" data-step-key=\"equipment\">\n          <span class=\"tws-su-step-dot\">4<\/span>\n          <span class=\"tws-su-step-label\">Equipment<\/span>\n        <\/div>\n        <div class=\"tws-su-step\" data-step-key=\"payment\">\n          <span class=\"tws-su-step-dot\">5<\/span>\n          <span class=\"tws-su-step-label\">Card<\/span>\n        <\/div>\n        <div class=\"tws-su-step\" data-step-key=\"complete\">\n          <span class=\"tws-su-step-dot\">6<\/span>\n          <span class=\"tws-su-step-label\">Finish<\/span>\n        <\/div>\n      <\/nav>\n\n      <!-- 1. Account -->\n      <section class=\"tws-su-panel\" data-panel=\"account\">\n        <div class=\"tws-su-head\">\n          <span class=\"tws-su-icon\" aria-hidden=\"true\">\n            <svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n              <path d=\"M20 21a8 8 0 0 0-16 0\" \/>\n              <circle cx=\"12\" cy=\"8\" r=\"4\" \/>\n            <\/svg>\n          <\/span>\n          <h1>Create your account<\/h1>\n        <\/div>\n        <p class=\"tws-su-lead\">\n          Set up your TWS POS login. Email and phone verification happen after signup in the app.\n        <\/p>\n        <form class=\"tws-su-form\" data-form=\"account\" novalidate action=\"\">\n          <div class=\"tws-su-field\">\n            <label for=\"twsSuFullName\">Full Name<\/label>\n            <input id=\"twsSuFullName\" name=\"fullName\" autocomplete=\"name\" required \/>\n            <p class=\"tws-su-error\">Enter your full name.<\/p>\n          <\/div>\n          <div class=\"tws-su-field\">\n            <label for=\"twsSuEmail\">Email Address<\/label>\n            <input id=\"twsSuEmail\" name=\"email\" type=\"email\" autocomplete=\"email\" required \/>\n            <p class=\"tws-su-error\" data-tws-email-error>Enter a valid email address.<\/p>\n          <\/div>\n          <div class=\"tws-su-field\">\n            <label for=\"twsSuPhone\">Mobile Phone<\/label>\n            <input\n              id=\"twsSuPhone\"\n              name=\"phone\"\n              type=\"tel\"\n              autocomplete=\"tel\"\n              placeholder=\"(555) 555-5555\"\n              required\n \/>\n            <p class=\"tws-su-error\">Enter a mobile phone number.<\/p>\n          <\/div>\n          <div class=\"tws-su-field\">\n            <label for=\"twsSuPassword\">Password<\/label>\n            <input\n              id=\"twsSuPassword\"\n              name=\"password\"\n              type=\"password\"\n              autocomplete=\"new-password\"\n              minlength=\"8\"\n              required\n \/>\n            <p class=\"tws-su-hint\">At least 8 characters.<\/p>\n            <p class=\"tws-su-error\">Use at least 8 characters.<\/p>\n          <\/div>\n          <p\n            class=\"tws-su-error\"\n            data-tws-account-error\n style=\"display: none; text-align: center\"\n          ><\/p>\n          <div class=\"tws-su-actions\">\n            <button type=\"submit\" class=\"tws-su-btn tws-su-btn-primary\" data-tws-account-submit>\n              Continue\n            <\/button>\n          <\/div>\n          <p class=\"tws-su-legal\">\n            By continuing, you agree to the\n            <a href=\"https:\/\/twssolutions.us\/vi\/terms\/\" target=\"_blank\" rel=\"noopener noreferrer\"\n              >Terms of Service<\/a\n>\n            and\n            <a href=\"https:\/\/twssolutions.us\/vi\/privacy\/\" target=\"_blank\" rel=\"noopener noreferrer\"\n              >Privacy Policy<\/a\n>.\n          <\/p>\n        <input type=\"hidden\" name=\"trp-form-language\" value=\"vi\"\/><\/form>\n      <\/section>\n\n      <!-- 3. Business -->\n      <section class=\"tws-su-panel\" data-panel=\"business\" hidden>\n        <div class=\"tws-su-head\">\n          <span class=\"tws-su-icon\" aria-hidden=\"true\">\n            <svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n              <path d=\"M3 21h18\" \/>\n              <path d=\"M5 21V7l7-4 7 4v14\" \/>\n              <path d=\"M9 21v-6h6v6\" \/>\n            <\/svg>\n          <\/span>\n          <h1>Business information<\/h1>\n        <\/div>\n        <p class=\"tws-su-lead\">Tell us about your store so we can configure your retail POS.<\/p>\n        <form class=\"tws-su-form\" data-form=\"business\" novalidate action=\"\">\n          <div class=\"tws-su-grid-2\">\n            <div class=\"tws-su-field\">\n              <label for=\"twsSuBizName\">Business Name<\/label>\n              <input id=\"twsSuBizName\" name=\"businessName\" required \/>\n              <p class=\"tws-su-error\">Enter your business name.<\/p>\n            <\/div>\n            <div class=\"tws-su-field\">\n              <label for=\"twsSuBizPhone\">Business Phone<\/label>\n              <input id=\"twsSuBizPhone\" name=\"businessPhone\" type=\"tel\" required \/>\n              <p class=\"tws-su-error\">Enter a business phone number.<\/p>\n            <\/div>\n          <\/div>\n          <div class=\"tws-su-grid-2\">\n            <div class=\"tws-su-field\">\n              <label for=\"twsSuBizType\">Business Type<\/label>\n              <select id=\"twsSuBizType\" name=\"businessType\" required>\n                <option value=\"\">Select type<\/option>\n                <option>Specialty Retail<\/option>\n                <option>Convenience \/ Grocery<\/option>\n                <option>Phone \/ Electronics<\/option>\n                <option>Restaurant \/ Cafe<\/option>\n                <option>Other Retail<\/option>\n              <\/select>\n              <p class=\"tws-su-error\">Select a business type.<\/p>\n            <\/div>\n            <div class=\"tws-su-field\">\n              <label for=\"twsSuTz\">Time Zone<\/label>\n              <select id=\"twsSuTz\" name=\"timezone\" required>\n                <option value=\"\">Select time zone<\/option>\n                <option>America\/New_York<\/option>\n                <option>America\/Chicago<\/option>\n                <option>America\/Denver<\/option>\n                <option>America\/Los_Angeles<\/option>\n                <option>America\/Phoenix<\/option>\n                <option>Pacific\/Honolulu<\/option>\n              <\/select>\n              <p class=\"tws-su-error\">Select a time zone.<\/p>\n            <\/div>\n          <\/div>\n          <div class=\"tws-su-grid-2\">\n            <div class=\"tws-su-field\">\n              <label for=\"twsSuStreet\">Street Address<\/label>\n              <input id=\"twsSuStreet\" name=\"street\" autocomplete=\"street-address\" required \/>\n              <p class=\"tws-su-error\">Enter your street address.<\/p>\n            <\/div>\n            <div class=\"tws-su-field\">\n              <label for=\"twsSuSuite\"\n                >Suite \/ Unit <span class=\"tws-su-hint\">(optional)<\/span><\/label\n>\n              <input id=\"twsSuSuite\" name=\"suite\" autocomplete=\"address-line2\" \/>\n            <\/div>\n          <\/div>\n          <div class=\"tws-su-field\">\n            <label for=\"twsSuEinBiz\">Federal Tax ID (EIN)<\/label>\n            <input id=\"twsSuEinBiz\" name=\"ein\" placeholder=\"XX-XXXXXXX\" required \/>\n            <p class=\"tws-su-error\">Enter your EIN.<\/p>\n          <\/div>\n          <div class=\"tws-su-grid-2\">\n            <div class=\"tws-su-field\">\n              <label for=\"twsSuCity\">City<\/label>\n              <input id=\"twsSuCity\" name=\"city\" required \/>\n              <p class=\"tws-su-error\">Enter city.<\/p>\n            <\/div>\n            <div class=\"tws-su-field\">\n              <label for=\"twsSuState\">State<\/label>\n              <select id=\"twsSuState\" name=\"state\" required>\n                <option value=\"\">Select<\/option>\n                <option>AL<\/option>\n                <option>AK<\/option>\n                <option>AZ<\/option>\n                <option>AR<\/option>\n                <option>CA<\/option>\n                <option>CO<\/option>\n                <option>CT<\/option>\n                <option>DE<\/option>\n                <option>FL<\/option>\n                <option>GA<\/option>\n                <option>HI<\/option>\n                <option>ID<\/option>\n                <option>IL<\/option>\n                <option>IN<\/option>\n                <option>IA<\/option>\n                <option>KS<\/option>\n                <option>KY<\/option>\n                <option>LA<\/option>\n                <option>ME<\/option>\n                <option>MD<\/option>\n                <option>MA<\/option>\n                <option>MI<\/option>\n                <option>MN<\/option>\n                <option>MS<\/option>\n                <option>MO<\/option>\n                <option>MT<\/option>\n                <option>NE<\/option>\n                <option>NV<\/option>\n                <option>NH<\/option>\n                <option>NJ<\/option>\n                <option>NM<\/option>\n                <option>NY<\/option>\n                <option>NC<\/option>\n                <option>ND<\/option>\n                <option>OH<\/option>\n                <option>OK<\/option>\n                <option>OR<\/option>\n                <option>PA<\/option>\n                <option>RI<\/option>\n                <option>SC<\/option>\n                <option>SD<\/option>\n                <option>TN<\/option>\n                <option>TX<\/option>\n                <option>UT<\/option>\n                <option>VT<\/option>\n                <option>VA<\/option>\n                <option>WA<\/option>\n                <option>WV<\/option>\n                <option>WI<\/option>\n                <option>WY<\/option>\n                <option>DC<\/option>\n              <\/select>\n              <p class=\"tws-su-error\">Select state.<\/p>\n            <\/div>\n          <\/div>\n          <div class=\"tws-su-grid-2\">\n            <div class=\"tws-su-field\">\n              <label for=\"twsSuZip\">ZIP Code<\/label>\n              <input id=\"twsSuZip\" name=\"zip\" inputmode=\"numeric\" required \/>\n              <p class=\"tws-su-error\">Enter ZIP code.<\/p>\n            <\/div>\n            <div class=\"tws-su-field\">\n              <label>Team size<\/label>\n              <input type=\"hidden\" id=\"twsSuEmployees\" name=\"employees\" required \/>\n              <div class=\"tws-su-chip-row\" data-tws-employee-chips>\n                <button type=\"button\" class=\"tws-su-chip\" data-value=\"1\">Just me<\/button>\n                <button type=\"button\" class=\"tws-su-chip\" data-value=\"2-5\">2\u20135<\/button>\n                <button type=\"button\" class=\"tws-su-chip\" data-value=\"6-15\">6\u201315<\/button>\n                <button type=\"button\" class=\"tws-su-chip\" data-value=\"16+\">16+<\/button>\n              <\/div>\n              <p class=\"tws-su-error\">Select a team size.<\/p>\n            <\/div>\n          <\/div>\n          <label class=\"tws-su-check\">\n            <input type=\"checkbox\" name=\"merchantTerms\" required \/>\n            <span\n              >I agree to the\n              <a href=\"https:\/\/twssolutions.us\/vi\/terms\/\" target=\"_blank\" rel=\"noopener noreferrer\"\n                >Merchant Terms &amp; Conditions<\/a\n>.<\/span\n>\n          <\/label>\n          <div class=\"tws-su-actions\">\n            <button type=\"submit\" class=\"tws-su-btn tws-su-btn-primary\">Continue<\/button>\n            <button type=\"button\" class=\"tws-su-btn tws-su-btn-ghost\" data-back>Back<\/button>\n          <\/div>\n        <input type=\"hidden\" name=\"trp-form-language\" value=\"vi\"\/><\/form>\n      <\/section>\n\n      <!-- 4. Plan -->\n      <section class=\"tws-su-panel\" data-panel=\"plan\" hidden>\n        <div class=\"tws-su-head\">\n          <span class=\"tws-su-icon\" aria-hidden=\"true\">\n            <svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n              <rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2\" \/>\n              <path d=\"M3 10h18\" \/>\n            <\/svg>\n          <\/span>\n          <h1>Choose your plan<\/h1>\n        <\/div>\n        <p class=\"tws-su-lead\">Pick how you want to run TWS POS and process payments.<\/p>\n        <div class=\"tws-su-plans\" data-tws-plans aria-live=\"polite\">\n          <p class=\"tws-su-plan-desc\" data-tws-plans-status>Loading plans\u2026<\/p>\n        <\/div>\n        <p class=\"tws-su-secure\">\n          <svg\n            viewbox=\"0 0 24 24\"\n            fill=\"none\"\n            stroke=\"currentColor\"\n            stroke-width=\"2\"\n            aria-hidden=\"true\"\n          >\n            <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" \/>\n          <\/svg>\n          Secure card vault powered by Goat Payments \/ NMI\n        <\/p>\n        <div class=\"tws-su-actions\">\n          <button type=\"button\" class=\"tws-su-btn tws-su-btn-ghost\" data-back>Back<\/button>\n        <\/div>\n      <\/section>\n\n      <!-- 4b. Equipment -->\n      <section class=\"tws-su-panel\" data-panel=\"equipment\" hidden>\n        <div class=\"tws-su-head\">\n          <span class=\"tws-su-icon\" aria-hidden=\"true\">\n            <svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n              <rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"2\" \/>\n              <path d=\"M9 9h6v6H9z\" \/>\n            <\/svg>\n          <\/span>\n          <h1>Choose equipment<\/h1>\n        <\/div>\n        <p class=\"tws-su-lead\">\n          Tap what you need for your counter. You can change this later \u2014 no commitment until we\n          confirm availability.\n        <\/p>\n        <div class=\"tws-su-equip\" data-tws-equipment aria-live=\"polite\"><\/div>\n        <div class=\"tws-su-actions\" style=\"margin-top: 16px\">\n          <button type=\"button\" class=\"tws-su-btn tws-su-btn-primary\" data-tws-equip-continue>\n            Continue\n          <\/button>\n          <button type=\"button\" class=\"tws-su-btn tws-su-btn-secondary\" data-tws-equip-skip>\n            Software only \u2014 I\u2019ll add hardware later\n          <\/button>\n          <button type=\"button\" class=\"tws-su-btn tws-su-btn-ghost\" data-back>Back<\/button>\n        <\/div>\n      <\/section>\n\n      <!-- 5. Payment \u2014 NMI CollectCheckout (add card to Customer Vault) -->\n      <section class=\"tws-su-panel\" data-panel=\"payment\" hidden>\n        <div class=\"tws-su-head\">\n          <span class=\"tws-su-icon\" aria-hidden=\"true\">\n            <svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n              <rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\" \/>\n              <path d=\"M2 10h20\" \/>\n            <\/svg>\n          <\/span>\n          <h1>Add payment method<\/h1>\n        <\/div>\n        <p class=\"tws-su-lead\" data-tws-pay-lead>\n          Securely save your card to the payment vault. You\u2019ll continue signup after adding your\n          card.\n        <\/p>\n        <p class=\"tws-su-note\">\n          Secure step \u00b7 about 1 minute. You\u2019ll add a card in Goat Payments \/ NMI, then return here\n          to finish. Card data never touches this page.\n        <\/p>\n        <div class=\"tws-su-form\" data-tws-nmi-wrap>\n          <div class=\"tws-su-actions\">\n            <div\n              id=\"checkout_button\"\n              class=\"tws-su-nmi-btn\"\n              role=\"button\"\n              tabindex=\"0\"\n              data-tws-pay-btn\n>\n              Add Card to Vault\n            <\/div>\n            <p class=\"tws-su-error\" data-tws-nmi-error style=\"display: none; text-align: center\">\n              Unable to open secure checkout. Please try again.\n            <\/p>\n            <button type=\"button\" class=\"tws-su-btn tws-su-btn-ghost\" data-back>Back<\/button>\n          <\/div>\n        <\/div>\n      <\/section>\n\n      <!-- 6. Review (paid path) -->\n      <section class=\"tws-su-panel\" data-panel=\"review\" hidden>\n        <div class=\"tws-su-head\">\n          <span class=\"tws-su-icon\" aria-hidden=\"true\">\n            <svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n              <path d=\"M9 11l3 3L22 4\" \/>\n              <path d=\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\" \/>\n            <\/svg>\n          <\/span>\n          <h1>Review &amp; confirm<\/h1>\n        <\/div>\n        <p class=\"tws-su-lead\">Confirm billing details before creating your account.<\/p>\n        <form class=\"tws-su-form\" data-form=\"review\" novalidate action=\"\">\n          <div class=\"tws-su-split\">\n            <div class=\"tws-su-box\">\n              <h2>Billing summary<\/h2>\n              <div class=\"tws-su-rows\">\n                <div class=\"tws-su-row\">\n                  <span>Selected plan<\/span>\n                  <strong data-tws-review-plan>TWS Complete<\/strong>\n                <\/div>\n                <div class=\"tws-su-row\">\n                  <span>Today\u2019s charge<\/span>\n                  <strong data-tws-review-today>$99.99<\/strong>\n                <\/div>\n                <div class=\"tws-su-row\">\n                  <span>Billing cycle<\/span>\n                  <strong>Monthly<\/strong>\n                <\/div>\n                <div class=\"tws-su-row\">\n                  <span>Promotion<\/span>\n                  <strong>Through Dec 31, 2026*<\/strong>\n                <\/div>\n                <div class=\"tws-su-row\">\n                  <span>Next billing date<\/span>\n                  <strong data-tws-review-next>\u2014<\/strong>\n                <\/div>\n                <div class=\"tws-su-row\">\n                  <span>Equipment<\/span>\n                  <strong data-tws-review-equip>\u2014<\/strong>\n                <\/div>\n              <\/div>\n            <\/div>\n            <div class=\"tws-su-box\">\n              <h2>Payment method<\/h2>\n              <div class=\"tws-su-card-chip\">\n                <span data-tws-review-card>Visa \u2022\u2022\u2022\u2022 4242<\/span>\n                <button type=\"button\" class=\"tws-su-btn tws-su-btn-ghost\" data-goto=\"payment\">\n                  Edit\n                <\/button>\n              <\/div>\n            <\/div>\n          <\/div>\n          <label class=\"tws-su-check\">\n            <input type=\"checkbox\" name=\"agreeAll\" required \/>\n            <span\n              >I agree to the TWS Terms of Service and Privacy Policy, authorize billing for the\n              selected plan, and understand charges are non-refundable once billed.<\/span\n>\n          <\/label>\n          <p\n            class=\"tws-su-error\"\n            data-tws-submit-error\n style=\"display: none; text-align: center\"\n          ><\/p>\n          <div class=\"tws-su-actions\">\n            <button type=\"submit\" class=\"tws-su-btn tws-su-btn-primary\" data-tws-review-submit>\n              Create Account\n            <\/button>\n            <button type=\"button\" class=\"tws-su-btn tws-su-btn-ghost\" data-back>Back<\/button>\n          <\/div>\n        <input type=\"hidden\" name=\"trp-form-language\" value=\"vi\"\/><\/form>\n      <\/section>\n\n      <!-- 7. Merchant application (free path) -->\n      <section class=\"tws-su-panel\" data-panel=\"application\" hidden>\n        <div class=\"tws-su-head\">\n          <span class=\"tws-su-icon\" aria-hidden=\"true\">\n            <svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n              <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" \/>\n              <path d=\"M14 2v6h6\" \/>\n            <\/svg>\n          <\/span>\n          <h1>Merchant application<\/h1>\n        <\/div>\n        <p class=\"tws-su-lead\">\n          A few selects for TWS processing. No document uploads on this page \u2014 you can finish\n          paperwork later in the app if needed.\n        <\/p>\n        <form class=\"tws-su-form\" data-form=\"application\" novalidate action=\"\">\n          <div class=\"tws-su-field\">\n            <label for=\"twsSuEin\">Federal Tax ID (EIN)<\/label>\n            <input id=\"twsSuEin\" name=\"ein\" placeholder=\"XX-XXXXXXX\" required \/>\n            <p class=\"tws-su-error\">Enter your EIN.<\/p>\n          <\/div>\n          <div class=\"tws-su-grid-2\">\n            <div class=\"tws-su-field\">\n              <label for=\"twsSuMonthlyPurchase\">Monthly purchase volume<\/label>\n              <select id=\"twsSuMonthlyPurchase\" name=\"monthlyPurchase\" required>\n                <option value=\"\">Select<\/option>\n                <option value=\"2\">0 \u2013 $2,500<\/option>\n                <option value=\"3\">$2,500 \u2013 $5,000<\/option>\n                <option value=\"4\">$5,000 \u2013 $10,000<\/option>\n                <option value=\"5\">$10,000 \u2013 $25,000<\/option>\n                <option value=\"6\">$25,000 \u2013 $50,000<\/option>\n                <option value=\"7\">$50,000 \u2013 $100,000<\/option>\n                <option value=\"8\">$100,000 \u2013 $250,000<\/option>\n                <option value=\"9\">$250,000 \u2013 $500,000<\/option>\n                <option value=\"10\">$500,000+<\/option>\n                <option value=\"1\">Other<\/option>\n              <\/select>\n              <p class=\"tws-su-error\">Select monthly purchase volume.<\/p>\n            <\/div>\n            <div class=\"tws-su-field\">\n              <label for=\"twsSuMonthlySale\">Monthly sales volume<\/label>\n              <select id=\"twsSuMonthlySale\" name=\"monthlySale\" required>\n                <option value=\"\">Select<\/option>\n                <option value=\"2\">0 \u2013 $2,500<\/option>\n                <option value=\"3\">$2,500 \u2013 $5,000<\/option>\n                <option value=\"4\">$5,000 \u2013 $10,000<\/option>\n                <option value=\"5\">$10,000 \u2013 $25,000<\/option>\n                <option value=\"6\">$25,000 \u2013 $50,000<\/option>\n                <option value=\"7\">$50,000 \u2013 $100,000<\/option>\n                <option value=\"8\">$100,000 \u2013 $250,000<\/option>\n                <option value=\"9\">$250,000 \u2013 $500,000<\/option>\n                <option value=\"10\">$500,000+<\/option>\n                <option value=\"1\">Other<\/option>\n              <\/select>\n              <p class=\"tws-su-error\">Select monthly sales volume.<\/p>\n            <\/div>\n          <\/div>\n          <div class=\"tws-su-grid-2\">\n            <div class=\"tws-su-field\">\n              <label for=\"twsSuTypeOfSale\">Type of sale<\/label>\n              <select id=\"twsSuTypeOfSale\" name=\"typeOfSale\" required>\n                <option value=\"\">Select<\/option>\n                <option value=\"3\">Retail<\/option>\n                <option value=\"5\">In-store<\/option>\n                <option value=\"2\">Wholesale<\/option>\n                <option value=\"4\">Online<\/option>\n                <option value=\"6\">All of the above<\/option>\n                <option value=\"1\">Other<\/option>\n              <\/select>\n              <p class=\"tws-su-error\">Select type of sale.<\/p>\n            <\/div>\n            <div class=\"tws-su-field\">\n              <label for=\"twsSuLocations\">Total locations<\/label>\n              <select id=\"twsSuLocations\" name=\"locations\" required>\n                <option value=\"1\">1<\/option>\n                <option value=\"2\">2<\/option>\n                <option value=\"3\">3<\/option>\n                <option value=\"4\">4+<\/option>\n              <\/select>\n              <p class=\"tws-su-error\">Select locations.<\/p>\n            <\/div>\n          <\/div>\n          <div class=\"tws-su-grid-2\">\n            <div class=\"tws-su-field\">\n              <label for=\"twsSuHasProcessing\">Already have card processing?<\/label>\n              <select id=\"twsSuHasProcessing\" name=\"paymentProcessing\" required>\n                <option value=\"NO\">No<\/option>\n                <option value=\"YES\">Yes<\/option>\n              <\/select>\n            <\/div>\n            <div class=\"tws-su-field\">\n              <label for=\"twsSuFindUs\">How did you find us?<\/label>\n              <select id=\"twsSuFindUs\" name=\"findUs\" required>\n                <option value=\"3\">Google<\/option>\n                <option value=\"2\">Facebook<\/option>\n                <option value=\"5\">Reference<\/option>\n                <option value=\"4\">News<\/option>\n                <option value=\"6\">Referring business<\/option>\n                <option value=\"1\">Other<\/option>\n              <\/select>\n            <\/div>\n          <\/div>\n          <p class=\"tws-su-note\">\n            Documents &amp; signature can be completed later in the TWS app.\n          <\/p>\n          <p\n            class=\"tws-su-error\"\n            data-tws-submit-error\n style=\"display: none; text-align: center\"\n          ><\/p>\n          <div class=\"tws-su-actions\">\n            <button type=\"submit\" class=\"tws-su-btn tws-su-btn-primary\" data-tws-app-submit>\n              Create Account\n            <\/button>\n            <button type=\"button\" class=\"tws-su-btn tws-su-btn-ghost\" data-back>Back<\/button>\n          <\/div>\n        <input type=\"hidden\" name=\"trp-form-language\" value=\"vi\"\/><\/form>\n      <\/section>\n\n      <!-- 9. Complete -->\n      <section class=\"tws-su-panel\" data-panel=\"complete\" hidden>\n        <div class=\"tws-su-success\" data-tws-success>\n          <div class=\"tws-su-success-icon is-ok\" data-tws-success-icon>\n            <svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\">\n              <path d=\"M20 6 9 17l-5-5\" \/>\n            <\/svg>\n          <\/div>\n          <h1 data-tws-success-title>You're all set!<\/h1>\n          <p data-tws-success-copy>\n            Your TWS POS account is ready. Next you\u2019ll verify email\/phone in the app, then finish\n            setup.\n          <\/p>\n          <div class=\"tws-su-success-actions\" data-tws-success-actions>\n            <a class=\"tws-su-btn tws-su-btn-primary\" href=\"https:\/\/app.twssolutions.us\/\"\n              >Go to Dashboard<\/a\n>\n            <a class=\"tws-su-btn tws-su-btn-secondary\" href=\"https:\/\/app.twssolutions.us\/register\"\n              >Download Desktop App<\/a\n>\n          <\/div>\n        <\/div>\n      <\/section>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n  (function () {\n    var root = document.getElementById(\"twsSignupApp\");\n    if (!root) return;\n\n    function ensureInterFont() {\n      var id = \"tws-signup-inter-font\";\n      if (document.getElementById(id)) return;\n      var link = document.createElement(\"link\");\n      link.id = id;\n      link.rel = \"stylesheet\";\n      link.href =\n        \"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700;800;900&display=swap\";\n      document.head.appendChild(link);\n    }\n\n    var CFG = Object.assign(\n      {\n        apiBase: \"https:\/\/cms.twssolutions.us\",\n        organizationReferral: \"\",\n        \/\/ Document uploads skipped on WordPress signup (null in payload).\n        skipDocumentUploads: true,\n      },\n      window.TWS_SIGNUP || {},\n    );\n\n    var DEFAULT_PLANS = [\n      {\n        id: \"free\",\n        name: \"TWS Payments\",\n        priceLabel: \"$0\",\n        priceSuffix: \"\/ month\",\n        amountCents: 0,\n        badge: \"Best Value\",\n        featured: true,\n        requiresApplication: true,\n        description:\n          \"Free POS with approved TWS payment processing (~$25k\/mo volume, 1-year commitment). Merchant application required.\",\n        features: [\n          \"Full retail POS access\",\n          \"Checkout and payment tools\",\n          \"Product and inventory management\",\n          \"Employee access & customer CRM\",\n          \"Sales and settlement reports\",\n          \"Payment terminal integration\",\n          \"Standard support\",\n        ],\n        ctaLabel: \"Choose FREE\",\n        ctaClass: \"tws-su-btn-ok\",\n        payButtonLabel: \"Add Card to Vault\",\n        payLead:\n          \"Add a card to the secure vault ($0 charge). Your Free POS plan requires a merchant application next.\",\n        reviewName: \"TWS Payments (FREE)\",\n        todayCharge: \"$0.00\",\n      },\n      {\n        id: \"paid\",\n        name: \"TWS Complete\",\n        priceLabel: \"$99.99\",\n        priceSuffix: \"\/ month\",\n        amountCents: 9999,\n        badge: \"\",\n        featured: false,\n        requiresApplication: false,\n        description:\n          \"Promotional subscription. Use an eligible supported payment setup \u2014 no merchant application required.\",\n        features: [\n          \"Everything in Free POS\",\n          \"Use eligible supported processors\",\n          \"Product and inventory management\",\n          \"Employee access & customer CRM\",\n          \"Sales and settlement reports\",\n          \"Standard support\",\n        ],\n        ctaLabel: \"Choose $99.99 Plan\",\n        ctaClass: \"tws-su-btn-primary\",\n        payButtonLabel: \"Add Card to Vault\",\n        payLead:\n          \"Add a card to the secure vault, then review and confirm your TWS Complete subscription.\",\n        reviewName: \"TWS Complete\",\n        todayCharge: \"$99.99\",\n      },\n    ];\n\n    var NMI = Object.assign(\n      {\n        checkoutKey: \"checkout_public_cMr6kncZDQrtyh4TGA5m5mZG2A33Nx92\",\n        scriptUrl: \"https:\/\/goatpayments.transactiongateway.com\/token\/CollectCheckout.js\",\n        collectShippingInfo: true,\n        useKount: false,\n        storageKey: \"twsSignupNmi\",\n      },\n      CFG.nmi || {},\n    );\n\n    var plansCatalog = [];\n    var plansById = {};\n\n    function escapeHtml(value) {\n      return String(value == null ? \"\" : value)\n        .replace(\/&\/g, \"&amp;\")\n        .replace(\/<\/g, \"&lt;\")\n        .replace(\/>\/g, \"&gt;\")\n        .replace(\/\"\/g, \"&quot;\");\n    }\n\n    function normalizePlans(list) {\n      if (!Array.isArray(list)) return [];\n      return list\n        .map(function (p) {\n          if (!p || !p.id) return null;\n          return {\n            id: String(p.id),\n            name: p.name || p.id,\n            priceLabel: p.priceLabel || (p.amountCents === 0 ? \"$0\" : \"\"),\n            priceSuffix: p.priceSuffix || \"\/ month\",\n            amountCents:\n              typeof p.amountCents === \"number\" ? p.amountCents : Number(p.amountCents || 0),\n            badge: p.badge || \"\",\n            featured: Boolean(p.featured),\n            requiresApplication: Boolean(p.requiresApplication),\n            description: p.description || \"\",\n            features: Array.isArray(p.features) ? p.features : [],\n            ctaLabel: p.ctaLabel || \"Choose \" + (p.name || p.id),\n            ctaClass: p.ctaClass || \"tws-su-btn-primary\",\n            payButtonLabel: p.payButtonLabel || \"Continue\",\n            payLead: p.payLead || \"\",\n            reviewName: p.reviewName || p.name || p.id,\n            todayCharge: p.todayCharge || p.priceLabel || \"\",\n          };\n        })\n        .filter(Boolean);\n    }\n\n    function setPlans(list) {\n      plansCatalog = normalizePlans(list);\n      plansById = {};\n      plansCatalog.forEach(function (p) {\n        plansById[p.id] = p;\n      });\n      renderPlans();\n    }\n\n    function renderPlans() {\n      var mount = qs(\"[data-tws-plans]\");\n      if (!mount) return;\n      if (!plansCatalog.length) {\n        mount.innerHTML =\n          '<p class=\"tws-su-plan-desc\" data-tws-plans-status>No plans available. Try again later.<\/p>';\n        return;\n      }\n      mount.innerHTML = plansCatalog\n        .map(function (plan) {\n          var badge = plan.badge\n            ? '<span class=\"tws-su-plan-badge\">' + escapeHtml(plan.badge) + \"<\/span>\"\n            : \"\";\n          var features = plan.features\n            .map(function (f) {\n              return \"<li>\" + escapeHtml(f) + \"<\/li>\";\n            })\n            .join(\"\");\n          return (\n            '<article class=\"tws-su-plan' +\n            (plan.featured ? \" is-featured\" : \"\") +\n            '\" data-plan-id=\"' +\n            escapeHtml(plan.id) +\n            '\">' +\n            badge +\n            \"<h2>\" +\n            escapeHtml(plan.name) +\n            \"<\/h2>\" +\n            '<div class=\"tws-su-plan-price\">' +\n            escapeHtml(plan.priceLabel) +\n            \" <span>\" +\n            escapeHtml(plan.priceSuffix) +\n            \"<\/span><\/div>\" +\n            '<p class=\"tws-su-plan-desc\">' +\n            escapeHtml(plan.description) +\n            \"<\/p>\" +\n            \"<ul>\" +\n            features +\n            \"<\/ul>\" +\n            '<button type=\"button\" class=\"tws-su-btn ' +\n            escapeHtml(plan.ctaClass) +\n            '\" data-choose-plan=\"' +\n            escapeHtml(plan.id) +\n            '\">' +\n            escapeHtml(plan.ctaLabel) +\n            \"<\/button><\/article>\"\n          );\n        })\n        .join(\"\");\n\n      qsa(\"[data-choose-plan]\", mount).forEach(function (btn) {\n        btn.addEventListener(\"click\", function () {\n          selectPlan(btn.getAttribute(\"data-choose-plan\"));\n        });\n      });\n    }\n\n    function selectPlan(planId) {\n      var plan = plansById[planId];\n      if (!plan) return;\n      state.plan = plan.id;\n      state.planMeta = plan;\n      applyPlanUi();\n      loadEquipment().then(function () {\n        go(\"equipment\");\n      });\n    }\n\n    var equipmentCatalog = [];\n    var equipmentById = {};\n    var DEFAULT_EQUIPMENT = [\n      {\n        id: \"pax-l1400\",\n        name: \"PAX L1400\",\n        subtitle: \"Android kiosk\",\n        price: \"$1,099\",\n        src: \"https:\/\/twssolutions.us\/wp-content\/uploads\/2026\/07\/image_2026-07-24_155445079.png\",\n        alt: \"PAX L1400 Android kiosk\",\n      },\n      {\n        id: \"pax-a3700\",\n        name: \"PAX A3700\",\n        subtitle: \"Payment terminal\",\n        price: \"$599\",\n        src: \"https:\/\/twssolutions.us\/wp-content\/uploads\/2026\/07\/paxelys_a3700_tablet_front_1.png\",\n        alt: \"PAX A3700 payment device\",\n      },\n      {\n        id: \"printer\",\n        name: \"Receipt Printer\",\n        subtitle: \"Star Micronics\",\n        price: \"$299\",\n        src: \"https:\/\/twssolutions.us\/wp-content\/uploads\/2026\/07\/star-micronics.webp\",\n        alt: \"Star Micronics receipt printer\",\n      },\n      {\n        id: \"barcode-scanner\",\n        name: \"Barcode Scanner\",\n        subtitle: \"Handheld\",\n        price: \"$129\",\n        src: \"https:\/\/twssolutions.us\/wp-content\/uploads\/2026\/07\/inateck_scanner.jpg\",\n        alt: \"Handheld barcode scanner\",\n      },\n      {\n        id: \"cash-drawer\",\n        name: \"Cash Drawer\",\n        subtitle: \"Under-counter\",\n        price: \"$119\",\n        src: \"https:\/\/twssolutions.us\/wp-content\/uploads\/2026\/07\/volcora-cash-drawer.jpg\",\n        alt: \"Retail cash drawer\",\n      },\n    ];\n\n    function setEquipment(list) {\n      equipmentCatalog = Array.isArray(list)\n        ? list.filter(function (i) {\n            return i && i.id;\n          })\n        : [];\n      equipmentById = {};\n      equipmentCatalog.forEach(function (item) {\n        equipmentById[item.id] = item;\n      });\n      renderEquipment();\n    }\n\n    function renderEquipment() {\n      var mount = qs(\"[data-tws-equipment]\");\n      if (!mount) return;\n      if (!equipmentCatalog.length) {\n        mount.innerHTML =\n          '<p class=\"tws-su-plan-desc\">No equipment listed. You can continue with software only.<\/p>';\n        return;\n      }\n      mount.innerHTML = equipmentCatalog\n        .map(function (item) {\n          var selected = state.equipmentIds.indexOf(item.id) >= 0;\n          return (\n            '<button type=\"button\" class=\"tws-su-equip-card' +\n            (selected ? \" is-selected\" : \"\") +\n            '\" data-equip-id=\"' +\n            escapeHtml(item.id) +\n            '\" aria-pressed=\"' +\n            (selected ? \"true\" : \"false\") +\n            '\">' +\n            '<span class=\"tws-su-equip-check\" aria-hidden=\"true\">\u2713<\/span>' +\n            (item.src\n              ? '<img decoding=\"async\" src=\"' +\n                escapeHtml(item.src) +\n                '\" alt=\"' +\n                escapeHtml(item.alt || item.name) +\n                '\" loading=\"lazy\" \/>'\n              : \"\") +\n            \"<h3>\" +\n            escapeHtml(item.name) +\n            \"<\/h3>\" +\n            \"<p>\" +\n            escapeHtml(item.subtitle || \"\") +\n            \"<\/p>\" +\n            '<div class=\"tws-su-equip-price\">' +\n            escapeHtml(item.price || \"\") +\n            \"<\/div><\/button>\"\n          );\n        })\n        .join(\"\");\n\n      qsa(\"[data-equip-id]\", mount).forEach(function (btn) {\n        btn.addEventListener(\"click\", function () {\n          toggleEquipment(btn.getAttribute(\"data-equip-id\"));\n        });\n      });\n    }\n\n    function toggleEquipment(id) {\n      state.equipmentSkip = false;\n      var idx = state.equipmentIds.indexOf(id);\n      if (idx >= 0) state.equipmentIds.splice(idx, 1);\n      else state.equipmentIds.push(id);\n      renderEquipment();\n    }\n\n    function equipmentSummary() {\n      if (state.equipmentSkip || !state.equipmentIds.length) return \"Software only\";\n      return state.equipmentIds\n        .map(function (id) {\n          return (equipmentById[id] && equipmentById[id].name) || id;\n        })\n        .join(\", \");\n    }\n\n    \/**\n     * Load equipment catalog.\n     * Priority: CFG.equipment \u2192 GET CFG.equipmentUrl \u2192 DEFAULT_EQUIPMENT.\n     *\/\n    function loadEquipment() {\n      if (Array.isArray(CFG.equipment) && CFG.equipment.length) {\n        setEquipment(CFG.equipment);\n        return Promise.resolve(equipmentCatalog);\n      }\n      if (CFG.equipmentUrl) {\n        return fetch(CFG.equipmentUrl, {\n          method: \"GET\",\n          headers: { Accept: \"application\/json\" },\n          credentials: CFG.credentials || \"omit\",\n        })\n          .then(function (res) {\n            if (!res.ok) throw new Error(\"Equipment request failed\");\n            return res.json();\n          })\n          .then(function (data) {\n            var list = Array.isArray(data) ? data : data.equipment || data.items || data.data || [];\n            setEquipment(list.length ? list : DEFAULT_EQUIPMENT);\n            return equipmentCatalog;\n          })\n          .catch(function () {\n            setEquipment(DEFAULT_EQUIPMENT);\n            return equipmentCatalog;\n          });\n      }\n      setEquipment(DEFAULT_EQUIPMENT);\n      return Promise.resolve(equipmentCatalog);\n    }\n\n    function continueFromEquipment(skip) {\n      if (skip) {\n        state.equipmentSkip = true;\n        state.equipmentIds = [];\n      } else {\n        state.equipmentSkip = false;\n      }\n      go(\"payment\");\n    }\n\n    \/**\n     * Load subscription plans.\n     * Priority: CFG.plans (inline) \u2192 GET CFG.plansUrl \u2192 DEFAULT_PLANS.\n     * Later: set window.TWS_SIGNUP = { plansUrl: \"https:\/\/...\" }\n     *\/\n    function loadPlans() {\n      if (Array.isArray(CFG.plans) && CFG.plans.length) {\n        setPlans(CFG.plans);\n        return Promise.resolve(plansCatalog);\n      }\n      if (CFG.plansUrl) {\n        return fetch(CFG.plansUrl, {\n          method: \"GET\",\n          headers: { Accept: \"application\/json\" },\n          credentials: CFG.credentials || \"omit\",\n        })\n          .then(function (res) {\n            if (!res.ok) throw new Error(\"Plans request failed\");\n            return res.json();\n          })\n          .then(function (data) {\n            var list = Array.isArray(data) ? data : data.plans || data.data || [];\n            setPlans(list.length ? list : DEFAULT_PLANS);\n            return plansCatalog;\n          })\n          .catch(function () {\n            setPlans(DEFAULT_PLANS);\n            return plansCatalog;\n          });\n      }\n      setPlans(DEFAULT_PLANS);\n      return Promise.resolve(plansCatalog);\n    }\n\n    var state = {\n      plan: null,\n      planMeta: null,\n      fullName: \"\",\n      email: \"\",\n      phone: \"\",\n      password: \"\",\n      cardLast4: \"\u2022\u2022\u2022\u2022\",\n      customerVaultId: \"\",\n      equipmentIds: [],\n      equipmentSkip: false,\n      business: {},\n      application: {},\n    };\n\n    var panels = {\n      account: root.querySelector('[data-panel=\"account\"]'),\n      business: root.querySelector('[data-panel=\"business\"]'),\n      plan: root.querySelector('[data-panel=\"plan\"]'),\n      equipment: root.querySelector('[data-panel=\"equipment\"]'),\n      payment: root.querySelector('[data-panel=\"payment\"]'),\n      review: root.querySelector('[data-panel=\"review\"]'),\n      application: root.querySelector('[data-panel=\"application\"]'),\n      complete: root.querySelector('[data-panel=\"complete\"]'),\n    };\n\n    function digitsOnly(value) {\n      return String(value || \"\").replace(\/\\D\/g, \"\");\n    }\n\n    function splitName(full) {\n      var parts = String(full || \"\")\n        .trim()\n        .split(\/\\s+\/)\n        .filter(Boolean);\n      if (!parts.length) return { first_name: \"\", last_name: \"\" };\n      if (parts.length === 1) return { first_name: parts[0], last_name: parts[0] };\n      return { first_name: parts[0], last_name: parts.slice(1).join(\" \") };\n    }\n\n    function mapTypeOfSale(businessType) {\n      var t = String(businessType || \"\").toLowerCase();\n      if (t.indexOf(\"wholesale\") >= 0) return 2;\n      if (t.indexOf(\"online\") >= 0) return 4;\n      if (t.indexOf(\"other\") >= 0) return 1;\n      return 3; \/\/ RETAIL\n    }\n\n    function mapLocations(employees) {\n      if (employees === \"16+\") return \"4\";\n      if (employees === \"6-15\") return \"2\";\n      return \"1\";\n    }\n\n    function apiUrl(path) {\n      return String(CFG.apiBase || \"\").replace(\/\\\/$\/, \"\") + path;\n    }\n\n    function setButtonLoading(btn, loading, label) {\n      if (!btn) return;\n      if (loading) {\n        btn.dataset.label = btn.textContent;\n        btn.textContent = label || \"Please wait\u2026\";\n        btn.disabled = true;\n        btn.classList.add(\"is-loading\");\n      } else {\n        btn.textContent = btn.dataset.label || btn.textContent;\n        btn.disabled = false;\n        btn.classList.remove(\"is-loading\");\n      }\n    }\n\n    function showFormError(sel, message) {\n      var el = qs(sel);\n      if (!el) return;\n      el.textContent = message || \"\";\n      el.style.display = message ? \"block\" : \"none\";\n    }\n\n    \/** PUT \/api\/user\/check-email\/ *\/\n    function checkEmailAvailable(email) {\n      return fetch(apiUrl(\"\/api\/user\/check-email\/\"), {\n        method: \"PUT\",\n        headers: {\n          Accept: \"*\/*\",\n          \"Content-Type\": \"application\/json\",\n        },\n        credentials: \"omit\",\n        body: JSON.stringify({\n          email: email,\n          organization_refferal: CFG.organizationReferral || \"\",\n        }),\n      }).then(function (res) {\n        return res\n          .json()\n          .catch(function () {\n            return {};\n          })\n          .then(function (data) {\n            return { ok: res.ok && data.success !== false, status: res.status, data: data };\n          });\n      });\n    }\n\n    \/** Build CMS sign-up payload \u2014 documents intentionally null (no uploads). *\/\n    function buildSignUpPayload() {\n      var name = splitName(state.fullName);\n      var biz = state.business || {};\n      var app = state.application || {};\n      var free = !!(state.planMeta && state.planMeta.requiresApplication);\n      return {\n        first_name: name.first_name,\n        last_name: name.last_name,\n        phone_number: digitsOnly(state.phone),\n        business_name: biz.businessName || \"\",\n        federal_tax_id: digitsOnly(app.ein || biz.ein || \"\"),\n        website_link_url: biz.website || null,\n        address: biz.street || \"\",\n        sub_address: biz.suite || null,\n        city: biz.city || \"\",\n        state: biz.state || \"\",\n        postal_zipcode: String(biz.zip || \"\"),\n        business_phone_number: digitsOnly(biz.businessPhone || state.phone),\n        business_tax_document: null,\n        vapor_tobacco_license: null,\n        monthly_purchase: Number(app.monthlyPurchase || (free ? 6 : 4)),\n        monthly_sale: Number(app.monthlySale || (free ? 6 : 4)),\n        type_of_sale: Number(app.typeOfSale || mapTypeOfSale(biz.businessType)),\n        total_locations: String(app.locations || mapLocations(biz.employees) || \"1\"),\n        find_us_over: Number(app.findUs || 3),\n        id_verification: \"NO\",\n        payment_processing: app.paymentProcessing || \"NO\",\n        checkbox: true,\n        signature: null,\n        app_payment_processing: free,\n        email: state.email,\n      };\n    }\n\n    \/** POST \/api\/user\/sign-up\/ *\/\n    function submitSignUp() {\n      var payload = buildSignUpPayload();\n      return fetch(apiUrl(\"\/api\/user\/sign-up\/\"), {\n        method: \"POST\",\n        headers: {\n          Accept: \"*\/*\",\n          \"Content-Type\": \"application\/json\",\n        },\n        credentials: \"omit\",\n        body: JSON.stringify(payload),\n      }).then(function (res) {\n        return res\n          .json()\n          .catch(function () {\n            return {};\n          })\n          .then(function (data) {\n            var ok = res.ok && data.success !== false;\n            var message =\n              (data && (data.message || data.detail || data.error)) ||\n              (ok ? \"Account created.\" : \"Unable to create account. Please try again.\");\n            if (typeof message !== \"string\")\n              message = \"Unable to create account. Please try again.\";\n            return { ok: ok, status: res.status, data: data, message: message, payload: payload };\n          });\n      });\n    }\n\n    var historyStack = [\"account\"];\n\n    function qs(sel, el) {\n      return (el || root).querySelector(sel);\n    }\n\n    function qsa(sel, el) {\n      return Array.prototype.slice.call((el || root).querySelectorAll(sel));\n    }\n\n    function showPanel(name) {\n      Object.keys(panels).forEach(function (key) {\n        if (!panels[key]) return;\n        panels[key].hidden = key !== name;\n      });\n      updateProgress(name);\n      root.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n    }\n\n    function go(name, push) {\n      if (push !== false) historyStack.push(name);\n      showPanel(name);\n    }\n\n    function goBack() {\n      if (historyStack.length < 2) return;\n      historyStack.pop();\n      showPanel(historyStack[historyStack.length - 1]);\n    }\n\n    function progressKeyFor(panel) {\n      if (panel === \"review\" || panel === \"application\") return \"complete\";\n      if (panel === \"complete\") return \"complete\";\n      return panel;\n    }\n\n    function updateProgress(panel) {\n      var order = [\"account\", \"business\", \"plan\", \"equipment\", \"payment\", \"complete\"];\n      var key = progressKeyFor(panel);\n      var idx = order.indexOf(key);\n      qsa(\"[data-step-key]\").forEach(function (el) {\n        var step = el.getAttribute(\"data-step-key\");\n        var stepIdx = order.indexOf(step);\n        el.classList.remove(\"is-active\", \"is-done\");\n        el.style.opacity = \"\";\n        if (stepIdx < idx) el.classList.add(\"is-done\");\n        if (stepIdx === idx) el.classList.add(\"is-active\");\n      });\n    }\n\n    function clearErrors(form) {\n      qsa(\".tws-su-field.is-error\", form).forEach(function (f) {\n        f.classList.remove(\"is-error\");\n      });\n      qsa(\".tws-su-check.is-error\", form).forEach(function (f) {\n        f.classList.remove(\"is-error\");\n      });\n    }\n\n    function markError(el) {\n      var field = el.closest(\".tws-su-field\") || el.closest(\".tws-su-check\");\n      if (field) field.classList.add(\"is-error\");\n    }\n\n    function validateRequired(form) {\n      clearErrors(form);\n      var ok = true;\n      qsa(\"[required]\", form).forEach(function (el) {\n        if (el.type === \"checkbox\") {\n          if (!el.checked) {\n            ok = false;\n            markError(el);\n          }\n          return;\n        }\n        if (el.type === \"file\") {\n          if (!el.files || !el.files.length) {\n            ok = false;\n            markError(el);\n          }\n          return;\n        }\n        if (!String(el.value || \"\").trim()) {\n          ok = false;\n          markError(el);\n        }\n      });\n      return ok;\n    }\n\n    function otpValue(group) {\n      return qsa(\"input\", group)\n        .map(function (i) {\n          return i.value;\n        })\n        .join(\"\");\n    }\n\n    function wireOtp(group) {\n      var inputs = qsa(\"input\", group);\n      inputs.forEach(function (input, index) {\n        input.addEventListener(\"input\", function () {\n          input.value = input.value.replace(\/\\D\/g, \"\").slice(0, 1);\n          if (input.value && inputs[index + 1]) inputs[index + 1].focus();\n        });\n        input.addEventListener(\"keydown\", function (e) {\n          if (e.key === \"Backspace\" && !input.value && inputs[index - 1]) {\n            inputs[index - 1].focus();\n          }\n        });\n        input.addEventListener(\"paste\", function (e) {\n          var text = (e.clipboardData || window.clipboardData).getData(\"text\") || \"\";\n          var digits = text.replace(\/\\D\/g, \"\").slice(0, inputs.length);\n          if (!digits) return;\n          e.preventDefault();\n          digits.split(\"\").forEach(function (d, i) {\n            if (inputs[i]) inputs[i].value = d;\n          });\n          var focusAt = Math.min(digits.length, inputs.length - 1);\n          inputs[focusAt].focus();\n        });\n      });\n    }\n\n    qsa(\"[data-otp]\").forEach(wireOtp);\n\n    function startResend(btn) {\n      var seconds = 45;\n      btn.disabled = true;\n      function tick() {\n        btn.textContent = \"Resend code in 00:\" + String(seconds).padStart(2, \"0\");\n        if (seconds <= 0) {\n          btn.disabled = false;\n          btn.textContent = \"Resend code\";\n          return;\n        }\n        seconds -= 1;\n        window.setTimeout(tick, 1000);\n      }\n      tick();\n    }\n\n    qsa(\"[data-resend]\").forEach(function (btn) {\n      btn.addEventListener(\"click\", function () {\n        startResend(btn);\n      });\n    });\n\n    function nextBillingDate() {\n      var d = new Date();\n      d.setMonth(d.getMonth() + 1);\n      return d.toLocaleDateString(undefined, {\n        month: \"short\",\n        day: \"numeric\",\n        year: \"numeric\",\n      });\n    }\n\n    function applyPlanUi() {\n      var plan = state.planMeta || plansById[state.plan] || null;\n      var payBtn = qs(\"[data-tws-pay-btn]\");\n      var payLead = qs(\"[data-tws-pay-lead]\");\n      if (!plan) return;\n      if (payBtn) payBtn.textContent = plan.payButtonLabel || \"Add Card to Vault\";\n      if (payLead && plan.payLead) payLead.textContent = plan.payLead;\n    }\n\n    function fillReview() {\n      var plan = state.planMeta || plansById[state.plan] || {};\n      qs(\"[data-tws-review-plan]\").textContent = plan.reviewName || plan.name || \"\u2014\";\n      qs(\"[data-tws-review-today]\").textContent = plan.todayCharge || plan.priceLabel || \"\u2014\";\n      qs(\"[data-tws-review-next]\").textContent = nextBillingDate();\n      var cardLabel = state.customerVaultId\n        ? \"Vault card saved \u00b7 ID \" + state.customerVaultId\n        : \"Card on file \u00b7 \" + state.cardLast4;\n      qs(\"[data-tws-review-card]\").textContent = cardLabel;\n      var equipEl = qs(\"[data-tws-review-equip]\");\n      if (equipEl) equipEl.textContent = equipmentSummary();\n    }\n\n    function signupReturnUrl(status) {\n      var url = new URL(window.location.href);\n      url.searchParams.set(\"nmi\", status);\n      if (status === \"success\") {\n        url.searchParams.set(\"customer_vault_id\", \"(CUSTOMER_VAULT_ID)\");\n      } else {\n        url.searchParams.delete(\"customer_vault_id\");\n      }\n      return url.toString();\n    }\n\n    function persistSignupState() {\n      try {\n        sessionStorage.setItem(\n          NMI.storageKey,\n          JSON.stringify({\n            state: state,\n            historyStack: historyStack,\n            savedAt: Date.now(),\n          }),\n        );\n      } catch (err) {}\n    }\n\n    function restoreSignupState() {\n      try {\n        var raw = sessionStorage.getItem(NMI.storageKey);\n        if (!raw) return false;\n        var saved = JSON.parse(raw);\n        if (!saved || !saved.state) return false;\n        Object.assign(state, saved.state);\n        if (Array.isArray(saved.historyStack) && saved.historyStack.length) {\n          historyStack = saved.historyStack.slice();\n        }\n        if (state.plan && plansById[state.plan]) {\n          state.planMeta = plansById[state.plan];\n        }\n        return true;\n      } catch (err) {\n        return false;\n      }\n    }\n\n    function clearSignupState() {\n      try {\n        sessionStorage.removeItem(NMI.storageKey);\n      } catch (err) {}\n    }\n\n    function continueAfterVault() {\n      var plan = state.planMeta || plansById[state.plan] || {};\n      if (plan.requiresApplication) {\n        go(\"application\");\n      } else {\n        fillReview();\n        go(\"review\");\n      }\n    }\n\n    \/\/ Used by local screenshot tooling \/ QA \u2014 not shown in UI\n    window.__twsSignupContinueAfterVault = function (vaultId) {\n      if (vaultId) state.customerVaultId = String(vaultId);\n      if (!state.cardLast4 || state.cardLast4 === \"\u2022\u2022\u2022\u2022\") state.cardLast4 = \"4242\";\n      continueAfterVault();\n    };\n\n    function loadCollectCheckout() {\n      return new Promise(function (resolve, reject) {\n        if (window.CollectCheckout) {\n          resolve(window.CollectCheckout);\n          return;\n        }\n        var existing = document.getElementById(\"tws-nmi-collect-checkout\");\n        if (existing) {\n          existing.addEventListener(\"load\", function () {\n            resolve(window.CollectCheckout);\n          });\n          existing.addEventListener(\"error\", reject);\n          return;\n        }\n        var script = document.createElement(\"script\");\n        script.id = \"tws-nmi-collect-checkout\";\n        script.src = NMI.scriptUrl;\n        script.setAttribute(\"data-checkout-key\", NMI.checkoutKey);\n        script.async = true;\n        script.onload = function () {\n          resolve(window.CollectCheckout);\n        };\n        script.onerror = function () {\n          reject(new Error(\"Failed to load CollectCheckout.js\"));\n        };\n        document.head.appendChild(script);\n      });\n    }\n\n    function showNmiError(message) {\n      var el = qs(\"[data-tws-nmi-error]\");\n      if (!el) return;\n      el.textContent = message || \"Unable to open secure checkout. Please try again.\";\n      el.style.display = \"block\";\n    }\n\n    function openNmiVaultCheckout() {\n      var btn = qs(\"#checkout_button\");\n      var err = qs(\"[data-tws-nmi-error]\");\n      if (err) err.style.display = \"none\";\n      if (btn) btn.classList.add(\"is-loading\");\n      persistSignupState();\n\n      loadCollectCheckout()\n        .then(function (CollectCheckout) {\n          if (!CollectCheckout || typeof CollectCheckout.redirectToCheckout !== \"function\") {\n            throw new Error(\"CollectCheckout is not available\");\n          }\n          return CollectCheckout.redirectToCheckout({\n            type: \"customerVaultOnly\",\n            lineItems: [],\n            successUrl: signupReturnUrl(\"success\"),\n            cancelUrl: signupReturnUrl(\"cancel\"),\n            customerVault: {\n              addCustomer: true,\n            },\n            receipt: {\n              showReceipt: true,\n              redirectToSuccessUrl: true,\n            },\n            collectShippingInfo: Boolean(NMI.collectShippingInfo),\n            useKount: Boolean(NMI.useKount),\n            paymentMethods: [\n              { type: \"creditCard\", use3DSecure: false },\n              { type: \"googlePay\", use3DSecure: false },\n            ],\n            fields: [],\n          });\n        })\n        .then(function (error) {\n          if (error) console.log(error);\n        })\n        .catch(function (error) {\n          console.error(error);\n          showNmiError(error && error.message ? error.message : \"Checkout failed to start.\");\n        })\n        .finally(function () {\n          if (btn) btn.classList.remove(\"is-loading\");\n        });\n    }\n\n    function showSuccess() {\n      var icon = qs(\"[data-tws-success-icon]\");\n      var title = qs(\"[data-tws-success-title]\");\n      var copy = qs(\"[data-tws-success-copy]\");\n      var actions = qs(\"[data-tws-success-actions]\");\n      var selected = state.planMeta || plansById[state.plan] || {};\n      if (selected.requiresApplication) {\n        icon.className = \"tws-su-success-icon is-pending\";\n        title.textContent = \"Application submitted\";\n        copy.textContent =\n          \"Thanks \u2014 your Free POS merchant application is in review. We\u2019ll email you when underwriting is complete. You can check status anytime in the app.\";\n        actions.innerHTML =\n          '<a class=\"tws-su-btn tws-su-btn-primary\" href=\"https:\/\/app.twssolutions.us\/\">View Application Status<\/a>' +\n          '<a class=\"tws-su-btn tws-su-btn-secondary\" href=\"https:\/\/app.twssolutions.us\/register\">Download Desktop App<\/a>';\n      } else {\n        icon.className = \"tws-su-success-icon is-ok\";\n        title.textContent = \"You're all set!\";\n        copy.textContent =\n          \"Your TWS POS account is ready. Next you\u2019ll verify email\/phone in the app, then finish setup.\";\n        actions.innerHTML =\n          '<a class=\"tws-su-btn tws-su-btn-primary\" href=\"https:\/\/app.twssolutions.us\/\">Go to Dashboard<\/a>' +\n          '<a class=\"tws-su-btn tws-su-btn-secondary\" href=\"https:\/\/app.twssolutions.us\/register\">Download Desktop App<\/a>';\n      }\n    }\n\n    qs('[data-form=\"account\"]').addEventListener(\"submit\", function (e) {\n      e.preventDefault();\n      var form = e.target;\n      var submitBtn = qs(\"[data-tws-account-submit]\");\n      showFormError(\"[data-tws-account-error]\", \"\");\n      showFormError(\"[data-tws-email-error]\", \"\");\n      if (!validateRequired(form)) return;\n      if (form.password.value.length < 8) {\n        markError(form.password);\n        return;\n      }\n      var email = form.email.value.trim();\n      setButtonLoading(submitBtn, true, \"Checking email\u2026\");\n      checkEmailAvailable(email)\n        .then(function (result) {\n          var msg = (result.data && result.data.message) || \"\";\n          var available = result.ok && \/can use this email\/i.test(msg || \"You can use this email\");\n          \/\/ Also treat bare success with empty\/unknown message as available when HTTP 200\n          if (result.ok && result.data && result.data.success === true) available = true;\n          if (!available) {\n            var err = msg || \"This email is already registered. Sign in or use a different email.\";\n            showFormError(\"[data-tws-email-error]\", err);\n            var emailField = form.email.closest(\".tws-su-field\");\n            if (emailField) emailField.classList.add(\"is-error\");\n            return;\n          }\n          state.fullName = form.fullName.value.trim();\n          state.email = email;\n          state.phone = form.phone.value.trim();\n          state.password = form.password.value;\n          var bizPhone = qs(\"#twsSuBizPhone\");\n          if (bizPhone && !bizPhone.value) bizPhone.value = state.phone;\n          go(\"business\");\n        })\n        .catch(function () {\n          showFormError(\n            \"[data-tws-account-error]\",\n            \"Unable to verify email right now. Check your connection and try again.\",\n          );\n        })\n        .finally(function () {\n          setButtonLoading(submitBtn, false);\n        });\n    });\n\n    \/\/ Team-size chips\n    qsa(\"[data-tws-employee-chips] .tws-su-chip\").forEach(function (chip) {\n      chip.addEventListener(\"click\", function () {\n        qsa(\"[data-tws-employee-chips] .tws-su-chip\").forEach(function (c) {\n          c.classList.remove(\"is-selected\");\n        });\n        chip.classList.add(\"is-selected\");\n        var hidden = qs(\"#twsSuEmployees\");\n        if (hidden) {\n          hidden.value = chip.getAttribute(\"data-value\") || \"\";\n          var field = hidden.closest(\".tws-su-field\");\n          if (field) field.classList.remove(\"is-error\");\n        }\n      });\n    });\n\n    \/\/ Default timezone from browser\n    (function prefTimezone() {\n      var sel = qs(\"#twsSuTz\");\n      if (!sel) return;\n      try {\n        var tz = Intl.DateTimeFormat().resolvedOptions().timeZone;\n        if (tz) {\n          var opt = Array.prototype.find.call(sel.options, function (o) {\n            return o.value === tz || o.textContent === tz;\n          });\n          if (opt) sel.value = opt.value || opt.textContent;\n          else {\n            var custom = document.createElement(\"option\");\n            custom.value = tz;\n            custom.textContent = tz;\n            sel.appendChild(custom);\n            sel.value = tz;\n          }\n        }\n      } catch (err) {}\n    })();\n\n    qs('[data-form=\"business\"]').addEventListener(\"submit\", function (e) {\n      e.preventDefault();\n      var form = e.target;\n      if (!form.employees.value) {\n        markError(form.employees);\n        return;\n      }\n      if (!validateRequired(form)) return;\n      state.business = {\n        businessName: form.businessName.value.trim(),\n        businessPhone: form.businessPhone.value.trim(),\n        businessType: form.businessType.value,\n        timezone: form.timezone.value,\n        street: form.street.value.trim(),\n        suite: (form.suite && form.suite.value.trim()) || \"\",\n        ein: form.ein.value.trim(),\n        city: form.city.value.trim(),\n        state: form.state.value.trim(),\n        zip: form.zip.value.trim(),\n        employees: form.employees.value,\n      };\n      \/\/ Prefill FREE application EIN\n      var appEin = qs(\"#twsSuEin\");\n      if (appEin && !appEin.value) appEin.value = state.business.ein;\n      loadPlans().then(function () {\n        go(\"plan\");\n      });\n    });\n\n    var equipContinue = qs(\"[data-tws-equip-continue]\");\n    if (equipContinue) {\n      equipContinue.addEventListener(\"click\", function () {\n        continueFromEquipment(false);\n      });\n    }\n    var equipSkip = qs(\"[data-tws-equip-skip]\");\n    if (equipSkip) {\n      equipSkip.addEventListener(\"click\", function () {\n        continueFromEquipment(true);\n      });\n    }\n\n    (function wireNmiButton() {\n      var btn = qs(\"#checkout_button\");\n      if (!btn) return;\n      btn.addEventListener(\"click\", function (e) {\n        e.preventDefault();\n        openNmiVaultCheckout();\n      });\n      btn.addEventListener(\"keydown\", function (e) {\n        if (e.key === \"Enter\" || e.key === \" \") {\n          e.preventDefault();\n          openNmiVaultCheckout();\n        }\n      });\n    })();\n\n    function showSubmitError(form, message) {\n      var el = form ? form.querySelector(\"[data-tws-submit-error]\") : null;\n      if (!el) return;\n      el.textContent = message || \"\";\n      el.style.display = message ? \"block\" : \"none\";\n    }\n\n    qs('[data-form=\"review\"]').addEventListener(\"submit\", function (e) {\n      e.preventDefault();\n      var form = e.target;\n      if (!validateRequired(form)) return;\n      var btn = qs(\"[data-tws-review-submit]\");\n      showSubmitError(form, \"\");\n      \/\/ Paid path defaults \u2014 no document uploads\n      state.application = Object.assign({}, state.application, {\n        ein: state.business.ein,\n        monthlyPurchase: 4,\n        monthlySale: 4,\n        typeOfSale: mapTypeOfSale(state.business.businessType),\n        locations: mapLocations(state.business.employees),\n        paymentProcessing: \"NO\",\n        findUs: 3,\n      });\n      setButtonLoading(btn, true, \"Creating account\u2026\");\n      submitSignUp()\n        .then(function (result) {\n          if (!result.ok) {\n            showSubmitError(form, result.message);\n            return;\n          }\n          clearSignupState();\n          showSuccess();\n          go(\"complete\");\n        })\n        .catch(function () {\n          showSubmitError(form, \"Unable to create account. Please try again.\");\n        })\n        .finally(function () {\n          setButtonLoading(btn, false);\n        });\n    });\n\n    qs('[data-form=\"application\"]').addEventListener(\"submit\", function (e) {\n      e.preventDefault();\n      var form = e.target;\n      var btn = qs(\"[data-tws-app-submit]\");\n      showSubmitError(form, \"\");\n      if (!validateRequired(form)) return;\n      state.application = {\n        ein: form.ein.value.trim(),\n        monthlyPurchase: form.monthlyPurchase.value,\n        monthlySale: form.monthlySale.value,\n        typeOfSale: form.typeOfSale.value,\n        locations: form.locations.value,\n        paymentProcessing: form.paymentProcessing.value,\n        findUs: form.findUs.value,\n      };\n      setButtonLoading(btn, true, \"Creating account\u2026\");\n      submitSignUp()\n        .then(function (result) {\n          if (!result.ok) {\n            showSubmitError(form, result.message);\n            return;\n          }\n          clearSignupState();\n          showSuccess();\n          go(\"complete\");\n        })\n        .catch(function () {\n          showSubmitError(form, \"Unable to create account. Please try again.\");\n        })\n        .finally(function () {\n          setButtonLoading(btn, false);\n        });\n    });\n\n    qsa(\"[data-back]\").forEach(function (btn) {\n      btn.addEventListener(\"click\", goBack);\n    });\n\n    qsa(\"[data-goto]\").forEach(function (btn) {\n      btn.addEventListener(\"click\", function () {\n        go(btn.getAttribute(\"data-goto\"));\n      });\n    });\n\n    \/\/ Deep-link + NMI return: ?plan=<planId>&nmi=success|cancel&customer_vault_id=...\n    var nmiReturn = \"\";\n    try {\n      var params = new URLSearchParams(window.location.search);\n      var preset = (params.get(\"plan\") || \"\").toLowerCase();\n      if (preset) state.presetPlanId = preset;\n      nmiReturn = (params.get(\"nmi\") || \"\").toLowerCase();\n      var vaultId = params.get(\"customer_vault_id\") || \"\";\n      if (vaultId && vaultId !== \"(CUSTOMER_VAULT_ID)\") {\n        state.customerVaultId = vaultId;\n      }\n    } catch (err) {}\n\n    ensureInterFont();\n    \/\/ Prefetch CollectCheckout so the vault button is ready on the payment step\n    loadCollectCheckout().catch(function () {});\n\n    loadPlans().then(function () {\n      if (state.presetPlanId && plansById[state.presetPlanId]) {\n        state.plan = state.presetPlanId;\n        state.planMeta = plansById[state.presetPlanId];\n      }\n\n      if (nmiReturn === \"success\") {\n        restoreSignupState();\n        if (state.plan && plansById[state.plan]) {\n          state.planMeta = plansById[state.plan];\n        }\n        applyPlanUi();\n        clearSignupState();\n        \/\/ Clean return query params from the address bar\n        try {\n          var clean = new URL(window.location.href);\n          clean.searchParams.delete(\"nmi\");\n          \/\/ keep customer_vault_id out of the bar after we captured it\n          clean.searchParams.delete(\"customer_vault_id\");\n          window.history.replaceState({}, \"\", clean.pathname + clean.search + clean.hash);\n        } catch (err2) {}\n        continueAfterVault();\n        return;\n      }\n\n      if (nmiReturn === \"cancel\") {\n        restoreSignupState();\n        if (state.plan && plansById[state.plan]) {\n          state.planMeta = plansById[state.plan];\n        }\n        applyPlanUi();\n        showPanel(\"payment\");\n        showNmiError(\"Card vault checkout was canceled. You can try again when ready.\");\n        return;\n      }\n\n      showPanel(\"account\");\n    });\n  })();\n<\/script>\n\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Fast. Simple. Built for specialty retail. Promotional $99.99\/month available. Already have an account? Sign In 1 Account 2 Business 3 Plan 4 Equipment 5 Card 6 Finish Create your account Set up your TWS POS login. Email and phone verification &hellip; <a href=\"https:\/\/twssolutions.us\/vi\/register\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-3470","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/twssolutions.us\/vi\/wp-json\/wp\/v2\/pages\/3470","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/twssolutions.us\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/twssolutions.us\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/twssolutions.us\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/twssolutions.us\/vi\/wp-json\/wp\/v2\/comments?post=3470"}],"version-history":[{"count":5,"href":"https:\/\/twssolutions.us\/vi\/wp-json\/wp\/v2\/pages\/3470\/revisions"}],"predecessor-version":[{"id":3487,"href":"https:\/\/twssolutions.us\/vi\/wp-json\/wp\/v2\/pages\/3470\/revisions\/3487"}],"wp:attachment":[{"href":"https:\/\/twssolutions.us\/vi\/wp-json\/wp\/v2\/media?parent=3470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}