{"id":126,"date":"2026-05-30T16:33:40","date_gmt":"2026-05-30T16:33:40","guid":{"rendered":"https:\/\/camp.wiserighteous.org\/?page_id=126"},"modified":"2026-05-31T15:33:34","modified_gmt":"2026-05-31T15:33:34","slug":"righteous-growth-system-examine-equip-engage","status":"publish","type":"page","link":"https:\/\/camp.wiserighteous.org\/index.php\/righteous-growth-system-examine-equip-engage\/","title":{"rendered":"Righteous Growth System \u2013 Examine, Equip, Engage"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\">\n    <title>Righteous Growth System \u2013 Examine, Equip, Engage<\/title>\n    <style>\n        * { box-sizing: border-box; }\n        body {\n            font-family: 'Segoe UI', Roboto, Arial, sans-serif;\n            max-width: 1000px;\n            margin: 0 auto;\n            padding: 20px;\n            background: #fefefe;\n            color: #1e2a3a;\n        }\n        .site-header {\n            text-align: center;\n            margin-bottom: 20px;\n            border-bottom: 2px solid #2c3e50;\n            padding-bottom: 10px;\n        }\n        .site-header h1 { margin: 0; font-size: 1.8rem; color: #2c3e50; }\n        .site-header p { margin: 5px 0 0; color: #4a627a; font-style: italic; }\n        h3 {\n            color: #2c3e50;\n            margin-top: 0;\n            border-left: 5px solid #2c3e50;\n            padding-left: 15px;\n            font-size: 1.6rem;\n        }\n        .step-card {\n            background: white;\n            border-radius: 12px;\n            box-shadow: 0 4px 12px rgba(0,0,0,0.05);\n            padding: 20px 25px;\n            margin-bottom: 25px;\n            border: 1px solid #e2e8f0;\n        }\n        .section {\n            margin-bottom: 30px;\n            border-top: 1px solid #e2e8f0;\n            padding-top: 15px;\n        }\n        .scale-note {\n            background: #f0f4f8;\n            padding: 8px 12px;\n            margin: 10px 0;\n            border-left: 4px solid #2c3e50;\n            font-size: 0.85rem;\n        }\n        .question {\n            margin-bottom: 16px;\n            display: flex;\n            flex-wrap: wrap;\n            align-items: flex-start;\n            gap: 10px;\n            background: #fafcff;\n            padding: 8px 0;\n            border-bottom: 1px solid #edf2f7;\n        }\n        .question-text { flex: 3; min-width: 200px; font-weight: 500; }\n        .options { flex: 2; display: flex; gap: 10px; flex-wrap: wrap; }\n        .options label { margin-right: 4px; font-size: 13px; }\n        textarea, input[type=\"text\"] {\n            width: 100%;\n            padding: 10px;\n            font-family: inherit;\n            font-size: 14px;\n            border: 1px solid #cbd5e1;\n            border-radius: 8px;\n            resize: vertical;\n        }\n        button {\n            background: #2c3e50;\n            color: white;\n            padding: 12px 28px;\n            border: none;\n            border-radius: 40px;\n            cursor: pointer;\n            font-size: 1rem;\n            font-weight: bold;\n            margin-top: 15px;\n            transition: 0.2s;\n        }\n        button:hover { background: #1e2a3a; transform: scale(1.01); }\n        .step-indicator {\n            display: flex;\n            justify-content: space-between;\n            margin-bottom: 25px;\n            background: #eef2f5;\n            padding: 12px 20px;\n            border-radius: 60px;\n        }\n        .step { font-weight: bold; color: #7f8c8d; }\n        .step.active { color: #2c3e50; background: white; padding: 4px 12px; border-radius: 40px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }\n        .hidden { display: none; }\n        .game-box { background: #f9f5eb; padding: 15px; border-radius: 12px; margin: 20px 0; }\n        footer { text-align: center; font-size: 12px; color: #94a3b8; margin-top: 40px; }\n        .analysis-panel {\n            background: #e6f7f0;\n            border-left: 6px solid #2c6e49;\n            padding: 15px;\n            margin: 20px 0;\n            border-radius: 12px;\n        }\n        .analysis-panel h4 { margin-top: 0; }\n        .user-bar {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            background: #eef2f5;\n            padding: 8px 16px;\n            border-radius: 40px;\n            margin-bottom: 20px;\n            flex-wrap: wrap;\n            gap: 10px;\n        }\n        .backup-buttons {\n            display: flex;\n            gap: 10px;\n        }\n        .backup-buttons button {\n            margin: 0;\n            padding: 6px 12px;\n            font-size: 0.8rem;\n            background: #4a627a;\n        }\n        .risk-high { background: #f8d7da; color: #721c24; padding: 4px 8px; border-radius: 20px; font-weight: bold; display: inline-block; }\n        .risk-moderate { background: #fff3cd; color: #856404; padding: 4px 8px; border-radius: 20px; font-weight: bold; display: inline-block; }\n        .risk-low { background: #d4edda; color: #155724; padding: 4px 8px; border-radius: 20px; font-weight: bold; display: inline-block; }\n        .domain-row { display: flex; justify-content: space-between; align-items: center; padding: 8px 0; border-bottom: 1px solid #ddd; }\n        .domain-name { font-weight: bold; width: 30%; }\n        .domain-score { width: 15%; }\n        .domain-risk { width: 25%; }\n        .progress-bar-bg { background: #e9ecef; border-radius: 20px; height: 10px; width: 30%; overflow: hidden; }\n        .progress-bar-fill { background: #2c6e49; height: 100%; width: 0%; border-radius: 20px; }\n        .insight-note { background: #fef9e6; padding: 12px; border-radius: 12px; margin-top: 15px; font-style: italic; }\n        .top-item-list { list-style: none; padding-left: 0; }\n        .top-item-list li { background: #f1f3f5; margin: 8px 0; padding: 8px 12px; border-radius: 25px; }\n        .save-indicator { font-size: 0.8rem; color: #2c6e49; margin-left: 15px; }\n        @media (max-width: 700px) { .question { flex-direction: column; } .domain-row { flex-wrap: wrap; gap: 8px; } }\n    <\/style>\n<\/head>\n<body>\n\n<div class=\"site-header\">\n    <h1>Righteous Growth System<\/h1>\n    <p>Examine \u00b7 Equip \u00b7 Engage<\/p>\n<\/div>\n\n<div class=\"user-bar\">\n    <div>\n        <label>Your name: <\/label>\n        <input type=\"text\" id=\"userName\" placeholder=\"e.g., Alex\" style=\"width:180px; padding:6px;\">\n        <button id=\"resetUserBtn\" style=\"background:#7f8c8d;\">Reset My Data<\/button>\n    <\/div>\n    <div class=\"backup-buttons\">\n        <button id=\"exportDataBtn\" style=\"background:#2c6e49;\">\ud83d\udce5 Export Data<\/button>\n        <label for=\"importFile\" style=\"background:#4a627a; color:white; padding:6px 12px; border-radius:40px; cursor:pointer; font-size:0.8rem;\">\ud83d\udce4 Import Data<\/label>\n        <input type=\"file\" id=\"importFile\" accept=\".json\" style=\"display:none;\">\n    <\/div>\n    <div id=\"userStatus\" style=\"font-size:0.9rem;\"><\/div>\n<\/div>\n\n<div class=\"step-indicator\">\n    <span class=\"step\" id=\"step1Indicator\">\ud83d\udd0d 1. Examine<\/span>\n    <span class=\"step\" id=\"step2Indicator\">\u2699\ufe0f 2. Equip<\/span>\n    <span class=\"step\" id=\"step3Indicator\">\ud83c\udfaf 3. Engage<\/span>\n<\/div>\n\n<!-- STEP 1 \u2013 EXAMINE (full form) -->\n<div id=\"step1\" class=\"step-card\">\n    <h3>Step 1 \u2013 Examine: Identify Unrighteous Behavior Patterns<\/h3>\n    <p>Answer honestly. <strong>All answers are auto\u2011saved<\/strong> as you go. If you miss a question, just fill it \u2013 your other answers will stay.<\/p>\n    <div id=\"autoSaveStatus\" style=\"font-size:0.8rem; color:#2c6e49; margin-bottom:10px;\">\u2705 Draft auto\u2011saved<\/div>\n    <form id=\"step1Form\">\n        <div class=\"section\">\n            <h4>A. Inner Attitudes<\/h4>\n            <div class=\"scale-note\"><strong>Scale:<\/strong> 1 = Never\/Rarely | 2 = Occasionally | 3 = Sometimes | 4 = Often | 5 = Almost always<\/div>\n            <div class=\"question\"><span class=\"question-text\">A1. I feel secretly annoyed when someone else succeeds or is praised.<\/span><span class=\"options\">1<input type=\"radio\" name=\"A1\" value=\"1\"> 2<input type=\"radio\" name=\"A1\" value=\"2\"> 3<input type=\"radio\" name=\"A1\" value=\"3\"> 4<input type=\"radio\" name=\"A1\" value=\"4\"> 5<input type=\"radio\" name=\"A1\" value=\"5\"><\/span><\/div>\n            <div class=\"question\"><span class=\"question-text\">A2. I hold onto anger or resentment longer than I should.<\/span><span class=\"options\">1<input type=\"radio\" name=\"A2\" value=\"1\"> 2<input type=\"radio\" name=\"A2\" value=\"2\"> 3<input type=\"radio\" name=\"A2\" value=\"3\"> 4<input type=\"radio\" name=\"A2\" value=\"4\"> 5<input type=\"radio\" name=\"A2\" value=\"5\"><\/span><\/div>\n            <div class=\"question\"><span class=\"question-text\">A3. I compare myself to others and feel that I deserve more than them.<\/span><span class=\"options\">1<input type=\"radio\" name=\"A3\" value=\"1\"> 2<input type=\"radio\" name=\"A3\" value=\"2\"> 3<input type=\"radio\" name=\"A3\" value=\"3\"> 4<input type=\"radio\" name=\"A3\" value=\"4\"> 5<input type=\"radio\" name=\"A3\" value=\"5\"><\/span><\/div>\n            <div class=\"question\"><span class=\"question-text\">A4. I look down on people who are different from me.<\/span><span class=\"options\">1<input type=\"radio\" name=\"A4\" value=\"1\"> 2<input type=\"radio\" name=\"A4\" value=\"2\"> 3<input type=\"radio\" name=\"A4\" value=\"3\"> 4<input type=\"radio\" name=\"A4\" value=\"4\"> 5<input type=\"radio\" name=\"A4\" value=\"5\"><\/span><\/div>\n            <div class=\"question\"><span class=\"question-text\">A5. I act humble outside but feel proud inside.<\/span><span class=\"options\">1<input type=\"radio\" name=\"A5\" value=\"1\"> 2<input type=\"radio\" name=\"A5\" value=\"2\"> 3<input type=\"radio\" name=\"A5\" value=\"3\"> 4<input type=\"radio\" name=\"A5\" value=\"4\"> 5<input type=\"radio\" name=\"A5\" value=\"5\"><\/span><\/div>\n        <\/div>\n        <div class=\"section\">\n            <h4>B. Relationships &#038; Speech<\/h4>\n            <div class=\"scale-note\"><strong>Scale:<\/strong> 1 = Never\/Rarely | 2 = Occasionally | 3 = Sometimes | 4 = Often | 5 = Almost always<\/div>\n            <div class=\"question\"><span class=\"question-text\">B1. I blame others for my mistakes instead of owning them.<\/span><span class=\"options\">1<input type=\"radio\" name=\"B1\" value=\"1\"> 2<input type=\"radio\" name=\"B1\" value=\"2\"> 3<input type=\"radio\" name=\"B1\" value=\"3\"> 4<input type=\"radio\" name=\"B1\" value=\"4\"> 5<input type=\"radio\" name=\"B1\" value=\"5\"><\/span><\/div>\n            <div class=\"question\"><span class=\"question-text\">B2. I lie or exaggerate to look better or avoid trouble.<\/span><span class=\"options\">1<input type=\"radio\" name=\"B2\" value=\"1\"> 2<input type=\"radio\" name=\"B2\" value=\"2\"> 3<input type=\"radio\" name=\"B2\" value=\"3\"> 4<input type=\"radio\" name=\"B2\" value=\"4\"> 5<input type=\"radio\" name=\"B2\" value=\"5\"><\/span><\/div>\n            <div class=\"question\"><span class=\"question-text\">B3. I gossip or share negative things about someone not present.<\/span><span class=\"options\">1<input type=\"radio\" name=\"B3\" value=\"1\"> 2<input type=\"radio\" name=\"B3\" value=\"2\"> 3<input type=\"radio\" name=\"B3\" value=\"3\"> 4<input type=\"radio\" name=\"B3\" value=\"4\"> 5<input type=\"radio\" name=\"B3\" value=\"5\"><\/span><\/div>\n            <div class=\"question\"><span class=\"question-text\">B4. I try to control or manipulate people to get what I want.<\/span><span class=\"options\">1<input type=\"radio\" name=\"B4\" value=\"1\"> 2<input type=\"radio\" name=\"B4\" value=\"2\"> 3<input type=\"radio\" name=\"B4\" value=\"3\"> 4<input type=\"radio\" name=\"B4\" value=\"4\"> 5<input type=\"radio\" name=\"B4\" value=\"5\"><\/span><\/div>\n            <div class=\"question\"><span class=\"question-text\">B5. I ignore\/avoid someone who hurt me instead of honest talk.<\/span><span class=\"options\">1<input type=\"radio\" name=\"B5\" value=\"1\"> 2<input type=\"radio\" name=\"B5\" value=\"2\"> 3<input type=\"radio\" name=\"B5\" value=\"3\"> 4<input type=\"radio\" name=\"B5\" value=\"4\"> 5<input type=\"radio\" name=\"B5\" value=\"5\"><\/span><\/div>\n        <\/div>\n        <div class=\"section\">\n            <h4>C. Reactions to Stress or Conflict<\/h4>\n            <div class=\"scale-note\"><strong>Scale:<\/strong> 1 = Never\/Rarely | 2 = Occasionally | 3 = Sometimes | 4 = Often | 5 = Almost always<\/div>\n            <div class=\"question\"><span class=\"question-text\">C1. When criticized, I get defensive or argue back.<\/span><span class=\"options\">1<input type=\"radio\" name=\"C1\" value=\"1\"> 2<input type=\"radio\" name=\"C1\" value=\"2\"> 3<input type=\"radio\" name=\"C1\" value=\"3\"> 4<input type=\"radio\" name=\"C1\" value=\"4\"> 5<input type=\"radio\" name=\"C1\" value=\"5\"><\/span><\/div>\n            <div class=\"question\"><span class=\"question-text\">C2. I react with anger, yelling, or sarcasm too quickly.<\/span><span class=\"options\">1<input type=\"radio\" name=\"C2\" value=\"1\"> 2<input type=\"radio\" name=\"C2\" value=\"2\"> 3<input type=\"radio\" name=\"C2\" value=\"3\"> 4<input type=\"radio\" name=\"C2\" value=\"4\"> 5<input type=\"radio\" name=\"C2\" value=\"5\"><\/span><\/div>\n            <div class=\"question\"><span class=\"question-text\">C3. I shut down, withdraw, or give silent treatment.<\/span><span class=\"options\">1<input type=\"radio\" name=\"C3\" value=\"1\"> 2<input type=\"radio\" name=\"C3\" value=\"2\"> 3<input type=\"radio\" name=\"C3\" value=\"3\"> 4<input type=\"radio\" name=\"C3\" value=\"4\"> 5<input type=\"radio\" name=\"C3\" value=\"5\"><\/span><\/div>\n            <div class=\"question\"><span class=\"question-text\">C4. I do impulsive things (spending, substances, revenge text) to escape bad feelings.<\/span><span class=\"options\">1<input type=\"radio\" name=\"C4\" value=\"1\"> 2<input type=\"radio\" name=\"C4\" value=\"2\"> 3<input type=\"radio\" name=\"C4\" value=\"3\"> 4<input type=\"radio\" name=\"C4\" value=\"4\"> 5<input type=\"radio\" name=\"C4\" value=\"5\"><\/span><\/div>\n            <div class=\"question\"><span class=\"question-text\">C5. I avoid difficult conversations or responsibilities by disappearing\/procrastinating.<\/span><span class=\"options\">1<input type=\"radio\" name=\"C5\" value=\"1\"> 2<input type=\"radio\" name=\"C5\" value=\"2\"> 3<input type=\"radio\" name=\"C5\" value=\"3\"> 4<input type=\"radio\" name=\"C5\" value=\"4\"> 5<input type=\"radio\" name=\"C5\" value=\"5\"><\/span><\/div>\n        <\/div>\n        <div class=\"section\">\n            <h4>D. Accountability &#038; Integrity<\/h4>\n            <div class=\"scale-note\"><strong>Scale:<\/strong> 1 = Never\/Rarely | 2 = Occasionally | 3 = Sometimes | 4 = Often | 5 = Almost always<\/div>\n            <div class=\"question\"><span class=\"question-text\">D1. I make excuses for my bad behavior (\u201cthat\u2019s just how I am\u201d).<\/span><span class=\"options\">1<input type=\"radio\" name=\"D1\" value=\"1\"> 2<input type=\"radio\" name=\"D1\" value=\"2\"> 3<input type=\"radio\" name=\"D1\" value=\"3\"> 4<input type=\"radio\" name=\"D1\" value=\"4\"> 5<input type=\"radio\" name=\"D1\" value=\"5\"><\/span><\/div>\n            <div class=\"question\"><span class=\"question-text\">D2. I break promises or commitments without good reason.<\/span><span class=\"options\">1<input type=\"radio\" name=\"D2\" value=\"1\"> 2<input type=\"radio\" name=\"D2\" value=\"2\"> 3<input type=\"radio\" name=\"D2\" value=\"3\"> 4<input type=\"radio\" name=\"D2\" value=\"4\"> 5<input type=\"radio\" name=\"D2\" value=\"5\"><\/span><\/div>\n            <div class=\"question\"><span class=\"question-text\">D3. I hide habits or actions from people who care about me.<\/span><span class=\"options\">1<input type=\"radio\" name=\"D3\" value=\"1\"> 2<input type=\"radio\" name=\"D3\" value=\"2\"> 3<input type=\"radio\" name=\"D3\" value=\"3\"> 4<input type=\"radio\" name=\"D3\" value=\"4\"> 5<input type=\"radio\" name=\"D3\" value=\"5\"><\/span><\/div>\n            <div class=\"question\"><span class=\"question-text\">D4. I know the right thing but choose the easy\/selfish thing.<\/span><span class=\"options\">1<input type=\"radio\" name=\"D4\" value=\"1\"> 2<input type=\"radio\" name=\"D4\" value=\"2\"> 3<input type=\"radio\" name=\"D4\" value=\"3\"> 4<input type=\"radio\" name=\"D4\" value=\"4\"> 5<input type=\"radio\" name=\"D4\" value=\"5\"><\/span><\/div>\n            <div class=\"question\"><span class=\"question-text\">D5. I avoid admitting I was wrong, even when I know it.<\/span><span class=\"options\">1<input type=\"radio\" name=\"D5\" value=\"1\"> 2<input type=\"radio\" name=\"D5\" value=\"2\"> 3<input type=\"radio\" name=\"D5\" value=\"3\"> 4<input type=\"radio\" name=\"D5\" value=\"4\"> 5<input type=\"radio\" name=\"D5\" value=\"5\"><\/span><\/div>\n        <\/div>\n        <div class=\"section\">\n            <h4>Personal Reflection<\/h4>\n            <div class=\"reflection\"><label>R1 \u2013 Pattern naming<\/label><textarea name=\"reflection1\" rows=\"2\" placeholder=\"Look back at your highest\u2011rated items (4 or 5). What is the one most frequent unrighteous pattern?\" required><\/textarea><\/div>\n            <div class=\"reflection\"><label>R2 \u2013 Trigger mapping (beginner)<\/label><textarea name=\"reflection2\" rows=\"2\" placeholder=\"Describe a recent situation where you acted unrighteously. What happened right before? What did you feel?\" required><\/textarea><\/div>\n            <div class=\"reflection\"><label>R3 \u2013 Desired change<\/label><textarea name=\"reflection3\" rows=\"2\" placeholder=\"If you could replace that unrighteous reaction with one better response, what would it be?\" required><\/textarea><\/div>\n        <\/div>\n        <button type=\"submit\">Complete Examine \u2192 See Your Analysis<\/button>\n        <button type=\"button\" id=\"clearDraftBtn\" style=\"background:#6c757d; margin-left:10px;\">Clear Draft<\/button>\n    <\/form>\n<\/div>\n\n<!-- STEP 2 \u2013 EQUIP -->\n<div id=\"step2\" class=\"step-card hidden\">\n    <h3>Step 2 \u2013 Equip: Plan Effective Procedures to Break Patterns<\/h3>\n    <div id=\"analysisDisplay\" class=\"analysis-panel\"><\/div>\n    <form id=\"step2Form\">\n        <div class=\"section\"><label><strong>\ud83c\udfaf Pattern to work on:<\/strong><\/label><input type=\"text\" name=\"pattern\" id=\"patternPreview\" required><\/div>\n        <div class=\"section\"><label><strong>\u26a1 Trigger mapping:<\/strong><\/label><textarea name=\"triggers\" id=\"triggersPreview\" rows=\"2\" required><\/textarea><\/div>\n        <div class=\"section\"><label><strong>\ud83d\udd04 Replacement behavior design:<\/strong><\/label><textarea name=\"replacement\" id=\"replacementPreview\" rows=\"2\" required><\/textarea><\/div>\n        <div class=\"section\"><label><strong>\ud83d\udc65 Accountability setup:<\/strong><\/label><textarea name=\"accountability\" id=\"accountabilityPreview\" rows=\"2\" required><\/textarea><\/div>\n        <button type=\"submit\">Complete Equip \u2192 Move to Engage<\/button>\n    <\/form>\n<\/div>\n\n<!-- STEP 3 \u2013 ENGAGE -->\n<div id=\"step3\" class=\"step-card hidden\">\n    <h3>Step 3 \u2013 Engage: Meditate &#038; Practice Regularly<\/h3>\n    <form id=\"step3Form\">\n        <div class=\"section\"><label><strong>\ud83e\uddd8 Daily awareness practice (2 min):<\/strong><\/label><textarea name=\"dailyPractice\" rows=\"2\" required><\/textarea><\/div>\n        <div class=\"section game-box\"><label><strong>\ud83c\udfae Repetition &#038; skill\u2011building game:<\/strong><\/label><textarea name=\"skillGame\" rows=\"2\" required><\/textarea><\/div>\n        <div class=\"section\"><label><strong>\ud83d\udcc6 Weekly self\u2011review and adjustment:<\/strong><\/label><textarea name=\"weeklyReview\" rows=\"2\" required><\/textarea><\/div>\n        <button type=\"submit\">Complete All Steps \u2192 View My Growth Plan<\/button>\n    <\/form>\n    <div id=\"summaryBox\" style=\"margin-top:25px; background:#eef2ff; border-radius:12px; padding:15px; display:none;\">\n        <h4>\u2705 Your Righteous Growth Plan<\/h4>\n        <pre id=\"finalSummary\" style=\"white-space:pre-wrap; font-family:monospace;\"><\/pre>\n    <\/div>\n<\/div>\n\n<footer>Righteous Growth System \u2013 Data saved automatically in this browser. Use Export\/Import to move between devices.<\/footer>\n\n<script>\n    \/\/ ---------- GLOBALS ----------\n    let currentUser = null;\n    let currentUserName = null;\n\n    function getStorageKey(name) { return `rgs_${name}`; }\n    function getDraftKey(name) { return `rgs_draft_${name}`; }\n\n    \/\/ Save draft\n    function saveDraft() {\n        if (!currentUser) return;\n        const form = document.getElementById('step1Form');\n        const formData = new FormData(form);\n        const draft = {};\n        for (let [key, value] of formData.entries()) {\n            draft[key] = value;\n        }\n        localStorage.setItem(getDraftKey(currentUser.name), JSON.stringify(draft));\n        document.getElementById('autoSaveStatus').innerHTML = '\u2705 Draft auto\u2011saved';\n        setTimeout(() => {\n            if (document.getElementById('autoSaveStatus').innerHTML.includes('auto\u2011saved'))\n                document.getElementById('autoSaveStatus').innerHTML = '\u2705 Draft saved';\n        }, 2000);\n    }\n\n    function restoreDraft() {\n        if (!currentUser) return;\n        const raw = localStorage.getItem(getDraftKey(currentUser.name));\n        if (!raw) return;\n        const draft = JSON.parse(raw);\n        for (let name in draft) {\n            const input = document.querySelector(`[name=\"${name}\"]`);\n            if (!input) continue;\n            if (input.tagName === 'INPUT' && input.type === 'radio') {\n                const radio = document.querySelector(`input[name=\"${name}\"][value=\"${draft[name]}\"]`);\n                if (radio) radio.checked = true;\n            } else if (input.tagName === 'TEXTAREA') {\n                input.value = draft[name];\n            }\n        }\n    }\n\n    function clearDraft() {\n        if (!currentUser) return;\n        localStorage.removeItem(getDraftKey(currentUser.name));\n        document.getElementById('autoSaveStatus').innerHTML = '\ud83d\uddd1\ufe0f Draft cleared';\n    }\n\n    function attachAutoSave() {\n        const form = document.getElementById('step1Form');\n        const inputs = form.querySelectorAll('input, textarea');\n        inputs.forEach(input => {\n            input.removeEventListener('change', saveDraft);\n            input.removeEventListener('input', saveDraft);\n            input.addEventListener('change', saveDraft);\n            input.addEventListener('input', saveDraft);\n        });\n    }\n\n    function loadOrCreateUser(name, preserveForm = true) {\n        if (!name || name.trim() === \"\") name = \"Guest\";\n        const key = getStorageKey(name);\n        const raw = localStorage.getItem(key);\n        if (raw) {\n            const userData = JSON.parse(raw);\n            currentUser = {\n                name: userData.name,\n                currentStep: userData.currentStep || 1,\n                step1Data: userData.step1Data || null,\n                step2Data: userData.step2Data || null,\n                step3Data: userData.step3Data || null\n            };\n            document.getElementById('userStatus').innerHTML = `\u2713 Loaded ${currentUser.name} (step ${currentUser.currentStep})`;\n            if (!preserveForm) {\n                if (currentUser.step1Data) restoreStep1Form(currentUser.step1Data);\n                if (currentUser.step2Data) restoreStep2Form(currentUser.step2Data);\n                if (currentUser.step3Data) restoreStep3Form(currentUser.step3Data);\n                if (currentUser.step1Data && currentUser.currentStep >= 2) {\n                    const analysis = generateAdvancedAnalysis(currentUser.step1Data);\n                    displayAnalysis(analysis);\n                }\n                showStep(currentUser.currentStep);\n            }\n        } else {\n            currentUser = { name, currentStep: 1, step1Data: null, step2Data: null, step3Data: null };\n            document.getElementById('userStatus').innerHTML = `\ud83c\udd95 New user: ${name}`;\n            if (!preserveForm) {\n                showStep(1);\n                document.getElementById('step1Form').reset();\n                document.getElementById('step2Form').reset();\n                document.getElementById('step3Form').reset();\n                document.getElementById('analysisDisplay').innerHTML = '';\n                document.getElementById('summaryBox').style.display = 'none';\n            }\n        }\n        currentUserName = currentUser.name;\n        document.getElementById('userName').value = currentUser.name;\n        attachAutoSave();\n        if (preserveForm && !currentUser.step1Data) {\n            restoreDraft();\n        }\n    }\n\n    function saveUserData() {\n        if (!currentUser) return;\n        const dataToSave = {\n            name: currentUser.name,\n            currentStep: currentUser.currentStep,\n            step1Data: currentUser.step1Data,\n            step2Data: currentUser.step2Data,\n            step3Data: currentUser.step3Data\n        };\n        localStorage.setItem(getStorageKey(currentUser.name), JSON.stringify(dataToSave));\n        localStorage.removeItem(getDraftKey(currentUser.name));\n        document.getElementById('userStatus').innerHTML = `\u2713 Saved: ${currentUser.name} (step ${currentUser.currentStep})`;\n    }\n\n    \/\/ Analysis functions\n    function generateAdvancedAnalysis(step1Data) {\n        const scores = step1Data.scores;\n        const domainItems = { A:[], B:[], C:[], D:[] };\n        for (let key in scores) domainItems[key[0]].push(scores[key]);\n        const domainAvg = {};\n        for (let d in domainItems) {\n            const sum = domainItems[d].reduce((a,b)=>a+b,0);\n            domainAvg[d] = sum\/5;\n        }\n        const domainNames = { A:\"Inner Attitudes\", B:\"Relationships & Speech\", C:\"Reactions to Stress\", D:\"Accountability & Integrity\" };\n        const riskDetails = {};\n        for (let d of ['A','B','C','D']) {\n            let avg = domainAvg[d];\n            let riskText, riskClass;\n            if (avg>=4) { riskText=\"High Risk\"; riskClass=\"risk-high\"; }\n            else if (avg>=2.5) { riskText=\"Moderate Risk\"; riskClass=\"risk-moderate\"; }\n            else { riskText=\"Low Risk\"; riskClass=\"risk-low\"; }\n            riskDetails[d] = { avg, riskText, riskClass };\n        }\n        let highestDomain = Object.keys(domainAvg).reduce((a,b)=>domainAvg[a]>domainAvg[b]?a:b);\n        const itemText = {\n            A1:\"Annoyed when others succeed\", A2:\"Hold onto anger\", A3:\"Compare & feel deserving\", A4:\"Look down on others\", A5:\"Proud inside\",\n            B1:\"Blame others\", B2:\"Lie\/exaggerate\", B3:\"Gossip\", B4:\"Control\/manipulate\", B5:\"Avoid conflict\",\n            C1:\"Defensive when criticized\", C2:\"Anger\/yelling\", C3:\"Shut down\", C4:\"Impulsive escape\", C5:\"Avoid responsibilities\",\n            D1:\"Make excuses\", D2:\"Break promises\", D3:\"Hide habits\", D4:\"Choose easy path\", D5:\"Avoid admitting wrong\"\n        };\n        let itemScores = [];\n        for (let key in scores) itemScores.push({ key, text: itemText[key]||key, score: scores[key] });\n        itemScores.sort((a,b)=>b.score-a.score);\n        const topItems = itemScores.slice(0,3);\n        const highestDomainInTop = topItems.some(item=>item.key.startsWith(highestDomain));\n        let highlightNote = \"\";\n        if (!highestDomainInTop) {\n            highlightNote = `\ud83d\udca1 Your highest\u2011risk area is \"${domainNames[highestDomain]}\" (average ${domainAvg[highestDomain].toFixed(1)}\/5). Even though it didn't make the top 3 individual items, the combination of several moderate scores makes it your priority to work on. Focus here first.`;\n        } else {\n            highlightNote = `\u2705 Your highest\u2011risk area \"${domainNames[highestDomain]}\" appears in your top behaviors \u2013 great place to start.`;\n        }\n        let advice = \"\";\n        switch (highestDomain) {\n            case 'A': advice = \"Your inner attitudes show pride, envy, or comparison. Try practicing gratitude and humility exercises.\"; break;\n            case 'B': advice = \"Your relationships are affected by blame, dishonesty, or avoidance. Practice owning mistakes and speaking truth in a kind way.\"; break;\n            case 'C': advice = \"You react strongly to stress. Before responding, take a 3\u2011second pause or step away for 2 minutes.\"; break;\n            case 'D': advice = \"Accountability is a challenge. Start with one small promise you know you can keep, and use a friend to check in.\"; break;\n        }\n        return { domainAvg, domainNames, riskDetails, highestDomain, topItems, highlightNote, advice,\n                 pattern: step1Data.reflection1, trigger: step1Data.reflection2, desired: step1Data.reflection3 };\n    }\n\n    function displayAnalysis(analysis) {\n        const container = document.getElementById('analysisDisplay');\n        let html = `<h4>\ud83d\udcca Your Personal Growth Analysis<\/h4><div>`;\n        for (let d of ['A','B','C','D']) {\n            const rd = analysis.riskDetails[d];\n            html += `<div class=\"domain-row\"><span class=\"domain-name\">${analysis.domainNames[d]}<\/span><span class=\"domain-score\">${rd.avg.toFixed(1)}\/5<\/span><span class=\"domain-risk\"><span class=\"${rd.riskClass}\">${rd.riskText}<\/span><\/span><div class=\"progress-bar-bg\"><div class=\"progress-bar-fill\" style=\"width:${(rd.avg\/5)*100}%;\"><\/div><\/div><\/div>`;\n        }\n        html += `<\/div><h4>\ud83d\udd1d Top 3 Specific Behaviors<\/h4><ul class=\"top-item-list\">`;\n        for (let item of analysis.topItems) html += `<li><strong>${item.text}<\/strong> \u2013 score ${item.score}\/5<\/li>`;\n        html += `<\/ul><div class=\"insight-note\">${analysis.highlightNote}<\/div><h4>\ud83d\udca1 What to work on first<\/h4><p>${analysis.advice}<\/p><p><strong>Your own pattern:<\/strong> \u201c${analysis.pattern || 'Not provided'}\u201d<\/p><p><em>Now use the plan below.<\/em><\/p>`;\n        container.innerHTML = html;\n        document.getElementById('patternPreview').value = analysis.pattern || \"\";\n        document.getElementById('triggersPreview').value = analysis.trigger || \"\";\n        document.getElementById('replacementPreview').value = analysis.desired || \"\";\n        let accountabilityHint = analysis.highestDomain === 'D' ? \"Set a daily check-in with a friend or use a habit tracker.\" : (analysis.highestDomain === 'C' ? \"Practice the 'pause' technique and log each time you succeed.\" : \"Share your plan with one trusted person and ask them to check in weekly.\");\n        document.getElementById('accountabilityPreview').placeholder = accountabilityHint;\n    }\n\n    function restoreStep1Form(data) {\n        if (!data) return;\n        for (let q in data.scores) {\n            let radio = document.querySelector(`input[name=\"${q}\"][value=\"${data.scores[q]}\"]`);\n            if (radio) radio.checked = true;\n        }\n        document.querySelector('textarea[name=\"reflection1\"]').value = data.reflection1 || \"\";\n        document.querySelector('textarea[name=\"reflection2\"]').value = data.reflection2 || \"\";\n        document.querySelector('textarea[name=\"reflection3\"]').value = data.reflection3 || \"\";\n    }\n    function restoreStep2Form(data) {\n        if(!data) return;\n        document.getElementById('patternPreview').value = data.pattern || \"\";\n        document.getElementById('triggersPreview').value = data.triggers || \"\";\n        document.getElementById('replacementPreview').value = data.replacement || \"\";\n        document.getElementById('accountabilityPreview').value = data.accountability || \"\";\n    }\n    function restoreStep3Form(data) {\n        if(!data) return;\n        document.querySelector('textarea[name=\"dailyPractice\"]').value = data.dailyPractice || \"\";\n        document.querySelector('textarea[name=\"skillGame\"]').value = data.skillGame || \"\";\n        document.querySelector('textarea[name=\"weeklyReview\"]').value = data.weeklyReview || \"\";\n    }\n\n    function showStep(stepNumber) {\n        document.getElementById('step1').classList.add('hidden');\n        document.getElementById('step2').classList.add('hidden');\n        document.getElementById('step3').classList.add('hidden');\n        if(stepNumber===1) document.getElementById('step1').classList.remove('hidden');\n        if(stepNumber===2) document.getElementById('step2').classList.remove('hidden');\n        if(stepNumber===3) document.getElementById('step3').classList.remove('hidden');\n        const ind1=document.getElementById('step1Indicator'), ind2=document.getElementById('step2Indicator'), ind3=document.getElementById('step3Indicator');\n        [ind1,ind2,ind3].forEach(i=>i.classList.remove('active'));\n        if(stepNumber===1) ind1.classList.add('active');\n        if(stepNumber===2) ind2.classList.add('active');\n        if(stepNumber===3) ind3.classList.add('active');\n    }\n\n    \/\/ Step 1 submit\n    document.getElementById('step1Form').addEventListener('submit', function(e) {\n        e.preventDefault();\n        let name = document.getElementById('userName').value.trim();\n        if (!name) name = \"Guest\";\n        if (!currentUser || currentUser.name !== name) {\n            loadOrCreateUser(name, true);\n        }\n        const questions = ['A1','A2','A3','A4','A5','B1','B2','B3','B4','B5','C1','C2','C3','C4','C5','D1','D2','D3','D4','D5'];\n        let scores = {};\n        let missing = [];\n        for (let q of questions) {\n            let val = document.querySelector(`input[name=\"${q}\"]:checked`);\n            if (val) scores[q] = parseInt(val.value);\n            else missing.push(q);\n        }\n        if (missing.length > 0) {\n            alert(`Please answer the following questions: ${missing.join(', ')}`);\n            return;\n        }\n        const reflection1 = document.querySelector('textarea[name=\"reflection1\"]').value;\n        const reflection2 = document.querySelector('textarea[name=\"reflection2\"]').value;\n        const reflection3 = document.querySelector('textarea[name=\"reflection3\"]').value;\n        if (!reflection1 || !reflection2 || !reflection3) {\n            alert(\"Please complete all three reflection questions.\");\n            return;\n        }\n        const step1Data = { scores, reflection1, reflection2, reflection3 };\n        currentUser.step1Data = step1Data;\n        currentUser.currentStep = 2;\n        saveUserData();\n        const analysis = generateAdvancedAnalysis(step1Data);\n        displayAnalysis(analysis);\n        showStep(2);\n    });\n\n    \/\/ Step 2 submit\n    document.getElementById('step2Form').addEventListener('submit', function(e) {\n        e.preventDefault();\n        if (!currentUser) { alert(\"Please enter a name first.\"); return; }\n        const pattern = document.getElementById('patternPreview').value;\n        const triggers = document.getElementById('triggersPreview').value;\n        const replacement = document.getElementById('replacementPreview').value;\n        const accountability = document.getElementById('accountabilityPreview').value;\n        if (!pattern || !triggers || !replacement || !accountability) { alert(\"Please fill all fields.\"); return; }\n        currentUser.step2Data = { pattern, triggers, replacement, accountability };\n        currentUser.currentStep = 3;\n        saveUserData();\n        showStep(3);\n    });\n\n    \/\/ Helper to create a simple text bar (10 chars)\n    function createBar(score, maxScore=5) {\n        const filled = Math.round((score \/ maxScore) * 10);\n        const empty = 10 - filled;\n        return '\u2588'.repeat(filled) + '\u2591'.repeat(empty);\n    }\n\n    \/\/ Step 3 submit \u2013 enhanced with graphical bars\n    document.getElementById('step3Form').addEventListener('submit', function(e) {\n        e.preventDefault();\n        if (!currentUser) return;\n        const dailyPractice = document.querySelector('textarea[name=\"dailyPractice\"]').value;\n        const skillGame = document.querySelector('textarea[name=\"skillGame\"]').value;\n        const weeklyReview = document.querySelector('textarea[name=\"weeklyReview\"]').value;\n        if (!dailyPractice || !skillGame || !weeklyReview) { alert(\"Please complete all fields.\"); return; }\n        currentUser.step3Data = { dailyPractice, skillGame, weeklyReview };\n        saveUserData();\n\n        let summary = \"=== RIGHTEOUS GROWTH PLAN ===\\n\\n\";\n        if (currentUser.step1Data) {\n            const analysis = generateAdvancedAnalysis(currentUser.step1Data);\n            summary += \"\ud83d\udd0d STEP 1 \u2013 EXAMINE (Analysis)\\n\";\n            summary += \"Domain Averages (with visual bar):\\n\";\n            for (let d of ['A','B','C','D']) {\n                const avg = analysis.riskDetails[d].avg;\n                const riskText = analysis.riskDetails[d].riskText;\n                const bar = createBar(avg);\n                const percent = Math.round((avg\/5)*100);\n                summary += `  ${analysis.domainNames[d].padEnd(25)} ${avg.toFixed(1)}\/5 (${riskText.padEnd(12)}) [${bar}] ${percent}%\\n`;\n            }\n            summary += \"\\n\ud83d\udd1d Top 3 Specific Behaviors:\\n\";\n            for (let item of analysis.topItems) {\n                summary += `  \u2022 ${item.text} \u2013 score ${item.score}\/5\\n`;\n            }\n            summary += `\\n\ud83d\udca1 Insight: ${analysis.highlightNote}\\n`;\n            summary += `\ud83d\udccc First step advice: ${analysis.advice}\\n`;\n            summary += `\\n\ud83d\udcdd Your reflections:\\n`;\n            summary += `  Pattern: ${analysis.pattern || \"\u2014\"}\\n`;\n            summary += `  Example situation: ${analysis.trigger || \"\u2014\"}\\n`;\n            summary += `  Desired change: ${analysis.desired || \"\u2014\"}\\n\\n`;\n        }\n        summary += \"\u2699\ufe0f STEP 2 \u2013 EQUIP (Your Plan)\\n\";\n        if (currentUser.step2Data) {\n            summary += `  Pattern to work on: ${currentUser.step2Data.pattern}\\n`;\n            summary += `  Triggers: ${currentUser.step2Data.triggers}\\n`;\n            summary += `  Replacement behavior: ${currentUser.step2Data.replacement}\\n`;\n            summary += `  Accountability: ${currentUser.step2Data.accountability}\\n\\n`;\n        } else {\n            summary += \"  (No plan saved)\\n\\n\";\n        }\n        summary += \"\ud83c\udfaf STEP 3 \u2013 ENGAGE (Practice Routine)\\n\";\n        summary += `  Daily awareness: ${dailyPractice}\\n`;\n        summary += `  Skill game: ${skillGame}\\n`;\n        summary += `  Weekly review: ${weeklyReview}\\n\\n`;\n        summary += \"Keep this plan visible. Re\u2011take Step 1 after 2 weeks to measure progress.\";\n\n        document.getElementById('finalSummary').innerText = summary;\n        document.getElementById('summaryBox').style.display = 'block';\n        alert(\"\ud83c\udf89 Completed! Your detailed plan is below.\");\n    });\n\n    \/\/ Reset, export, import, clear draft\n    document.getElementById('resetUserBtn').addEventListener('click', () => {\n        let name = document.getElementById('userName').value.trim() || \"Guest\";\n        if(confirm(`Reset ALL data for ${name}?`)) {\n            localStorage.removeItem(getStorageKey(name));\n            localStorage.removeItem(getDraftKey(name));\n            alert(\"Data reset. Reload or re-enter name.\");\n            location.reload();\n        }\n    });\n    document.getElementById('exportDataBtn').addEventListener('click', () => {\n        if(!currentUser) { alert(\"No user loaded.\"); return; }\n        const dataStr = JSON.stringify({\n            name: currentUser.name,\n            currentStep: currentUser.currentStep,\n            step1Data: currentUser.step1Data,\n            step2Data: currentUser.step2Data,\n            step3Data: currentUser.step3Data\n        }, null, 2);\n        const blob = new Blob([dataStr], {type:\"application\/json\"});\n        const a = document.createElement('a');\n        a.href = URL.createObjectURL(blob);\n        a.download = `righteous_${currentUser.name}.json`;\n        a.click();\n        URL.revokeObjectURL(a.href);\n    });\n    document.getElementById('importFile').addEventListener('change', (e) => {\n        const file = e.target.files[0];\n        if(!file) return;\n        const reader = new FileReader();\n        reader.onload = (ev) => {\n            try {\n                const imported = JSON.parse(ev.target.result);\n                if(!imported.name) throw new Error();\n                localStorage.setItem(getStorageKey(imported.name), JSON.stringify(imported));\n                alert(`Imported for ${imported.name}. Enter that name and reset\/refresh.`);\n                document.getElementById('userName').value = imported.name;\n                loadOrCreateUser(imported.name, false);\n            } catch(err) { alert(\"Invalid file.\"); }\n            document.getElementById('importFile').value = '';\n        };\n        reader.readAsText(file);\n    });\n    document.getElementById('clearDraftBtn').addEventListener('click', () => { clearDraft(); alert(\"Draft cleared.\"); });\n\n    window.addEventListener('load', () => {\n        let defaultName = \"Guest\";\n        loadOrCreateUser(defaultName, true);\n        document.getElementById('userName').value = defaultName;\n    });\n<\/script>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>Righteous Growth System \u2013 Examine, Equip, Engage Righteous Growth System Examine \u00b7 Equip \u00b7 Engage Your name: Reset My Data \ud83d\udce5 Export Data \ud83d\udce4 Import Data \ud83d\udd0d 1. Examine \u2699\ufe0f 2. Equip \ud83c\udfaf 3. Engage Step 1 \u2013 Examine: Identify Unrighteous Behavior Patterns Answer honestly. All answers are auto\u2011saved as you go. If you miss [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-126","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/camp.wiserighteous.org\/index.php\/wp-json\/wp\/v2\/pages\/126","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/camp.wiserighteous.org\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/camp.wiserighteous.org\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/camp.wiserighteous.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/camp.wiserighteous.org\/index.php\/wp-json\/wp\/v2\/comments?post=126"}],"version-history":[{"count":9,"href":"https:\/\/camp.wiserighteous.org\/index.php\/wp-json\/wp\/v2\/pages\/126\/revisions"}],"predecessor-version":[{"id":137,"href":"https:\/\/camp.wiserighteous.org\/index.php\/wp-json\/wp\/v2\/pages\/126\/revisions\/137"}],"wp:attachment":[{"href":"https:\/\/camp.wiserighteous.org\/index.php\/wp-json\/wp\/v2\/media?parent=126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}