<!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.