<!DOCTYPE html> <html lang=”en”> <head> <meta charset=”UTF-8″> <meta name=”viewport” content=”width=device-width, initial-scale=1.0″> <title>JIVANSAR – Planetary Intelligence System</title> <script src=”https://cdn.tailwindcss.com”></script> <script src=”https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/js/all.min.js”></script> <style> @import url(‘https://fonts.googleapis.com/css2?family=Rajdhani:wght@400;600;700&family=Noto+Sans+Devanagari:wght@400;700&display=swap’); :root { –astro-gold: #FFD700; –astro-dark: #0f172a; –astro-panel: #1e293b; } body { font-family: ‘Rajdhani’, ‘Noto Sans Devanagari’, sans-serif; background-color: var(–astro-dark); color: #e2e8f0; background-image: radial-gradient(circle at top right, #334155 0%, #0f172a 60%); } .glass { background: rgba(30, 41, 59, 0.7); backdrop-filter: blur(8px); border: 1px solid rgba(255, 255, 255, 0.1); } /* SVG Chart Styles */ .chart-line { stroke: var(–astro-gold); stroke-width: 1.5; } .chart-text { fill: #fff; font-size: 10px; font-family: sans-serif; } .chart-sign-num { fill: rgba(255, 215, 0, 0.5); font-size: 12px; } .tab-active { border-bottom: 2px solid var(–astro-gold); color: var(–astro-gold); } .tab-inactive { color: #94a3b8; } .dignity-exalted { color: #4ade80; font-weight: bold; } /* Green */ .dignity-debilitated { color: #f87171; font-weight: bold; } /* Red */ .dignity-combust { color: #fbbf24; font-style: italic; } /* Orange */ /* Toggle Switch */ .toggle-checkbox:checked { right: 0; border-color: #68D391; } .toggle-checkbox:checked + .toggle-label { background-color: #68D391; } </style> </head> <body class=”min-h-screen flex flex-col items-center p-2 md:p-6″> <!– HEADER –> <header class=”w-full max-w-6xl flex justify-between items-center mb-6 glass p-4 rounded-xl”> <div class=”flex items-center gap-3″> <i class=”fa-solid fa-solar-system text-3xl text-yellow-500″></i> <div> <h1 class=”text-2xl font-bold tracking-widest text-yellow-500″>JIVANSAR</h1> <p class=”text-xs text-gray-400″>Autonomous Planetary Engine</p> </div> </div> <div class=”flex gap-2″> <button onclick=”app.setLanguage(‘en’)” id=”btn-en” class=”text-xs font-bold px-3 py-1 bg-yellow-600 rounded text-white”>ENG</button> <button onclick=”app.setLanguage(‘hi’)” id=”btn-hi” class=”text-xs font-bold px-3 py-1 bg-slate-700 rounded text-gray-300″>рд╣рд┐рдВрджреА</button> </div> </header> <!– MAIN INPUT & DASHBOARD –> <main class=”w-full max-w-6xl grid grid-cols-1 lg:grid-cols-12 gap-6″> <!– SIDEBAR: INPUTS –> <div class=”lg:col-span-3 glass p-5 rounded-xl h-fit”> <h2 class=”text-lg font-bold text-yellow-500 mb-4 border-b border-gray-600 pb-2″ data-t=”inputDetails”>Input Details</h2> <form id=”astroForm” onsubmit=”app.calculate(event)” class=”space-y-3″> <div> <label class=”text-xs text-gray-400″>Name</label> <input type=”text” id=”name” value=”JIVANSAR” class=”w-full bg-slate-900 border border-slate-700 rounded p-2 text-sm focus:border-yellow-500 outline-none text-white”> </div> <div class=”grid grid-cols-2 gap-2″> <div> <label class=”text-xs text-gray-400″ data-t=”dob”>Date</label> <input type=”date” id=”dob” class=”w-full bg-slate-900 border border-slate-700 rounded p-2 text-sm text-white”> </div> <div> <label class=”text-xs text-gray-400″ data-t=”tob”>Time</label> <input type=”time” id=”tob” value=”12:00″ class=”w-full bg-slate-900 border border-slate-700 rounded p-2 text-sm text-white”> </div> </div> <div class=”grid grid-cols-2 gap-2″> <div> <label class=”text-xs text-gray-400″ data-t=”lat”>Lat</label> <input type=”number” step=”0.01″ id=”lat” value=”28.61″ class=”w-full bg-slate-900 border border-slate-700 rounded p-2 text-sm text-white”> </div> <div> <label class=”text-xs text-gray-400″ data-t=”lon”>Lon</label> <input type=”number” step=”0.01″ id=”lon” value=”77.20″ class=”w-full bg-slate-900 border border-slate-700 rounded p-2 text-sm text-white”> </div> </div> <div> <label class=”text-xs text-gray-400″ data-t=”timezone”>Timezone</label> <select id=”tz” class=”w-full bg-slate-900 border border-slate-700 rounded p-2 text-sm text-white”> <option value=”5.5″>India (+5:30)</option> <option value=”0″>UTC (0:00)</option> <option value=”-5″>EST (-5:00)</option> </select> </div> <button type=”submit” class=”w-full bg-yellow-600 hover:bg-yellow-500 text-white font-bold py-2 rounded shadow-lg transition” data-t=”calcBtn”>Calculate Positions</button> </form> <!– Numerology Mini Widget –> <div id=”numerologyBox” class=”mt-6 hidden border-t border-gray-600 pt-4″> <h3 class=”text-sm font-bold text-yellow-500 mb-2″ data-t=”numerology”>Numerology</h3> <div class=”flex justify-between text-center”> <div class=”bg-slate-800 p-2 rounded w-[48%]”> <span class=”block text-xs text-gray-400″ data-t=”mulank”>Mulank</span> <span class=”text-xl font-bold text-blue-400″ id=”valMulank”>0</span> </div> <div class=”bg-slate-800 p-2 rounded w-[48%]”> <span class=”block text-xs text-gray-400″ data-t=”bhagyank”>Bhagyank</span> <span class=”text-xl font-bold text-purple-400″ id=”valBhagyank”>0</span> </div> </div> </div> </div> <!– MAIN DASHBOARD AREA –> <div class=”lg:col-span-9 hidden” id=”dashboard”> <!– TABS –> <div class=”flex border-b border-gray-700 mb-4″> <button onclick=”app.switchTab(‘positions’)” id=”tab-positions” class=”px-4 py-2 text-sm font-bold tab-active transition” data-t=”tabPlanets”>Planetary Data</button> <button onclick=”app.switchTab(‘chart’)” id=”tab-chart” class=”px-4 py-2 text-sm font-bold tab-inactive transition” data-t=”tabChart”>Kundli Chart</button> <button onclick=”app.switchTab(‘conjunctions’)” id=”tab-conjunctions” class=”px-4 py-2 text-sm font-bold tab-inactive transition” data-t=”tabConjunctions”>Conjunctions</button> </div> <!– VIEW: POSITIONS –> <div id=”view-positions” class=”animate-fade-in”> <div class=”glass rounded-xl overflow-hidden”> <table class=”w-full text-left text-sm”> <thead class=”bg-slate-800 text-gray-400 uppercase text-xs”> <tr> <th class=”p-3″ data-t=”planet”>Planet</th> <th class=”p-3″ data-t=”sign”>Sign</th> <th class=”p-3″ data-t=”degree”>Degree</th> <th class=”p-3″ data-t=”house”>House</th> <th class=”p-3″ data-t=”status”>Status</th> </tr> </thead> <tbody id=”planetTableBody” class=”divide-y divide-gray-700″> <!– JS Generated –> </tbody> </table> </div> </div> <!– VIEW: CHART –> <div id=”view-chart” class=”hidden flex justify-center items-center py-6 glass rounded-xl”> <div id=”chartContainer” class=”w-[350px] h-[350px] bg-slate-900 border border-yellow-800 relative shadow-2xl”> <!– SVG Injected Here –> </div> </div> <!– VIEW: CONJUNCTIONS –> <div id=”view-conjunctions” class=”hidden glass p-4 rounded-xl”> <h3 class=”text-lg font-bold text-yellow-500 mb-4″ data-t=”yogaTitle”>Planetary Conjunctions (Yogas)</h3> <ul id=”conjunctionList” class=”space-y-2″> <!– JS Generated –> </ul> <div id=”noConj” class=”text-gray-500 italic text-sm hidden” data-t=”noConj”>No major conjunctions detected within 10 degrees.</div> </div> </div> </main> <!– FOOTER –> <footer class=”mt-8 text-center text-gray-500 text-xs”> <p>JIVANSAR Engine v1.0 | Calculations based on Lahiri Ayanamsa (Sidereal)</p> </footer> <!– LOGIC ENGINE –> <script> class AstroEngine { constructor() { this.lang = ‘en’; this.planets = {}; this.translations = { en: { inputDetails: “Input Details”, dob: “Date”, tob: “Time”, lat: “Lat”, lon: “Lon”, timezone: “Timezone”, calcBtn: “Calculate Positions”, numerology: “Numerology”, mulank: “Root (Mulank)”, bhagyank: “Destiny (Bhagyank)”, tabPlanets: “Planetary Status”, tabChart: “Kundli Chart”, tabConjunctions: “Conjunctions”, planet: “Planet”, sign: “Sign”, degree: “Degree”, house: “House”, status: “Dignity”, yogaTitle: “Planetary Conjunctions”, noConj: “No close conjunctions found.”, signs: [“Aries”, “Taurus”, “Gemini”, “Cancer”, “Leo”, “Virgo”, “Libra”, “Scorpio”, “Sagittarius”, “Capricorn”, “Aquarius”, “Pisces”], planetsList: {Sun:”Sun”, Moon:”Moon”, Mars:”Mars”, Mercury:”Mercury”, Jupiter:”Jupiter”, Venus:”Venus”, Saturn:”Saturn”, Rahu:”Rahu”, Ketu:”Ketu”, Ascendant:”Ascendant”} }, hi: { inputDetails: “рдЬрдиреНрдо рд╡рд┐рд╡рд░рдг”, dob: “рджрд┐рдирд╛рдВрдХ”, tob: “рд╕рдордп”, lat: “рдЕрдХреНрд╖рд╛рдВрд╢”, lon: “рджреЗрд╢рд╛рдВрддрд░”, timezone: “рд╕рдордп рдХреНрд╖реЗрддреНрд░”, calcBtn: “рдЧрдгрдирд╛ рдХрд░реЗрдВ”, numerology: “рдЕрдВрдХ рдЬреНрдпреЛрддрд┐рд╖”, mulank: “рдореВрд▓рд╛рдВрдХ”, bhagyank: “рднрд╛рдЧреНрдпрд╛рдВрдХ”, tabPlanets: “рдЧреНрд░рд╣ рд╕реНрдерд┐рддрд┐”, tabChart: “рд▓рдЧреНрди рдХреБрдВрдбрд▓реА”, tabConjunctions: “рдпреБрддрд┐ рд╡рд┐рдЪрд╛рд░”, planet: “рдЧреНрд░рд╣”, sign: “рд░рд╛рд╢рд┐”, degree: “рдЕрдВрд╢”, house: “рднрд╛рд╡”, status: “рдЕрд╡рд╕реНрдерд╛”, yogaTitle: “рдЧреНрд░рд╣ рдпреБрддрд┐ (рдпреЛрдЧ)”, noConj: “рдХреЛрдИ рдирд┐рдХрдЯ рдпреБрддрд┐ рдирд╣реАрдВ рдорд┐рд▓реАред”, signs: [“рдореЗрд╖”, “рд╡реГрд╖рдн”, “рдорд┐рдереБрди”, “рдХрд░реНрдХ”, “рд╕рд┐рдВрд╣”, “рдХрдиреНрдпрд╛”, “рддреБрд▓рд╛”, “рд╡реГрд╢реНрдЪрд┐рдХ”, “рдзрдиреБ”, “рдордХрд░”, “рдХреБрдВрдн”, “рдореАрди”], planetsList: {Sun:”рд╕реВрд░реНрдп”, Moon:”рдЪрдВрджреНрд░”, Mars:”рдордВрдЧрд▓”, Mercury:”рдмреБрдз”, Jupiter:”рдЧреБрд░реБ”, Venus:”рд╢реБрдХреНрд░”, Saturn:”рд╢рдирд┐”, Rahu:”рд░рд╛рд╣реБ”, Ketu:”рдХреЗрддреБ”, Ascendant:”рд▓рдЧреНрди”} } }; // Initialize Date const now = new Date(); document.getElementById(‘dob’).value = now.toISOString().split(‘T’)[0]; } setLanguage(l) { this.lang = l; document.getElementById(‘btn-en’).className = l===’en’ ? “text-xs font-bold px-3 py-1 bg-yellow-600 rounded text-white” : “text-xs font-bold px-3 py-1 bg-slate-700 rounded text-gray-300”; document.getElementById(‘btn-hi’).className = l===’hi’ ? “text-xs font-bold px-3 py-1 bg-yellow-600 rounded text-white” : “text-xs font-bold px-3 py-1 bg-slate-700 rounded text-gray-300”; // Update text document.querySelectorAll(‘[data-t]’).forEach(el => { const key = el.getAttribute(‘data-t’); if(this.translations[l][key]) el.innerText = this.translations[l][key]; }); // Re-render if data exists if(Object.keys(this.planets).length > 0) this.renderDashboard(); } // — ASTRO MATH (Simplified VSOP/Kepler for JS) — toJulian(date, timeIso, tz) { const d = new Date(`${date}T${timeIso}:00`); // Adjust for TZ to get UTC const utcHrs = d.getHours() + d.getMinutes()/60 – parseFloat(tz); let Y = d.getFullYear(), M = d.getMonth()+1, D = d.getDate(); if(M <= 2) { Y–; M+=12; } const A = Math.floor(Y/100); const B = 2 – A + Math.floor(A/4); return Math.floor(365.25*(Y+4716)) + Math.floor(30.6001*(M+1)) + D + B – 1524.5 + (utcHrs/24.0); } normalize(deg) { deg = deg % 360; return deg < 0 ? deg + 360 : deg; } getPlanetLong(planet, jd) { const T = (jd – 2451545.0) / 36525; let L=0, M=0; // Simplified mean elements if(planet === ‘Sun’) { L = 280.466 + 36000.770*T; M = 357.529 + 35999.050*T; return this.normalize(L + (1.915 * Math.sin(M * Math.PI/180))); } // Mock positions for other planets for this standalone demo (Full VSOP is 2000 lines) // In a real production script, insert full orbital elements here. // using a pseudo-random deterministic seed based on date for demonstration of UI logic // THIS IS A SIMULATION FOR THE UI. // Replace this block with ‘astronomy-engine’ library for precision. const rates = {Moon: 13.176, Mars: 0.524, Mercury: 4.09, Jupiter: 0.083, Venus: 1.602, Saturn: 0.033, Rahu: -0.052}; const seeds = {Moon: 218, Mars: 355, Mercury: 252, Jupiter: 34, Venus: 181, Saturn: 50, Rahu: 125}; let base = seeds[planet] + ((jd – 2451545.0) * rates[planet]); return this.normalize(base); } getAscendant(jd, lat, lon) { // Rough calculation for UI demonstration // Real calc requires Sidereal Time iteration const sunLong = this.getPlanetLong(‘Sun’, jd); // Sun is at Ascendant at sunrise (approx 6am). // Add 15 deg per hour from sunrise. const d = new Date(); const hours = d.getHours() + d.getMinutes()/60; // Approximate from current time input return this.normalize(sunLong + ((hours – 6) * 15) + lon); } // — CALCULATE — calculate(e) { e.preventDefault(); const dob = document.getElementById(‘dob’).value; const tob = document.getElementById(‘tob’).value; const lat = parseFloat(document.getElementById(‘lat’).value); const lon = parseFloat(document.getElementById(‘lon’).value); const tz = document.getElementById(‘tz’).value; if(!dob || !tob) return alert(“Please fill all fields”); const jd = this.toJulian(dob, tob, tz); const ayanamsa = 24.0; // Fixed Approx Lahiri // 1. Calculate Longitudes const pNames = [‘Sun’, ‘Moon’, ‘Mars’, ‘Mercury’, ‘Jupiter’, ‘Venus’, ‘Saturn’, ‘Rahu’]; // Calculate Ascendant first let ascGeo = this.getAscendant(jd, lat, lon); // Tropical let ascSid = this.normalize(ascGeo – ayanamsa); // Sidereal this.planets = { ‘Ascendant’: { long: ascSid, speed: 0 } }; pNames.forEach(p => { let trop = this.getPlanetLong(p, jd); let sid = this.normalize(trop – ayanamsa); this.planets[p] = { long: sid }; }); // Ketu is opposite Rahu this.planets[‘Ketu’] = { long: this.normalize(this.planets[‘Rahu’].long + 180) }; // 2. Process Data (Sign, House, Dignity) this.processData(); // 3. Numerology this.calcNumerology(dob); // 4. Show Dashboard document.getElementById(‘dashboard’).classList.remove(‘hidden’); document.getElementById(‘numerologyBox’).classList.remove(‘hidden’); this.renderDashboard(); } processData() { const ascSign = Math.floor(this.planets[‘Ascendant’].long / 30); const sunDist = (p) => Math.abs(this.planets[‘Sun’].long – this.planets[p].long); for(let p in this.planets) { let l = this.planets[p].long; let signIdx = Math.floor(l / 30); let deg = l % 30; // House (Whole Sign) let house = (signIdx – ascSign) + 1; if(house <= 0) house += 12; // Dignity Logic (Simplified Vedic) let status = “”; let isCombust = false; // Exaltation Points (Approx) if(p===’Sun’ && signIdx===0) status = “Exalted”; // Aries if(p===’Moon’ && signIdx===1) status = “Exalted”; // Taurus if(p===’Mars’ && signIdx===9) status = “Exalted”; // Capricorn if(p===’Jupiter’ && signIdx===3) status = “Exalted”; // Cancer if(p===’Venus’ && signIdx===11) status = “Exalted”; // Pisces if(p===’Saturn’ && signIdx===6) status = “Exalted”; // Libra if(p===’Mercury’ && signIdx===5) status = “Exalted”; // Virgo // Debilitation if(p===’Sun’ && signIdx===6) status = “Debilitated”; if(p===’Moon’ && signIdx===7) status = “Debilitated”; if(p===’Mars’ && signIdx===3) status = “Debilitated”; if(p===’Jupiter’ && signIdx===9) status = “Debilitated”; if(p===’Venus’ && signIdx===5) status = “Debilitated”; if(p===’Saturn’ && signIdx===0) status = “Debilitated”; // Combustion if(p !== ‘Sun’ && p !== ‘Rahu’ && p !== ‘Ketu’ && p !== ‘Ascendant’) { let d = Math.min(Math.abs(this.planets[‘Sun’].long – l), 360 – Math.abs(this.planets[‘Sun’].long – l)); if(d < 10) isCombust = true; } this.planets[p].data = { signIndex: signIdx, degree: deg, house: house, status: status, isCombust: isCombust }; } } calcNumerology(dob) { const parts = dob.split(‘-‘); // YYYY-MM-DD const day = parseInt(parts[2]); const fullStr = parts.join(”); const reduce = (n) => { while(n > 9) n = n.toString().split(”).reduce((a,b)=>parseInt(a)+parseInt(b), 0); return D├йmarrer une session sur bet live casino suffit souvent ├а comprendre pourquoi ce nom revient dans tant de conversations. Les options d’affichage des prix permettent d’ajuster les niveaux d’information souhait├йs. Le tableau de bord mobile reprend les fonctionnalit├йs principales sans simplifications excessives. L’agenda promotionnel anticipe les op├йrations ├а venir avec plusieurs jours d’avance. Les bonus high roller r├йcompensent les joueurs misant des montants significatifs sur certains formats. Les conseils proactifs lors de difficult├йs rencontr├йes renforcent la qualit├й per├зue. Les classements internes mettent en avant les jeux les plus jou├йs selon les p├йriodes. Les studios proposent souvent une cam├йra zoom d├йdi├йe au plateau de jeu pour ne rien manquer de l’action. Le bandeau cookies informe transparente sur les usages effectifs du suivi en ligne. Paysafecard reste une option appr├йci├йe pour ceux qui privil├йgient la confidentialit├й des transactions. Le travail de fond men├й finit par parler de lui-m├кme sans d├йmonstration excessive.