/* ═══════════════════════════════════════════════════════════ SOUL BLUEPRINT MATRIX - CONFIGURATION & METADATA Module: src/js/config.js ═══════════════════════════════════════════════════════════ */ // Global interpretation store: INTERP[position][module][section][number] = "text" const INTERP = {}; // Track which modules & sections exist (dynamically discovered from CSV) const DISCOVERED_MODULES = {}; // { moduleId: { label, sections: [{key, title}] } } const MODULE_LABELS = { core: ' Core', relationships: ' Love', karma: ' Karma', money: '$ Money', purpose: ' Purpose', forecast: '◎ Forecast', compatibility: ' Compatibility', compat_general: ' General', compat_love: ' Love Dynamics', compat_karma: ' Relationship Karma', compat_finance: '$ Shared Finance', compat_programs: ' Compatibility Programs', compat_forecast: '◎ Couple Forecast', }; // Fallback section titles for known section keys const SECTION_TITLES = { relationship_problems: 'Relationship Problems', nature_of_the_relationship: 'Nature of the Relationship', meaning: 'What This Position Means', positive: 'Positive Expression', shadow: 'Shadow Expression', healing: 'Healing Path', attraction: 'Attraction Pattern', lesson: 'Relationship Lesson', wound: 'Core Wound', partner: 'What They Attract', karmic: 'Karmic Pattern', past_life: 'Past Life Theme', resolution: 'Resolution Path', money_flow: 'Money Flow', block: 'Financial Block', activation: 'Activation', life_purpose: 'Life Purpose', gifts: 'Natural Gifts', mission: 'Soul Mission', current_cycle: 'Current Cycle', next_phase: 'Next Phase', yearly: 'Yearly Theme', theme: 'Energy of the Period', recommendations: 'Event Line', watch_out: 'Outcome of the Period', }; // ═══════════════════════════════════════════════════════════════════ // POSITION METADATA // ═══════════════════════════════════════════════════════════════════ const POSITIONS = { // Core Personal Square A: {name:'Portrait / Personal Karma', formula:'Day of Birth', zone:'Personal Karma', color:'#B088F0'}, A1: {name:'Soul Task for Children', formula:'A + A2', zone:'Family Karma', color:'#C0D4FF'}, A2: {name:'Parent-Child Karma', formula:'A + E', zone:'Family Karma', color:'#E060B0'}, B: {name:'Spiritual Talent / Essence', formula:'Month of Birth', zone:'Spiritual Talent',color:'#D4AF6E'}, B1: {name:'Personal Talent from Birth', formula:'B + B2', zone:'Spiritual Talent',color:'#C0D4FF'}, B2: {name:'Self-Realization / Profession',formula:'B + E', zone:'Self Realization',color:'#5CDEC8'}, C: {name:'Material Karma / Year Task', formula:'Year Digit Sum', zone:'Material Karma', color:'#E060B0'}, C1: {name:'Earning Experience Field', formula:'C + K', zone:'Material Karma', color:'#D4CCFF'}, K: {name:'Entry to Finance Line', formula:'C + E', zone:'Money Channel', color:'#5CDEC8'}, D: {name:'Spiritual Karma / Social Task',formula:'A + B + C', zone:'Spiritual Karma', color:'#D4AF6E'}, D1: {name:'Subconscious Fears', formula:'D + J', zone:'Karmic Tail', color:'#FFD080'}, J: {name:'Subconscious Block / Entry', formula:'D + E', zone:'Relationships', color:'#5CDEC8'}, E: {name:'Soul Comfort Zone / Center', formula:'A + B + C + D', zone:'Core Center', color:'#FFD97D'}, // Lineage Lines (Ancestral Square) F: {name:"Father's Male Line", formula:'A + B', zone:'Lineage', color:'#D4CCFF'}, F1: {name:"Father's Male Line Upper Gift", formula:'F + F2', zone:'Lineage', color:'#D4CCFF'}, F2: {name:"Father's Male Line Talent", formula:'F + L2', zone:'Lineage', color:'#D4CCFF'}, G: {name:"Father's Female Line", formula:'B + C', zone:'Lineage', color:'#D4CCFF'}, G1: {name:"Father's Female Line Upper Gift",formula:'G + G2', zone:'Lineage', color:'#D4CCFF'}, G2: {name:"Father's Female Line Talent", formula:'G + L2', zone:'Lineage', color:'#D4CCFF'}, H: {name:"Mother's Male Line", formula:'C + D', zone:'Lineage', color:'#D4CCFF'}, H1: {name:"Mother's Male Line Character", formula:'H + H2', zone:'Lineage', color:'#D4CCFF'}, H2: {name:"Mother's Male Line Karma", formula:'H + L2', zone:'Lineage', color:'#D4CCFF'}, I: {name:"Mother's Female Line", formula:'D + A', zone:'Lineage', color:'#D4CCFF'}, I1: {name:"Mother's Female Line Character",formula:'I + I2', zone:'Lineage', color:'#D4CCFF'}, I2: {name:"Mother's Female Line Karma", formula:'I + L2', zone:'Lineage', color:'#D4CCFF'}, L2: {name:'Lineage Combined', formula:'F + G + H + I', zone:'Lineage', color:'#D4CCFF'}, // Channels L: {name:'Central Balance Point — Money & Relationship Gateway', formula:'K + J', zone:'Money & Love', color:'#FFD97D'}, M: {name:'Ideal Partner / Relationship Gateway', formula:'J + L', zone:'Relationships', color:'#C0D4FF'}, N: {name:'Money Gateway Code / Profession', formula:'K + L', zone:'Money Channel', color:'#E060B0'}, R: {name:'Central Balance Point — Money & Relationship Gateway', formula:'K + J', zone:'Money & Love', color:'#FFD97D'}, R1: {name:'Ideal Partner / Relationship Gateway', formula:'J + L', zone:'Relationships', color:'#C0D4FF'}, R2: {name:'Money Gateway Code / Profession', formula:'K + L', zone:'Money Channel', color:'#E060B0'}, // Emotional Feelings (Chapter 3.7) O: {name:'Material Emotional Closeness', formula:'A2 + E', zone:'Heart & Feelings',color:'#E060B0'}, P: {name:'Spiritual Emotional Closeness',formula:'B2 + E', zone:'Heart & Feelings',color:'#5CDEC8'}, OP: {name:'Emotional Closeness Synthesis',formula:'O + P', zone:'Heart & Feelings',color:'#FFD97D'}, // Soul Potentials U1: {name:'Higher Soul Potential 1', formula:'A + B', zone:'Soul Potential', color:'#B088F0'}, U2: {name:'Higher Soul Potential 2', formula:'C + D', zone:'Soul Potential', color:'#B088F0'}, U3: {name:'Combined Soul Synthesis', formula:'U1 + U2', zone:'Soul Potential', color:'#D4AAFF'}, // Purpose Panel Lines & Arcanas EARTH: {name:'Earth Line / Physical Purpose', formula:'A + C', zone:'Purpose', color:'#5CDEC8'}, SKY: {name:'Sky Line / Spiritual Purpose', formula:'B + D', zone:'Purpose', color:'#B088F0'}, PERSONAL_PURPOSE: {name:'Personal Purpose (Ages 20–40)', formula:'Earth + Sky', zone:'Purpose', color:'#FFD97D'}, PATERNAL_LINE: {name:'Paternal Lines (Male Ancestry)', formula:'F + H', zone:'Purpose', color:'#D4CCFF'}, MATERNAL_LINE: {name:'Maternal Lines (Female Ancestry)', formula:'G + I', zone:'Purpose', color:'#D4CCFF'}, SOCIAL_PURPOSE: {name:'Social / Lineage Purpose (Ages 40–60)', formula:'Paternal + Maternal', zone:'Purpose', color:'#FFD97D'}, SPIRITUAL_PURPOSE: {name:'Spiritual Purpose (Ages 60+)', formula:'Personal + Social', zone:'Purpose', color:'#D4AAFF'}, PLANETARY_MISSION: {name:'Planetary Mission', formula:'Personal + Social (Reduced)', zone:'Purpose', color:'#FFD080'}, // 7-Chakra Health Map CK_7: {name:'7. Sahasrara Chakra (Crown)', formula:'Top Node Balance', zone:'Crown Chakra', color:'#D4AAFF'}, CK_7_PHYSICAL: {name:'7. Sahasrara Physical Level', formula:'Physical Crown', zone:'Crown Chakra', color:'#D4AAFF'}, CK_7_ENERGY: {name:'7. Sahasrara Energy Level', formula:'Energy Crown', zone:'Crown Chakra', color:'#D4AAFF'}, CK_7_EMOTIONAL: {name:'7. Sahasrara Emotional Level', formula:'Emotional Crown', zone:'Crown Chakra', color:'#D4AAFF'}, CK_6: {name:'6. Ajna Chakra (Third Eye)', formula:'Third Eye Balance', zone:'Third Eye Chakra', color:'#A78BFA'}, CK_6_PHYSICAL: {name:'6. Ajna Physical Level', formula:'Physical Third Eye', zone:'Third Eye Chakra', color:'#A78BFA'}, CK_6_ENERGY: {name:'6. Ajna Energy Level', formula:'Energy Third Eye', zone:'Third Eye Chakra', color:'#A78BFA'}, CK_6_EMOTIONAL: {name:'6. Ajna Emotional Level', formula:'Emotional Third Eye', zone:'Third Eye Chakra', color:'#A78BFA'}, CK_5: {name:'5. Vishuddha Chakra (Throat)', formula:'Throat Balance', zone:'Throat Chakra', color:'#60A5FA'}, CK_5_PHYSICAL: {name:'5. Vishuddha Physical Level', formula:'Physical Throat', zone:'Throat Chakra', color:'#60A5FA'}, CK_5_ENERGY: {name:'5. Vishuddha Energy Level', formula:'Energy Throat', zone:'Throat Chakra', color:'#60A5FA'}, CK_5_EMOTIONAL: {name:'5. Vishuddha Emotional Level', formula:'Emotional Throat', zone:'Throat Chakra', color:'#60A5FA'}, CK_4: {name:'4. Anahata Chakra (Heart)', formula:'Heart Balance', zone:'Heart Chakra', color:'#34D399'}, CK_4_PHYSICAL: {name:'4. Anahata Physical Level', formula:'Physical Heart', zone:'Heart Chakra', color:'#34D399'}, CK_4_ENERGY: {name:'4. Anahata Energy Level', formula:'Energy Heart', zone:'Heart Chakra', color:'#34D399'}, CK_4_EMOTIONAL: {name:'4. Anahata Emotional Level', formula:'Emotional Heart', zone:'Heart Chakra', color:'#34D399'}, CK_3: {name:'3. Manipura Chakra (Solar Plexus)', formula:'Solar Plexus Balance', zone:'Solar Plexus Chakra', color:'#FBBF24'}, CK_3_PHYSICAL: {name:'3. Manipura Physical Level', formula:'Physical Solar Plexus', zone:'Solar Plexus Chakra', color:'#FBBF24'}, CK_3_ENERGY: {name:'3. Manipura Energy Level', formula:'Energy Solar Plexus', zone:'Solar Plexus Chakra', color:'#FBBF24'}, CK_3_EMOTIONAL: {name:'3. Manipura Emotional Level', formula:'Emotional Solar Plexus', zone:'Solar Plexus Chakra', color:'#FBBF24'}, CK_2: {name:'2. Svadhisthana Chakra (Sacral)', formula:'Sacral Balance', zone:'Sacral Chakra', color:'#F97316'}, CK_2_PHYSICAL: {name:'2. Svadhisthana Physical Level', formula:'Physical Sacral', zone:'Sacral Chakra', color:'#F97316'}, CK_2_ENERGY: {name:'2. Svadhisthana Energy Level', formula:'Energy Sacral', zone:'Sacral Chakra', color:'#F97316'}, CK_2_EMOTIONAL: {name:'2. Svadhisthana Emotional Level', formula:'Emotional Sacral', zone:'Sacral Chakra', color:'#F97316'}, CK_1: {name:'1. Muladhara Chakra (Root)', formula:'Root Balance', zone:'Root Chakra', color:'#EF4444'}, CK_1_PHYSICAL: {name:'1. Muladhara Physical Level', formula:'Physical Root', zone:'Root Chakra', color:'#EF4444'}, CK_1_ENERGY: {name:'1. Muladhara Energy Level', formula:'Energy Root', zone:'Root Chakra', color:'#EF4444'}, CK_1_EMOTIONAL: {name:'1. Muladhara Emotional Level', formula:'Emotional Root', zone:'Root Chakra', color:'#EF4444'}, CK_TOTAL: {name:'Chakra Common Energy Zone', formula:'Sum of All 7 Chakras', zone:'Chakra Totals', color:'#5CDEC8'}, CK_TOTAL_PHYSICAL: {name:'Chakra Total Physical Level', formula:'Physical Total', zone:'Chakra Totals', color:'#5CDEC8'}, CK_TOTAL_ENERGY: {name:'Chakra Total Energy Level', formula:'Energy Total', zone:'Chakra Totals', color:'#5CDEC8'}, CK_TOTAL_EMOTIONAL: {name:'Chakra Total Emotional Level', formula:'Emotional Total', zone:'Chakra Totals', color:'#5CDEC8'}, FORECAST_CURRENT: {name:'Energy of the Period', formula:'Arcana of Current Age', zone:'forecast', color:'#A78BFA'}, FORECAST_KEY: {name:'Event Line', formula:'Arcana of Second Age', zone:'forecast', color:'#A78BFA'}, FORECAST_OUTCOME: {name:'Outcome of the Period', formula:'Current Energy + Key Energy', zone:'forecast', color:'#A78BFA'}, COMPAT_FORECAST_CURRENT: {name:"Couple Energy of the Period", formula:'Partner 1 Current + Partner 2 Current', zone:'compat_forecast', color:'#D4AF6E'}, COMPAT_FORECAST_KEY: {name:"Couple Event Line", formula:'Partner 1 Key + Partner 2 Key', zone:'compat_forecast', color:'#D4AF6E'}, COMPAT_FORECAST_OUTCOME: {name:"Couple Outcome of the Period", formula:'Partner 1 Outcome + Partner 2 Outcome', zone:'compat_forecast', color:'#D4AF6E'}, }; // Populate the 56 intermediate age nodes dynamically (() => { const sectorCorners = [ ['A', 'F'], ['F', 'B'], ['B', 'G'], ['G', 'C'], ['C', 'H'], ['H', 'D'], ['D', 'I'], ['I', 'A'] ]; sectorCorners.forEach(([c1, c2], sectorIdx) => { const startAge = sectorIdx * 10; const offsets = [1.25, 2.5, 3.75, 5, 6.25, 7.5, 8.75]; const getRangeLabel = (S, offset) => { if (offset === 1.25) return `${S+1}-${S+2},5`; if (offset === 2.5) return `${S+2},5-${S+3},5`; if (offset === 3.75) return `${S+3},5-${S+5}`; if (offset === 5) return `${S+5} years old`; if (offset === 6.25) return `${S+6}-${S+7},5`; if (offset === 7.5) return `${S+7},5-${S+8},5`; if (offset === 8.75) return `${S+8},5-${S+10}`; return ''; }; const getFormula = (offset) => { if (offset === 5) return `red(${c1} + ${c2})`; if (offset === 2.5) return `red(${c1} + Age${startAge+5})`; if (offset === 7.5) return `red(Age${startAge+5} + ${c2})`; if (offset === 1.25) return `red(${c1} + Age${startAge+2.5})`; if (offset === 3.75) return `red(Age${startAge+2.5} + Age${startAge+5})`; if (offset === 6.25) return `red(Age${startAge+5} + Age${startAge+7.5})`; if (offset === 8.75) return `red(Age${startAge+7.5} + ${c2})`; return ''; }; offsets.forEach(offset => { const ageKey = `age${startAge + offset}`; const rangeLabel = getRangeLabel(startAge, offset); POSITIONS[ageKey] = { name: `Age Node ${startAge + offset} (${rangeLabel})`, formula: getFormula(offset), zone: 'forecast', color: '#A78BFA' }; }); }); })(); // ═══════════════════════════════════════════════════════════════════ // COMPATIBILITY POSITION METADATA (Couple Position Titles) // ═══════════════════════════════════════════════════════════════════ const COMPAT_POSITIONS = { A: {name:'Partner 1 Portrait / Core Entry', formula:'Day 1', zone:'Core'}, B: {name:'Union Core / Spiritual Essence', formula:'Month 1 + Month 2', zone:'Union Talent'}, C: {name:'Joint Material Gateway', formula:'Year 1 + Year 2', zone:'Shared Finance'}, D: {name:'Joint Karmic Tail', formula:'A + B + C', zone:'Relationship Karma'}, E: {name:'The Centre (Couple Soul Comfort Zone)', formula:'A + B + C + D', zone:'Core Center'}, F: {name:"Paternal Lineage Harmony", formula:'A + B', zone:'Lineage'}, G: {name:"Maternal Lineage Harmony", formula:'B + C', zone:'Lineage'}, H: {name:"Ancestral Karmic Balance", formula:'C + D', zone:'Lineage'}, I: {name:"Ancestral Spiritual Flow", formula:'D + A', zone:'Lineage'}, J: {name:'Relationship Karma Entry', formula:'D + E', zone:'Relationships'}, K: {name:'Shared Wealth Channel Entry', formula:'C + E', zone:'Money Channel'}, L: {name:'Central Relationship & Financial Balance', formula:'K + J', zone:'Money & Love'}, M: {name:'Meeting & Relationship Dynamic', formula:'J + L', zone:'Relationships'}, N: {name:'Joint Profession & Financial Synergy', formula:'K + L', zone:'Money Channel'}, O: {name:'Material Closeness of the Pair', formula:'A2 + E', zone:'Heart & Feelings'}, P: {name:'Spiritual Closeness of the Pair', formula:'B2 + E', zone:'Heart & Feelings'}, OP: {name:'Emotional Synthesis of the Pair', formula:'O + P', zone:'Heart & Feelings'}, U1: {name:'Purpose of the Pair — Higher Potential 1', formula:'A + B', zone:'Pair Purpose'}, U2: {name:'Purpose of the Pair — Higher Potential 2', formula:'C + D', zone:'Pair Purpose'}, U3: {name:'Purpose of the Pair — Combined Synthesis', formula:'U1 + U2', zone:'Pair Purpose'}, }; // Internal Feature Flag for Unpaid New Features (NEW-1B, NEW-2, NEW-4A, NEW-4B) // Set to true once client approves quotation and payment is received. const ENABLE_UNPAID_NEW_FEATURES = false; function getPositionMeta(posKey) { if (ENABLE_UNPAID_NEW_FEATURES && typeof readingMode !== 'undefined' && readingMode === 'compat') { return COMPAT_POSITIONS[posKey] || POSITIONS[posKey] || { name: posKey, formula: '', zone: '' }; } return POSITIONS[posKey] || { name: posKey, formula: '', zone: '' }; } const MATRIX_TRIPLETS = [ { key: 'M-N-D', label: 'Karmic Tail', nodes: ['M', 'N', 'D'] }, { key: 'L2-L1-L', label: 'Relationship / Sacral Line', nodes: ['L2', 'L1', 'L'] }, { key: 'R-R1-R2', label: 'Money & Wealth Line', nodes: ['R', 'R1', 'R2'] }, { key: 'A-J-E', label: 'Personal Talent Line', nodes: ['A', 'J', 'E'] }, { key: 'B-K-E', label: 'Mind & Communication Line', nodes: ['B', 'K', 'E'] }, { key: 'C-L-E', label: 'Physical Root Line', nodes: ['C', 'L', 'E'] }, { key: 'D-M-E', label: 'Ancestral Earth Line', nodes: ['D', 'M', 'E'] }, { key: 'F-F1-F2', label: "Father's Male Line", nodes: ['F', 'F1', 'F2'] }, { key: 'G-G1-G2', label: "Father's Female Line", nodes: ['G', 'G1', 'G2'] }, { key: 'H-H1-H2', label: "Mother's Male Line", nodes: ['H', 'H1', 'H2'] }, { key: 'I-I1-I2', label: "Mother's Female Line", nodes: ['I', 'I1', 'I2'] }, { key: 'A-O-P', label: 'Ajna / Third Eye Zone', nodes: ['A', 'O', 'P'] }, { key: 'J-S-T', label: 'Heart & Expression Zone', nodes: ['J', 'S', 'T'] } ];