{"id":7,"date":"2026-07-24T08:08:08","date_gmt":"2026-07-24T08:08:08","guid":{"rendered":"https:\/\/demo3.numroq.com\/?page_id=7"},"modified":"2026-07-24T08:08:08","modified_gmt":"2026-07-24T08:08:08","slug":"abjad-kabir","status":"publish","type":"page","link":"https:\/\/demo3.numroq.com\/?page_id=7","title":{"rendered":"Abjad Kabir"},"content":{"rendered":"<style>\n.nmq-visual{margin:18px 0 6px;color:inherit}\n.nmq-chart-wrap{text-align:center;margin:0 auto 10px}\n.nmq-chart-title{font-size:14px;font-weight:600;opacity:.8;margin-bottom:8px}\n.nmq-chart-svg{display:block;margin:0 auto}\n.nmq-grid3{display:inline-grid;grid-template-columns:repeat(3,64px);grid-auto-rows:64px;gap:4px;margin:0 auto}\n.nmq-grid3-cell{display:flex;align-items:center;justify-content:center;border:1px solid currentColor;border-radius:8px;font-size:18px;font-weight:600;letter-spacing:2px;opacity:.92;min-height:64px}\n.nmq-grid3-cell:empty::after{content:'\\00B7';opacity:.25;font-weight:400}\n.nmq-bio-legend{font-size:12px;margin-top:6px;opacity:.85}\n.nmq-bio-legend span{margin:0 8px}\n<\/style>\n<script>\n(function(){\n  if (window.nmqRenderVisual) return;\n  function esc(s){ return String(s).replace(\/[&<>\"]\/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];}); }\n  var ABBR={'Sun':'Su','Moon':'Mo','Mars':'Ma','Mercury':'Me','Jupiter':'Ju','Venus':'Ve','Saturn':'Sa','Uranus':'Ur','Neptune':'Ne','Pluto':'Pl','Rahu':'Ra','Ketu':'Ke','Rahu (North Node)':'Ra','Ketu (South Node)':'Ke'};\n  function abbr(n){ return ABBR[n]||String(n).slice(0,2); }\n  var SIGN_GLYPH=['\u2648','\u2649','\u264a','\u264b','\u264c','\u264d','\u264e','\u264f','\u2650','\u2651','\u2652','\u2653'];\n  var PL_GLYPH={'Sun':'\u2609','Moon':'\u263d','Mercury':'\u263f','Venus':'\u2640','Mars':'\u2642','Jupiter':'\u2643','Saturn':'\u2644','Uranus':'\u2645','Neptune':'\u2646','Pluto':'\u2647','Rahu':'\u260a','Ketu':'\u260b','Rahu (North Node)':'\u260a','Ketu (South Node)':'\u260b'};\n  function plGlyph(n){ return PL_GLYPH[n]||abbr(n); }\n  function glyph(x,y,s,size,cls){ var fill=cls==='planet'?'var(--gold,#c79a3a)':'currentColor'; var op=cls==='sign'?'0.78':'1'; return '<text x=\"'+x+'\" y=\"'+y+'\" text-anchor=\"middle\" dominant-baseline=\"central\" style=\"font-size:'+size+'px;fill:'+fill+';opacity:'+op+'\">'+s+'<\/text>'; }\n  function line(x1,y1,x2,y2,op){ return '<line x1=\"'+x1+'\" y1=\"'+y1+'\" x2=\"'+x2+'\" y2=\"'+y2+'\" stroke=\"currentColor\" stroke-opacity=\"'+(op||0.4)+'\"\/>'; }\n  function circle(cx,cy,r){ return '<circle cx=\"'+cx+'\" cy=\"'+cy+'\" r=\"'+r+'\" fill=\"none\" stroke=\"currentColor\" stroke-opacity=\"0.4\"\/>'; }\n  function txt(x,y,s,cls){\n    if(s===''||s==null) return '';\n    var st = cls==='planet'?'font-weight:600;fill:var(--gold,#c79a3a);font-size:12px'\n      : cls==='rashi'?'fill:currentColor;opacity:.55;font-size:10px'\n      : cls==='asc'?'fill:var(--accent,#c0392b);font-weight:700;font-size:11px'\n      : 'fill:currentColor';\n    return '<text x=\"'+x+'\" y=\"'+y+'\" text-anchor=\"middle\" dominant-baseline=\"middle\" style=\"'+st+'\">'+esc(s)+'<\/text>';\n  }\n  function svg(s,inner){ return '<svg viewBox=\"0 0 '+s+' '+s+'\" class=\"nmq-chart-svg\" role=\"img\" style=\"max-width:'+s+'px;width:100%;height:auto;color:inherit\">'+inner+'<\/svg>'; }\n  function multiline(x,y,arr){\n    var out='',perRow=3;\n    for(var i=0;i<arr.length;i++){ var row=Math.floor(i\/perRow),col=i%perRow; var rowCount=Math.min(perRow,arr.length-row*perRow); var rx=x+(col-(rowCount-1)\/2)*20,ry=y+row*14; out+=txt(rx,ry,arr[i],'planet'); }\n    return out;\n  }\n  function kundliNorth(result){\n    var houses=(result.chart&&result.chart.houses)||[];\n    if(!houses.length) return '';\n    var S=320;\n    var pos=[null,[0.50,0.27],[0.27,0.10],[0.10,0.27],[0.27,0.50],[0.10,0.73],[0.27,0.90],[0.50,0.73],[0.73,0.90],[0.90,0.73],[0.73,0.50],[0.90,0.27],[0.73,0.10]];\n    var lines='<rect x=\"1\" y=\"1\" width=\"'+(S-2)+'\" height=\"'+(S-2)+'\" fill=\"none\" stroke=\"currentColor\" stroke-opacity=\"0.5\"\/>'\n      +line(0,0,S,S)+line(S,0,0,S)+line(S\/2,0,S,S\/2)+line(S,S\/2,S\/2,S)+line(S\/2,S,0,S\/2)+line(0,S\/2,S\/2,0);\n    var content=houses.map(function(h){\n      var p=pos[h.house]; if(!p) return '';\n      var x=p[0]*S,y=p[1]*S;\n      var rashi=(h.sign_index!=null)?(h.sign_index+1):'';\n      var pl=(h.planets||[]).map(abbr);\n      return txt(x,y-12,rashi,'rashi')+(pl.length?multiline(x,y+6,pl):'');\n    }).join('');\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">North Indian Kundli &middot; Lagna: '+esc(result.lagna_rashi||'')+'<\/div>'+svg(S,lines+content)+'<\/div>';\n  }\n  function kundliSouth(result){\n    var houses=(result.chart&&result.chart.houses)||[];\n    if(!houses.length) return '';\n    var bySign={},lagnaSign=null;\n    houses.forEach(function(h){\n      if(h.sign_index!=null) bySign[h.sign_index]=(h.planets||[]).map(abbr);\n      if(h.house===1&&h.sign_index!=null) lagnaSign=h.sign_index;\n    });\n    var S=320,cell=S\/4;\n    var cellOf={11:[0,0],0:[0,1],1:[0,2],2:[0,3],3:[1,3],4:[2,3],5:[3,3],6:[3,2],7:[3,1],8:[3,0],9:[2,0],10:[1,0]};\n    var s='<rect x=\"1\" y=\"1\" width=\"'+(S-2)+'\" height=\"'+(S-2)+'\" fill=\"none\" stroke=\"currentColor\" stroke-opacity=\"0.5\"\/>';\n    for(var i=1;i<4;i++){ s+=line(i*cell,0,i*cell,S,0.3); s+=line(0,i*cell,S,i*cell,0.3); }\n    Object.keys(cellOf).forEach(function(k){\n      var si=parseInt(k,10),rc=cellOf[k],x=rc[1]*cell,y=rc[0]*cell;\n      if(si===lagnaSign){\n        s+='<rect x=\"'+(x+1.5)+'\" y=\"'+(y+1.5)+'\" width=\"'+(cell-3)+'\" height=\"'+(cell-3)+'\" fill=\"none\" stroke=\"var(--accent,#c0392b)\" stroke-opacity=\"0.75\" stroke-width=\"2\"\/>';\n        s+='<line x1=\"'+x+'\" y1=\"'+y+'\" x2=\"'+(x+cell*0.32)+'\" y2=\"'+(y+cell*0.32)+'\" stroke=\"var(--accent,#c0392b)\" stroke-opacity=\"0.85\"\/>';\n      }\n      s+=txt(x+13,y+14,(si+1),'rashi');\n      s+=multiline(x+cell\/2,y+cell\/2+2,bySign[si]||[]);\n    });\n    s+=txt(S\/2,S\/2,'R\u0101\u015bi','rashi');\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">South Indian Kundli &middot; Lagna: '+esc(result.lagna_rashi||'')+'<\/div>'+svg(S,s)+'<\/div>';\n  }\n  window.nmqKToggle=function(btn,target){\n    var w=btn.closest('.nmq-kundli'); if(!w) return;\n    w.querySelectorAll('[data-k]').forEach(function(d){ d.style.display=(d.getAttribute('data-k')===target)?'':'none'; });\n    w.querySelectorAll('[data-kbtn]').forEach(function(x){ x.style.opacity=(x.getAttribute('data-kbtn')===target)?'1':'0.5'; });\n  };\n  function kundli(result){\n    var north=kundliNorth(result),south=kundliSouth(result);\n    if(!north) return south||'';\n    if(!south) return north;\n    var b='cursor:pointer;border:1px solid currentColor;background:transparent;color:inherit;font:inherit;font-size:11px;padding:4px 12px;border-radius:5px;margin:0 4px;opacity:';\n    return '<div class=\"nmq-kundli\">'\n      +'<div style=\"margin-bottom:8px;text-align:center\">'\n        +'<button type=\"button\" data-kbtn=\"north\" onclick=\"nmqKToggle(this,\\'north\\')\" style=\"'+b+'1\">North Indian<\/button>'\n        +'<button type=\"button\" data-kbtn=\"south\" onclick=\"nmqKToggle(this,\\'south\\')\" style=\"'+b+'0.5\">South Indian<\/button>'\n      +'<\/div>'\n      +'<div data-k=\"north\">'+north+'<\/div>'\n      +'<div data-k=\"south\" style=\"display:none\">'+south+'<\/div>'\n    +'<\/div>';\n  }\n  function westernWheel(result){\n    var ch=result.chart; if(!ch||!ch.planets) return '';\n    var S=360,c=S\/2,rO=c-3,rZ=c-26,rP=c-58,rI=c-86;\n    var asc=ch.ascendant_longitude||0;\n    function a(L){ return (180+(L-asc))*Math.PI\/180; }\n    function pt(L,r){ var t=a(L); return [c+r*Math.cos(t),c-r*Math.sin(t)]; }\n    var s=circle(c,c,rO)+circle(c,c,rZ)+circle(c,c,rI);\n    for(var i=0;i<12;i++){ var L=i*30; var p1=pt(L,rZ),p2=pt(L,rO); s+=line(p1[0],p1[1],p2[0],p2[1],0.35); var m=pt(L+15,(rZ+rO)\/2); s+=glyph(m[0],m[1],SIGN_GLYPH[i],15,'sign'); }\n    (ch.house_cusps||[]).forEach(function(cu){ var q1=pt(cu.longitude,rI),q2=pt(cu.longitude,rZ); s+=line(q1[0],q1[1],q2[0],q2[1],0.2); });\n    var ASPECTS=[[0,8,'#9aa0a6'],[60,4,'#3fae6b'],[90,6,'#e0566f'],[120,6,'#4a86e8'],[180,8,'#e0566f']];\n    var pls=ch.planets||[];\n    for(var ai=0;ai<pls.length;ai++){ for(var bi=ai+1;bi<pls.length;bi++){\n      var dd=Math.abs(pls[ai].longitude-pls[bi].longitude)%360; if(dd>180) dd=360-dd;\n      for(var ki=0;ki<ASPECTS.length;ki++){ if(Math.abs(dd-ASPECTS[ki][0])<=ASPECTS[ki][1]){\n        var w1=pt(pls[ai].longitude,rI),w2=pt(pls[bi].longitude,rI);\n        s+='<line x1=\"'+w1[0].toFixed(1)+'\" y1=\"'+w1[1].toFixed(1)+'\" x2=\"'+w2[0].toFixed(1)+'\" y2=\"'+w2[1].toFixed(1)+'\" stroke=\"'+ASPECTS[ki][2]+'\" stroke-width=\"1\" stroke-opacity=\"0.45\"\/>';\n        break;\n      } }\n    } }\n    (ch.planets||[]).forEach(function(pl){\n      var t1=pt(pl.longitude,rZ),t2=pt(pl.longitude,rZ-7); s+=line(t1[0],t1[1],t2[0],t2[1],0.65);\n      var p=pt(pl.longitude,rP); s+=glyph(p[0],p[1],plGlyph(pl.planet),17,'planet');\n      if(pl.retrograde){ s+=txt(p[0]+12,p[1]+9,'\u211e','rashi'); }\n    });\n    var ap=pt(asc,rI-2); s+=txt(ap[0],ap[1],'ASC','asc');\n    var legend='<div class=\"nmq-bio-legend\"><span style=\"color:#9aa0a6\">&#9472; Conjunction<\/span> <span style=\"color:#4a86e8\">&#9472; Trine<\/span> <span style=\"color:#3fae6b\">&#9472; Sextile<\/span> <span style=\"color:#e0566f\">&#9472; Square \/ Opposition<\/span><\/div>';\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">Western Natal Wheel<\/div>'+svg(S,s)+legend+'<\/div>';\n  }\n  function grid3(rows,title){\n    if(!rows||!rows.length) return '';\n    var n=(rows[0]||[]).length||3;\n    var cz=n<=3?64:n<=4?54:n<=5?46:n<=6?40:n<=8?32:26;\n    var fz=n<=3?18:n<=4?16:n<=6?14:n<=8?12:11;\n    var gstyle='grid-template-columns:repeat('+n+','+cz+'px);grid-auto-rows:'+cz+'px';\n    var cstyle='min-height:'+cz+'px;font-size:'+fz+'px;letter-spacing:0';\n    var html='<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">'+esc(title)+'<\/div><div class=\"nmq-grid3\" style=\"'+gstyle+'\">';\n    rows.forEach(function(r){ (r||[]).forEach(function(cell){ var v=(cell==='-'||cell==null)?'':String(cell); html+='<div class=\"nmq-grid3-cell\" style=\"'+cstyle+'\">'+esc(v)+'<\/div>'; }); });\n    return html+'<\/div><\/div>';\n  }\n  function biorhythm(series){\n    if(!series||!series.length) return '';\n    var W=520,H=180,pad=24,n=series.length;\n    function x(i){ return pad+i*(W-2*pad)\/(n-1); }\n    function y(v){ return H\/2-(v\/100)*(H\/2-pad); }\n    var s='<line x1=\"'+pad+'\" y1=\"'+(H\/2)+'\" x2=\"'+(W-pad)+'\" y2=\"'+(H\/2)+'\" stroke=\"currentColor\" stroke-opacity=\"0.3\"\/>';\n    [['physical','#e0566f'],['emotional','#3fae6b'],['intellectual','#4a86e8']].forEach(function(k){\n      var d=series.map(function(p,i){ return (i?'L':'M')+x(i).toFixed(1)+' '+y(p[k[0]]||0).toFixed(1); }).join(' ');\n      s+='<path d=\"'+d+'\" fill=\"none\" stroke=\"'+k[1]+'\" stroke-width=\"2\"\/>';\n    });\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">Biorhythm<\/div><svg viewBox=\"0 0 '+W+' '+H+'\" class=\"nmq-chart-svg\" style=\"width:100%;height:auto;color:inherit\">'+s+'<\/svg><div class=\"nmq-bio-legend\"><span style=\"color:#e0566f\">&#9679; Physical<\/span> <span style=\"color:#3fae6b\">&#9679; Emotional<\/span> <span style=\"color:#4a86e8\">&#9679; Intellectual<\/span><\/div><\/div>';\n  }\n  function bars(items,title){\n    if(!items||!items.length) return '';\n    var W=440,bh=24,gap=10,pad=96,top=8;\n    var max=Math.max.apply(null,items.map(function(i){return Math.abs(i.value)||0;}))||1;\n    var H=top+items.length*(bh+gap), s='';\n    items.forEach(function(it,idx){\n      var y=top+idx*(bh+gap), w=(Math.abs(it.value)\/max)*(W-pad-50);\n      s+='<text x=\"'+(pad-6)+'\" y=\"'+(y+bh\/2)+'\" text-anchor=\"end\" dominant-baseline=\"middle\" style=\"fill:currentColor;opacity:.7;font-size:11px\">'+esc(it.label)+'<\/text>';\n      s+='<rect x=\"'+pad+'\" y=\"'+y+'\" width=\"'+w.toFixed(1)+'\" height=\"'+bh+'\" rx=\"4\" fill=\"#C9A84C\" opacity=\"0.85\"\/>';\n      s+='<text x=\"'+(pad+w+6)+'\" y=\"'+(y+bh\/2)+'\" dominant-baseline=\"middle\" style=\"fill:currentColor;font-size:12px\">'+esc(it.value)+'<\/text>';\n    });\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">'+esc(title)+'<\/div><svg viewBox=\"0 0 '+W+' '+H+'\" class=\"nmq-chart-svg\" style=\"width:100%;height:auto;color:inherit\">'+s+'<\/svg><\/div>';\n  }\n  function moonDisk(cx,cy,r,f,wax){\n    var dark='#15151f',lit='#f3e6bf';\n    if(f<=0.02) return '<circle cx=\"'+cx+'\" cy=\"'+cy+'\" r=\"'+r+'\" fill=\"'+dark+'\" stroke=\"currentColor\" stroke-opacity=\"0.4\"\/>';\n    if(f>=0.98) return '<circle cx=\"'+cx+'\" cy=\"'+cy+'\" r=\"'+r+'\" fill=\"'+lit+'\" stroke=\"currentColor\" stroke-opacity=\"0.4\"\/>';\n    var s='<circle cx=\"'+cx+'\" cy=\"'+cy+'\" r=\"'+r+'\" fill=\"'+dark+'\" stroke=\"currentColor\" stroke-opacity=\"0.4\"\/>';\n    var topp=(cy-r).toFixed(2),bot=(cy+r).toFixed(2),rx=(r*Math.abs(1-2*f)).toFixed(2);\n    var so=wax?0:1, si=(f<0.5)?(wax?0:1):(wax?1:0);\n    return s+'<path d=\"M '+cx+' '+topp+' A '+r+' '+r+' 0 0 '+so+' '+cx+' '+bot+' A '+rx+' '+r+' 0 0 '+si+' '+cx+' '+topp+' Z\" fill=\"'+lit+'\"\/>';\n  }\n  function moonPair(result){\n    var a=result.moon_a||{},b=result.moon_b||{};\n    var s=moonDisk(95,72,50,(a.illumination||0)\/100,!!a.waxing)+moonDisk(245,72,50,(b.illumination||0)\/100,!!b.waxing)\n      +txt(95,148,a.phase||'','sign')+txt(245,148,b.phase||'','sign')\n      +txt(170,176,(result.compatibility_percent!=null?result.compatibility_percent+'% match':''),'planet');\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">Moon Phase Match<\/div><svg viewBox=\"0 0 340 190\" class=\"nmq-chart-svg\" style=\"width:100%;max-width:340px;height:auto;color:inherit\">'+s+'<\/svg><\/div>';\n  }\n  function astroMap(result){\n    var lines=result.map_lines||[]; if(!lines.length) return '';\n    var W=480,H=240; function X(lo){return (lo+180)\/360*W;} function Y(la){return (90-la)\/180*H;}\n    var s='<rect x=\"0\" y=\"0\" width=\"'+W+'\" height=\"'+H+'\" fill=\"rgba(74,134,232,0.10)\" stroke=\"currentColor\" stroke-opacity=\"0.4\"\/>';\n    for(var lo=-150;lo<=150;lo+=30){ s+=line(X(lo),0,X(lo),H,0.10); }\n    for(var la=-60;la<=60;la+=30){ s+=line(0,Y(la),W,Y(la),0.10); }\n    s+=line(0,Y(0),W,Y(0),0.28);\n    var colors={Sun:'#e0a23a',Moon:'#9aa0a6',Mercury:'#6bbf59',Venus:'#e06fae',Mars:'#e0566f',Jupiter:'#4a86e8',Saturn:'#b08968'};\n    lines.forEach(function(l){\n      var col=colors[l.planet]||'#888';\n      if(l.line==='MC'||l.line==='IC'){\n        var x=X(l.longitude).toFixed(1), dash=l.line==='IC'?' stroke-dasharray=\"4 3\"':'';\n        s+='<line x1=\"'+x+'\" y1=\"0\" x2=\"'+x+'\" y2=\"'+H+'\" stroke=\"'+col+'\" stroke-width=\"1.2\" stroke-opacity=\"0.8\"'+dash+'\/>';\n      } else if(l.points&&l.points.length){\n        var d='',prev=null;\n        l.points.forEach(function(p){var x=X(p[1]).toFixed(1),y=Y(p[0]).toFixed(1); if(prev!==null&&Math.abs(p[1]-prev)>180){d+=' M'+x+' '+y;}else{d+=(d?' L':'M')+x+' '+y;} prev=p[1];});\n        s+='<path d=\"'+d+'\" fill=\"none\" stroke=\"'+col+'\" stroke-width=\"1\" stroke-opacity=\"0.55\" stroke-dasharray=\"'+(l.line==='DSC'?'2 3':'1 2')+'\"\/>';\n      }\n    });\n    var legend='<div class=\"nmq-bio-legend\">'+Object.keys(colors).map(function(k){return '<span style=\"color:'+colors[k]+'\">&#9679; '+k+'<\/span>';}).join(' ')+'<\/div>';\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">Astrocartography (schematic map; solid=MC, dashed=IC, dotted=ASC\/DSC)<\/div><svg viewBox=\"0 0 '+W+' '+H+'\" class=\"nmq-chart-svg\" style=\"width:100%;height:auto;color:inherit\">'+s+'<\/svg>'+legend+'<\/div>';\n  }\n  function tarotCards(cards){\n    if(!cards||!cards.length) return '';\n    var c=cards.map(function(k){\n      var rev=(k.orientation==='Reversed'), col=rev?'#c0392b':'#1a8a4a';\n      return '<div style=\"flex:0 0 150px;max-width:170px;border:1px solid var(--border,#ccc);border-radius:12px;padding:14px 12px;background:rgba(127,127,127,.06);text-align:center\">'\n        +(k.position?'<div style=\"font-size:10px;opacity:.6;letter-spacing:1px;text-transform:uppercase;margin-bottom:8px\">'+esc(k.position)+'<\/div>':'')\n        +'<div style=\"font-size:26px;color:#C9A84C;margin:2px 0 6px\">&#10022;<\/div>'\n        +'<div style=\"font-weight:700;font-size:14px;line-height:1.3\">'+esc(k.card||'')+'<\/div>'\n        +'<div style=\"font-size:11px;color:'+col+';margin:4px 0;font-weight:600\">'+(rev?'&#8595; Reversed':'&#8593; Upright')+'<\/div>'\n        +'<div style=\"font-size:12px;opacity:.85;line-height:1.5\">'+esc(k.meaning||'')+'<\/div><\/div>';\n    }).join('');\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">Your Cards<\/div><div style=\"display:flex;gap:12px;flex-wrap:wrap;justify-content:center\">'+c+'<\/div><\/div>';\n  }\n  function iconCards(cards){\n    if(!cards||!cards.length) return '';\n    var c=cards.map(function(k){\n      return '<div style=\"flex:0 0 210px;max-width:260px;border:1px solid var(--border,#ccc);border-radius:14px;padding:18px;background:rgba(127,127,127,.06);text-align:center\">'\n        +'<div style=\"font-size:46px;line-height:1\">'+esc(k.icon||'')+'<\/div>'\n        +'<div style=\"font-weight:700;font-size:18px;margin:8px 0 2px\">'+esc(k.title||'')+'<\/div>'\n        +(k.subtitle?'<div style=\"font-size:11px;opacity:.6;letter-spacing:.5px;text-transform:uppercase;margin-bottom:8px\">'+esc(k.subtitle)+'<\/div>':'')\n        +(k.text?'<div style=\"font-size:13px;opacity:.85;line-height:1.55\">'+esc(k.text)+'<\/div>':'')+'<\/div>';\n    }).join('');\n    return '<div class=\"nmq-chart-wrap\"><div style=\"display:flex;gap:14px;flex-wrap:wrap;justify-content:center\">'+c+'<\/div><\/div>';\n  }\n  function meter(result){\n    var v = result.love_percent!=null?result.love_percent\n          : result.compatibility_score!=null?result.compatibility_score\n          : result.overall_score!=null?result.overall_score\n          : result.compatibility_percent!=null?result.compatibility_percent\n          : result.score!=null?result.score:null;\n    if(v==null) return '';\n    v=Math.max(0,Math.min(100,Math.round(v)));\n    var cx=130,cy=120,r=92;\n    function P(a){var rad=a*Math.PI\/180;return [cx+r*Math.cos(rad),cy-r*Math.sin(rad)];}\n    function arc(a0,a1){var s=P(a0),e=P(a1),sw=(a1<a0)?1:0;return 'M '+s[0].toFixed(1)+' '+s[1].toFixed(1)+' A '+r+' '+r+' 0 0 '+sw+' '+e[0].toFixed(1)+' '+e[1].toFixed(1);}\n    var col=v<40?'#e0566f':(v<70?'#e0a23a':'#3fae6b'), ang=180-(v\/100)*180;\n    var s='<path d=\"'+arc(180,0)+'\" fill=\"none\" stroke=\"currentColor\" stroke-opacity=\"0.16\" stroke-width=\"16\" stroke-linecap=\"round\"\/>'\n      +'<path d=\"'+arc(180,ang)+'\" fill=\"none\" stroke=\"'+col+'\" stroke-width=\"16\" stroke-linecap=\"round\"\/>'\n      +'<text x=\"'+cx+'\" y=\"'+(cy-4)+'\" text-anchor=\"middle\" style=\"fill:currentColor;font-size:34px;font-weight:700\">'+v+'%<\/text>'\n      +'<text x=\"'+cx+'\" y=\"'+(cy+18)+'\" text-anchor=\"middle\" style=\"fill:currentColor;opacity:.6;font-size:11px;letter-spacing:1px;text-transform:uppercase\">Compatibility<\/text>';\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">Compatibility<\/div><svg viewBox=\"0 0 260 150\" class=\"nmq-chart-svg\" style=\"width:100%;max-width:260px;height:auto;color:inherit\">'+s+'<\/svg><\/div>';\n  }\n  function timeline(data){\n    if(!data||!data.rows||!data.rows.length) return '';\n    var rows=data.rows, mn=data.min, span=(data.max-data.min)||1;\n    var W=460,padL=70,rh=22,gap=8,top=18;\n    function X(v){return padL+((v-mn)\/span)*(W-padL-10);}\n    var H=top+rows.length*(rh+gap)+4, s='';\n    for(var t=0;t<=4;t++){var val=mn+span*t\/4,x=X(val);\n      s+='<line x1=\"'+x.toFixed(1)+'\" y1=\"'+top+'\" x2=\"'+x.toFixed(1)+'\" y2=\"'+(H-4)+'\" stroke=\"currentColor\" stroke-opacity=\"0.1\"\/>';\n      s+='<text x=\"'+x.toFixed(1)+'\" y=\"'+(top-5)+'\" text-anchor=\"middle\" style=\"fill:currentColor;opacity:.5;font-size:9px\">'+Math.round(val)+'<\/text>';}\n    var pal=['#4a86e8','#3fae6b','#e0a23a','#e0566f','#9b6fe0','#e06fae','#6bbf9a','#b08968'];\n    rows.forEach(function(r,idx){\n      var y=top+idx*(rh+gap);\n      s+='<text x=\"'+(padL-6)+'\" y=\"'+(y+rh\/2)+'\" text-anchor=\"end\" dominant-baseline=\"middle\" style=\"fill:currentColor;font-size:10px\">'+esc(r.label)+'<\/text>';\n      (r.segments||[]).forEach(function(seg){var x1=X(seg.start),w=Math.max(2,X(seg.end)-x1);\n        s+='<rect x=\"'+x1.toFixed(1)+'\" y=\"'+y+'\" width=\"'+w.toFixed(1)+'\" height=\"'+rh+'\" rx=\"3\" fill=\"'+pal[idx%pal.length]+'\" opacity=\"0.82\"\/>';});\n    });\n    var unit=data.unit?'<div style=\"text-align:center;font-size:11px;opacity:.55;margin-top:-2px\">'+esc(data.unit)+'<\/div>':'';\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">Timeline<\/div><svg viewBox=\"0 0 '+W+' '+H+'\" class=\"nmq-chart-svg\" style=\"width:100%;height:auto;color:inherit\">'+s+'<\/svg>'+unit+'<\/div>';\n  }\n  function numGrid(data){\n    if(!data) return '';\n    var present=data.present||[], s='';\n    for(var n=1;n<=9;n++){\n      var on=present.indexOf(n)>=0, row=Math.floor((n-1)\/3), col=(n-1)%3, x=col*60, y=row*60;\n      s+='<rect x=\"'+(x+3)+'\" y=\"'+(y+3)+'\" width=\"54\" height=\"54\" rx=\"8\" fill=\"'+(on?'#C9A84C':'transparent')+'\" opacity=\"'+(on?'0.85':'1')+'\" stroke=\"currentColor\" stroke-opacity=\"'+(on?'0':'0.25')+'\"\/>';\n      s+='<text x=\"'+(x+30)+'\" y=\"'+(y+34)+'\" text-anchor=\"middle\" style=\"fill:'+(on?'#fff':'currentColor')+';opacity:'+(on?'1':'0.4')+';font-size:22px;font-weight:600\">'+n+'<\/text>';\n    }\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">Numbers Present (1-9)<\/div><svg viewBox=\"0 0 180 180\" class=\"nmq-chart-svg\" style=\"width:100%;max-width:180px;height:auto;color:inherit\">'+s+'<\/svg><\/div>';\n  }\n  function moonSingle(result){\n    var a=result.moon_a; if(!a) return '';\n    var s=moonDisk(75,75,58,(a.illumination||0)\/100,!!a.waxing)+txt(75,150,a.phase||'','sign');\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">Moon Phase<\/div><svg viewBox=\"0 0 150 165\" class=\"nmq-chart-svg\" style=\"width:100%;max-width:150px;height:auto;color:inherit\">'+s+'<\/svg><\/div>';\n  }\n  window.nmqRenderVisual=function(toolId,result){\n    if(!result||typeof result!=='object') return '';\n    switch(toolId){\n      case 'vedic_kundli_calculator': return kundli(result);\n      case 'birth_chart_calculator':  return westernWheel(result);\n      case 'loshu_grid':              return grid3((result.rows||[]).map(function(r){return [r.c1,r.c2,r.c3];}),'Lo Shu Grid');\n      case 'wafq_magic_square':       return grid3((result.rows||[]).map(function(r){return [r.c1,r.c2,r.c3];}),'Wafq - Magic Square');\n      case 'naqsh_generator':         return grid3((result.rows||[]).map(function(r){return [r.c1,r.c2,r.c3];}),'Naqsh - Talismanic Square');\n      case 'pythagorean_psychomatrix':return grid3(result.matrix,'Pythagorean Square');\n      case 'magic_square_generator':  return grid3(result.square,'Magic Square - '+(result.size||(result.square||[]).length)+'\u00d7'+(result.size||(result.square||[]).length));\n      case 'biorhythm_calculator':    return biorhythm(result.series);\n      case 'navamsa_d9_chart_calculator':\n      case 'dashamsha_d10_chart_calculator':\n      case 'kaal_sarp_dosha_calculator':\n      case 'arudha_lagna_calculator':\n      case 'indu_lagna_calculator':\n      case 'pitri_dosha_calculator':\n      case 'raj_yoga_calculator':\n      case 'dhana_yoga_calculator':   return kundli(result);\n      case 'saturn_return_calculator':\n      case 'north_node_south_node_calculator':\n      case 'part_of_fortune_calculator':\n      case 'lilith_sign_calculator':\n      case 'vertex_sign_calculator':\n      case 'relocation_chart_calculator': return westernWheel(result);\n      case 'shadbala_calculator':           return bars(result.bars,'Planetary Strength (Shadbala estimate)');\n      case 'atmakaraka_darakaraka_calculator': return bars(result.bars,'Planet Degrees (Chara Karakas)');\n      case 'english_gematria_calculator':   return bars(result.bars,'English Gematria Values');\n      case 'name_numerology_calculator':    return bars(result.bars,'Name Numbers');\n      case 'bazi_four_pillars_calculator':  return bars(result.bars,'Five Element Balance');\n      case 'moon_phase_soulmate_calculator': return moonPair(result);\n      case 'astrocartography_calculator':   return astroMap(result);\n      case 'tarot_reading':\n      case 'yes_no_tarot_reading':\n      case 'love_tarot_reading':            return tarotCards(result.cards);\n      case 'birthstone_calculator':\n      case 'birth_flower_calculator':\n      case 'spirit_animal_calculator':\n      case 'chinese_gender_predictor':      return iconCards(result.cards);\n      case 'life_path_compatibility':\n      case 'expression_compatibility':\n      case 'zodiac_compatibility_calculator':\n      case 'matrix_relationship_compatibility':\n      case 'psychomatrix_compatibility':\n      case 'core_numbers_compatibility_matrix':\n      case 'numerology_love_calculator':\n      case 'mulank_bhagyank_compatibility':\n      case 'chinese_zodiac_compatibility':  return meter(result);\n      case 'vimshottari_dasha_calculator':\n      case 'retrograde_calendar_calculator':\n      case 'pinnacle_numbers':\n      case 'challenge_numbers':             return timeline(result.timeline);\n      case 'composite_chart_calculator':\n      case 'solar_return_calculator':\n      case 'solar_arc_directions_calculator':\n      case 'draconic_chart_calculator':\n      case 'secondary_progressions_calculator':\n      case 'davison_chart_calculator':\n      case 'harmonic_chart_calculator':\n      case 'planetary_positions_calculator': return westernWheel(result);\n      case 'personal_year_forecast_grid':   return bars(result.bars,'Personal Year Cycle');\n      case 'kundli_matching_calculator':    return bars(result.bars,'Guna Milan (points per koota)');\n      case 'ashtakavarga_calculator':       return binduHeatmap(result.sarvashtakavarga);\n      case 'cross_system_letter_value_comparator': return bars(result.bars,'Letter value by system');\n      case 'lal_kitab_calculator':          return kundli(result);\n      case 'moon_phase_calculator':         return moonSingle(result);\n      case 'karmic_lesson_numbers':\n      case 'subconscious_self_number':      return numGrid(result.num_grid);\n      case 'juno_sign_calculator':          return westernWheel(result);\n      case 'human_design_bodygraph_calculator': return rawSvg(result.chart && result.chart.svg, 'Human Design BodyGraph');\n      case 'numerology_report':             return numReport(result);\n      case 'synastry_calculator':           return aspectMatrix(result);\n      case 'transit_calculator':            return timeline(result.timeline);\n      case 'choghadiya_calculator':         return choghadiya(result);\n      case 'panchang_calculator':           return panchang(result);\n      case 'sade_sati_calculator':          return sadeSati(result);\n      case 'mangal_dosha_calculator':       return kundli(result);\n      default: return '';\n    }\n  };\n\n  function choghadiyaColor(q){ return \/bad\/i.test(q) ? '#e0566f' : \/auspicious\/i.test(q) ? '#3fae6b' : '#e0a23a'; }\n  function choghadiya(result){\n    function row(list, label){\n      if (!list || !list.length) return '';\n      var blocks = list.map(function(c){\n        return '<div title=\"'+esc(c.quality)+'\" style=\"flex:1;min-width:54px;background:'+choghadiyaColor(c.quality)+';color:#1a1a1a;border-radius:6px;padding:6px 3px;text-align:center\">'\n          + '<div style=\"font-size:12px;font-weight:700\">'+esc(c.name)+'<\/div>'\n          + '<div style=\"font-size:9px;opacity:.85\">'+esc(c.start)+'\u2013'+esc(c.end)+'<\/div><\/div>';\n      }).join('');\n      return '<div style=\"margin:4px 0\"><div style=\"font-size:11px;opacity:.6;text-align:left;margin-bottom:3px\">'+label+'<\/div><div style=\"display:flex;gap:4px;flex-wrap:wrap\">'+blocks+'<\/div><\/div>';\n    }\n    var legend = '<div class=\"nmq-bio-legend\" style=\"margin-top:6px;font-size:11px\"><span style=\"color:#3fae6b\">\u25cf Auspicious<\/span> &nbsp;<span style=\"color:#e0a23a\">\u25cf Neutral<\/span> &nbsp;<span style=\"color:#e0566f\">\u25cf Inauspicious<\/span><\/div>';\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">Choghadiya Muhurat'+(result.date?' \u00b7 '+esc(result.date):'')+'<\/div>'\n      + row(result.day_choghadiya,'Day (sunrise \u2192 sunset)') + row(result.night_choghadiya,'Night (sunset \u2192 sunrise)') + legend + '<\/div>';\n  }\n\n  function panchang(result){\n    var items = [['Tithi',result.tithi],['Vara',result.vara],\n      ['Nakshatra',(result.nakshatra||'')+(result.nakshatra_pada?' (pada '+result.nakshatra_pada+')':'')],\n      ['Yoga',result.yoga],['Karana',result.karana],['Paksha',result.paksha],\n      ['Moon Rashi',result.moon_rashi],['Sun Rashi',result.sun_rashi],\n      ['Sunrise',result.sunrise],['Sunset',result.sunset]];\n    var cards = items.filter(function(it){ return it[1]; }).map(function(it){\n      return '<div style=\"flex:1 1 120px;min-width:108px;border:1px solid rgba(127,127,127,.25);border-radius:10px;padding:10px;text-align:center\">'\n        + '<div style=\"font-size:10px;opacity:.6;text-transform:uppercase;letter-spacing:.5px\">'+esc(it[0])+'<\/div>'\n        + '<div style=\"font-size:14px;font-weight:600;color:var(--gold,#c79a3a);margin-top:3px\">'+esc(String(it[1]))+'<\/div><\/div>';\n    }).join('');\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">Panchang'+(result.date?' \u00b7 '+esc(result.date):'')+'<\/div><div style=\"display:flex;gap:8px;flex-wrap:wrap;justify-content:center\">'+cards+'<\/div><\/div>';\n  }\n\n  function sadeSati(result){\n    var w = result.sade_sati_window; if (!w || !w.start_date || !w.end_date) return '';\n    var phases = ['Rising (12th)','Peak (1st)','Setting (2nd)'], cols = ['#e0a23a','#e0566f','#e0a23a'];\n    var seg = phases.map(function(p,i){\n      var hot = result.is_sade_sati && i === 1;\n      return '<div style=\"flex:1;background:'+cols[i]+';opacity:'+(hot?'1':'.7')+';color:#1a1a1a;padding:8px 4px;text-align:center;border-right:'+(i<2?'1px solid rgba(0,0,0,.2)':'none')+'\">'\n        + '<div style=\"font-size:12px;font-weight:700\">'+p+'<\/div><\/div>';\n    }).join('');\n    var cur = result.current_phase && result.current_phase !== 'None' ? ' \u00b7 current: '+esc(result.current_phase) : '';\n    var meta = '<div style=\"font-size:12px;margin-top:6px;opacity:.8\">'+esc(w.start_date)+' \u2192 '+esc(w.end_date)+' \u00b7 status: '+esc(w.status||'')+cur+'<\/div>';\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">Sade Sati - Saturn Phases (~7.5 yrs)<\/div><div style=\"display:flex;max-width:460px;margin:0 auto;border-radius:8px;overflow:hidden\">'+seg+'<\/div>'+meta+'<\/div>';\n  }\n\n  function rawSvg(s, title){\n    if (!s || typeof s !== 'string') return '';\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">'+esc(title||'')+'<\/div>'+s+'<div class=\"nmq-bio-legend\" style=\"margin-top:6px;opacity:.7\">Filled centers are defined; gold lines are your active channels.<\/div><\/div>';\n  }\n\n  var ASPECT_GLYPH = {Conjunction:'\u260c', Opposition:'\u260d', Trine:'\u25b3', Square:'\u25a1', Sextile:'\u2731'};\n  function aspectColor(nature){ return nature === 'Harmonious' ? '#3fae6b' : nature === 'Challenging' ? '#e0566f' : '#c79a3a'; }\n\n  function numReport(result){\n    var cn = result.core_numbers; if (!cn) return '';\n    var order = ['life_path','expression','soul_urge','personality','birthday','maturity'];\n    var cards = order.filter(function(k){ return cn[k]; }).map(function(k){\n      var c = cn[k];\n      var label = k.replace(\/_\/g,' ').replace(\/\\b\\w\/g, function(m){ return m.toUpperCase(); });\n      return '<div style=\"flex:1 1 150px;min-width:140px;border:1px solid rgba(127,127,127,.25);border-radius:10px;padding:12px;text-align:center\">'\n        + '<div style=\"font-size:30px;font-weight:700;color:var(--gold,#c79a3a)\">'+esc(String(c.number))+(c.is_master_number?'<span style=\"font-size:12px\"> \u2605<\/span>':'')+'<\/div>'\n        + '<div style=\"font-size:11px;opacity:.6;text-transform:uppercase;letter-spacing:.5px;margin:2px 0 4px\">'+esc(label)+'<\/div>'\n        + '<div style=\"font-size:13px;font-weight:600\">'+esc(c.title||'')+'<\/div>'\n        + (c.traits?'<div style=\"font-size:11px;opacity:.7;margin-top:4px\">'+esc(c.traits)+'<\/div>':'')\n        + '<\/div>';\n    }).join('');\n    var py = result.personal_year;\n    var pyCard = py ? '<div style=\"margin-top:10px;font-size:12px;opacity:.8\">Personal Year '+esc(String(py.year))+': <strong style=\"color:var(--gold,#c79a3a)\">'+esc(String(py.number))+'<\/strong> - '+esc(py.theme||'')+'<\/div>' : '';\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">Core Numbers<\/div><div style=\"display:flex;gap:10px;flex-wrap:wrap;justify-content:center\">'+cards+'<\/div>'+pyCard+'<\/div>';\n  }\n\n  function aspectMatrix(result){\n    var asp = result.aspects || []; if (!asp.length) return '';\n    var rows = [], cols = [], map = {};\n    asp.forEach(function(a){\n      if (rows.indexOf(a.person1_planet) < 0) rows.push(a.person1_planet);\n      if (cols.indexOf(a.person2_planet) < 0) cols.push(a.person2_planet);\n      map[a.person1_planet+'|'+a.person2_planet] = a;\n    });\n    var th = '<th style=\"padding:3px\"><\/th>' + cols.map(function(c){ return '<th style=\"font-size:10px;padding:3px;opacity:.7\">'+esc(c.slice(0,3))+'<\/th>'; }).join('');\n    var trs = rows.map(function(rp){\n      var cells = cols.map(function(cp){\n        var a = map[rp+'|'+cp];\n        if (!a) return '<td style=\"padding:3px;text-align:center;opacity:.15\">\u00b7<\/td>';\n        return '<td title=\"'+esc(a.aspect+' ('+a.nature+', orb '+a.orb+'\u00b0)')+'\" style=\"padding:3px;text-align:center;font-size:14px;font-weight:700;color:'+aspectColor(a.nature)+'\">'+(ASPECT_GLYPH[a.aspect]||'\u2022')+'<\/td>';\n      }).join('');\n      return '<tr><th style=\"font-size:10px;text-align:right;padding:3px;opacity:.7\">'+esc(rp.slice(0,3))+'<\/th>'+cells+'<\/tr>';\n    }).join('');\n    var title = 'Synastry Aspect Matrix' + (result.compatibility_score != null ? ' \u00b7 '+result.compatibility_score+'%' : '');\n    var legend = '<div class=\"nmq-bio-legend\" style=\"margin-top:6px;font-size:11px\"><span style=\"color:#3fae6b\">\u25b3 Harmonious<\/span> &nbsp; <span style=\"color:#e0566f\">\u25a1 Challenging<\/span><\/div>';\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">'+esc(title)+'<\/div><div style=\"overflow-x:auto\"><table style=\"margin:0 auto;border-collapse:collapse\"><tr>'+th+'<\/tr>'+trs+'<\/table><\/div>'+legend+'<\/div>';\n  }\n\n\n  function binduHeatmap(sav){\n    if (!sav || !sav.length) return '';\n    var vals = sav.map(function(s){ return s.bindus; });\n    var min = Math.min.apply(null, vals), max = Math.max.apply(null, vals);\n    function mix(a,b,t){ return [Math.round(a[0]+(b[0]-a[0])*t), Math.round(a[1]+(b[1]-a[1])*t), Math.round(a[2]+(b[2]-a[2])*t)]; }\n    function shade(v){\n      var t = max > min ? (v - min) \/ (max - min) : 0.5;\n      var c = t < 0.5 ? mix([224,86,111],[224,162,58],t*2) : mix([224,162,58],[63,174,107],(t-0.5)*2);\n      return 'rgb('+c[0]+','+c[1]+','+c[2]+')';\n    }\n    var cells = sav.map(function(s){\n      return '<div style=\"flex:1 1 70px;min-width:60px;border-radius:8px;padding:8px 4px;text-align:center;background:'+shade(s.bindus)+';color:#1a1a1a\">'\n        + '<div style=\"font-size:20px;font-weight:700\">'+s.bindus+'<\/div>'\n        + '<div style=\"font-size:10px;opacity:.85\">'+esc(s.sign)+'<\/div><\/div>';\n    }).join('');\n    return '<div class=\"nmq-chart-wrap\"><div class=\"nmq-chart-title\">Sarvashtakavarga - Bindus by Sign<\/div><div style=\"display:flex;gap:6px;flex-wrap:wrap;justify-content:center;max-width:520px;margin:0 auto\">'+cells+'<\/div><\/div>';\n  }\n})();\n<\/script>\n    <style>\n\/* The date\/time picker icon + timezone dropdown arrow follow the container's\n   color-scheme (set from the theme above), so they stay visible on light and\n   dark themes. Just add a pointer + hover affordance here. *\/\n.numroq-calc .nmq-field::-webkit-calendar-picker-indicator {\n  opacity: .85; cursor: pointer; padding: 2px; border-radius: 4px;\n}\n.numroq-calc .nmq-field::-webkit-calendar-picker-indicator:hover {\n  opacity: 1; background: rgba(127,127,127,.18);\n}\n\/* Place of birth autocomplete options (dropdown box is inline-styled per theme;\n   these add row padding + a readable gold highlight). *\/\n.numroq-calc .nmq-place-opt { padding: 10px 13px; cursor: pointer; font-size: 14px; }\n.numroq-calc .nmq-place-opt:hover, .numroq-calc .nmq-place-opt.nmq-active { background: #C9A84C; color: #080C18; }\n.numroq-print-overlay { display: none; }\n@media print {\n  body.numroq-printing > *:not(.numroq-print-overlay) { display: none !important; }\n  body.numroq-printing .numroq-print-overlay {\n    display: block !important;\n    background: #fff !important;\n    color: #111 !important;\n    padding: 24px;\n  }\n  body.numroq-printing .numroq-print-overlay * { background: #fff !important; color: #111 !important; box-shadow: none !important; }\n}\n<\/style>\n<div class=\"numroq-calc\" id=\"nmqt_1\"\n     style=\"font-family:inherit;max-width:660px;margin:24px auto;background:#080C18;border-radius:8px;padding:24px 24px 20px;box-sizing:border-box;color:#F2EBD9;color-scheme:dark\">\n\n  <div style=\"display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px\">\n    <div style=\"font-size:13px;letter-spacing:1.5px;text-transform:uppercase;color:#C9A84C;font-weight:700\">\n      Abjad Kabir Calculator    <\/div>\n    <button type=\"button\" class=\"nmq-print\" style=\"display:none;padding:7px 14px;background:transparent;border:1px solid rgba(201,168,76,0.25);color:#7a8fa6;border-radius:4px;font-weight:700;font-size:10px;letter-spacing:1.5px;cursor:pointer;white-space:nowrap\">\n      &#128424; Print \/ Save as PDF    <\/button>\n  <\/div>\n\n  <!-- input fields -->\n  <div class=\"nmq-fields\" style=\"display:flex;flex-wrap:wrap;gap:10px;margin-bottom:12px\">\n            <div style=\"flex:1 1 160px;min-width:160px\">\n      <label style=\"display:block;font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:#7a8fa6;margin-bottom:4px\">Name \/ Word<\/label>\n              <div style=\"font-size:10px;color:#7a8fa6;margin-bottom:4px\">&#9757; Arabic, Urdu or Persian script only<\/div>\n                    <input type=\"text\" class=\"nmq-field\" data-field=\"text\"\n               data-rtl=\"1\" data-script=\"0\" dir=\"rtl\" autocomplete=\"off\"\n               placeholder=\"\u0645\u062b\u0644\u0627\u064b: \u0645\u062d\u0645\u062f\"               style=\"width:100%;padding:11px 14px;border:1px solid rgba(201,168,76,0.25);border-radius:4px;background:#0a0f1e;color:#F2EBD9;font-size:15px;outline:none;box-sizing:border-box\">\n          <\/div>\n      <\/div>\n\n  <button type=\"button\" class=\"nmq-go\"\n          style=\"padding:11px 26px;background:linear-gradient(135deg,#C9A84C,#E8C96A);color:#080C18;border:none;border-radius:4px;font-weight:700;letter-spacing:2px;font-size:11px;cursor:pointer;white-space:nowrap;transition:opacity .18s\">\n    Calculate  <\/button>\n\n  <!-- error -->\n  <div class=\"nmq-err\"\n       style=\"display:none;color:#e85555;font-size:13px;margin-top:12px;padding:8px 12px;border-radius:4px;background:rgba(232,85,85,0.09)\"><\/div>\n\n  <!-- result -->\n  <div class=\"nmq-res\" style=\"display:none;margin-top:14px\">\n    <div class=\"nmq-visual\" style=\"display:none\"><\/div>\n    <div class=\"nmq-summary\" style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:14px\"><\/div>\n\n    <div class=\"nmq-table-wrap\" style=\"display:none;overflow-x:auto;border-radius:4px;border:1px solid rgba(201,168,76,0.25)\">\n      <table style=\"width:100%;border-collapse:collapse;font-size:13px;background:#0D1221\">\n        <thead><tr class=\"nmq-thead\"><\/tr><\/thead>\n        <tbody class=\"nmq-tbody\"><\/tbody>\n      <\/table>\n    <\/div>\n\n    <div class=\"nmq-text\" style=\"display:none;margin-top:10px;font-size:14px;line-height:1.7;color:#F2EBD9\"><\/div>\n\n    <div style=\"margin-top:10px;text-align:right;font-size:10px;color:#7a8fa6;letter-spacing:1px;opacity:.7\">\n      Powered by NumroQ API    <\/div>\n  <\/div>\n\n      <p style=\"margin:14px 0 0;font-size:13px;line-height:1.7;color:#F2EBD9\">\n      <strong>How it works:<\/strong> Each Arabic letter is assigned its classical Abjad value; the calculator sums those values and derives the reduced number, dominant element and ruling planet using traditional Ilm, ul, Adad rules.    <\/p>\n  \n      <p style=\"margin:10px 0 0;padding:10px 14px;font-size:12px;line-height:1.6;color:#7a8fa6;background:rgba(127,127,127,.08);border:1px solid rgba(201,168,76,0.25);border-radius:6px\">\n      &#9432; Historical and cultural reference based on classical Islamic numerology (Ilm, ul, Adad \/ Abjad). For educational interest only, not a religious ruling.    <\/p>\n  \n<\/div><!-- .numroq-calc -->\n\n<script>\n(function(){\n  var w = document.getElementById(\"nmqt_1\");\n  if(!w) return;\n  var fields    = w.querySelectorAll('.nmq-field'),\n      btn       = w.querySelector('.nmq-go'),\n      err       = w.querySelector('.nmq-err'),\n      res       = w.querySelector('.nmq-res'),\n      printBtn  = w.querySelector('.nmq-print'),\n      summary   = w.querySelector('.nmq-summary'),\n      tableWrap = w.querySelector('.nmq-table-wrap'),\n      thead     = w.querySelector('.nmq-thead'),\n      tbody     = w.querySelector('.nmq-tbody'),\n      textEl    = w.querySelector('.nmq-text'),\n      visualEl  = w.querySelector('.nmq-visual');\n\n  var orig     = \"Calculate\";\n  var load     = \"Calculating...\";\n  var display  = {\"summary\":[{\"label\":\"Total Kabir\",\"path\":\"total_kabir\"},{\"label\":\"Reduced Kabir\",\"path\":\"reduced_kabir\"}],\"table\":{\"path\":\"letters\",\"columns\":[{\"label\":\"Letter\",\"path\":\"letter\"},{\"label\":\"Kabir\",\"path\":\"kabir\"}]},\"text\":\"name_meaning\",\"disclaimer\":\"Historical and cultural reference based on classical Islamic numerology (Ilm, ul, Adad \\\/ Abjad). For educational interest only, not a religious ruling.\",\"method\":\"Each Arabic letter is assigned its classical Abjad value; the calculator sums those values and derives the reduced number, dominant element and ruling planet using traditional Ilm, ul, Adad rules.\"} || {};\n  var required = [\"text\"];\n  var border2  = \"rgba(201,168,76,0.08)\";\n  var border   = \"rgba(201,168,76,0.25)\";\n  var cardBg   = \"#0D1221\";\n  var muted    = \"#7a8fa6\";\n  var toolTitle = \"Abjad Kabir Calculator\";\n\n  function show(el, v){ el.style.display = v ? '' : 'none'; }\n\n  \/\/ Place of birth autocomplete (city -> lat\/lon\/timezone via Open-Meteo, keyless).\n  function nmqEscPlace(s){ return String(s).replace(\/[&<>\"]\/g, function(c){ return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c]; }); }\n  w.querySelectorAll('.nmq-place').forEach(function(pw){\n    var input = pw.querySelector('.nmq-place-input');\n    var box   = pw.querySelector('.nmq-place-results');\n    if (!input || !box) return;\n    var latN = pw.dataset.lat, lonN = pw.dataset.lon, tzN = pw.dataset.tz;\n    function fld(n){ return n ? w.querySelector('[data-field=\"' + n + '\"]') : null; }\n    function wrapOf(n){ var el = fld(n); return el ? el.parentElement : null; }\n    [latN, lonN].forEach(function(n){ var wr = wrapOf(n); if (wr) wr.style.display = 'none'; });\n    var manual = pw.querySelector('.nmq-place-manual'), shown = false;\n    if (manual) manual.addEventListener('click', function(){\n      shown = !shown;\n      [latN, lonN].forEach(function(n){ var wr = wrapOf(n); if (wr) wr.style.display = shown ? '' : 'none'; });\n      manual.textContent = shown ? 'Use city search instead' : 'Enter coordinates manually';\n    });\n    var timer = null, items = [], active = -1;\n    function close(){ box.style.display = 'none'; box.innerHTML = ''; active = -1; }\n    function render(){\n      if (!items.length) { close(); return; }\n      box.innerHTML = items.map(function(r, i){ return '<div class=\"nmq-place-opt' + (i === active ? ' nmq-active' : '') + '\" data-i=\"' + i + '\">' + nmqEscPlace(r.label) + '<\/div>'; }).join('');\n      box.style.display = 'block';\n    }\n    function pick(r){ var la = fld(latN), lo = fld(lonN), tz = fld(tzN); if (la) la.value = r.lat; if (lo) lo.value = r.lon; if (tz && r.timezone) tz.value = r.timezone; input.value = r.label; close(); }\n    input.addEventListener('input', function(){\n      var q = input.value.trim(); clearTimeout(timer);\n      if (q.length < 2) { close(); return; }\n      timer = setTimeout(function(){\n        fetch('https:\/\/geocoding-api.open-meteo.com\/v1\/search?name=' + encodeURIComponent(q) + '&count=8&language=en&format=json')\n          .then(function(r){ return r.json(); })\n          .then(function(d){ items = ((d && d.results) || []).map(function(x){ var p = [x.name, x.admin1, x.country].filter(Boolean); return { label: p.join(', '), lat: Math.round(x.latitude * 1e4) \/ 1e4, lon: Math.round(x.longitude * 1e4) \/ 1e4, timezone: x.timezone || '' }; }); active = -1; render(); })\n          .catch(function(){ close(); });\n      }, 250);\n    });\n    box.addEventListener('mousedown', function(e){ var o = e.target.closest('.nmq-place-opt'); if (!o) return; e.preventDefault(); var i = +o.dataset.i; if (items[i]) pick(items[i]); });\n    input.addEventListener('keydown', function(e){\n      if (box.style.display === 'none') return;\n      if (e.key === 'ArrowDown') { active = Math.min(active + 1, items.length - 1); render(); e.preventDefault(); }\n      else if (e.key === 'ArrowUp') { active = Math.max(active - 1, 0); render(); e.preventDefault(); }\n      else if (e.key === 'Enter') { if (active >= 0 && items[active]) { pick(items[active]); e.preventDefault(); } }\n      else if (e.key === 'Escape') { close(); }\n    });\n    input.addEventListener('blur', function(){ setTimeout(close, 150); });\n  });\n\n  function getPath(obj, path) {\n    return String(path).split('.').reduce(function(o, k){ return (o === null || o === undefined) ? undefined : o[k]; }, obj);\n  }\n\n  function calc(){\n    var body = { type: \"abjad_kabir\" };\n    var params = null;\n    var missing = false;\n    var badScript = false;\n\n    fields.forEach(function(f){\n      var name = f.dataset.field;\n      var val  = f.value.trim();\n      if (!val && required.indexOf(name) !== -1) missing = true;\n      if (val && (f.dataset.rtl === '1' || f.dataset.script === '1') && \/[A-Za-z]\/.test(val)) badScript = true;\n      if (!val) return;\n      if (name.indexOf('params.') === 0) {\n        params = params || {};\n        params[name.slice('params.'.length)] = val;\n      } else {\n        body[name] = val;\n      }\n    });\n    if (params) body.params = JSON.stringify(params);\n\n    if (missing) {\n      show(err, true); err.textContent = \"Please fill in the required fields.\";\n      return;\n    }\n\n    if (badScript) {\n      show(err, true);\n      err.textContent = \"Please enter the text in the script shown above the field. Latin (English) letters are not accepted here.\";\n      return;\n    }\n\n    btn.disabled = true; btn.style.opacity = '.55'; btn.textContent = load;\n    show(err, false); show(res, false);\n\n    fetch(\"https:\\\/\\\/demo3.numroq.com\\\/index.php?rest_route=\\\/numroq\\\/v1\\\/calculate\", {\n      method: 'POST',\n      headers: { 'Content-Type':'application\/json', 'X-WP-Nonce': \"6f175401c6\" },\n      body: JSON.stringify(body)\n    })\n    .then(function(r){ return r.json().then(function(d){ return { ok:r.ok, s:r.status, d:d }; }); })\n    .then(function(x){\n      if(!x.ok){\n        show(err,true);\n        err.textContent = (x.d && (x.d.detail || x.d.message)) || ('Error '+x.s);\n        return;\n      }\n      var r = x.d.result;\n\n      if (visualEl && window.nmqRenderVisual) {\n        var vhtml = '';\n        try { vhtml = window.nmqRenderVisual(\"abjad_kabir\", r); } catch (e) { vhtml = ''; }\n        visualEl.innerHTML = vhtml;\n        show(visualEl, !!vhtml);\n      }\n\n      summary.innerHTML = (display.summary || []).map(function(s){\n        var v = getPath(r, s.path);\n        if (v === undefined || v === null) v = '-';\n        return '<div style=\"background:'+cardBg+';border:1px solid '+border+';border-radius:6px;padding:14px 12px;text-align:center\">'+\n                 '<div style=\"font-size:17px;font-weight:300;color:#C9A84C;margin-bottom:4px;line-height:1.3;overflow-wrap:break-word;word-break:normal;hyphens:none\">'+v+'<\/div>'+\n                 '<div style=\"font-size:10px;color:'+muted+';letter-spacing:1.5px;text-transform:uppercase\">'+s.label+'<\/div>'+\n               '<\/div>';\n      }).join('');\n\n      if (display.table && Array.isArray(display.table.columns)) {\n        var rows = getPath(r, display.table.path);\n        if (!Array.isArray(rows)) rows = [];   \/\/ never call .map on a non-array (would crash the result)\n        thead.innerHTML = display.table.columns.map(function(c){\n          return '<th style=\"padding:9px 12px;border-bottom:1px solid '+border+';color:'+muted+';font-size:10px;letter-spacing:1.5px;text-transform:uppercase;text-align:center;font-weight:500\">'+c.label+'<\/th>';\n        }).join('');\n        tbody.innerHTML = rows.map(function(row){\n          return '<tr>' + display.table.columns.map(function(c){\n            var v = getPath(row, c.path);\n            return '<td style=\"padding:8px 12px;border-bottom:1px solid '+border2+';text-align:center\">'+ (v === undefined || v === null ? '' : v) +'<\/td>';\n          }).join('') + '<\/tr>';\n        }).join('');\n        show(tableWrap, rows.length > 0);\n      } else {\n        show(tableWrap, false);\n      }\n\n      if (display.text) {\n        var txt = getPath(r, display.text);\n        textEl.textContent = txt || '';\n        show(textEl, !!txt);\n      } else {\n        show(textEl, false);\n      }\n\n      show(res, true);\n      show(printBtn, true);\n    })\n    .catch(function(){ show(err,true); err.textContent = \"Network error. Please try again.\"; })\n    .finally(function(){ btn.disabled = false; btn.style.opacity = '1'; btn.textContent = orig; });\n  }\n\n  btn.addEventListener('click', calc);\n\n  printBtn.addEventListener('click', function(){\n    var overlay = document.createElement('div');\n    overlay.className = 'numroq-print-overlay';\n    overlay.innerHTML = '<div style=\"font-size:13px;letter-spacing:1.5px;text-transform:uppercase;color:#C9A84C;font-weight:700;margin-bottom:14px\">' + toolTitle + '<\/div>' + res.innerHTML;\n    document.body.appendChild(overlay);\n    document.body.classList.add('numroq-printing');\n    window.print();\n    var cleanup = function(){\n      document.body.classList.remove('numroq-printing');\n      if (overlay.parentNode) overlay.parentNode.removeChild(overlay);\n      window.removeEventListener('afterprint', cleanup);\n    };\n    window.addEventListener('afterprint', cleanup);\n    setTimeout(cleanup, 2000);\n  });\n})();\n<\/script>\n    \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-7","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/demo3.numroq.com\/index.php?rest_route=\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demo3.numroq.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/demo3.numroq.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/demo3.numroq.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demo3.numroq.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7"}],"version-history":[{"count":1,"href":"https:\/\/demo3.numroq.com\/index.php?rest_route=\/wp\/v2\/pages\/7\/revisions"}],"predecessor-version":[{"id":9,"href":"https:\/\/demo3.numroq.com\/index.php?rest_route=\/wp\/v2\/pages\/7\/revisions\/9"}],"wp:attachment":[{"href":"https:\/\/demo3.numroq.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}