diff --git a/dist/main.min.js b/dist/main.min.js index 2c5e8aa..afe1a38 100644 --- a/dist/main.min.js +++ b/dist/main.min.js @@ -1 +1 @@ -(()=>{CanvasRenderingContext2D.prototype.roundRect||(CanvasRenderingContext2D.prototype.roundRect=function(i,t,e,r,n){n=Math.min(n,e/2,r/2),this.beginPath(),this.moveTo(i+n,t),this.arcTo(i+e,t,i+e,t+r,n),this.arcTo(i+e,t+r,i,t+r,n),this.arcTo(i,t+r,i,t,n),this.arcTo(i,t,i+e,t,n),this.closePath()});var a=null,Da={},Oa={},Pa=null,Et=-1,Ma=null,Nt=-1,ka=null,Dt=-1,aa=null,Ot=-1,Ce=null,ma=null,ya=null,Ca=null;function Ie(i,t){let e=document.createElement("canvas");e.width=i,e.height=t;let r=e.getContext("2d"),n=i/2,o=t/2,h=Math.hypot(i,t)/2;r.strokeStyle="rgba(255, 215, 0, 0.05)",r.lineWidth=1;for(let g=70;g{r.beginPath(),r.moveTo(g,m+c*H),r.lineTo(g,m),r.lineTo(g+c*C,m),r.stroke()}),e}function Ge(i,t){let e=i+"_"+t;if(Da[e])return Da[e];let o=20*t/2*1.2,c=Math.ceil(o*2+4*2),l=document.createElement("canvas");l.width=c,l.height=c;let p=l.getContext("2d"),g=c/2,m=c/2,C=i==="shuvha",H=C?"#efffb0":"#ffbbbb",O=C?"#32ff80":"#ff2244",E=C?"#004422":"#660011",L=C?"rgba(50, 255, 128, 0.85)":"rgba(255, 34, 68, 0.85)",F=C?"\u{1F33F}":"\u{1F940}",R=p.createRadialGradient(g,m-o*.3,0,g,m,o);return R.addColorStop(0,H),R.addColorStop(.4,O),R.addColorStop(1,E),p.fillStyle=R,p.beginPath(),p.arc(g,m,o,0,Math.PI*2),p.fill(),p.strokeStyle=L,p.lineWidth=1.5,p.stroke(),p.fillStyle="#ffffff",p.font=Math.max(14,18*t)+"px 'Orbitron', sans-serif",p.textAlign="center",p.textBaseline="middle",p.fillText(F,g,m),Da[e]={canvas:l,size:c},Da[e]}function Lt(i,t){let e=Math.round(t/2)*2,r=i+"_"+e;if(Oa[r])return Oa[r];let o=e+6*2,h=document.createElement("canvas");h.width=o,h.height=o;let c=h.getContext("2d");return c.fillStyle="#ffffff",c.font=e+"px 'Noto Sans Devanagari',sans-serif",c.textAlign="center",c.textBaseline="middle",c.fillText(i,o/2,o/2),Oa[r]={canvas:h,sz:o},Oa[r]}function tt(i,t,e){e.active&&(a.save(),a.beginPath(),a.arc(i,t,e.radius,0,Math.PI*2),a.lineWidth=3+e.radius*e.lineWidthMul,a.strokeStyle=e.strokeColor,a.shadowBlur=e.shadowBlur,a.shadowColor=e.glowColor,a.stroke(),a.fillStyle=e.fillColor,a.fill(),a.shadowBlur=0,a.shadowColor="transparent",a.restore())}function et(i,t,e,r,n,o,h,c,l=130,p=4){let g=16*e,m=(Math.sin(c/l)+1)/2;a.save();let C=a.createRadialGradient(i,t,0,i,t,g+8+m*p);C.addColorStop(0,"rgba(255,255,255,0.95)"),C.addColorStop(.5,`rgba(${n},${o})`),C.addColorStop(1,`rgba(${n},0)`),a.fillStyle=C,a.beginPath(),a.arc(i,t,g+10,0,Math.PI*2),a.fill(),a.font=16*e+"px sans-serif",a.textAlign="center",a.textBaseline="middle",a.shadowBlur=10,a.shadowColor=h,a.fillStyle="#ffffff",a.fillText(r,i,t),a.shadowBlur=0,a.shadowColor="transparent",a.restore()}function Be(i,t,e,r,n){let o=(e-1)*r,h=i-o/2;for(let c=0;c0){let s=(Math.random()-.5)*5;a.translate(s,-s)}a.fillStyle="#000000",a.fillRect(0,0,t,e),l<100&&!p&&(a.fillStyle="rgba(255, 0, 0, "+(1-l/100)*.35+")",a.fillRect(0,0,t,e)),a.save();let ue=mt/360,sa=(Math.sin(ue*Math.PI*2-Math.PI/2)+1)/2;a.globalCompositeOperation="screen";let bt=Math.round(sa*24);(bt!==Dt||!ka)&&(Dt=bt,ka=a.createRadialGradient(t/2,e/2,120+sa*180,t/2,e/2,t*.8),ka.addColorStop(0,"rgba(139, 92, 246, 0)"),ka.addColorStop(1,"rgba(139, 92, 246, "+(.12+sa*.38)+")")),a.fillStyle=ka,a.fillRect(0,0,t,e),a.restore(),a.save();let z=l<100?1-l/100:0,St=Math.round(z*24);(St!==Ot||!aa)&&(Ot=St,aa=a.createLinearGradient(r,0,r+n,0),aa.addColorStop(0,"rgba(255, 0, 200, "+(.02+z*.15)+")"),aa.addColorStop(0,"rgba(255, 200, 60, "+(.05+z*.16)+")"),aa.addColorStop(.5,"rgba(0, 240, 255, "+(.12+z*.45)+")"),aa.addColorStop(0,"rgba(255, 200, 60, "+(.05+z*.16)+")"),aa.addColorStop(1,"rgba(255, 0, 200, "+(.02+z*.15)+")")),a.fillStyle=aa,a.fillRect(r,0,n,e),a.save(),a.shadowBlur=8,a.shadowColor="#00f0ff",a.fillStyle="rgba(120, 245, 255, 0.65)",a.beginPath(),m.forEach(s=>{Math.floor(s.x+s.y)%2===0&&(a.moveTo(s.x+s.size,s.y),a.arc(s.x,s.y,s.size,0,Math.PI*2))}),a.fill(),a.beginPath(),m.forEach(s=>{Math.floor(s.x+s.y)%2!==0&&a.rect(s.x,s.y,s.size*1.5,s.size*1.5)}),a.fill(),a.restore(),a.shadowBlur=22+z*25,a.shadowColor="#ff00c8",a.strokeStyle="rgba(255, 0, 200, "+(.35+z*.35)+")",a.lineWidth=4,a.beginPath(),a.moveTo(r,0),a.lineTo(r,e),a.moveTo(r+n,0),a.lineTo(r+n,e),a.stroke(),a.shadowBlur=12+z*20,a.shadowColor="#00f0ff",a.strokeStyle="rgba(0, 240, 255, "+(.7+z*.3)+")",a.lineWidth=1.5,a.beginPath(),a.moveTo(r,0),a.lineTo(r,e),a.moveTo(r+n,0),a.lineTo(r+n,e),a.stroke();let ce=h*.15%e;a.fillStyle="rgba(0, 240, 255, "+(.2+z*.35)+")",a.shadowBlur=14,a.shadowColor="#ff00c8",a.fillRect(r,ce,n,3),a.shadowBlur=0,a.restore(),a.fillStyle="rgba(255, 255, 255, 0.25)",a.beginPath(),g.forEach(s=>{a.moveTo(s.x+s.size,s.y),a.arc(s.x,s.y,s.size,0,Math.PI*2)}),a.fill(),C.forEach(s=>{s.active&&(a.fillStyle=s.color,a.globalAlpha=s.alpha,a.beginPath(),a.arc(s.x,s.y,s.radius,0,Math.PI*2),a.fill())}),a.globalAlpha=1,H.forEach(s=>{s.active&&(a.save(),a.globalAlpha=Math.max(0,s.alpha),a.beginPath(),a.arc(s.x,s.y,s.radius,0,Math.PI*2),a.strokeStyle=s.color,a.lineWidth=2,a.shadowBlur=10,a.shadowColor=s.color,a.stroke(),a.restore())}),a.globalAlpha=1,p&&(a.strokeStyle="rgba(255, 255, 255, 0.2)",a.lineWidth=1,a.beginPath(),a.moveTo(0,O.y-10),a.lineTo(t,O.y-10),a.stroke());let fe=E/60,T=O.x+E/2,k=O.y+E/2;tt(T,k,L.jyoti),tt(T,k,L.shankha),tt(T,k,L.kripa);let pe=1+sa*.28,me=44,xa=0;if(F>0){let s=B[xa++];s.active=!0,s.color="#32ff32",s.strength=Math.min(1,F/5),s.isHeavy=!1}if(R>0){let s=B[xa++];s.active=!0,s.color="#ff3232",s.strength=Math.min(1,R/5),s.isHeavy=!1}if(ea>0){let s=B[xa++];s.active=!0,s.color="#8b0000",s.strength=Math.min(1,ea/10),s.isHeavy=!0}for(let s=xa;s{let b=B[u];Re(s,y,b.color,b.strength,b.isHeavy,h)});let ua=E*pe,ye=8+sa*28,wt=.4+sa*.6;if(Va>0||Ja>0){if(a.save(),Va>0){let s=Va/40;a.shadowBlur=18,a.shadowColor="rgba(255, 255, 255, "+s+")",a.fillStyle="rgba(255, 255, 255, "+s+")",a.beginPath(),a.arc(T,k,ua/2+12,0,Math.PI*2),a.fill()}Ja>0&&(a.globalAlpha=Ja/40,a.shadowBlur=18,a.shadowColor=gt,a.fillStyle=gt,a.beginPath(),a.arc(T,k,ua/2+12,0,Math.PI*2),a.fill()),a.restore()}a.save(),a.shadowBlur=ye,a.shadowColor=`rgba(255,255,255,${wt})`,a.strokeStyle=`rgba(255,255,255,${wt})`,a.lineWidth=(.5+sa*1.2)*(E/60),a.beginPath(),a.arc(T,k,ua/2,0,Math.PI*2),a.stroke(),a.restore();let ra=ua/2-7,ca=k,vt=Math.round(ra);if(vt!==Et||!Pa){Et=vt;let s=document.createElement("canvas"),y=Math.ceil(ra*2)+4;s.width=y,s.height=y;let u=s.getContext("2d"),b=y/2,v=y/2,A=u.createRadialGradient(b,v,0,b,v,ra);A.addColorStop(0,"rgba(255, 160, 60, 0.32)"),A.addColorStop(.5,"rgba(255, 210, 110, 0.18)"),A.addColorStop(1,"rgba(255, 190, 80, 0.05)"),u.fillStyle=A,u.beginPath(),u.arc(b,v,ra,0,Math.PI*2),u.fill(),Pa={canvas:s,sz:y}}a.save(),a.shadowBlur=12,a.shadowColor="rgba(255, 160, 60, 0.55)",a.drawImage(Pa.canvas,T-Pa.sz/2,ca-Pa.sz/2),a.shadowBlur=22,a.shadowColor="rgba(255, 170, 50, 0.88)",a.strokeStyle="rgba(255, 200, 60, 0.65)",a.lineWidth=1.5,a.beginPath(),a.arc(T,ca,ra,0,Math.PI*2),a.stroke(),a.restore();let Tt=ra;Ut(T,ca,Tt,3,-Math.PI/2,"rgba(255, 200, 60, 0.85)",2.2,"rgba(255, 180, 40, 0.9)",14),Ut(T,ca,Tt,3,Math.PI/2,"rgba(255, 200, 60, 0.85)",2.2,"rgba(255, 180, 40, 0.9)",14);let xt=k,Ba=6*fe,At=Math.round(Ba*10);if(At!==Nt||!Ma){Nt=At;let s=document.createElement("canvas"),y=Math.ceil(Ba*2)+4;s.width=y,s.height=y;let u=s.getContext("2d"),b=y/2,v=y/2,A=u.createRadialGradient(b,v,0,b,v,Ba);A.addColorStop(0,"rgba(255, 255, 255, 1)"),A.addColorStop(.1,"rgba(255, 255, 255, 0.92)"),A.addColorStop(.3,"rgba(220, 200, 255, 0.42)"),A.addColorStop(1,"rgba(0, 0, 0, 0)"),u.fillStyle=A,u.beginPath(),u.arc(b,v,Ba,0,Math.PI*2),u.fill(),Ma={canvas:s,sz:y}}a.save(),a.drawImage(Ma.canvas,T-Ma.sz/2,xt-Ma.sz/2),a.fillStyle="#ffffff",a.shadowColor="#ffffff",a.shadowBlur=8,a.beginPath(),a.arc(T,xt,.7,0,Math.PI*2),a.fill(),a.restore(),a.save(),a.fillStyle="#ffffff",a.shadowColor="#ffffff",a.shadowBlur=3;let $a=6,Pt=10,ge=T-($a-1)*Pt/2;for(let s=0;s<$a;s++){let y,u;s===W?(y=Q,u=Ga):(y=ge+s*Pt,u=k-ua/2-45+(wa||ia?0:Math.sin(h/70+s)*3)),q[s].x=y,q[s].y=u,a.beginPath(),a.arc(y,u,2.2,0,Math.PI*2),a.fill()}for(let s=0;s<$a;s++){let y=q[s].x,u=q[s].y;if(_t>0){let b=R/_t,v=a.createLinearGradient(y,u,T,ca);if(b===0)a.strokeStyle="rgba(50, 255, 50, 0.65)";else if(b===1)a.strokeStyle="rgba(255, 50, 50, 0.65)";else{let A=1-b;v.addColorStop(0,"rgba(50, 255, 50, 0.65)"),v.addColorStop(A,"rgba(50, 255, 50, 0.65)"),v.addColorStop(A,"rgba(255, 50, 50, 0.65)"),v.addColorStop(1,"rgba(255, 50, 50, 0.65)"),a.strokeStyle=v}}else a.strokeStyle=s===W?"rgba(255, 255, 255, 0.85)":"rgba(255, 255, 255, 0.4)";a.lineWidth=s===W?1.6:1.1,a.beginPath(),a.moveTo(y,u),a.lineTo(T,ca-ra),a.stroke()}a.restore(),ie.forEach(s=>{if(!s.active)return;let u=s.x>=r&&s.x+s.width<=r+n?.5:1,b=s.width*u,v=s.height*u,A=s.x+(s.width-b)/2,K=s.y+(s.height-v)/2;if(s.isPulling&&W!==-1&&(a.save(),a.beginPath(),a.moveTo(A+b/2,K+v),a.lineTo(Q,Ga),a.strokeStyle=s.type==="shuvha"?"rgba(50, 255, 50, 0.3)":"rgba(255, 50, 50, 0.3)",a.stroke(),a.restore()),s.type==="shuvha"||s.type==="ashuvha"){if(s.type==="ashuvha"&&R>=3){let oa=s.x+s.width/2,Aa=s.y+s.height/2,Na=Math.hypot(oa-T,Aa-k);if(!(L.jyoti.active&&Na<=L.jyoti.radius)){a.textAlign="left";return}}let I=A+b/2,G=K+v/2,M=Ge(s.type,u);a.drawImage(M.canvas,I-M.size/2,G-M.size/2);let pa=s.type==="shuvha",na=(Math.sin(h/140)+1)/2,at=M.size/2*.92;a.save(),a.beginPath(),a.arc(I,G,at+na*2,0,Math.PI*2),a.strokeStyle=pa?"rgba(50,255,50,0.45)":"rgba(255,50,50,0.45)",a.lineWidth=1.2,a.shadowBlur=4,a.shadowColor=pa?"#32ff32":"#ff3232",a.stroke(),a.restore()}else if(s.type==="naama"){let I=18*u,G=s.x+s.width/2,M=s.y+s.height/2,pa=(Math.sin(h/150)+1)/2;a.save();let na=a.createRadialGradient(G,M,0,G,M,I+pa*4);na.addColorStop(0,"#ffffff"),na.addColorStop(.5,"rgba(255, 255, 255, 0.9)"),na.addColorStop(1,"rgba(255, 255, 255, 0)"),a.fillStyle=na,a.beginPath(),a.arc(G,M,I+6,0,Math.PI*2),a.fill(),a.fillStyle="#ffffff",a.beginPath(),a.arc(G,M,I*.6,0,Math.PI*2),a.fill(),a.restore(),a.save(),a.font=16*u+"px 'Noto Sans Devanagari', sans-serif",a.textAlign="center",a.textBaseline="middle",a.shadowBlur=10,a.shadowColor="#ffffff",a.fillStyle="#1a1a2e",a.fillText("\u0950",G,M),a.restore()}else if(s.type==="kripa")et(s.x+s.width/2,s.y+s.height/2,u,"\u270B","255,215,0",.55,"#ffd700",h,130,5);else if(s.type==="chakravaata"){let I=s.x+s.width/2,G=s.y+s.height/2;a.save(),a.translate(I,G),a.rotate(h/120%(Math.PI*2));let M=a.createRadialGradient(0,0,0,0,0,22*u);M.addColorStop(0,"rgba(200,200,210,0.9)"),M.addColorStop(.6,"rgba(120,120,140,0.5)"),M.addColorStop(1,"rgba(120,120,140,0)"),a.fillStyle=M,a.beginPath(),a.arc(0,0,20*u,0,Math.PI*2),a.fill(),a.rotate(-(h/120)%(Math.PI*2)),a.font=18*u+"px sans-serif",a.textAlign="center",a.textBaseline="middle",a.shadowBlur=10,a.shadowColor="#aaaaaa",a.fillStyle="#ffffff",a.fillText("\u{1F32A}\uFE0F",0,0),a.restore()}else s.type==="shankha"?et(s.x+s.width/2,s.y+s.height/2,u,"\u{1F41A}","125,211,252",.55,"#7dd3fc",h,140,3):s.type==="jyoti"&&et(s.x+s.width/2,s.y+s.height/2,u,"\u{1FA94}","255,165,0",.6,"#ffa500",h,120,3);a.textAlign="left"});{let s=se&&!ia,y=za>0&&ea>0&&!ia,u=52,b=O.y-E*.5-48,v=96,A=48,K=10;if(s){let I=y?T-u:T,G=Math.ceil(re/60),M=(Math.sin(h/150)+1)/2;a.save(),a.beginPath(),a.roundRect(I-v/2,b-A/2,v,A,K),a.fillStyle="rgba(0, 30, 0, 0.72)",a.fill(),a.strokeStyle="rgba(50, 255, 50, 0.35)",a.lineWidth=1,a.stroke(),a.textAlign="center",a.textBaseline="middle",a.font="700 9px 'Orbitron', sans-serif",a.fillStyle="rgba(180, 255, 180, 0.85)",a.shadowBlur=0,a.fillText("\u092A\u0941\u0923\u094D\u092F +"+ne,I,b-13),a.font="900 "+(20+M*3)+"px 'Orbitron', sans-serif",a.fillStyle="#ffffff",a.shadowBlur=12+M*10,a.shadowColor="#00ff00",a.fillText(G+"s",I,b+10),a.lineWidth=1.2,a.strokeStyle="rgba(50,255,50,"+(.7+M*.3)+")",a.strokeText(G+"s",I,b+10),a.restore()}if(y){let I=s?T+u:T,G=Math.ceil(za/60),M=(Math.sin(h/150)+1)/2;a.save(),a.beginPath(),a.roundRect(I-v/2,b-A/2,v,A,K),a.fillStyle="rgba(20, 0, 40, 0.72)",a.fill(),a.strokeStyle="rgba(167, 139, 250, 0.35)",a.lineWidth=1,a.stroke(),a.textAlign="center",a.textBaseline="middle",a.font="700 9px 'Orbitron', sans-serif",a.fillStyle="rgba(200, 180, 255, 0.85)",a.shadowBlur=0,a.fillText("\u092A\u094D\u0930\u093E\u0930\u092C\u094D\u0927 "+ea+" \u0936\u0947\u0937",I,b-13),a.font="900 "+(20+M*3)+"px 'Orbitron', sans-serif",a.fillStyle="#ffffff",a.shadowBlur=12+M*10,a.shadowColor="#a78bfa",a.fillText(G+"s",I,b+10),a.lineWidth=1.2,a.strokeStyle="rgba(167,139,250,"+(.7+M*.3)+")",a.strokeText(G+"s",I,b+10),a.restore()}}if(l<100&&l>0&&!p&&!ia){a.save();let s=Math.ceil(l),y=(Math.sin(h/150)+1)/2;a.textAlign="center",a.textBaseline="middle";let u=k-E/2-55;a.font="800 13px 'Orbitron', sans-serif",a.shadowBlur=10,a.shadowColor="#ff3232",a.fillStyle="rgba(255, 200, 200, 0.9)",a.fillText("\u0905\u0902\u0924\u093F\u092E \u091A\u0930\u0923",T,u-24),a.font="900 "+(26+y*3)+"px 'Orbitron', sans-serif",a.fillStyle="#ffffff",a.shadowBlur=20+y*35,a.shadowColor="#ff0000",a.fillText(s+"s",T,u),a.lineWidth=1.5,a.strokeStyle="rgba(255, 50, 50, "+(.8+y*.2)+")",a.strokeText(s+"s",T,u),a.restore()}a.save(),a.textAlign="center",a.textBaseline="middle";let Ya=8,Xa=t-Ya*2;if(oe.forEach(s=>{if(!s.active)return;a.fillStyle=s.color,a.globalAlpha=s.alpha;let y=s.isBigName?100:16;a.font=`900 ${y}px 'Orbitron', sans-serif`;let u=y;s._cachedTextWidth===void 0&&(s._cachedTextWidth=a.measureText(s.text).width);let b=s._cachedTextWidth;if(b>Xa){let M=y*(Xa/b);a.font=`900 ${M.toFixed(1)}px 'Orbitron', sans-serif`,b=Xa,u=M}let v=Math.max(12,u*.25),A=Math.max(b,u*.85)/2+v,K=A+Ya,I=t-A-Ya,G=K>I?t/2:Math.min(I,Math.max(K,s.x));a.save(),a.globalAlpha=s.alpha,a.beginPath(),a.arc(G,s.y,A,0,Math.PI*2),a.fillStyle="rgba(8, 8, 14, 0.40)",a.fill(),a.lineWidth=1.4,a.strokeStyle=s.color,a.shadowBlur=6,a.shadowColor=s.color,a.stroke(),a.restore(),a.lineWidth=Math.max(2,u*.07),a.strokeStyle="rgba(0, 0, 0, 0.9)",a.shadowBlur=0,a.globalAlpha=s.alpha,a.strokeText(s.text,G,s.y),a.shadowBlur=10,a.shadowColor=s.color,a.fillStyle=s.color,a.fillText(s.text,G,s.y)}),a.restore(),Ta>0){a.save();let s=1;Ta>100?s=(120-Ta)/20:Ta<50&&(s=Ta/50),s=Math.max(0,Math.min(1,s));let y=340,u=56,b=t/2-y/2,v=e/2-u/2;a.globalAlpha=s*.88,a.fillStyle="rgba(4, 4, 16, 0.82)",a.beginPath(),a.roundRect(b,v,y,u,14),a.fill(),a.strokeStyle="rgba(255, 255, 255, 0.12)",a.lineWidth=1,a.stroke(),a.globalAlpha=s,a.textAlign="center",a.textBaseline="middle",a.font="700 18px 'Orbitron', sans-serif",a.shadowBlur=18,a.shadowColor="#ffffff",a.fillStyle="#ffffff",a.fillText(le,t/2,e/2,y-24),a.restore()}let Y=ua/2+5,Z=Y+12;a.save(),a.beginPath(),a.arc(T,k,Y,0,Math.PI*2),a.lineWidth=4,a.strokeStyle="rgba(88, 28, 220, 0.15)",a.shadowBlur=28,a.shadowColor="rgba(100, 40, 255, 0.70)",a.globalAlpha=.55,a.stroke(),a.beginPath(),a.arc(T,k,Z,0,Math.PI*2),a.lineWidth=7,a.strokeStyle="rgba(100, 40, 255, 0.18)",a.shadowBlur=45,a.shadowColor="rgba(120, 60, 255, 0.90)",a.globalAlpha=.75,a.stroke(),a.restore();let _e=Math.pow(.7,R),be=Math.pow(.8,F),Ra=_e*be;if(a.save(),a.lineWidth=1,a.lineCap="round",a.beginPath(),a.arc(T,k,Y,0,Math.PI*2),a.strokeStyle="rgba(255, 200, 60, 0.22)",a.stroke(),a.beginPath(),a.arc(T,k,Y,-Math.PI/2,-Math.PI/2+Math.PI*2*Ra),a.lineWidth=1,a.strokeStyle="rgba(255, 200, 60, 0.5)",a.shadowBlur=18,a.shadowColor="#ffc83c",a.globalAlpha=.7+Math.sin(h/200)*.2,a.stroke(),a.beginPath(),a.arc(T,k,Y,-Math.PI/2,-Math.PI/2+Math.PI*2*Ra),a.lineWidth=1,a.strokeStyle="rgba(255, 245, 210, 1)",a.shadowBlur=10,a.shadowColor="#ffffff",a.globalAlpha=.9+Math.sin(h/200)*.1,a.stroke(),Ra>0){let s=-Math.PI/2+Math.PI*2*Ra,y=T+Math.cos(s)*Y,u=k+Math.sin(s)*Y;a.save(),a.shadowBlur=14,a.shadowColor="#ffc83c",a.font="10px sans-serif",a.textAlign="center",a.textBaseline="middle",a.fillText("\u26A1",y,u),a.restore()}a.restore();let Se=Math.max(0,l/o);a.save(),a.lineWidth=3,a.lineCap="round",a.beginPath(),a.arc(T,k,Z,0,Math.PI*2),a.strokeStyle="rgba(255, 200, 60, 0.22)",a.stroke();let Ea=Math.pow(Se,.5),we=l<100?"255, 0, 90":"255, 200, 60",qa=l<100?"#ff005a":"#ffc83c";if(a.beginPath(),a.arc(T,k,Z,-Math.PI/2,-Math.PI/2+Math.PI*2*Ea),a.lineWidth=l<100?6:5,a.strokeStyle="rgba("+we+", 0.5)",a.shadowBlur=l<100?28:18,a.shadowColor=qa,a.globalAlpha=.7+Math.sin(h/150)*.2,a.stroke(),a.beginPath(),a.arc(T,k,Z,-Math.PI/2,-Math.PI/2+Math.PI*2*Ea),a.lineWidth=2.5,a.strokeStyle="rgba(255, 255, 255, 1)",a.shadowBlur=l<100?16:10,a.shadowColor=qa,a.globalAlpha=.9+Math.sin(h/150)*.1,a.stroke(),Ea>0){let s=-Math.PI/2+Math.PI*2*Ea,y=T+Math.cos(s)*Z,u=k+Math.sin(s)*Z;a.save(),a.shadowBlur=l<100?20:14,a.shadowColor=qa,a.font="10px sans-serif",a.textAlign="center",a.textBaseline="middle",a.fillText("\u23F3",y,u),a.restore()}a.restore();let Mt=10,U=Z+3,fa=22,Qa=45,Za=8,ve=h/4500,Te=mt/360,kt=Math.sin(Te*Math.PI),Ct=10-yt;for(let s=0;s0,v=b?fa*(1+kt*.5):fa,A=b?Qa*(1+kt*.4):u?Qa*.7:Qa;a.save(),a.translate(T,k),a.rotate(y);let K;ma||(ma=a.createLinearGradient(U,0,U+fa,0),ma.addColorStop(0,"rgba(140, 120, 90, 0.55)"),ma.addColorStop(.55,"rgba(120, 100, 72, 0.50)"),ma.addColorStop(1,"rgba(100, 90, 70, 0.45)"),ya=a.createLinearGradient(U,0,U+fa,0),ya.addColorStop(0,"rgba(255, 140, 60, 1.00)"),ya.addColorStop(.3,"rgba(255, 240, 180, 1.00)"),ya.addColorStop(.7,"rgba(255, 200, 60, 0.95)"),ya.addColorStop(1,"rgba(255, 160, 20, 0.90)"),Ca=a.createLinearGradient(U,0,U+fa,0),Ca.addColorStop(0,"rgba(255, 236, 139, 0.85)"),Ca.addColorStop(.55,"rgba(255, 170, 40, 0.85)"),Ca.addColorStop(1,"rgba(255, 179, 60, 0.85)")),K=b?ya:u?ma:Ca,a.beginPath(),a.moveTo(U,-Za),a.quadraticCurveTo(U+v*.4,-A/2,U+v,0),a.quadraticCurveTo(U+v*.4,A/2,U,Za),a.closePath(),a.shadowBlur=b?22:u?0:12,a.shadowColor=b?"rgba(255, 220, 80, 1.0)":"rgba(255, 180, 50, 0.85)",a.globalAlpha=u?.7:1,a.fillStyle=K,a.fill(),a.shadowBlur=0,a.strokeStyle=u?"rgba(100, 100, 100, 0.3)":"rgba(255, 223, 120, 0.55)",a.lineWidth=1,a.stroke(),u||(a.strokeStyle="rgba(200, 110, 15, 0.5)",a.lineWidth=.6,a.beginPath(),a.moveTo(U+Za,0),a.lineTo(U+v*.92,0),a.stroke()),a.shadowBlur=0,a.shadowColor="transparent",a.globalAlpha=1,a.restore()}let It=Y+(Z-Y)/2,xe=h/1800,V=[w?"\u{1F441}\uFE0F":"\u{1F634}",R>=3?"\u26AB":"\u2600\uFE0F",N?"\u{1F64C}":"\u{1F932}"];x>0&&V.push("\u267B\uFE0F"),F>0&&V.push("\u{1F33F}"),R>0&&V.push("\u{1F940}"),ea>0&&V.push("\u{1F4DC}"),Wa>0&&V.push("\u0950"),ja>0&&V.push("\u270B"),f>0&&V.push("\u{1F41A}"),d>0&&V.push("\u{1FA94}"),S>0&&V.push("\u{1F64F}"),a.save(),a.globalAlpha=1;let Ae=10;for(let s=0;sy).filter(s=>s!==7&&va[s].count>0).sort((s,y)=>va[s].count-va[y].count);for(let s=0;s0){a.save();let b=u.glowTimer&&u.glowTimer>0?u.glowTimer/60*22:0;y===2&&za>0&&(b+=(Math.sin(h/300)*.5+.5)*12),b=Math.min(b,28),a.shadowBlur=(u.glow||6)+b,a.shadowColor=u.color;let v=h/1e3,A=Math.sin(v*1.2+y)*2,K=Gt+A,I=Math.min(u.count,36),G=Math.max(1,Math.ceil(u.count/I)),M=Math.ceil(u.count/G),pa=u.glowTimer&&u.glowTimer>0?u.glowTimer/60*1.6:0,at=(Math.max(1,Math.min(1.8,15/Math.sqrt(M)))*(u.sizeMult||1)+pa)*4.2,oa=Lt(u.emoji,at);for(let Aa=0;Aa0||this.ashuvhaKarma>0||this.prarabdha>0,t=this.activeNaam>=20||this.samarpita>=30||this.chetanaaJaagrita;this._pendingGoodKarma&&(this._pendingGoodKarma=!1,this._punyaTimer=0,this._pendingGoodKarmaCount=0);let e=this.shuvhaKarma>0||this.ashuvhaKarma>0||i,r=this.prarabdha;e&&(this.prarabdha=Math.min(st,this.prarabdha+1));let n=this.prarabdha-r;n>0&&(this.prarabdhaTimer+=nt,this._addFloatingText("+1 \u{1F4DC}","#a78bfa")),e&&n===0&&this._updateAlert(`\u26A0\uFE0F \u092A\u094D\u0930\u093E\u0930\u092C\u094D\u0927 \u0938\u0940\u092E\u093E: \u0905\u0927\u093F\u0915\u0924\u092E ${st} \u2014 \u0928\u092F\u093E \u092C\u094B\u091D \u0905\u0938\u0902\u092D\u0935\u0964`,"#f87171"),this.prarabdhaGatiModifier*=this._currentGatiModifier,this.prarabdhaGatiModifier=Math.max(.01,this.prarabdhaGatiModifier),this.ashuvhaKarma=0,this.shuvhaKarma=0,this.punaraJanmaCount++,this._triggerBlast("#f87171"),this.samaya=ha,this.swaansa=10,this.swaansaSamapta=!1,this._timerTickAccumulator=0,this._timerSoundPlayed=!1,this._prevSamaya200=!1,this._prevSamaya100Guided=!1,this.isNaamaJaapa=!1,this.naamaGhera=0,this.naamaJaapaPower=0,this.isKarmaImmune=this.chetanaaJaagrita,this.purnaSamarpana=!1,i?(this._updateAlert("\u267B\uFE0F \u0905\u092A\u0935\u093F\u0924\u094D\u0930 \u092A\u0941\u0928\u0930\u094D\u091C\u0928\u094D\u092E: \u0915\u0930\u094D\u092E \u0905\u0938\u0902\u0924\u0941\u0932\u093F\u0924 \u0930\u0939 \u0917\u092F\u093E, \u091A\u0915\u094D\u0930 \u091C\u093E\u0930\u0940 \u0939\u0948...","#ff3232"),this.notifyText="\u267B\uFE0F \u0905\u092A\u0935\u093F\u0924\u094D\u0930 \u092A\u0941\u0928\u0930\u094D\u091C\u0928\u094D\u092E"):(this._updateAlert("\u267B\uFE0F \u092A\u0935\u093F\u0924\u094D\u0930 \u092A\u0941\u0928\u0930\u094D\u091C\u0928\u094D\u092E: \u0915\u0930\u094D\u092E \u0936\u0941\u0926\u094D\u0927 \u0925\u093E, \u092A\u0930\u0902\u0924\u0941 \u092F\u093E\u0924\u094D\u0930\u093E \u0905\u0927\u0942\u0930\u0940 \u0930\u0939\u0940\u0964","#ffd700"),this.notifyText="\u267B\uFE0F \u092A\u0935\u093F\u0924\u094D\u0930 \u092A\u0941\u0928\u0930\u094D\u091C\u0928\u094D\u092E"),this.notifyTimer=120,t&&(this.kripa++,this._createGainedGlow(this.player.x+this.player.width/2,this.player.y+this.player.height/2,"#ffe9a8"),this._addFloatingText("\u270B","#ffe9a8",{alpha:1.3,vy:-1.6,isBigName:!0}),this.activeNaam>=20&&this._addFloatingText("\u0950","#ffffff",{alpha:1.5,vy:-2.2,isBigName:!0}),this.samarpita>=30&&this._addFloatingText("\u{1F64F}","#fb923c",{alpha:1.5,vy:-2.2,isBigName:!0}),this._updateAlert("\u270B \u0905\u0924\u093F\u0930\u093F\u0915\u094D\u0924 \u0915\u0943\u092A\u093E \u0932\u0947\u0915\u0930 \u0928\u090F \u091C\u0940\u0935\u0928 \u092E\u0947\u0902 \u092A\u094D\u0930\u0935\u0947\u0936!","#ffe9a8"),this._triggerGlow("#ffe9a8"),this._cb.playSound?.("kripa")),this._cb.playSound?.("punaha")},_spawnMaya(){let i=Math.random(),t="ashuvha",e,r=this.kripa*.05,n=Math.max(.1,.425-r*1.5),h=.425+(.425-n)*.4,c=n+h;i>.985?(t="kripa",e=Math.random()*(this.WIDTH-110)+40):i>.97?(t="chakravaata",e=Math.random()*(this.WIDTH-110)+40):i>.945?(t="shankha",e=Math.random()*(this.WIDTH-110)+40):i>.92?(t="jyoti",e=Math.random()*(this.WIDTH-110)+40):i>c?(t="naama",e=this.TUNNEL_X+Math.random()*(this.TUNNEL_WIDTH-20)):i>n?(t="shuvha",e=Math.random()*(this.WIDTH-110)+40):(t="ashuvha",e=Math.random()*(this.WIDTH-110)+40);for(let l=0;l0&&this.activeNaam>=1?(this.activeNaam--,this.shuvhaKarma--,this.samarpita++,this._addFloatingText("\u{1F33F}\u{1F338}","#32ff32"),this._triggerGlow("#32ff32"),this._cb.playSound?.("samarpita"),this._cb.playSound?.("bandhanaMukta"),this._updateAlert(this.shuvhaKarma===0?"\u{1F33F}\u{1F338} \u092A\u0941\u0923\u094D\u092F-\u092C\u0902\u0927\u0928 \u092E\u0941\u0915\u094D\u0924: \u0936\u0941\u092D \u0915\u0930\u094D\u092E \u092D\u0938\u094D\u092E \u2014 \u091A\u093F\u0924\u094D\u0924 \u0928\u093F\u0930\u094D\u092E\u0932 \u0939\u0941\u0906\u0964":`\u{1F33F}\u{1F338} \u092A\u0941\u0923\u094D\u092F-\u092C\u0902\u0927\u0928: ${this.shuvhaKarma} \u0936\u0947\u0937 \u2014 \u0928\u093E\u092E-\u091C\u093E\u092A \u091C\u093E\u0930\u0940 \u0930\u0916\u0947\u0902\u0964`,"#32ff32")):this.ashuvhaKarma>0&&this.activeNaam>=5&&(this.activeNaam-=5,this.ashuvhaKarma--,this.samarpita++,this._addFloatingText("\u{1F940}\u{1F525}","#ff3232"),this._triggerGlow("#ff3232"),this._cb.playSound?.("samarpita"),this._cb.playSound?.("bandhanaMukta"),this._updateAlert(this.ashuvhaKarma===0?"\u{1F940}\u{1F525} \u092A\u093E\u092A-\u092C\u0902\u0927\u0928 \u092E\u0941\u0915\u094D\u0924: \u0905\u0936\u0941\u092D \u0915\u0930\u094D\u092E \u092D\u0938\u094D\u092E \u2014 \u0906\u0924\u094D\u092E\u093E \u0936\u0941\u0926\u094D\u0927 \u0939\u0941\u0908\u0964":`\u{1F940}\u{1F525} \u092A\u093E\u092A-\u092C\u0902\u0927\u0928: ${this.ashuvhaKarma} \u0936\u0947\u0937 \u2014 \u096B \u0928\u093E\u092E \u0914\u0930 \u091A\u093E\u0939\u093F\u090F\u0964`,"#ff3232")));else if(i.type==="kripa")this._grantKripa(i.x,i.y);else if(i.type==="shankha")this._collectResource("shankha",i.x,i.y);else if(i.type==="jyoti")this._collectResource("jyoti",i.x,i.y);else if(i.type==="chakravaata"){let e=i.x+i.width/2,r=t=1){this.activeNaam--,this.samarpita++,this._createExplosion(i.x+i.width/2,i.y+i.height/2,"#ffffff"),this._addFloatingText("\u{1F64F}","#fb923c",{x:i.x+i.width/2,y:i.y}),this._cb.playSound?.("samarpita"),i.active=!1;return}else this._pendingGoodKarma||(this._pendingGoodKarma=!0,this._punyaTimer=180);this._pendingGoodKarmaCount++,this._cb.playSound?.("shuvha")}else if(i.type==="ashuvha")if(this.activeNaam>=5){this.activeNaam-=5,this.samarpita++,this._createExplosion(i.x+i.width/2,i.y+i.height/2,"#ffffff"),this._addFloatingText("\u{1F64F}","#fb923c",{x:i.x+i.width/2,y:i.y}),this._cb.playSound?.("samarpita"),i.active=!1;return}else this.ashuvhaKarma++,this._createExplosion(i.x+i.width/2,i.y+i.height/2,"#ffffff"),this._addFloatingText("\u{1F940}","#ff3232",{x:i.x+i.width/2,y:i.y}),this._triggerBlast("#ff3232"),this._cb.playSound?.("ashuvhaPrahaar"),this._updateAlert("\u{1F940} \u092A\u093E\u092A \u0915\u092E\u093E\u092F\u093E: \u0905\u0936\u0941\u092D \u0915\u0930\u094D\u092E \u0915\u093E \u0906\u0918\u093E\u0924!","#ff3232");i.active=!1},_grantKripa(i,t,e=null){let r=this.shuvhaKarma+this.ashuvhaKarma,n=r>0;n?(this.kripa>0&&this.kripa--,this.samarpita+=r,this.shuvhaKarma=0,this.ashuvhaKarma=0):this.kripa++;let o=i??this.player.x+this.player.width/2,h=t??this.player.y+this.player.height/2;if(this._createGainedGlow(o,h,"#ffe9a8"),e==="naam"?this._addFloatingText("\u270B\u0950","#ffffff",{x:o,y:h,alpha:1.5,vy:-2.2,isBigName:!0}):e==="samarpita"?this._addFloatingText("\u270B\u{1F64F}","#fb923c",{x:o,y:h,alpha:1.5,vy:-2.2,isBigName:!0}):this._addFloatingText("\u270B","#ffe9a8",{x:o,y:h,alpha:1.3,vy:-1.6,isBigName:!0}),n){let c=this.player.x+this.player.width/2,l=this.player.y+this.player.height/2+50;this._createExplosion(c,l,"#ffe9a8"),this._addFloatingText(`+${r} \u{1F64F}`,"#ffe9a8",{x:c,y:l-20})}this._triggerGlow("#ffe9a8"),this._cb.playSound?.("kripa"),this._updateAlert(n?"\u270B \u0915\u0943\u092A\u093E: \u0938\u093E\u0930\u0925\u0940 \u0915\u0947 \u0938\u092D\u0940 \u0938\u093E\u0902\u0938\u093E\u0930\u093F\u0915 \u092A\u0941\u0923\u094D\u092F-\u092A\u093E\u092A \u0938\u092E\u0930\u094D\u092A\u093F\u0924 \u0939\u0941\u090F\u0964":"\u270B \u0915\u0943\u092A\u093E \u092A\u094D\u0930\u093E\u092A\u094D\u0924 \u0939\u0941\u0908\u0964","#ffe9a8"),this.glowRings.kripa.active=!0,this.glowRings.kripa.radius=0},_collectResource(i,t,e,r={}){let n=Ht[i];n&&(i==="shankha"?this.shankha++:i==="jyoti"&&this.jyoti++,this._addFloatingText(n.icon,n.color,{x:t,y:e}),r.withGainedGlow&&this._createGainedGlow(t,e,n.color),this._triggerGlow(n.color),this._cb.playSound?.(n.sound),r.alert!==!1&&this._updateAlert(n.alert,n.color))},actionNaamaJaapa(){this.gameOver||this.isPaused||(this.activeNaam>=1&&!this.isNaamaJaapa?(this.naamaJaapaPower=this.activeNaam,this.activeNaam--,this.isNaamaJaapa=!0,this.naamaGhera=this.smoothSize/2,this._cb.playSound?.("jaapa"),this._addFloatingText(this.jaapaNaama,"#ffff00",{yOffset:-10,alpha:1.5,vy:-2,isBigName:!0})):this.activeNaam===0&&!this.isNaamaJaapa&&(this._updateAlert("\u274C \u0928\u093E\u092E \u091C\u093E\u092A \u0915\u0947 \u0932\u093F\u090F \u0928\u093E\u092E \u0915\u0940 \u0906\u0935\u0936\u094D\u092F\u0915\u0924\u093E \u0939\u0948!","#ff3232"),this._cb.playSound?.("ashuvha")))},actionShankha(){this.gameOver||this.isPaused||(this.shankha>0?(this.shankha--,this.glowRings.shankha.active=!0,this.glowRings.shankha.radius=0,this._cb.playSound?.("shankhaDhwani"),this._updateAlert("\u{1F41A} \u0936\u0902\u0916-\u0927\u094D\u0935\u0928\u093F: \u0936\u094D\u0935\u0947\u0924 \u092A\u094D\u0930\u0915\u093E\u0936 \u092B\u0948\u0932 \u0930\u0939\u093E \u0939\u0948...","#7dd3fc")):(this._updateAlert("\u274C \u0936\u0902\u0916-\u0936\u0915\u094D\u0924\u093F \u0938\u092E\u093E\u092A\u094D\u0924 \u2014 \u092A\u0939\u0932\u0947 \u0936\u0902\u0916 \u0938\u0902\u0917\u094D\u0930\u0939 \u0915\u0930\u0947\u0902\u0964","#ff3232"),this._cb.playSound?.("ashuvha")))},actionJyoti(){this.gameOver||this.isPaused||(this.jyoti>0?(this.jyoti--,this.glowRings.jyoti.active=!0,this.glowRings.jyoti.radius=0,this._cb.playSound?.("jyotiDhwani"),this._updateAlert("\u{1FA94} \u091C\u094D\u092F\u094B\u0924\u093F \u091C\u0932\u0940: \u092A\u093E\u092A-\u0905\u0902\u0927\u0915\u093E\u0930 \u092E\u0947\u0902 \u092A\u094D\u0930\u0915\u093E\u0936 \u092B\u0948\u0932 \u0930\u0939\u093E \u0939\u0948...","#ffe932")):(this._updateAlert("\u274C \u091C\u094D\u092F\u094B\u0924\u093F-\u0936\u0915\u094D\u0924\u093F \u0938\u092E\u093E\u092A\u094D\u0924 \u2014 \u092A\u0939\u0932\u0947 \u091C\u094D\u092F\u094B\u0924\u093F \u0938\u0902\u0917\u094D\u0930\u0939 \u0915\u0930\u0947\u0902\u0964","#ff3232"),this._cb.playSound?.("ashuvha")))},actionNaamaSamarpan(){if(this.gameOver||this.isPaused)return;if(this.samaya>=100){this._updateAlert("\u274C \u0928\u093E\u092E \u0938\u092E\u0930\u094D\u092A\u0923 \u0915\u0947\u0935\u0932 '\u0905\u0902\u0924\u093F\u092E \u091A\u0930\u0923' \u092E\u0947\u0902 \u0938\u0902\u092D\u0935 \u0939\u0948\u0964","#ff3232"),this._cb.playSound?.("ashuvha");return}if(this.activeNaam===0){this._updateAlert("\u274C \u0938\u092E\u0930\u094D\u092A\u0923 \u0939\u0947\u0924\u0941 \u0928\u093E\u092E \u0936\u0947\u0937 \u0928\u0939\u0940\u0902 \u0939\u0948\u0964","#ff3232"),this._cb.playSound?.("ashuvha");return}if(!this.playerInTunnel){this._updateAlert("\u274C \u0928\u093E\u092E \u0938\u092E\u0930\u094D\u092A\u0923 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0906\u092A\u0915\u094B \u092D\u0915\u094D\u0924\u093F-\u092E\u093E\u0930\u094D\u0917 \u0915\u0947 \u0905\u0902\u0926\u0930 \u0939\u094B\u0928\u093E \u091A\u093E\u0939\u093F\u090F\u0964","#ff3232"),this._cb.playSound?.("ashuvha");return}let i=this.activeNaam*3+(this.kripa+this.shankha+this.jyoti);this.samarpita+=i,this.activeNaam=0,this.kripa=0,this.shankha=0,this.jyoti=0,this.purnaSamarpana=!0,this.isKarmaImmune=!0,this._addFloatingText(`+${i} \u0950\u{1F64F}`,"#ffff00",{alpha:1.5,vy:-2,isBigName:!0,yOffset:-10}),this._updateAlert("\u{1F33F} \u0928\u093E\u092E \u0938\u092E\u0930\u094D\u092A\u093F\u0924: +"+i+" \u092E\u093F\u0932\u0947\u0964","#ffff00"),this._cb.playSound?.("naamaSamarpita")},actionVairaagya(){if(!(this.gameOver||this.isPaused))if(this._pendingGoodKarma){let i=this._pendingGoodKarmaCount;this.samarpita+=i,this._pendingGoodKarma=!1,this._punyaTimer=0,this._pendingGoodKarmaCount=0,this._addFloatingText(`+${i} \u{1F64F}`,"#fb923c"),this._triggerBlast("#32ff32"),this._cb.playSound?.("samarpita"),this._updateAlert("\u{1FAB7} \u0935\u0948\u0930\u093E\u0917\u094D\u092F: \u0938\u093E\u0930\u0925\u0940 \u0928\u0947 \u092A\u0941\u0923\u094D\u092F \u0915\u093E \u092A\u094D\u0930\u0932\u094B\u092D\u0928 \u0920\u0941\u0915\u0930\u093E\u092F\u093E\u0964","#ffd700")}else this._cb.playSound?.("ashuvha")},actionPralaya(){this.gameOver||(this.gameOver=!0,this.won=!1,this.showEndScreen("FORCE STOPPED"),this._cb.playSound?.("takraava"))},actionPause(){return this.gameOver||this.won?(this._cb.playSound?.("ashuvha"),!1):(this.isPaused=!this.isPaused,this._UI?.viraamaOverlay&&(this._UI.viraamaOverlay.style.display=this.isPaused?"flex":"none"),this._cb.playSound?.(this.isPaused?"viraama":"resume"),this._cb.updateAmbientVolumes?.(),this.isPaused)},actionResume(){this.isPaused=!1,this._UI?.viraamaOverlay&&(this._UI.viraamaOverlay.style.display="none"),this._cb.playSound?.("resume")}};var Ft={_isPlayerInsideTunnel(){return this.player.x>=this.TUNNEL_X-4&&this.player.x+this.player.width<=this.TUNNEL_X+this.TUNNEL_WIDTH+4},_updateGlowRing(i,t,e){i.active&&(i.radius+=i.speed*t,e&&e(i),i.radius>i.maxRadius&&(i.active=!1,i.radius=0))},_resetAllGlowRings(){for(let i in this.glowRings)this.glowRings[i].active=!1,this.glowRings[i].radius=0},_createExplosion(i,t,e){let r=0;for(let n=0;n=3&&this.alertQueue.shift(),this.alertQueue.push({id:this._nextAlertId++,icon:i,title:t,subtitle:e,category:r,age:0,maxAge:150,opacity:0,slideX:80})},_updateAlert(i,t){let e="info";t==="#32ff32"||t==="#00ff00"?e="achievement":t==="#ffd700"||t==="#ffe932"||t==="#ffa600"?e="guidance":(t==="#ff3232"||t==="#ff0000"||t==="#f87171")&&(e="warning");let r=i.match(/^(\p{Emoji_Presentation}|\p{Extended_Pictographic})\s*/u),n=r?r[1]:"",o=r?i.slice(r[0].length):i,h=o.indexOf(":"),c=h!==-1?o.slice(0,h).trim():o.trim(),l=h!==-1?o.slice(h+1).trim():"";this.triggerAlert({icon:n,title:c,subtitle:l,category:e})},_updateStatWithPulse(i,t,e,r,n=""){i&&this._oldStats[t]!==e&&(i.textContent=`${r} ${e}${n}`,this._uiScales[t]=1.15,this._uiGlows[t]=1,this._oldStats[t]=e)},_updateUIStats(){if(this._UI){if(this._updateStatWithPulse(this._UI.naama,"naama",this.activeNaam,"\u0950"),this._UI?.punya){let i=this._pendingGoodKarma?` \u23F1${Math.ceil(this._punyaTimer/60)}s`:"",t=`\u{1F33F} ${this.shuvhaKarma}${i}`;this._UI.punya.textContent!==t&&(this._UI.punya.textContent=t,this._uiScales.punya=1.15,this._uiGlows.punya=1,this._oldStats.punya=this.shuvhaKarma)}if(this._updateStatWithPulse(this._UI.paap,"paap",this.ashuvhaKarma,"\u{1F940}"),this._UI?.prarabdha){let i=this.prarabdhaTimer>0?` \u23F1${Math.ceil(this.prarabdhaTimer/60)}s`:"",t=`\u{1F4DC} ${this.prarabdha}${i}`;this._UI.prarabdha.textContent!==t&&(this._UI.prarabdha.textContent=t,this._uiScales.prarabdha=1.15,this._uiGlows.prarabdha=1,this._oldStats.prarabdha=this.prarabdha)}this._updateStatWithPulse(this._UI.samarpita,"samarpita",this.samarpita,"\u{1F64F}",` / ${ot}`),this._updateStatWithPulse(this._UI.punaraJanma,"punaraJanma",this.punaraJanmaCount,"\u267B\uFE0F"),this._updateStatWithPulse(this._UI.kripa,"kripa",this.kripa,"\u270B"),this._updateStatWithPulse(this._UI.shankha,"shankha",this.shankha,"\u{1F41A}"),this._updateStatWithPulse(this._UI.jyoti,"jyoti",this.jyoti,"\u{1FA94}"),this._updateStatWithPulse(this._UI.chetana,"chetana",this.chetanaaJaagrita?"\u{1F441}\uFE0F":"\u{1F634}",""),this._updateStatWithPulse(this._UI.drishti,"drishti",this.ashuvhaKarma>=3?"\u26AB":"\u2600\uFE0F",""),this._updateStatWithPulse(this._UI.purnaSamarpana,"purnaSamarpana",this.purnaSamarpana?"\u{1F64C}":"\u{1F932}","")}},_updateHUDAnimations(i){let t=["purnaSamarpana","naama","punya","paap","prarabdha","samarpita","punaraJanma","gatee","chetana","shankha","drishti","jyoti","kripa"];for(let e of t){Math.abs(this._uiScales[e]-1)>.001&&(this._uiScales[e]+=(1-this._uiScales[e])*.15*i,Math.abs(this._uiScales[e]-1)<.01&&(this._uiScales[e]=1)),this._uiGlows[e]>0&&(this._uiGlows[e]-=.025*i,this._uiGlows[e]<0&&(this._uiGlows[e]=0));let r=this._UI?.[e];if(r){let n=this._uiGlows[e]*15,o=`scale(${this._uiScales[e].toFixed(4)})`,h=n<.1?"":`0 0 ${n.toFixed(1)}px currentColor`;r._lastTransform!==o&&(r.style.transform=o,r._lastTransform=o),r._lastShadow!==h&&(r.style.boxShadow=h,r._lastShadow=h)}}},setContainerBorderColor(i){this.currentBorderColor!==i&&this._UI?.container&&(this._UI.container.style.borderColor=i,this.currentBorderColor=i)}};var ha=2880,ot=50,Ne=22,De=1e3,Oe=160,jt=20,Vt=30,nt=600,st=15,Jt=160,Le=.8,rt={naama:{width:36,height:36},kripa:{width:32,height:32},chakravaata:{width:32,height:32},shankha:{width:32,height:32},jyoti:{width:32,height:32},default:{width:20,height:24}},Ht={shankha:{icon:"\u{1F41A}",color:"#7dd3fc",sound:"shankhaPrapta",alert:"\u{1F41A} \u0936\u0902\u0916 \u092A\u094D\u0930\u093E\u092A\u094D\u0924: \u0935\u093F\u0915\u094D\u0937\u0947\u092A-\u0936\u092E\u0928 \u0939\u0947\u0924\u0941 \u0938\u0941\u0930\u0915\u094D\u0937\u093F\u0924 \u0930\u0916\u0947\u0902\u0964"},jyoti:{icon:"\u{1FA94}",color:"#ffe932",sound:"jyotiPrapta",alert:"\u{1FA94} \u091C\u094D\u092F\u094B\u0924\u093F \u092A\u094D\u0930\u093E\u092A\u094D\u0924: B \u0926\u092C\u093E\u0915\u0930 \u0905\u0902\u0927\u0915\u093E\u0930 \u092E\u0947\u0902 \u092A\u094D\u0930\u0915\u093E\u0936 \u092B\u0948\u0932\u093E\u090F\u0902\u0964"}},Ia=class{constructor(){this.WIDTH=600,this.HEIGHT=680,this.TUNNEL_X=210,this.TUNNEL_WIDTH=180,this.player={x:270,y:430,width:60,height:60,baseSpeed:8},this.shuvhaKarma=0,this.ashuvhaKarma=0,this.activeNaam=0,this.prarabdha=0,this.prarabdhaTimer=0,this.prarabdhaGatiModifier=1,this._currentGatiModifier=1,this._prarabdhaTimerPulseAccum=0,this.samarpita=0,this.punaraJanmaCount=0,this.isKarmaImmune=!1,this.kripa=0,this.shankha=0,this.jyoti=0,this.chetanaaJaagrita=!1,this.purnaSamarpana=!1,this.jaapaNaama="\u0930\u093E\u0927\u093E",this.isNaamaJaapa=!1,this.naamaGhera=0,this.naamaJaapaPower=0,this.samaya=ha,this.swaansa=10,this.swaansaTimer=0,this.swaansaSamapta=!1,this.gameOver=!1,this.isPaused=!1,this.won=!1,this.isShastraVisible=!1,this.wasAlreadyPaused=!1,this.smoothSize=60,this.bodyGlowTimer=0,this.bodyGlowColor="#ffffff",this.shakeTimer=0,this.naamaGlowTimer=0,this.playerInTunnel=!1,this.notifyTimer=0,this.notifyText="\u267B\uFE0F \u092A\u0935\u093F\u0924\u094D\u0930 \u092A\u0941\u0928\u0930\u094D\u091C\u0928\u094D\u092E",this.currentBorderColor="",this.glowRings={jyoti:{active:!1,radius:0,speed:18,maxRadius:420,strokeColor:"rgba(255, 233, 50, 0.85)",lineWidthMul:.004,shadowBlur:28,glowColor:"#ffe932",fillColor:"rgba(255, 233, 50, 0.05)"},shankha:{active:!1,radius:0,speed:18,maxRadius:420,strokeColor:"rgba(220, 240, 255, 0.85)",lineWidthMul:.004,shadowBlur:28,glowColor:"#ddf0ff",fillColor:"rgba(220, 240, 255, 0.04)"},kripa:{active:!1,radius:0,speed:22,maxRadius:420,strokeColor:"rgba(255, 215, 0, 0.85)",lineWidthMul:.005,shadowBlur:22,glowColor:"#ffd700",fillColor:"rgba(255, 215, 0, 0.06)"}},this.outerOrbits=[{count:0,color:"#32ff32",speed:.8,emoji:"\u{1F33F}"},{count:0,color:"#ff3232",speed:-.9,emoji:"\u{1F940}"},{count:0,color:"#a78bfa",speed:.6,emoji:"\u{1F4DC}",glowTimer:0},{count:0,color:"#ffffff",speed:1,emoji:"\u0950",glowTimer:0},{count:0,color:"#ffe9a8",speed:.7,emoji:"\u270B"},{count:0,color:"#7dd3fc",speed:.5,emoji:"\u{1F41A}"},{count:0,color:"#ffe932",speed:-.6,emoji:"\u{1FA94}"},{count:0,color:"#fb923c",speed:1.1,emoji:"\u{1F64F}",glowTimer:0},{count:0,color:"#f87171",speed:-.5,emoji:"\u267B\uFE0F"}],this.mayaPool=[],this.particlePool=[],this.glowEffectPool=[],this.floatingTextPool=[],this.stars=[],this.tunnelSparkles=[],this.chainSlots=[{active:!1,color:"",strength:0,isHeavy:!1},{active:!1,color:"",strength:0,isHeavy:!1},{active:!1,color:"",strength:0,isHeavy:!1}],this.finalHorsePositions=[{x:0,y:0},{x:0,y:0},{x:0,y:0},{x:0,y:0},{x:0,y:0},{x:0,y:0}],this.pulledHorseIndex=-1,this._pulledHorseX=0,this._pulledHorseY=0,this._pendingGoodKarma=!1,this._punyaTimer=0,this._pendingGoodKarmaCount=0,this._spawnTimer=0,this._prevGoodKarmaForSound=0,this._prevBadKarmaForSound=0,this._prevPrarabdhaForSound=0,this._prevPurnaSamarpana=!1,this._prevDrishtiClear=!0,this._prevPulledHorseIndex=-1,this._mayaConsumedWhilePulling=!1,this._prevActiveNaamForKripa=0,this._prevSamarpitaForKripa=0,this._naamaSinceLastKripa=0,this._samarpitaSinceLastKripa=0,this._timerSoundPlayed=!1,this._timerTickAccumulator=0,this._lastPrarabdhaAlertSecond=-1,this._prevSamaya200=!1,this._prevSamaya100Guided=!1,this._prevChetanaAlert=!1,this._chakravaataGuided=!1,this._samarpitaMilestones=new Set,this._oldStats={naama:-1,punya:-1,paap:-1,prarabdha:-1,samarpita:-1,punaraJanma:-1,gatee:"-1",kripa:-1,chetana:"",shankha:-1,drishti:"",purnaSamarpana:"",jyoti:-1},this._uiScales={naama:1,punya:1,paap:1,prarabdha:1,samarpita:1,punaraJanma:1,gatee:1,kripa:1,chetana:1,shankha:1,drishti:1,purnaSamarpana:1,jyoti:1},this._uiGlows={naama:0,punya:0,paap:0,prarabdha:0,samarpita:0,punaraJanma:0,gatee:0,kripa:0,chetana:0,shankha:0,drishti:0,purnaSamarpana:0,jyoti:0},this.alertQueue=[],this._nextAlertId=0,this._cb={},this._UI=null}setCallbacks(t){this._cb=t}setUI(t){this._UI=t}init(t,e,r,n){this.WIDTH=t,this.HEIGHT=e,this.TUNNEL_X=r,this.TUNNEL_WIDTH=n,this.player.x=t/2-30,this.player.y=e-250;for(let o=0;o<50;o++)this.mayaPool.push({active:!1,x:0,y:0,width:20,height:24,type:"ashuvha",isPulling:!1});for(let o=0;o<50;o++)this.particlePool.push({active:!1,x:0,y:0,vx:0,vy:0,radius:0,color:"#ffffff",alpha:0});for(let o=0;o<20;o++)this.glowEffectPool.push({active:!1,x:0,y:0,radius:0,maxRadius:0,color:"#ffffff",alpha:0});for(let o=0;o<25;o++)this.floatingTextPool.push({active:!1,x:0,y:0,text:"",color:"#ffffff",alpha:0,vy:0,isBigName:!1,_cachedTextWidth:void 0,_cachedText:""});for(let o=0;o<35;o++)this.stars.push({x:Math.random()*t,y:Math.random()*e,speed:Math.random()*1.5+.5,size:Math.random()*1+.3});for(let o=0;o<20;o++)this.tunnelSparkles.push({x:r+Math.random()*n,y:Math.random()*e,speed:Math.random()*1.2+.6,size:Math.random()*1.5+.5,alpha:Math.random()*.7+.3,fadeSpeed:.01+Math.random()*.02})}update(t,e,r){if(this.gameOver||this.isPaused||this.isShastraVisible)return;for(this._syncOrbitCounts(),!this.gameOver&&!this.chetanaaJaagrita&&this.samarpita>=ot&&(this.chetanaaJaagrita=!0,this.isKarmaImmune=!0,this._cb.playSound?.("chetana"),this._cb.stopSushuptiSwaansaLayer?.(),this._cb.startJaagritaSwaansaLayer?.(),this._addFloatingText("\u{1F441}\uFE0F","#ffffff",{yOffset:-10,alpha:1.5,vy:-3,isBigName:!0})),this.shuvhaKarma>0&&this._prevGoodKarmaForSound===0&&this._cb.playSound?.("punyaBandhana"),this.ashuvhaKarma>0&&this._prevBadKarmaForSound===0&&this._cb.playSound?.("paapaBandhana"),this.shuvhaKarma===0&&this._prevGoodKarmaForSound>0&&this._cb.playSound?.("bandhanaMukta"),this.ashuvhaKarma===0&&this._prevBadKarmaForSound>0&&this._cb.playSound?.("bandhanaMukta"),this._prevGoodKarmaForSound=this.shuvhaKarma,this._prevBadKarmaForSound=this.ashuvhaKarma,this.prarabdha>0&&this._prevPrarabdhaForSound===0&&this._cb.playSound?.("prarabdhaBandhana"),this.prarabdha===0&&this._prevPrarabdhaForSound>0&&this._cb.playSound?.("bandhanaMukta"),this._prevPrarabdhaForSound=this.prarabdha,this.activeNaam>this._prevActiveNaamForKripa&&(this._naamaSinceLastKripa+=this.activeNaam-this._prevActiveNaamForKripa),this._prevActiveNaamForKripa=this.activeNaam;this._naamaSinceLastKripa>=jt;)this._naamaSinceLastKripa-=jt,this._grantKripa(void 0,void 0,"naam"),this.outerOrbits[3]&&(this.outerOrbits[3].glowTimer=60);for(this.samarpita>this._prevSamarpitaForKripa&&(this._samarpitaSinceLastKripa+=this.samarpita-this._prevSamarpitaForKripa),this._prevSamarpitaForKripa=this.samarpita;this._samarpitaSinceLastKripa>=Vt;)this._samarpitaSinceLastKripa-=Vt,this._grantKripa(void 0,void 0,"samarpita"),this.outerOrbits[7]&&(this.outerOrbits[7].glowTimer=60);this.purnaSamarpana&&!this._prevPurnaSamarpana&&(this._cb.playSound?.("purnaSamarpana"),this._addFloatingText("\u{1F64C}","#ffe9a8",{alpha:1.5,vy:-3,isBigName:!0})),this._prevPurnaSamarpana=this.purnaSamarpana;let n=this.ashuvhaKarma<3;n&&!this._prevDrishtiClear&&(this._cb.playSound?.("drishti"),this._addFloatingText("\u2600\uFE0F","#ffe9a8",{alpha:1.5,vy:-3,isBigName:!0})),!n&&this._prevDrishtiClear&&(this._cb.playSound?.("andhakaara"),this._addFloatingText("\u26AB","#888888",{alpha:1.5,vy:-3,isBigName:!0}),this.jyoti>0?this._updateAlert("\u26AB \u0926\u0943\u0937\u094D\u091F\u093F \u0905\u0935\u0930\u0941\u0926\u094D\u0927: B \u0926\u092C\u093E\u090F\u0901 \u2014 \u091C\u094D\u092F\u094B\u0924\u093F \u0938\u0947 \u0905\u0902\u0927\u0915\u093E\u0930 \u092D\u0917\u093E\u090F\u0901\u0964","#ffe932"):this._updateAlert("\u26AB \u0926\u0943\u0937\u094D\u091F\u093F \u0905\u0935\u0930\u0941\u0926\u094D\u0927: \u091C\u094D\u092F\u094B\u0924\u093F \u0938\u0902\u0917\u094D\u0930\u0939 \u0915\u0930\u0947\u0902 \u2014 \u092A\u093E\u092A \u0915\u093E \u0905\u0902\u0927\u0915\u093E\u0930 \u092C\u0922\u093C\u093E\u0964","#888888")),this._prevDrishtiClear=n,this.samaya<200&&this.samaya>0&&!this.swaansaSamapta&&!this._prevSamaya200&&(this._prevSamaya200=!0,this._updateAlert("\u23F3 \u0938\u092E\u092F \u0938\u092E\u093E\u092A\u094D\u0924 \u0939\u094B\u0928\u0947 \u0935\u093E\u0932\u093E \u0939\u0948 \u2014 \u0936\u0940\u0918\u094D\u0930 \u0938\u092E\u0930\u094D\u092A\u0923 \u0915\u0930\u0947\u0902!","#ffd700")),this.samaya<100&&this.samaya>0&&!this.swaansaSamapta&&!this._prevSamaya100Guided&&(this._prevSamaya100Guided=!0,this.activeNaam>0&&this.playerInTunnel?this._updateAlert("\u{1F33F} \u0905\u0902\u0924\u093F\u092E \u091A\u0930\u0923: W \u0926\u092C\u093E\u090F\u0901 \u2014 \u0928\u093E\u092E \u0938\u092E\u0930\u094D\u092A\u0923 \u0915\u0930\u0947\u0902!","#32ff32"):this.activeNaam>0?this._updateAlert("\u{1F33F} \u0905\u0902\u0924\u093F\u092E \u091A\u0930\u0923: \u092D\u0915\u094D\u0924\u093F-\u092E\u093E\u0930\u094D\u0917 \u092E\u0947\u0902 \u091C\u093E\u090F\u0901, W \u0926\u092C\u093E\u090F\u0901\u0964","#ffd700"):this._updateAlert("\u26A0\uFE0F \u0905\u0902\u0924\u093F\u092E \u091A\u0930\u0923: \u0928\u093E\u092E \u0938\u0902\u0917\u094D\u0930\u0939 \u0928\u0939\u0940\u0902 \u2014 \u0950 \u090F\u0915\u0924\u094D\u0930 \u0915\u0930\u0947\u0902!","#ff3232")),this.chetanaaJaagrita&&!this._prevChetanaAlert&&(this._prevChetanaAlert=!0,this.triggerAlert({icon:"\u{1F441}\uFE0F",title:"\u091A\u0947\u0924\u0928\u093E \u091C\u093E\u0917\u0943\u0924!",subtitle:"\u0938\u093E\u0930\u0925\u0940 \u0928\u0947 \u092E\u093E\u092F\u093E \u0915\u093E \u092D\u0947\u0926 \u091C\u093E\u0928 \u0932\u093F\u092F\u093E\u0964",category:"achievement"}));let o=[10,25,50];for(let f of o)this.samarpita>=f&&!this._samarpitaMilestones.has(f)&&(this._samarpitaMilestones.add(f),this.triggerAlert({icon:"\u{1F64F}",title:`${f} \u0938\u092E\u0930\u094D\u092A\u093F\u0924!`,subtitle:f===50?"\u0905\u0926\u094D\u092D\u0941\u0924! \u092A\u0942\u0930\u094D\u0923 \u0935\u0948\u0930\u093E\u0917\u094D\u092F \u0915\u0940 \u0913\u0930\u0964":f===25?"\u0936\u093E\u092C\u093E\u0936! \u0928\u093F\u0937\u094D\u0915\u093E\u092E \u0915\u0930\u094D\u092E \u091C\u093E\u0930\u0940 \u0930\u0916\u0947\u0902\u0964":"\u092A\u094D\u0930\u0925\u092E \u092E\u0940\u0932 \u0915\u093E \u092A\u0924\u094D\u0925\u0930 \u2014 \u0938\u092E\u0930\u094D\u092A\u0923 \u0915\u093E \u092E\u093E\u0930\u094D\u0917 \u0916\u0941\u0932\u093E\u0964",category:"achievement"}));{let f=!1,d=this.player.x+this.smoothSize/2,S=this.player.y+this.smoothSize/2;for(let x=0;x0?this._updateAlert("\u{1F32A}\uFE0F \u091A\u0915\u094D\u0930\u0935\u093E\u0924 \u0928\u093F\u0915\u091F: Y \u0926\u092C\u093E\u090F\u0901 \u2014 \u0936\u0902\u0916-\u0927\u094D\u0935\u0928\u093F \u0938\u0947 \u0928\u0937\u094D\u091F \u0915\u0930\u0947\u0902!","#7dd3fc"):this._updateAlert("\u{1F32A}\uFE0F \u091A\u0915\u094D\u0930\u0935\u093E\u0924 \u0928\u093F\u0915\u091F: \u0936\u0902\u0916 \u0938\u0902\u0917\u094D\u0930\u0939 \u0915\u0930\u0947\u0902 \u2014 \u0905\u092D\u0940 \u0938\u0941\u0930\u0915\u094D\u0937\u093E \u0928\u0939\u0940\u0902\u0964","#aaaaaa")),f||(this._chakravaataGuided=!1)}this.notifyTimer>0&&(this.notifyTimer-=t,this.notifyTimer<0&&(this.notifyTimer=0));let h=this.player.baseSpeed*t;(e.arrowleft||e.a)&&(this.player.x-=h),(e.arrowright||e.d)&&(this.player.x+=h),this.player.x=Math.max(0,Math.min(this.WIDTH-this.player.width,this.player.x)),this.playerInTunnel=this._isPlayerInsideTunnel();let c=this.smoothSize/2,l=this.player.x+c,p=this.player.y+c,g=!1;this.pulledHorseIndex=-1;for(let f=0;fS&&(this.player.x-=1.8*t)}}}this.pulledHorseIndex!==-1&&this._prevPulledHorseIndex===-1?this._cb.playSound?.("aakarshana"):this.pulledHorseIndex===-1&&this._prevPulledHorseIndex!==-1&&(this._mayaConsumedWhilePulling||this._cb.playSound?.("tyaaga"),this._mayaConsumedWhilePulling=!1),this._prevPulledHorseIndex=this.pulledHorseIndex;let O=2.2;for(let f=0;f0){let N=(1-w/Jt)*Le;this.player.x+=(S-l)*N*t}}if(this.player.x=Math.max(0,Math.min(this.WIDTH-this.player.width,this.player.x)),this.isNaamaJaapa){this.naamaGhera+=Ne*t;let f=!1;for(let d=0;dDe&&(this.isNaamaJaapa=!1,this.naamaGhera=0,this._updateAlert("\u{1F33F} \u0928\u093E\u092E \u091C\u092A\u0924 \u092E\u0902\u0917\u0932 \u0926\u093F\u0938\u093F \u0926\u0938\u0939\u0942\u0901\u0965","#ffd700"),this.naamaJaapaPower=0)}if(this._updateGlowRing(this.glowRings.jyoti,t),this._updateGlowRing(this.glowRings.shankha,t,f=>{let d=!1;for(let S=0;S0?this.prarabdhaGatiModifier:1;if(this.swaansaSamapta)this._checkMokhsha();else{this.samaya-=.8*E*L*t,this.swaansaTimer+=t,this.swaansaTimer>=360&&(this.swaansaTimer-=360,this.swaansa>0&&this.swaansa--);let f=`${Math.max(0,Math.ceil(this.samaya))}s`,d=`${Math.max(0,Math.ceil(this.swaansa))}`;this._UI?.samayaVal?.innerText!==f&&this._UI?.samayaVal&&(this._UI.samayaVal.innerText=f),this._UI?.swaansaVal?.innerText!==d&&this._UI?.swaansaVal&&(this._UI.swaansaVal.innerText=d);let S=(E*L*F*100).toFixed(0);this._updateStatWithPulse(this._UI?.gatee,"gatee",S,"\u26A1","%"),this.samaya<=0&&(this.samaya=0,this.swaansa=0,this.swaansaSamapta=!0,this._updateAlert("\u{1F549}\uFE0F \u092C\u094D\u0930\u0939\u094D\u092E\u093E\u0902\u0921\u0940\u092F \u0915\u094D\u0937\u093F\u0924\u093F\u091C: \u0938\u092E\u092F \u0938\u094D\u0925\u093F\u0930 \u0939\u0948 \u2014 \u0928\u093F\u0930\u094D\u0923\u092F \u0915\u093E \u0915\u094D\u0937\u0923\u0964","#ffffff"))}let R=this.samaya<100&&this.samaya>0&&!this.swaansaSamapta,ea=R||this._pendingGoodKarma;R&&!this._timerSoundPlayed&&(this._timerSoundPlayed=!0,this._cb.playSound?.("antimaCharana")),ea?(this._timerTickAccumulator+=t,this._timerTickAccumulator>=60&&(this._timerTickAccumulator-=60,this._cb.playSound?.("timer"))):this._timerTickAccumulator=0,this.stars.forEach(f=>{this.swaansaSamapta||(f.y+=f.speed*(E*L*F+.1)*t,f.y>this.HEIGHT&&(f.y=0,f.x=Math.random()*this.WIDTH))}),this.tunnelSparkles.forEach(f=>{this.swaansaSamapta||(f.y-=f.speed*(E*L*F+.2)*t,f.alpha+=f.fadeSpeed*t,(f.alpha>.9||f.alpha<.2)&&(f.fadeSpeed=-f.fadeSpeed),f.y<0&&(f.y=this.HEIGHT,f.x=this.TUNNEL_X+Math.random()*this.TUNNEL_WIDTH,f.alpha=Math.random()*.5+.2))});for(let f=0;f=d.maxRadius)&&(d.active=!1))}for(let f=0;fWa&&(this._spawnTimer=0,this._spawnMaya());let ja=Math.max(1.2,4*E*L);for(let f=0;fthis.HEIGHT){d.active=!1;continue}let S=d.xthis.player.x,x=d.ythis.player.y;if(S&&x){if(d.isPulling&&(this._mayaConsumedWhilePulling=!0),this.isKarmaImmune){this._createExplosion(d.x+d.width/2,d.y+d.height/2,"#ffffff"),this._addFloatingText("\u{1F64F}","#fb923c",{x:d.x+d.width/2,y:d.y+d.height/2}),this.samarpita++,this._cb.playSound?.("samarpita"),d.active=!1;continue}this.shakeTimer=8,this._handlePlayerMayaCollision(d,l)}}if(this.shakeTimer>0&&(this.shakeTimer-=t),this.naamaGlowTimer>0&&(this.naamaGlowTimer-=t),this.bodyGlowTimer>0&&(this.bodyGlowTimer-=t),this.outerOrbits[3]?.glowTimer>0&&(this.outerOrbits[3].glowTimer-=t),this.outerOrbits[7]?.glowTimer>0&&(this.outerOrbits[7].glowTimer-=t),this.outerOrbits[2]?.glowTimer>0&&(this.outerOrbits[2].glowTimer-=t),this.prarabdhaTimer>0){this._prarabdhaTimerPulseAccum+=t,this._prarabdhaTimerPulseAccum>=60&&(this._prarabdhaTimerPulseAccum-=60,this.outerOrbits[2]&&(this.outerOrbits[2].glowTimer=18));let f=this.prarabdha;this.prarabdhaTimer=Math.max(0,this.prarabdhaTimer-t);let d=this.prarabdhaTimer>0?Math.ceil(this.prarabdhaTimer/nt):0;d0?(this._createExplosion(this.player.x+this.player.width/2,this.player.y+this.player.height/2,"#a78bfa"),this._addFloatingText("-\u{1F4DC}","#a78bfa",{vy:-2.5,isBigName:!0}),this._updateAlert(`\u{1F4DC}\u{1F525} \u090F\u0915 \u092A\u094D\u0930\u093E\u0930\u092C\u094D\u0927 \u092D\u094B\u0917 \u0932\u093F\u092F\u093E \u2014 ${this.prarabdha} \u0936\u0947\u0937`,"#a78bfa"),this._cb.playSound?.("bandhanaMukta")):(this.prarabdhaTimer=0,this._createExplosion(this.player.x+this.player.width/2,this.player.y+this.player.height/2,"#e879f9"),this._addFloatingText("\u{1F4DC}\u{1F525} \u092E\u0941\u0915\u094D\u0924!","#e879f9",{vy:-2.8,isBigName:!0}),this._updateAlert("\u{1F4DC}\u{1F525} \u092A\u094D\u0930\u093E\u0930\u092C\u094D\u0927 \u0938\u0947 \u092E\u0941\u0915\u094D\u0924\u093F \u2014 \u092A\u0942\u0930\u094D\u0923 \u092D\u094B\u0917 \u0938\u0902\u092A\u0928\u094D\u0928!","#a78bfa"),this._cb.playSound?.("bandhanaMukta"),this._triggerGlow("#e879f9")))}this.smoothSize+=((this.playerInTunnel?30:60)-this.smoothSize)*.18*t;for(let x=this.alertQueue.length-1;x>=0;x--){let w=this.alertQueue[x];w.age+=t,w.age<12?w.opacity=w.age/12:w.age<120?w.opacity=1:w.opacity=Math.max(0,1-(w.age-12-108)/30),w.slideX=Math.max(0,80*(1-Math.min(1,w.age/12))),w.age>=w.maxAge&&this.alertQueue.splice(x,1)}this._updateHUDAnimations(t),this._updateUIStats()}toggleShastra(){this._UI?.viraamaOverlay?.style.display==="flex"&&(this._UI.viraamaOverlay.style.display="none"),this.isShastraVisible=!this.isShastraVisible,this._UI?.shastraOverlay&&(this._UI.shastraOverlay.style.display=this.isShastraVisible?"flex":"none"),this.isShastraVisible?(this.wasAlreadyPaused=this.isPaused,this.isPaused=!0,this._cb.playSound?.("viraama")):(this.wasAlreadyPaused?(this.isPaused=!0,this._UI?.viraamaOverlay&&(this._UI.viraamaOverlay.style.display="flex"),this._cb.playSound?.("viraama")):(this.isPaused=!1,this._cb.playSound?.("resume")),this.wasAlreadyPaused=!1),this._cb.updateAmbientVolumes?.()}showEndScreen(t="EVALUATING"){this._UI?.viraamaOverlay&&(this._UI.viraamaOverlay.style.display="none"),this._UI?.overlay&&(this._UI.overlay.style.display="flex"),t==="FORCE STOPPED"?(this._UI?.overlayTitle&&(this._UI.overlayTitle.innerText="\u{1F6D1} \u092A\u094D\u0930\u0932\u092F \u{1F6D1}",this._UI.overlayTitle.style.fontFamily="'Noto Sans Devanagari', sans-serif",this._UI.overlayTitle.style.color="#ff3232"),this._UI?.overlaySubtitle&&(this._UI.overlaySubtitle.innerHTML=`\u092F\u093E\u0924\u094D\u0930\u093E \u0930\u0926\u094D\u0926:
\u0938\u093E\u0930\u0925\u0940 \u0928\u0947 \u0930\u0925 \u0915\u094B \u092C\u0940\u091A \u092E\u0947\u0902 \u0939\u0940 \u091B\u094B\u0921\u093C \u0926\u093F\u092F\u093E\u0964
\u091A\u093F\u0924\u094D\u0924 \u0915\u0940 \u0905\u0935\u0938\u094D\u0925\u093E: \u092A\u0941\u0923\u094D\u092F: ${this.shuvhaKarma} | \u092A\u093E\u092A: ${this.ashuvhaKarma}

\u0906\u0924\u094D\u092E\u093E \u0905\u092A\u094D\u0930\u0915\u091F \u0905\u0902\u0927\u0915\u093E\u0930\u092E\u092F \u0938\u094D\u0925\u093E\u0928 \u092E\u0947\u0902 \u092B\u0902\u0938\u0940 \u0930\u0939\u0924\u0940 \u0939\u0948\u0964
\u0905\u0924\u0903, \u0918\u094B\u0921\u093C\u0947 \u0906\u0924\u094D\u092E\u093E \u0915\u094B \u0938\u0902\u0938\u093E\u0930 \u092E\u0947\u0902 \u090F\u0915 \u0928\u090F \u0936\u0930\u0940\u0930 \u0915\u0940 \u0913\u0930 \u0916\u0940\u0902\u091A \u0932\u0947 \u091C\u093E\u0924\u0947 \u0939\u0948\u0902\u0964

\u267B\uFE0F \u092A\u0941\u0928\u0930\u094D\u091C\u0928\u094D\u092E: ${this.punaraJanmaCount}

Developed by Weired Codes
`)):this.won?(this._UI?.overlayTitle&&(this._UI.overlayTitle.innerText="\u{1F4A5} \u092E\u094B\u0915\u094D\u0937 \u{1F4A5}",this._UI.overlayTitle.style.color="#ffffff"),this._UI?.overlaySubtitle&&(this._UI.overlaySubtitle.innerHTML=`
\u0906\u092A\u0915\u094B \u092A\u0941\u0928\u0903 \u091C\u0928\u094D\u092E \u0932\u0947\u0928\u0947 \u0915\u0940 \u0906\u0935\u0936\u094D\u092F\u0915\u0924\u093E \u0928\u0939\u0940\u0902 \u0939\u0948\u0964 \u092F\u0939 \u0938\u0902\u0938\u093E\u0930 \u090F\u0915 \u092E\u093E\u092F\u093E \u091C\u093E\u0932 \u0939\u0948, \u091C\u093F\u0938\u0938\u0947 \u0906\u092A\u0928\u0947 \u0905\u0902\u0924\u0924\u0903 \u092E\u0941\u0915\u094D\u0924\u093F \u092A\u093E \u0932\u0940 \u0939\u0948\u0964
\u0906\u092A\u0928\u0947 \u091C\u0928\u094D\u092E-\u092E\u0930\u0923 \u0915\u0947 \u0907\u0938 \u0916\u0947\u0932 \u092A\u0930 \u0935\u093F\u091C\u092F \u092A\u094D\u0930\u093E\u092A\u094D\u0924 \u0915\u0930 \u0932\u0940 \u0939\u0948\u0964
\u0917\u0941\u0923\u094B\u0902 \u0914\u0930 \u0915\u0930\u094D\u092E\u094B\u0902 \u0938\u0947 \u092A\u0930\u0947
\u0905\u0926\u094D\u092D\u0941\u0924 \u0905\u0928\u0941\u092D\u0942\u0924\u093F! \u0938\u093E\u0930\u0925\u0940 \u0928\u0947 \u0907\u0902\u0926\u094D\u0930\u093F\u092F\u094B\u0902 \u0930\u0942\u092A\u0940 \u0918\u094B\u0921\u093C\u094B\u0902 \u0915\u094B \u0938\u094D\u0925\u093F\u0930 \u0930\u0916\u093E \u0914\u0930 \u092E\u0928 \u0915\u094B \u092A\u0942\u0930\u094D\u0923\u0924\u0903 \u0906\u0938\u0915\u094D\u0924\u093F \u092E\u0941\u0915\u094D\u0924 \u0915\u0930 \u0926\u093F\u092F\u093E\u0964


Developed by Weired Codes
`),this._cb.playSound?.("vijaya")):(this._UI?.overlayTitle&&(this._UI.overlayTitle.innerText="\u0938\u0902\u0938\u093E\u0930 \u092E\u0947\u0902 \u092A\u0941\u0928\u0930\u094D\u091C\u0928\u094D\u092E",this._UI.overlayTitle.style.color="#ff3232"),this._UI?.overlaySubtitle&&(this._UI.overlaySubtitle.innerHTML="\u092E\u094B\u0939 \u0915\u0940 \u0932\u0917\u093E\u092E:
"+(this.ashuvhaKarma>0?`\u0906\u092A\u0915\u0947 (${this.ashuvhaKarma}) \u092A\u093E\u092A\u094B\u0902 \u0928\u0947 \u0938\u093E\u0930\u0925\u0940 \u0915\u094B \u0905\u0902\u0927\u093E \u0915\u0930 \u0926\u093F\u092F\u093E\u0964
`:"")+(this.shuvhaKarma>0?`\u0906\u092A\u0915\u0947 (${this.shuvhaKarma}) \u092A\u0941\u0923\u094D\u092F\u094B\u0902 \u092E\u0947\u0902 \u092E\u0928 \u0906\u0938\u0915\u094D\u0924 \u0939\u094B \u0917\u092F\u093E\u0964
`:"")+`
\u0918\u094B\u0921\u093C\u0947 \u0906\u0924\u094D\u092E\u093E \u0915\u094B \u0928\u090F \u0936\u0930\u0940\u0930 \u0915\u0940 \u0913\u0930 \u0932\u0947 \u091C\u093E\u0924\u0947 \u0939\u0948\u0902\u0964

\u267B\uFE0F \u092A\u0941\u0928\u0930\u094D\u091C\u0928\u094D\u092E: ${this.punaraJanmaCount}

Developed by Weired Codes
`))}reset(){this.prarabdha=0,this.prarabdhaTimer=0,this.shuvhaKarma=0,this.ashuvhaKarma=0,this.prarabdhaGatiModifier=1,this._currentGatiModifier=1,this.activeNaam=0,this.samarpita=0,this.punaraJanmaCount=0,this.isKarmaImmune=!1,this.kripa=0,this.shankha=0,this.jyoti=0,this.alertQueue=[],this._nextAlertId=0,this.outerOrbits[2]&&(this.outerOrbits[2].glowTimer=0),this.samaya=ha,this.swaansa=10,this._UI?.samayaVal&&(this._UI.samayaVal.innerText=`${ha}s`),this._UI?.swaansaVal&&(this._UI.swaansaVal.innerText="10"),this.chetanaaJaagrita=!1,this.purnaSamarpana=!1,this._prevPurnaSamarpana=!1,this._prevDrishtiClear=!0,this._prevGoodKarmaForSound=0,this._prevBadKarmaForSound=0,this._prevPrarabdhaForSound=0,this._prevActiveNaamForKripa=0,this._prevSamarpitaForKripa=0,this._naamaSinceLastKripa=0,this._samarpitaSinceLastKripa=0,this._prevPulledHorseIndex=-1,this._mayaConsumedWhilePulling=!1,this._timerSoundPlayed=!1,this._timerTickAccumulator=0,this._lastPrarabdhaAlertSecond=-1,this._prevSamaya200=!1,this._prevSamaya100Guided=!1,this._prevChetanaAlert=!1,this._chakravaataGuided=!1,this._samarpitaMilestones=new Set,this.swaansaTimer=0,this.gameOver=!1,this.isPaused=!1,this.won=!1,this.swaansaSamapta=!1,this._spawnTimer=0,this._pendingGoodKarma=!1,this._pendingGoodKarmaCount=0,this._punyaTimer=0,this.pulledHorseIndex=-1,this._pulledHorseX=0,this._pulledHorseY=0,this.naamaGlowTimer=0,this.bodyGlowTimer=0,this.smoothSize=60,this.isNaamaJaapa=!1,this.naamaGhera=0,this.naamaJaapaPower=0,this.outerOrbits[3]&&(this.outerOrbits[3].glowTimer=0),this.outerOrbits[7]&&(this.outerOrbits[7].glowTimer=0),this._resetAllGlowRings();for(let t=0;t{this._isAudioPreloadDone=!0,this._checkReadiness()})}catch(t){console.warn("\u26A0\uFE0F \u0911\u0921\u093F\u092F\u094B-\u092A\u094D\u0930\u0940\u0932\u094B\u0921 \u092A\u094D\u0930\u093E\u0930\u0902\u092D \u0928\u0939\u0940\u0902 \u0939\u094B \u0938\u0915\u093E:",t),this._isAudioPreloadDone=!0,this._checkReadiness()}this._readinessTimeoutId=setTimeout(()=>{console.warn("\u26A0\uFE0F \u0924\u0924\u094D\u092A\u0930\u0924\u093E-\u0938\u092E\u092F-\u0938\u0940\u092E\u093E (6s) \u092A\u093E\u0930 \u0939\u094B \u0917\u0908 \u2014 Low Mode \u092E\u0947\u0902 \u0906\u0917\u0947 \u092C\u0922\u093C \u0930\u0939\u0947 \u0939\u0948\u0902"),this._isAudioPreloadDone=!0,this._finalizeReadiness()},6e3)}notifyReadiness(){this._checkReadiness()}ensureAudio(){try{if(!this.audioCtx){let t=window.AudioContext||window.webkitAudioContext;if(!t)return;this.audioCtx=new t,setTimeout(()=>this._loadAllAudioBuffers(),0)}this.audioCtx.state==="suspended"&&this.audioCtx.resume(),this.audioUnlocked=!0,this.startBackgroundMusic()}catch(t){console.warn("\u26A0\uFE0F Audio init failed:",t)}}setSwaansaPulse(t){this.swaansaPulseGlobal=t}setMasterVolume(t){this.bgMusicVolume=Math.max(0,Math.min(1,t/100))}toggleBgMusic(){this.bgMusicMuted=!this.bgMusicMuted;let t=document.getElementById("music-toggle-btn");t&&(t.textContent=this.bgMusicMuted?"\u{1F507}":"\u{1F50A}"),this.updateAmbientVolumes()}playSound(t){zt.has(t)&&this.duckBackgroundMusic(zt.get(t));let e=this.audioBuffers,r=this.audioCtx;if(r)switch(t){case"shuvha":this._playTone(523.25,.07,"triangle",.035,783.99),this._vibrate?.(.15,.1,90);break;case"ashuvha":this._playTone(155.56,.1,"sawtooth",.03,92.5),this._vibrate?.(.5,.7,160);break;case"ashuvhaPrahaar":this._playTone(100,.2,"square",.015,140),this._vibrate?.(.3,.2,80);break;case"jaapa":e.jaapaDhwani?this._playBufferedSound(e.jaapaDhwani,r.destination,.6):this._playTone(880,.09,"sine",.03,1320),this._vibrate?.(.1,.05,50);break;case"naamaSamarpita":e.naamaSamarpita?this._playBufferedSound(e.naamaSamarpita,r.destination,.6):this._playTone(880,.09,"sine",.03,1320),this._vibrate?.(.1,.05,50);break;case"purnaSamarpana":e.purnaSamarpana?this._playBufferedSound(e.purnaSamarpana,r.destination,.65):this._playTone(987.77,.14,"sine",.04,1567.98),this._vibrate?.(.2,.25,130);break;case"drishti":e.drishti?this._playBufferedSound(e.drishti,r.destination,.55):this._playTone(880,.1,"sine",.03,1318.51),this._vibrate?.(.1,.08,60);break;case"andhakaara":e.andhakaara?this._playBufferedSound(e.andhakaara,r.destination,.55):this._playTone(196,.12,"sawtooth",.03,130.81),this._vibrate?.(.18,.12,90);break;case"shankhaDhwani":e.shankhaDhwani?this._playBufferedSound(e.shankhaDhwani,r.destination,.65):this._playTone(523.25,.12,"sine",.04,783.99),this._vibrate?.(.2,.25,120);break;case"shankhaPrapta":e.shankhaPrapta?this._playBufferedSound(e.shankhaPrapta,r.destination,.6):this._playTone(700,.1,"sine",.035,1e3),this._vibrate?.(.12,.1,70);break;case"jyotiDhwani":e.jyotiDhwani?this._playBufferedSound(e.jyotiDhwani,r.destination,.6):this._playTone(659.25,.12,"triangle",.04,987.77),this._vibrate?.(.15,.18,100);break;case"jyotiPrapta":e.jyotiPrapta?this._playBufferedSound(e.jyotiPrapta,r.destination,.6):this._playTone(740,.1,"triangle",.035,1050),this._vibrate?.(.12,.1,70);break;case"kripa":e.kripaDhwani?this._playBufferedSound(e.kripaDhwani,r.destination,.6):this._playTone(1046.5,.15,"sine",.04,1318.51),this._vibrate?.(.15,.2,80);break;case"antimaCharana":if(e.antimaCharana){let n=r.currentTime,o=r.createBufferSource();o.buffer=e.antimaCharana;let h=r.createGain(),c=.35,l=o.buffer.duration;h.gain.setValueAtTime(1e-4,n),h.gain.exponentialRampToValueAtTime(c,n+.08);let p=Math.max(n+.08,n+l-.15);h.gain.setValueAtTime(c,p);let g=Math.max(p+.02,n+l-.02);h.gain.exponentialRampToValueAtTime(1e-4,g),o.connect(h),h.connect(r.destination),o.start(n)}else console.warn("\u26A0\uFE0F antimaCharana.mp3 \u0932\u094B\u0921 \u0928\u0939\u0940\u0902 \u0939\u0941\u0908 \u2014 ./audio/antimaCharana.mp3 path \u091C\u093E\u0901\u091A\u0947\u0902");this._vibrate?.(.25,.3,140);break;case"samarpita":{let n=performance.now();n-this._lastSamarpitaSoundTime>=90&&(this._lastSamarpitaSoundTime=n,e.samarpita?this._playBufferedSound(e.samarpita,r.destination,.6):(this._playTone(659.25,.12,"triangle",.04,987.77),setTimeout(()=>this._playTone(987.77,.08,"sine",.025,1318.51),55))),this._vibrate?.(.2,.15,100);break}case"aakarshana":e.aakarshana?this._playBufferedSound(e.aakarshana,r.destination,.5):this._playTone(440,.07,"sine",.025,660),this._vibrate?.(.08,.05,40);break;case"tyaaga":e.tyaaga?this._playBufferedSound(e.tyaaga,r.destination,.5):this._playTone(392,.08,"square",.025,329.63),this._vibrate?.(.1,.06,60);break;case"punaha":e.punarJanma?this._playBufferedSound(e.punarJanma,r.destination,.7):(this._playTone(329.63,.06,"triangle",.025,523.25),setTimeout(()=>this._playTone(659.25,.07,"triangle",.025,987.77),60)),this._vibrate?.(.6,.85,280);break;case"takraava":e.pralaya?this._playBufferedSound(e.pralaya,r.destination,.7):this._playTone(110,.08,"square",.03,82.41),this._vibrate?.(.6,.9,220);break;case"vijaya":e.moksha?this._playBufferedSound(e.moksha,r.destination,.7):(this._playTone(523.25,.12,"sine",.03,783.99),setTimeout(()=>this._playTone(659.25,.12,"sine",.03,987.77),70),setTimeout(()=>this._playTone(783.99,.14,"sine",.03,1174.66),140)),this._vibrate?.(.3,.3,150),setTimeout(()=>this._vibrate?.(.3,.3,150),200),setTimeout(()=>this._vibrate?.(.4,.5,300),400);break;case"chetana":if(e.chetanaJaagrita){let n=r.currentTime,o=r.createBufferSource();o.buffer=e.chetanaJaagrita;let h=r.createGain();h.gain.setValueAtTime(1e-4,n),h.gain.exponentialRampToValueAtTime(.7,n+.05),o.connect(h),h.connect(r.destination),o.start(n)}else console.warn("\u26A0\uFE0F chetanaJaagrita.mp3 \u0932\u094B\u0921 \u0928\u0939\u0940\u0902 \u0939\u0941\u0908 \u2014 ./audio/chetanaJaagrita.mp3 path \u091C\u093E\u0901\u091A\u0947\u0902");break;case"timer":e.timer&&this._playBufferedSound(e.timer,r.destination,.6);break;case"prarabdhaBandhana":e.prarabdhaBandhana&&this._playBufferedSound(e.prarabdhaBandhana,r.destination,.6);break;case"paapaBandhana":e.paapaBandhana&&this._playBufferedSound(e.paapaBandhana,r.destination,.6);break;case"punyaBandhana":e.punyaBandhana&&this._playBufferedSound(e.punyaBandhana,r.destination,.6);break;case"bandhanaMukta":e.bandhanaMukta&&this._playBufferedSound(e.bandhanaMukta,r.destination,.6);break;case"naama":e.naamaDhwani?this._playBufferedSound(e.naamaDhwani,r.destination,.6):this._playTone(880,.09,"sine",.03,1320),this._vibrate?.(.1,.05,50);break;case"viraama":this._playTone(220,.05,"sine",.02,196);break;case"resume":this._playTone(196,.05,"sine",.02,220);break;default:break}}duckBackgroundMusic(t){t>this._duckLevel&&(this._duckLevel=t)}updateDuckDecay(){if(!this.audioCtx)return;let t=this.audioCtx.currentTime;if(this._lastDuckCheckTime===0){this._lastDuckCheckTime=t;return}let e=t-this._lastDuckCheckTime;this._lastDuckCheckTime=t,this._duckLevel>0&&(this._duckLevel-=1.8*e,this._duckLevel<0&&(this._duckLevel=0))}updateAmbientVolumes(){if(!this._bgMasterGain||(this._bgMasterGain.gain.value=this.bgMusicMuted?0:1,this.bgMusicMuted))return;let t=this._duckLevel,e=this.bgMusicVolume,r=this.swaansaPulseGlobal,n=this.audioCtx,o=1-t*.75,h=1-t*.15,c=1-t*.55,l=1-t*.2,p=this._isActiveGameplay();if(this._bgMusicMp3Gain&&(this._bgMusicMp3Gain.gain.value=.01*o*e),this._shathendriyaGain){let g=.16*h*e*(p?1:0);this._shathendriyaGain.gain.setTargetAtTime(g,n.currentTime,.08)}if(this._jaagritaSwaansaGain){let m=.22*(.7+r*.3)*c*e*(p?1:0);this._jaagritaSwaansaGain.gain.setTargetAtTime(m,n.currentTime,.08)}if(this._sushuptiSwaansaGain){let m=1*(.7+r*.3)*l*e*(p?1:0);this._sushuptiSwaansaGain.gain.setTargetAtTime(m,n.currentTime,.08)}}startBackgroundMusic(){if(this._bgMusicStarted||!this.audioCtx)return;this._bgMusicStarted=!0,this._bgMasterGain=this.audioCtx.createGain(),this._bgMasterGain.gain.setValueAtTime(this.bgMusicMuted?0:1,this.audioCtx.currentTime),this._bgMasterGain.connect(this.audioCtx.destination),this._startBgMusicMp3Layer(),this._startRunningHorsesLayer(),this._getGameState?.()?.chetanaaJaagrita||this._startSushuptiSwaansaLayer()}onChetanaaJaagrita(){this.stopSushuptiSwaansaLayer(),this._startJaagritaSwaansaLayer()}stopJaagritaSwaansaLayer(){if(this._jaagritaSwaansaSourceNode){try{this._jaagritaSwaansaSourceNode.stop()}catch{}this._jaagritaSwaansaSourceNode.disconnect(),this._jaagritaSwaansaSourceNode=null}this._jaagritaSwaansaGain=null}startJaagritaSwaansaLayer(){this._startJaagritaSwaansaLayer()}startSushuptiSwaansaLayer(){this._startSushuptiSwaansaLayer()}stopSushuptiSwaansaLayer(){if(this._sushuptiSwaansaSourceNode){try{this._sushuptiSwaansaSourceNode.stop()}catch{}this._sushuptiSwaansaSourceNode.disconnect(),this._sushuptiSwaansaSourceNode=null}this._sushuptiSwaansaGain=null}_isActiveGameplay(){let t=this._getGameState?.();return t?t.isGameStarted&&!t.gameOver&&!t.won&&!t.isPaused&&!t.isShastraVisible:!1}_playTone(t,e=.08,r="sine",n=.04,o=null){if(!this.audioUnlocked||!this.audioCtx)return;let h=this.audioCtx,c=h.currentTime,l=h.createOscillator(),p=h.createGain();l.type=r,l.frequency.setValueAtTime(t,c),o!==null&&l.frequency.exponentialRampToValueAtTime(Math.max(1,o),c+e),p.gain.setValueAtTime(1e-4,c),p.gain.exponentialRampToValueAtTime(n,c+.01),p.gain.exponentialRampToValueAtTime(1e-4,c+e),l.connect(p),p.connect(h.destination),l.start(c),l.stop(c+e+.03)}_playBufferedSound(t,e,r=.6,n=!1){if(!this.audioCtx||!t)return null;let o=this.audioCtx,h=o.createBufferSource();h.buffer=t,h.loop=n;let c=o.createGain();return c.gain.setValueAtTime(r,o.currentTime),h.connect(c),c.connect(e||o.destination),h.start(0),{source:h,gainNode:c}}_checkReadiness(){this._isGameFullyReady||this._isAudioPreloadDone&&this._finalizeReadiness()}_finalizeReadiness(){this._isGameFullyReady||(this._isGameFullyReady=!0,this.gameReadinessMode=this.audioLoadFailures.length===0?"high":"low",this.gameReadinessMode==="high"&&this.ambientLoadFailures.length===0&&console.info("\u{1F7E2} High Mode - all audio loaded successfully"),this.audioLoadFailures.length>0&&console.warn("\u{1F534} Low Mode - essential \u0911\u0921\u093F\u092F\u094B \u0932\u094B\u0921 \u0935\u093F\u092B\u0932:",this.audioLoadFailures),this.ambientLoadFailures.length>0&&console.warn("\u{1F7E1} High Mode (degraded) ambient tracks unavailable:",this.ambientLoadFailures),this._readinessTimeoutId&&(clearTimeout(this._readinessTimeoutId),this._readinessTimeoutId=null),this._showReadyState())}_showReadyState(){let t=document.getElementById("loading-overlay"),e=document.getElementById("mode-badge"),r=document.getElementById("start-btn");e&&(this.gameReadinessMode==="high"?(e.textContent="\u{1F7E2} \u0909\u091A\u094D\u091A \u092E\u094B\u0921",e.title="\u0938\u092D\u0940 \u0938\u0902\u0938\u093E\u0927\u0928 \u0938\u092B\u0932\u0924\u093E\u092A\u0942\u0930\u094D\u0935\u0915 \u0932\u094B\u0921 \u0939\u0941\u090F \u2014 \u092A\u0942\u0930\u094D\u0923 \u0905\u0928\u0941\u092D\u0935 \u0938\u0915\u094D\u0930\u093F\u092F"):(e.textContent="\u{1F7E1} \u0928\u093F\u092E\u094D\u0928 \u092E\u094B\u0921",e.title="\u0915\u0941\u091B \u0927\u094D\u0935\u0928\u093F-\u0938\u0902\u0938\u093E\u0927\u0928 \u0932\u094B\u0921 \u0928\u0939\u0940\u0902 \u0939\u094B \u0938\u0915\u0947 (\u0927\u0940\u092E\u093E \u0928\u0947\u091F/\u092A\u0941\u0930\u093E\u0928\u093E \u0921\u093F\u0935\u093E\u0907\u0938) \u2014 \u092E\u0942\u0932 \u0905\u0928\u0941\u092D\u0935 \u0938\u0915\u094D\u0930\u093F\u092F, \u0916\u0947\u0932 \u092A\u0942\u0930\u094D\u0923\u0924\u0903 \u0916\u0947\u0932\u0928\u0947-\u092F\u094B\u0917\u094D\u092F \u0939\u0948")),t&&(t.style.opacity="0",t.style.pointerEvents="none",setTimeout(()=>{t.style.display="none"},520)),r&&(r.disabled=!1)}async _loadAllAudioBuffers(){this.audioCtx&&await Promise.all([this._loadCriticalAudioBuffers(),this._loadDeferredAudioBuffers()])}async _loadCriticalAudioBuffers(){let t=[{url:"./audio/naamaSamarpita.mp3",key:"naamaSamarpita"},{url:"./audio/samarpita.mp3",key:"samarpita"},{url:"./audio/punaraJanma.mp3",key:"punarJanma"},{url:"./audio/shathendriya.mp3",key:"shathendriya"},{url:"./audio/sushuptiSwaansa.mp3",key:"sushuptiSwaansa"},{url:"./audio/timer.mp3",key:"timer"},{url:"./audio/prarabdhaBandhana.mp3",key:"prarabdhaBandhana"},{url:"./audio/paapaBandhana.mp3",key:"paapaBandhana"},{url:"./audio/punyaBandhana.mp3",key:"punyaBandhana"},{url:"./audio/bandhanaMukta.mp3",key:"bandhanaMukta"},{url:"./audio/naamaDhwani.mp3",key:"naamaDhwani"},{url:"./audio/jaapaDhwani.mp3",key:"jaapaDhwani"},{url:"./audio/aakarshana.mp3",key:"aakarshana"},{url:"./audio/tyaaga.mp3",key:"tyaaga"},{url:"./audio/kripaDhwani.mp3",key:"kripaDhwani"},{url:"./audio/shankhaDhwani.mp3",key:"shankhaDhwani"},{url:"./audio/jyotiDhwani.mp3",key:"jyotiDhwani"},{url:"./audio/jyotiPrapta.mp3",key:"jyotiPrapta"},{url:"./audio/drishti.mp3",key:"drishti"},{url:"./audio/shankhaPrapta.mp3",key:"shankhaPrapta"},{url:"./audio/purnaSamarpana.mp3",key:"purnaSamarpana"},{url:"./audio/andhakaara.mp3",key:"andhakaara"}],e=4;for(let r=0;rthis._loadAudioBuffer(h)));n.forEach(({key:h},c)=>{o[c]!==null&&(this.audioBuffers[h]=o[c])}),r+erequestAnimationFrame(h))}this._bgMusicStarted&&(this._startRunningHorsesLayer(),this._getGameState?.()?.chetanaaJaagrita||this._startSushuptiSwaansaLayer())}async _loadDeferredAudioBuffers(){let t=async l=>{let p=await this._loadAudioBufferWithRetry(l,3,1e3);return p||this.ambientLoadFailures.push(l),p},[e,r,n,o,h,c]=await Promise.all([t("./audio/bgMusic.mp3"),t("./audio/chetanaJaagrita.mp3"),t("./audio/pralaya.mp3"),t("./audio/jaagritaSwaansa.mp3"),t("./audio/moksha.mp3"),t("./audio/antimaCharana.mp3")]);Object.assign(this.audioBuffers,{bgMusic:e,chetanaJaagrita:r,pralaya:n,jaagritaSwaansa:o,moksha:h,antimaCharana:c}),this._bgMusicStarted&&this._startBgMusicMp3Layer()}async _loadAudioBufferWithRetry(t,e=3,r=1e3){for(let n=0;n<=e;n++)try{let o=await fetch(t);if(!o.ok)throw new Error(`HTTP ${o.status}`);let h=await o.arrayBuffer();return await this.audioCtx.decodeAudioData(h)}catch(o){if(n===e)return console.warn(`\u26A0\uFE0F \u0911\u0921\u093F\u092F\u094B \u0932\u094B\u0921 \u0935\u093F\u092B\u0932 (${t}) \u2014 ${e} retries exhausted:`,o),null;let c=r*Math.pow(2,n);console.warn(`\u21A9\uFE0F retry ${n+1}/${e} (${c}ms) \u2014 ${t}`),await new Promise(l=>setTimeout(l,c))}return null}async _loadAudioBuffer(t){try{let e=await fetch(t);if(!e.ok)throw new Error(`HTTP ${e.status}`);let r=await e.arrayBuffer();return await this.audioCtx.decodeAudioData(r)}catch(e){return console.warn(`\u26A0\uFE0F \u0911\u0921\u093F\u092F\u094B \u0932\u094B\u0921 \u0935\u093F\u092B\u0932 (${t}):`,e),this.audioLoadFailures.push(t),null}}_startBgMusicMp3Layer(){if(!this._bgMasterGain||!this.audioBuffers.bgMusic||this._bgMusicSourceNode)return;let t=this.audioCtx.currentTime;this._bgMusicMp3Gain=this.audioCtx.createGain(),this._bgMusicMp3Gain.gain.setValueAtTime(.01,t),this._bgMusicMp3Gain.connect(this._bgMasterGain),this._bgMusicSourceNode=this.audioCtx.createBufferSource(),this._bgMusicSourceNode.buffer=this.audioBuffers.bgMusic,this._bgMusicSourceNode.loop=!0,this._bgMusicSourceNode.connect(this._bgMusicMp3Gain),this._bgMusicSourceNode.start(t)}_startRunningHorsesLayer(){if(!this._bgMasterGain||!this.audioBuffers.shathendriya||this._shathendriyaSourceNode)return;let t=this.audioCtx.currentTime;this._shathendriyaGain=this.audioCtx.createGain();let e=this._isActiveGameplay()?.16:0;this._shathendriyaGain.gain.setValueAtTime(e,t),this._shathendriyaGain.connect(this._bgMasterGain),this._shathendriyaSourceNode=this.audioCtx.createBufferSource(),this._shathendriyaSourceNode.buffer=this.audioBuffers.shathendriya,this._shathendriyaSourceNode.loop=!0,this._shathendriyaSourceNode.connect(this._shathendriyaGain),this._shathendriyaSourceNode.start(t)}_startJaagritaSwaansaLayer(){if(!this._bgMasterGain||!this.audioBuffers.jaagritaSwaansa||this._jaagritaSwaansaSourceNode)return;let t=this.audioCtx.currentTime;this._jaagritaSwaansaGain=this.audioCtx.createGain();let e=this._isActiveGameplay()?.22:0;this._jaagritaSwaansaGain.gain.setValueAtTime(e,t),this._jaagritaSwaansaGain.connect(this._bgMasterGain),this._jaagritaSwaansaSourceNode=this.audioCtx.createBufferSource(),this._jaagritaSwaansaSourceNode.buffer=this.audioBuffers.jaagritaSwaansa,this._jaagritaSwaansaSourceNode.loop=!0,this._jaagritaSwaansaSourceNode.connect(this._jaagritaSwaansaGain),this._jaagritaSwaansaSourceNode.start(t)}_startSushuptiSwaansaLayer(){if(!this._bgMasterGain||!this.audioBuffers.sushuptiSwaansa||this._sushuptiSwaansaSourceNode)return;let t=this.audioCtx.currentTime;this._sushuptiSwaansaGain=this.audioCtx.createGain();let e=this._isActiveGameplay()?1:0;this._sushuptiSwaansaGain.gain.setValueAtTime(e,t),this._sushuptiSwaansaGain.connect(this._bgMasterGain),this._sushuptiSwaansaSourceNode=this.audioCtx.createBufferSource(),this._sushuptiSwaansaSourceNode.buffer=this.audioBuffers.sushuptiSwaansa,this._sushuptiSwaansaSourceNode.loop=!0,this._sushuptiSwaansaSourceNode.connect(this._sushuptiSwaansaGain),this._sushuptiSwaansaSourceNode.start(t)}},$t=new ht;var P=$t,Ue=document.getElementById("gameCanvas"),Ke=Ue.getContext("2d",{alpha:!1,willReadFrequently:!1}),Ha=600,Fa=680,dt=180,Yt=(Ha-dt)/2,ri=Fa-60-(document.getElementById("ui-overlay")?.offsetHeight??120),_a={container:document.getElementById("gameContainer"),naama:document.getElementById("naama"),punya:document.getElementById("punya"),paap:document.getElementById("paap"),prarabdha:document.getElementById("prarabdha"),samarpita:document.getElementById("samarpita"),punaraJanma:document.getElementById("punaraJanma"),kripa:document.getElementById("kripa"),shankha:document.getElementById("shankha"),jyoti:document.getElementById("jyoti"),drishti:document.getElementById("drishti"),purnaSamarpana:document.getElementById("purnaSamarpana"),chetana:document.getElementById("chetana"),samayaVal:document.getElementById("ui-samaya-val"),swaansaVal:document.getElementById("ui-swaansa-val"),gatee:document.getElementById("ui-gatee"),alertBox:document.getElementById("alert-box"),overlay:document.getElementById("screen-overlay"),overlayTitle:document.getElementById("overlay-title"),overlaySubtitle:document.getElementById("overlay-subtitle"),viraamaOverlay:document.getElementById("viraama-overlay"),shastraOverlay:document.getElementById("shastra-overlay")},_=new Ia;window._engine=_;_.setCallbacks({playSound:i=>P?.playSound(i),vibrateGamepad:(i,t,e)=>ut(i,t,e),updateAmbientVolumes:()=>P?.updateAmbientVolumes(),stopSushuptiSwaansaLayer:()=>P?.stopSushuptiSwaansaLayer(),startJaagritaSwaansaLayer:()=>P?.startJaagritaSwaansaLayer(),stopJaagritaSwaansaLayer:()=>P?.stopJaagritaSwaansaLayer(),startSushuptiSwaansaLayer:()=>P?.startSushuptiSwaansaLayer()});_.setUI(_a);_.init(Ha,Fa,Yt,dt);it.init(Ke,Ha,Fa);var da=!1,ta=0,lt=0,j={},Xt=!1,qt=!1,J=1,ba={up:!1,down:!1},ni=document.getElementById("shastra-body"),ga=.18,D={Y:0,B:1,X:2,A:3,LB:4,RB:5,LT:6,RT:7,BACK:8,START:9,DPAD_UP:12,DPAD_DOWN:13,DPAD_LEFT:14,DPAD_RIGHT:15},$=null,Sa={},La={start:!1,back:!1};function la(i,t){window.dispatchEvent(new KeyboardEvent(i,{key:t,bubbles:!0,cancelable:!0}))}function ut(i,t,e){if(t=Math.max(t,.18*(t>0?1:0)),$===null)return;let n=navigator.getGamepads()[$];n?.vibrationActuator?.playEffect&&n.vibrationActuator.playEffect("dual-rumble",{startDelay:0,duration:e,weakMagnitude:i,strongMagnitude:t}).catch(()=>{})}function X(i,t,e){let r=!!i.buttons[t]?.pressed,n=!!Sa[t];r&&!n&&la("keydown",e),!r&&n&&la("keyup",e),Sa[t]=r}function Ua(i,t,e){let r=!!Sa[i];t&&!r&&e(),Sa[i]=t}function Qt(i){let t=i.axes[0]||0,e=i.axes[1]||0,r=!!i.buttons[D.DPAD_LEFT]?.pressed,n=!!i.buttons[D.DPAD_RIGHT]?.pressed,o=!!i.buttons[D.DPAD_UP]?.pressed,h=!!i.buttons[D.DPAD_DOWN]?.pressed,c=t<-ga||r,l=t>ga||n;if(Ua("shastra_left",c,()=>la("keydown","ArrowLeft")),Ua("shastra_right",l,()=>la("keydown","ArrowRight")),Ua("shastra_dpad_up",o,()=>la("keydown","PageUp")),Ua("shastra_dpad_down",h,()=>la("keydown","PageDown")),e<-ga||e>ga){let p=document.getElementById("shastra-body");p&&(p.scrollTop+=e*6*2)}}function He(){if($===null){let n=navigator.getGamepads();for(let o=0;oga||r,X(i,D.RT," "),X(i,D.X,"s"),X(i,D.RB,"arrowup"),X(i,D.LB,"q"),X(i,D.LT,"r"),X(i,D.START,"f"),X(i,D.Y,"y"),X(i,D.B,"b")),X(i,D.BACK,"Escape")}function Ka(){for(let t=1;t<=3;t++)document.getElementById(`shastra-page-${t}`)?.classList.remove("active");document.getElementById(`shastra-page-${J}`)?.classList.add("active");let i=document.getElementById("shastra-nav-btn");i&&(i.textContent=J<3?`\u0905\u0917\u0932\u093E [ ${J} / 3 ]`:`\u092A\u093F\u091B\u0932\u093E [ ${J} / 3 ]`)}function ct(){_.toggleShastra(),_.isShastraVisible?(J=1,Ka(),j={},requestAnimationFrame(ft)):j={}}function ft(){if(_.isShastraVisible){let i=document.getElementById("shastra-body");i&&(ba.up&&(i.scrollTop-=6),ba.down&&(i.scrollTop+=6))}requestAnimationFrame(ft)}requestAnimationFrame(ft);function Fe(i,t){let e;return function(){clearTimeout(e),e=setTimeout(i,t)}}function Zt(){let i=Math.min(window.innerWidth/600,window.innerHeight/680)*.9;_a.container.style.transform=`scale(${i})`,qt=!0,P?.notifyReadiness?.()}Zt();var We=Fe(Zt,200);window.addEventListener("resize",We);window.addEventListener("wheel",i=>{if(!_.isShastraVisible)return;i.preventDefault();let t=document.getElementById("shastra-body");t&&(t.scrollTop+=i.deltaY)},{passive:!1});window.addEventListener("keydown",i=>{let t=i.key.toLowerCase();if(!(!da&&t!=="escape"&&!_.isShastraVisible)){if(P?.ensureAudio(),["arrowup","arrowdown","arrowleft","arrowright"," ","q","f","r","escape","pageup","pagedown"].includes(t)&&i.preventDefault(),t==="escape"){ct();return}if(_.isShastraVisible){let e=document.getElementById("shastra-body");t==="arrowleft"&&J>1&&(J--,Ka(),e&&(e.scrollTop=0)),t==="arrowright"&&J<3&&(J++,Ka(),e&&(e.scrollTop=0)),t==="arrowup"&&(ba.up=!0),t==="arrowdown"&&(ba.down=!0),t==="pageup"&&e&&(e.scrollTop-=e.clientHeight*.9),t==="pagedown"&&e&&(e.scrollTop+=e.clientHeight*.9);return}if(j[t]=!0,t==="r"){_.reset(),ta=performance.now();return}if(t==="q"){_.actionPralaya();return}if(t==="f"){_.actionPause();return}if(t===" "){_.actionNaamaJaapa();return}if(t==="y"){_.actionShankha();return}if(t==="b"){_.actionJyoti();return}if(t==="arrowup"||t==="w"){_.actionNaamaSamarpan();return}if(t==="arrowdown"||t==="s"){_.actionVairaagya();return}}});window.addEventListener("keyup",i=>{let t=i.key.toLowerCase();j[t]=!1,t==="arrowup"&&(ba.up=!1),t==="arrowdown"&&(ba.down=!1)});window.addEventListener("blur",()=>{j={}});window.addEventListener("pointerdown",()=>P?.ensureAudio(),{passive:!0});window.addEventListener("gamepadconnected",i=>{$=i.gamepad.index,Sa={},_.triggerAlert({icon:"\u{1F3AE}",title:"\u0917\u0947\u092E\u092A\u0948\u0921 \u091C\u0941\u0921\u093C\u093E",subtitle:"\u0928\u093F\u092F\u0902\u0924\u094D\u0930\u0923 \u0938\u0915\u094D\u0930\u093F\u092F",category:"achievement"})});window.addEventListener("gamepaddisconnected",i=>{$===i.gamepad.index&&($=null,j.arrowleft=!1,j.arrowright=!1)});document.addEventListener("visibilitychange",()=>{document.hidden&&da&&!_.gameOver&&!_.won&&!_.isPaused&&!_.isShastraVisible&&(_.isPaused=!0,_a.viraamaOverlay&&(_a.viraamaOverlay.style.display="flex"),P?.playSound("viraama"),j={},_.triggerAlert({icon:"\u23F8\uFE0F",title:"\u0916\u0947\u0932 \u0938\u094D\u0924\u092E\u094D\u092D\u093F\u0924",subtitle:"\u0927\u094D\u092F\u093E\u0928 \u092D\u091F\u0915\u093E, \u091F\u0948\u092C \u092C\u0926\u0932\u093E \u0917\u092F\u093E\u0964",category:"guidance"}),P?.updateAmbientVolumes())});document.getElementById("resume-btn")?.addEventListener("click",()=>{_.actionResume(),ta=performance.now()});document.getElementById("restart-btn")?.addEventListener("click",()=>{_a.viraamaOverlay.style.display="none",_.reset(),ta=performance.now()});document.getElementById("quit-btn")?.addEventListener("click",()=>{_a.viraamaOverlay.style.display="none",_.actionPralaya()});document.getElementById("music-toggle-btn")?.addEventListener("click",()=>{P?.ensureAudio(),P?.toggleBgMusic()});document.getElementById("shastra-help-btn")?.addEventListener("click",()=>{P?.ensureAudio(),ct()});document.getElementById("shastra-close-btn")?.addEventListener("click",()=>{ct()});document.getElementById("shastra-nav-btn")?.addEventListener("click",()=>{J=J<3?J+1:1,Ka();let i=document.getElementById("shastra-body");i&&(i.scrollTop=0)});document.getElementById("music-volume-slider")?.addEventListener("input",i=>{P&&(P.bgMusicVolume=parseFloat(i.target.value)/100,P.updateAmbientVolumes())});function je(){let i=_.getState();P?.setSwaansaPulse?.(i.worldSwaansaPulse??0),P?.updateDuckDecay?.(),P?.updateAmbientVolumes?.(),it.drawScene({WIDTH:Ha,HEIGHT:Fa,TUNNEL_X:Yt,TUNNEL_WIDTH:dt,SAMAYA_PRAARAMBHIKA:ha,frameNow:lt,..._.getState(),pulledHorseX:_._pulledHorseX,pulledHorseY:_._pulledHorseY,pendingGoodKarma:_._pendingGoodKarma,punyaTimer:_._punyaTimer,pendingGoodKarmaCount:_._pendingGoodKarmaCount})}ta=performance.now();function ae(i){if(He(),!_.isPaused&&!_.gameOver&&!_.won&&!_.isShastraVisible){let t=Math.min((i-ta)/16.666666666666668,2);lt+=i-ta,_.update(t,j,lt)}ta=i,je(),requestAnimationFrame(ae)}var te=document.getElementById("start-btn");function ee(){if(da)return;let i=navigator.getGamepads(),t=null;for(let e=0;e{da||(P?.ensureAudio(),da=!0,document.getElementById("start-screen")?.remove(),ta=performance.now(),requestAnimationFrame(ae))});P?.setGameStateProvider?.(()=>({isGameStarted:da,gameOver:_.gameOver,won:_.won,isPaused:_.isPaused,isShastraVisible:_.isShastraVisible,chetanaaJaagrita:_.chetanaaJaagrita}));P?.setGameStateGetter?.(()=>({isGameStarted:da,gameOver:_.gameOver,won:_.won,isPaused:_.isPaused,isShastraVisible:_.isShastraVisible,chetanaaJaagrita:_.chetanaaJaagrita}));P?.setVibrateGamepad?.(ut);P?.setVibrateCallback?.(ut);P?.setReadinessGetters?.({getFontsReady:()=>Xt,getScaleGameDone:()=>qt});document.fonts.ready.then(()=>{Xt=!0,P?.notifyReadiness?.(),P?.checkReadiness?.()});P?.init?.();})(); +(()=>{CanvasRenderingContext2D.prototype.roundRect||(CanvasRenderingContext2D.prototype.roundRect=function(i,t,e,r,n){n=Math.min(n,e/2,r/2),this.beginPath(),this.moveTo(i+n,t),this.arcTo(i+e,t,i+e,t+r,n),this.arcTo(i+e,t+r,i,t+r,n),this.arcTo(i,t+r,i,t,n),this.arcTo(i,t,i+e,t,n),this.closePath()});var a=null,Da={},La={},Pa=null,Nt=-1,Ma=null,Dt=-1,ka=null,Lt=-1,aa=null,Ot=-1,Ce=null,ma=null,ya=null,Ca=null;function Ie(i,t){let e=document.createElement("canvas");e.width=i,e.height=t;let r=e.getContext("2d"),n=i/2,o=t/2,h=Math.hypot(i,t)/2;r.strokeStyle="rgba(255, 215, 0, 0.05)",r.lineWidth=1;for(let y=70;y{r.beginPath(),r.moveTo(y,m+c*G),r.lineTo(y,m),r.lineTo(y+c*A,m),r.stroke()}),e}function Ge(i,t){let e=i+"_"+t;if(Da[e])return Da[e];let o=20*t/2*1.2,c=Math.ceil(o*2+4*2),l=document.createElement("canvas");l.width=c,l.height=c;let p=l.getContext("2d"),y=c/2,m=c/2,A=i==="shuvha",G=A?"#efffb0":"#ffbbbb",E=A?"#32ff80":"#ff2244",I=A?"#004422":"#660011",N=A?"rgba(50, 255, 128, 0.85)":"rgba(255, 34, 68, 0.85)",K=A?"\u{1F33F}":"\u{1F940}",L=p.createRadialGradient(y,m-o*.3,0,y,m,o);return L.addColorStop(0,G),L.addColorStop(.4,E),L.addColorStop(1,I),p.fillStyle=L,p.beginPath(),p.arc(y,m,o,0,Math.PI*2),p.fill(),p.strokeStyle=N,p.lineWidth=1.5,p.stroke(),p.fillStyle="#ffffff",p.font=Math.max(14,18*t)+"px 'Orbitron', sans-serif",p.textAlign="center",p.textBaseline="middle",p.fillText(K,y,m),Da[e]={canvas:l,size:c},Da[e]}function Ut(i,t){let e=Math.round(t/2)*2,r=i+"_"+e;if(La[r])return La[r];let o=e+6*2,h=document.createElement("canvas");h.width=o,h.height=o;let c=h.getContext("2d");return c.fillStyle="#ffffff",c.font=e+"px 'Noto Sans Devanagari',sans-serif",c.textAlign="center",c.textBaseline="middle",c.fillText(i,o/2,o/2),La[r]={canvas:h,sz:o},La[r]}function tt(i,t,e){e.active&&(a.save(),a.beginPath(),a.arc(i,t,e.radius,0,Math.PI*2),a.lineWidth=3+e.radius*e.lineWidthMul,a.strokeStyle=e.strokeColor,a.shadowBlur=e.shadowBlur,a.shadowColor=e.glowColor,a.stroke(),a.fillStyle=e.fillColor,a.fill(),a.shadowBlur=0,a.shadowColor="transparent",a.restore())}function et(i,t,e,r,n,o,h,c,l=130,p=4){let y=16*e,m=(Math.sin(c/l)+1)/2;a.save();let A=a.createRadialGradient(i,t,0,i,t,y+8+m*p);A.addColorStop(0,"rgba(255,255,255,0.95)"),A.addColorStop(.5,`rgba(${n},${o})`),A.addColorStop(1,`rgba(${n},0)`),a.fillStyle=A,a.beginPath(),a.arc(i,t,y+10,0,Math.PI*2),a.fill(),a.font=16*e+"px sans-serif",a.textAlign="center",a.textBaseline="middle",a.shadowBlur=10,a.shadowColor=h,a.fillStyle="#ffffff",a.fillText(r,i,t),a.shadowBlur=0,a.shadowColor="transparent",a.restore()}function Be(i,t,e,r,n){let o=(e-1)*r,h=i-o/2;for(let c=0;cA.category==="warning"||A.category==="guidance");if(y.length===0)return;let m=t.x+(t.width??e)/2;for(let A=0;A0){let s=(Math.random()-.5)*5;a.translate(s,-s)}a.fillStyle="#000000",a.fillRect(0,0,t,e),l<100&&!p&&(a.fillStyle="rgba(255, 0, 0, "+(1-l/100)*.35+")",a.fillRect(0,0,t,e)),a.save();let ue=mt/360,sa=(Math.sin(ue*Math.PI*2-Math.PI/2)+1)/2;a.globalCompositeOperation="screen";let St=Math.round(sa*24);(St!==Lt||!ka)&&(Lt=St,ka=a.createRadialGradient(t/2,e/2,120+sa*180,t/2,e/2,t*.8),ka.addColorStop(0,"rgba(139, 92, 246, 0)"),ka.addColorStop(1,"rgba(139, 92, 246, "+(.12+sa*.38)+")")),a.fillStyle=ka,a.fillRect(0,0,t,e),a.restore(),a.save();let z=l<100?1-l/100:0,wt=Math.round(z*24);(wt!==Ot||!aa)&&(Ot=wt,aa=a.createLinearGradient(r,0,r+n,0),aa.addColorStop(0,"rgba(255, 0, 200, "+(.02+z*.15)+")"),aa.addColorStop(0,"rgba(255, 200, 60, "+(.05+z*.16)+")"),aa.addColorStop(.5,"rgba(0, 240, 255, "+(.12+z*.45)+")"),aa.addColorStop(0,"rgba(255, 200, 60, "+(.05+z*.16)+")"),aa.addColorStop(1,"rgba(255, 0, 200, "+(.02+z*.15)+")")),a.fillStyle=aa,a.fillRect(r,0,n,e),a.save(),a.shadowBlur=8,a.shadowColor="#00f0ff",a.fillStyle="rgba(120, 245, 255, 0.65)",a.beginPath(),m.forEach(s=>{Math.floor(s.x+s.y)%2===0&&(a.moveTo(s.x+s.size,s.y),a.arc(s.x,s.y,s.size,0,Math.PI*2))}),a.fill(),a.beginPath(),m.forEach(s=>{Math.floor(s.x+s.y)%2!==0&&a.rect(s.x,s.y,s.size*1.5,s.size*1.5)}),a.fill(),a.restore(),a.shadowBlur=22+z*25,a.shadowColor="#ff00c8",a.strokeStyle="rgba(255, 0, 200, "+(.35+z*.35)+")",a.lineWidth=4,a.beginPath(),a.moveTo(r,0),a.lineTo(r,e),a.moveTo(r+n,0),a.lineTo(r+n,e),a.stroke(),a.shadowBlur=12+z*20,a.shadowColor="#00f0ff",a.strokeStyle="rgba(0, 240, 255, "+(.7+z*.3)+")",a.lineWidth=1.5,a.beginPath(),a.moveTo(r,0),a.lineTo(r,e),a.moveTo(r+n,0),a.lineTo(r+n,e),a.stroke();let ce=h*.15%e;a.fillStyle="rgba(0, 240, 255, "+(.2+z*.35)+")",a.shadowBlur=14,a.shadowColor="#ff00c8",a.fillRect(r,ce,n,3),a.shadowBlur=0,a.restore(),a.fillStyle="rgba(255, 255, 255, 0.25)",a.beginPath(),y.forEach(s=>{a.moveTo(s.x+s.size,s.y),a.arc(s.x,s.y,s.size,0,Math.PI*2)}),a.fill(),A.forEach(s=>{s.active&&(a.fillStyle=s.color,a.globalAlpha=s.alpha,a.beginPath(),a.arc(s.x,s.y,s.radius,0,Math.PI*2),a.fill())}),a.globalAlpha=1,G.forEach(s=>{s.active&&(a.save(),a.globalAlpha=Math.max(0,s.alpha),a.beginPath(),a.arc(s.x,s.y,s.radius,0,Math.PI*2),a.strokeStyle=s.color,a.lineWidth=2,a.shadowBlur=10,a.shadowColor=s.color,a.stroke(),a.restore())}),a.globalAlpha=1,p&&(a.strokeStyle="rgba(255, 255, 255, 0.2)",a.lineWidth=1,a.beginPath(),a.moveTo(0,E.y-10),a.lineTo(t,E.y-10),a.stroke());let fe=I/60,x=E.x+I/2,C=E.y+I/2;tt(x,C,N.jyoti),tt(x,C,N.shankha),tt(x,C,N.kripa);let pe=1+sa*.28,me=44,Ta=0;if(K>0){let s=D[Ta++];s.active=!0,s.color="#32ff32",s.strength=Math.min(1,K/5),s.isHeavy=!1}if(L>0){let s=D[Ta++];s.active=!0,s.color="#ff3232",s.strength=Math.min(1,L/5),s.isHeavy=!1}if(ea>0){let s=D[Ta++];s.active=!0,s.color="#8b0000",s.strength=Math.min(1,ea/10),s.isHeavy=!0}for(let s=Ta;s{let b=D[u];Re(s,g,b.color,b.strength,b.isHeavy,h)});let ua=I*pe,ye=8+sa*28,vt=.4+sa*.6;if(Va>0||Ja>0){if(a.save(),Va>0){let s=Va/40;a.shadowBlur=18,a.shadowColor="rgba(255, 255, 255, "+s+")",a.fillStyle="rgba(255, 255, 255, "+s+")",a.beginPath(),a.arc(x,C,ua/2+12,0,Math.PI*2),a.fill()}Ja>0&&(a.globalAlpha=Ja/40,a.shadowBlur=18,a.shadowColor=gt,a.fillStyle=gt,a.beginPath(),a.arc(x,C,ua/2+12,0,Math.PI*2),a.fill()),a.restore()}a.save(),a.shadowBlur=ye,a.shadowColor=`rgba(255,255,255,${vt})`,a.strokeStyle=`rgba(255,255,255,${vt})`,a.lineWidth=(.5+sa*1.2)*(I/60),a.beginPath(),a.arc(x,C,ua/2,0,Math.PI*2),a.stroke(),a.restore();let ra=ua/2-7,ca=C,xt=Math.round(ra);if(xt!==Nt||!Pa){Nt=xt;let s=document.createElement("canvas"),g=Math.ceil(ra*2)+4;s.width=g,s.height=g;let u=s.getContext("2d"),b=g/2,v=g/2,P=u.createRadialGradient(b,v,0,b,v,ra);P.addColorStop(0,"rgba(255, 160, 60, 0.32)"),P.addColorStop(.5,"rgba(255, 210, 110, 0.18)"),P.addColorStop(1,"rgba(255, 190, 80, 0.05)"),u.fillStyle=P,u.beginPath(),u.arc(b,v,ra,0,Math.PI*2),u.fill(),Pa={canvas:s,sz:g}}a.save(),a.shadowBlur=12,a.shadowColor="rgba(255, 160, 60, 0.55)",a.drawImage(Pa.canvas,x-Pa.sz/2,ca-Pa.sz/2),a.shadowBlur=22,a.shadowColor="rgba(255, 170, 50, 0.88)",a.strokeStyle="rgba(255, 200, 60, 0.65)",a.lineWidth=1.5,a.beginPath(),a.arc(x,ca,ra,0,Math.PI*2),a.stroke(),a.restore();let Tt=ra;Kt(x,ca,Tt,3,-Math.PI/2,"rgba(255, 200, 60, 0.85)",2.2,"rgba(255, 180, 40, 0.9)",14),Kt(x,ca,Tt,3,Math.PI/2,"rgba(255, 200, 60, 0.85)",2.2,"rgba(255, 180, 40, 0.9)",14);let At=C,Ba=6*fe,Pt=Math.round(Ba*10);if(Pt!==Dt||!Ma){Dt=Pt;let s=document.createElement("canvas"),g=Math.ceil(Ba*2)+4;s.width=g,s.height=g;let u=s.getContext("2d"),b=g/2,v=g/2,P=u.createRadialGradient(b,v,0,b,v,Ba);P.addColorStop(0,"rgba(255, 255, 255, 1)"),P.addColorStop(.1,"rgba(255, 255, 255, 0.92)"),P.addColorStop(.3,"rgba(220, 200, 255, 0.42)"),P.addColorStop(1,"rgba(0, 0, 0, 0)"),u.fillStyle=P,u.beginPath(),u.arc(b,v,Ba,0,Math.PI*2),u.fill(),Ma={canvas:s,sz:g}}a.save(),a.drawImage(Ma.canvas,x-Ma.sz/2,At-Ma.sz/2),a.fillStyle="#ffffff",a.shadowColor="#ffffff",a.shadowBlur=8,a.beginPath(),a.arc(x,At,.7,0,Math.PI*2),a.fill(),a.restore(),a.save(),a.fillStyle="#ffffff",a.shadowColor="#ffffff",a.shadowBlur=3;let $a=6,Mt=10,ge=x-($a-1)*Mt/2;for(let s=0;s<$a;s++){let g,u;s===W?(g=Q,u=Ga):(g=ge+s*Mt,u=C-ua/2-45+(wa||ia?0:Math.sin(h/70+s)*3)),q[s].x=g,q[s].y=u,a.beginPath(),a.arc(g,u,2.2,0,Math.PI*2),a.fill()}for(let s=0;s<$a;s++){let g=q[s].x,u=q[s].y;if(bt>0){let b=L/bt,v=a.createLinearGradient(g,u,x,ca);if(b===0)a.strokeStyle="rgba(50, 255, 50, 0.65)";else if(b===1)a.strokeStyle="rgba(255, 50, 50, 0.65)";else{let P=1-b;v.addColorStop(0,"rgba(50, 255, 50, 0.65)"),v.addColorStop(P,"rgba(50, 255, 50, 0.65)"),v.addColorStop(P,"rgba(255, 50, 50, 0.65)"),v.addColorStop(1,"rgba(255, 50, 50, 0.65)"),a.strokeStyle=v}}else a.strokeStyle=s===W?"rgba(255, 255, 255, 0.85)":"rgba(255, 255, 255, 0.4)";a.lineWidth=s===W?1.6:1.1,a.beginPath(),a.moveTo(g,u),a.lineTo(x,ca-ra),a.stroke()}a.restore(),se.forEach(s=>{if(!s.active)return;let u=s.x>=r&&s.x+s.width<=r+n?.5:1,b=s.width*u,v=s.height*u,P=s.x+(s.width-b)/2,H=s.y+(s.height-v)/2;if(s.isPulling&&W!==-1&&(a.save(),a.beginPath(),a.moveTo(P+b/2,H+v),a.lineTo(Q,Ga),a.strokeStyle=s.type==="shuvha"?"rgba(50, 255, 50, 0.3)":"rgba(255, 50, 50, 0.3)",a.stroke(),a.restore()),s.type==="shuvha"||s.type==="ashuvha"){if(s.type==="ashuvha"&&L>=3){let oa=s.x+s.width/2,Aa=s.y+s.height/2,Na=Math.hypot(oa-x,Aa-C);if(!(N.jyoti.active&&Na<=N.jyoti.radius)){a.textAlign="left";return}}let B=P+b/2,R=H+v/2,k=Ge(s.type,u);a.drawImage(k.canvas,B-k.size/2,R-k.size/2);let pa=s.type==="shuvha",na=(Math.sin(h/140)+1)/2,at=k.size/2*.92;a.save(),a.beginPath(),a.arc(B,R,at+na*2,0,Math.PI*2),a.strokeStyle=pa?"rgba(50,255,50,0.45)":"rgba(255,50,50,0.45)",a.lineWidth=1.2,a.shadowBlur=4,a.shadowColor=pa?"#32ff32":"#ff3232",a.stroke(),a.restore()}else if(s.type==="naama"){let B=18*u,R=s.x+s.width/2,k=s.y+s.height/2,pa=(Math.sin(h/150)+1)/2;a.save();let na=a.createRadialGradient(R,k,0,R,k,B+pa*4);na.addColorStop(0,"#ffffff"),na.addColorStop(.5,"rgba(255, 255, 255, 0.9)"),na.addColorStop(1,"rgba(255, 255, 255, 0)"),a.fillStyle=na,a.beginPath(),a.arc(R,k,B+6,0,Math.PI*2),a.fill(),a.fillStyle="#ffffff",a.beginPath(),a.arc(R,k,B*.6,0,Math.PI*2),a.fill(),a.restore(),a.save(),a.font=16*u+"px 'Noto Sans Devanagari', sans-serif",a.textAlign="center",a.textBaseline="middle",a.shadowBlur=10,a.shadowColor="#ffffff",a.fillStyle="#1a1a2e",a.fillText("\u0950",R,k),a.restore()}else if(s.type==="kripa")et(s.x+s.width/2,s.y+s.height/2,u,"\u270B","255,215,0",.55,"#ffd700",h,130,5);else if(s.type==="chakravaata"){let B=s.x+s.width/2,R=s.y+s.height/2;a.save(),a.translate(B,R),a.rotate(h/120%(Math.PI*2));let k=a.createRadialGradient(0,0,0,0,0,22*u);k.addColorStop(0,"rgba(200,200,210,0.9)"),k.addColorStop(.6,"rgba(120,120,140,0.5)"),k.addColorStop(1,"rgba(120,120,140,0)"),a.fillStyle=k,a.beginPath(),a.arc(0,0,20*u,0,Math.PI*2),a.fill(),a.rotate(-(h/120)%(Math.PI*2)),a.font=18*u+"px sans-serif",a.textAlign="center",a.textBaseline="middle",a.shadowBlur=10,a.shadowColor="#aaaaaa",a.fillStyle="#ffffff",a.fillText("\u{1F32A}\uFE0F",0,0),a.restore()}else s.type==="shankha"?et(s.x+s.width/2,s.y+s.height/2,u,"\u{1F41A}","125,211,252",.55,"#7dd3fc",h,140,3):s.type==="jyoti"&&et(s.x+s.width/2,s.y+s.height/2,u,"\u{1FA94}","255,165,0",.6,"#ffa500",h,120,3);a.textAlign="left"});{let s=re&&!ia,g=za>0&&ea>0&&!ia,u=52,b=E.y-I*.5-48,v=96,P=48,H=10;if(s){let B=g?x-u:x,R=Math.ceil(ne/60),k=(Math.sin(h/150)+1)/2;a.save(),a.beginPath(),a.roundRect(B-v/2,b-P/2,v,P,H),a.fillStyle="rgba(0, 30, 0, 0.72)",a.fill(),a.strokeStyle="rgba(50, 255, 50, 0.35)",a.lineWidth=1,a.stroke(),a.textAlign="center",a.textBaseline="middle",a.font="700 9px 'Orbitron', sans-serif",a.fillStyle="rgba(180, 255, 180, 0.85)",a.shadowBlur=0,a.fillText("\u092A\u0941\u0923\u094D\u092F +"+oe,B,b-13),a.font="900 "+(20+k*3)+"px 'Orbitron', sans-serif",a.fillStyle="#ffffff",a.shadowBlur=12+k*10,a.shadowColor="#00ff00",a.fillText(R+"s",B,b+10),a.lineWidth=1.2,a.strokeStyle="rgba(50,255,50,"+(.7+k*.3)+")",a.strokeText(R+"s",B,b+10),a.restore()}if(g){let B=s?x+u:x,R=Math.ceil(za/60),k=(Math.sin(h/150)+1)/2;a.save(),a.beginPath(),a.roundRect(B-v/2,b-P/2,v,P,H),a.fillStyle="rgba(20, 0, 40, 0.72)",a.fill(),a.strokeStyle="rgba(167, 139, 250, 0.35)",a.lineWidth=1,a.stroke(),a.textAlign="center",a.textBaseline="middle",a.font="700 9px 'Orbitron', sans-serif",a.fillStyle="rgba(200, 180, 255, 0.85)",a.shadowBlur=0,a.fillText("\u092A\u094D\u0930\u093E\u0930\u092C\u094D\u0927 "+ea+" \u0936\u0947\u0937",B,b-13),a.font="900 "+(20+k*3)+"px 'Orbitron', sans-serif",a.fillStyle="#ffffff",a.shadowBlur=12+k*10,a.shadowColor="#a78bfa",a.fillText(R+"s",B,b+10),a.lineWidth=1.2,a.strokeStyle="rgba(167,139,250,"+(.7+k*.3)+")",a.strokeText(R+"s",B,b+10),a.restore()}}if(l<100&&l>0&&!p&&!ia){a.save();let s=Math.ceil(l),g=(Math.sin(h/150)+1)/2;a.textAlign="center",a.textBaseline="middle";let u=C-I/2-55;a.font="800 13px 'Orbitron', sans-serif",a.shadowBlur=10,a.shadowColor="#ff3232",a.fillStyle="rgba(255, 200, 200, 0.9)",a.fillText("\u0905\u0902\u0924\u093F\u092E \u091A\u0930\u0923",x,u-24),a.font="900 "+(26+g*3)+"px 'Orbitron', sans-serif",a.fillStyle="#ffffff",a.shadowBlur=20+g*35,a.shadowColor="#ff0000",a.fillText(s+"s",x,u),a.lineWidth=1.5,a.strokeStyle="rgba(255, 50, 50, "+(.8+g*.2)+")",a.strokeText(s+"s",x,u),a.restore()}a.save(),a.textAlign="center",a.textBaseline="middle";let Ya=8,Xa=t-Ya*2;if(he.forEach(s=>{if(!s.active)return;a.fillStyle=s.color,a.globalAlpha=s.alpha;let g=s.isBigName?100:16;a.font=`900 ${g}px 'Orbitron', sans-serif`;let u=g;s._cachedTextWidth===void 0&&(s._cachedTextWidth=a.measureText(s.text).width);let b=s._cachedTextWidth;if(b>Xa){let k=g*(Xa/b);a.font=`900 ${k.toFixed(1)}px 'Orbitron', sans-serif`,b=Xa,u=k}let v=Math.max(12,u*.25),P=Math.max(b,u*.85)/2+v,H=P+Ya,B=t-P-Ya,R=H>B?t/2:Math.min(B,Math.max(H,s.x));a.save(),a.globalAlpha=s.alpha,a.beginPath(),a.arc(R,s.y,P,0,Math.PI*2),a.fillStyle="rgba(8, 8, 14, 0.40)",a.fill(),a.lineWidth=1.4,a.strokeStyle=s.color,a.shadowBlur=6,a.shadowColor=s.color,a.stroke(),a.restore(),a.lineWidth=Math.max(2,u*.07),a.strokeStyle="rgba(0, 0, 0, 0.9)",a.shadowBlur=0,a.globalAlpha=s.alpha,a.strokeText(s.text,R,s.y),a.shadowBlur=10,a.shadowColor=s.color,a.fillStyle=s.color,a.fillText(s.text,R,s.y)}),a.restore(),xa>0){a.save();let s=1;xa>100?s=(120-xa)/20:xa<50&&(s=xa/50),s=Math.max(0,Math.min(1,s));let g=340,u=56,b=t/2-g/2,v=e/2-u/2;a.globalAlpha=s*.88,a.fillStyle="rgba(4, 4, 16, 0.82)",a.beginPath(),a.roundRect(b,v,g,u,14),a.fill(),a.strokeStyle="rgba(255, 255, 255, 0.12)",a.lineWidth=1,a.stroke(),a.globalAlpha=s,a.textAlign="center",a.textBaseline="middle",a.font="700 18px 'Orbitron', sans-serif",a.shadowBlur=18,a.shadowColor="#ffffff",a.fillStyle="#ffffff",a.fillText(de,t/2,e/2,g-24),a.restore()}let Y=ua/2+5,Z=Y+12;a.save(),a.beginPath(),a.arc(x,C,Y,0,Math.PI*2),a.lineWidth=4,a.strokeStyle="rgba(88, 28, 220, 0.15)",a.shadowBlur=28,a.shadowColor="rgba(100, 40, 255, 0.70)",a.globalAlpha=.55,a.stroke(),a.beginPath(),a.arc(x,C,Z,0,Math.PI*2),a.lineWidth=7,a.strokeStyle="rgba(100, 40, 255, 0.18)",a.shadowBlur=45,a.shadowColor="rgba(120, 60, 255, 0.90)",a.globalAlpha=.75,a.stroke(),a.restore();let _e=Math.pow(.7,L),be=Math.pow(.8,K),Ra=_e*be;if(a.save(),a.lineWidth=1,a.lineCap="round",a.beginPath(),a.arc(x,C,Y,0,Math.PI*2),a.strokeStyle="rgba(255, 200, 60, 0.22)",a.stroke(),a.beginPath(),a.arc(x,C,Y,-Math.PI/2,-Math.PI/2+Math.PI*2*Ra),a.lineWidth=1,a.strokeStyle="rgba(255, 200, 60, 0.5)",a.shadowBlur=18,a.shadowColor="#ffc83c",a.globalAlpha=.7+Math.sin(h/200)*.2,a.stroke(),a.beginPath(),a.arc(x,C,Y,-Math.PI/2,-Math.PI/2+Math.PI*2*Ra),a.lineWidth=1,a.strokeStyle="rgba(255, 245, 210, 1)",a.shadowBlur=10,a.shadowColor="#ffffff",a.globalAlpha=.9+Math.sin(h/200)*.1,a.stroke(),Ra>0){let s=-Math.PI/2+Math.PI*2*Ra,g=x+Math.cos(s)*Y,u=C+Math.sin(s)*Y;a.save(),a.shadowBlur=14,a.shadowColor="#ffc83c",a.font="10px sans-serif",a.textAlign="center",a.textBaseline="middle",a.fillText("\u26A1",g,u),a.restore()}a.restore();let Se=Math.max(0,l/o);a.save(),a.lineWidth=3,a.lineCap="round",a.beginPath(),a.arc(x,C,Z,0,Math.PI*2),a.strokeStyle="rgba(255, 200, 60, 0.22)",a.stroke();let Ea=Math.pow(Se,.5),we=l<100?"255, 0, 90":"255, 200, 60",qa=l<100?"#ff005a":"#ffc83c";if(a.beginPath(),a.arc(x,C,Z,-Math.PI/2,-Math.PI/2+Math.PI*2*Ea),a.lineWidth=l<100?6:5,a.strokeStyle="rgba("+we+", 0.5)",a.shadowBlur=l<100?28:18,a.shadowColor=qa,a.globalAlpha=.7+Math.sin(h/150)*.2,a.stroke(),a.beginPath(),a.arc(x,C,Z,-Math.PI/2,-Math.PI/2+Math.PI*2*Ea),a.lineWidth=2.5,a.strokeStyle="rgba(255, 255, 255, 1)",a.shadowBlur=l<100?16:10,a.shadowColor=qa,a.globalAlpha=.9+Math.sin(h/150)*.1,a.stroke(),Ea>0){let s=-Math.PI/2+Math.PI*2*Ea,g=x+Math.cos(s)*Z,u=C+Math.sin(s)*Z;a.save(),a.shadowBlur=l<100?20:14,a.shadowColor=qa,a.font="10px sans-serif",a.textAlign="center",a.textBaseline="middle",a.fillText("\u23F3",g,u),a.restore()}a.restore();let kt=10,F=Z+3,fa=22,Qa=45,Za=8,ve=h/4500,xe=mt/360,Ct=Math.sin(xe*Math.PI),It=10-yt;for(let s=0;s0,v=b?fa*(1+Ct*.5):fa,P=b?Qa*(1+Ct*.4):u?Qa*.7:Qa;a.save(),a.translate(x,C),a.rotate(g);let H;ma||(ma=a.createLinearGradient(F,0,F+fa,0),ma.addColorStop(0,"rgba(140, 120, 90, 0.55)"),ma.addColorStop(.55,"rgba(120, 100, 72, 0.50)"),ma.addColorStop(1,"rgba(100, 90, 70, 0.45)"),ya=a.createLinearGradient(F,0,F+fa,0),ya.addColorStop(0,"rgba(255, 140, 60, 1.00)"),ya.addColorStop(.3,"rgba(255, 240, 180, 1.00)"),ya.addColorStop(.7,"rgba(255, 200, 60, 0.95)"),ya.addColorStop(1,"rgba(255, 160, 20, 0.90)"),Ca=a.createLinearGradient(F,0,F+fa,0),Ca.addColorStop(0,"rgba(255, 236, 139, 0.85)"),Ca.addColorStop(.55,"rgba(255, 170, 40, 0.85)"),Ca.addColorStop(1,"rgba(255, 179, 60, 0.85)")),H=b?ya:u?ma:Ca,a.beginPath(),a.moveTo(F,-Za),a.quadraticCurveTo(F+v*.4,-P/2,F+v,0),a.quadraticCurveTo(F+v*.4,P/2,F,Za),a.closePath(),a.shadowBlur=b?22:u?0:12,a.shadowColor=b?"rgba(255, 220, 80, 1.0)":"rgba(255, 180, 50, 0.85)",a.globalAlpha=u?.7:1,a.fillStyle=H,a.fill(),a.shadowBlur=0,a.strokeStyle=u?"rgba(100, 100, 100, 0.3)":"rgba(255, 223, 120, 0.55)",a.lineWidth=1,a.stroke(),u||(a.strokeStyle="rgba(200, 110, 15, 0.5)",a.lineWidth=.6,a.beginPath(),a.moveTo(F+Za,0),a.lineTo(F+v*.92,0),a.stroke()),a.shadowBlur=0,a.shadowColor="transparent",a.globalAlpha=1,a.restore()}let Gt=Y+(Z-Y)/2,Te=h/1800,V=[w?"\u{1F441}\uFE0F":"\u{1F634}",L>=3?"\u26AB":"\u2600\uFE0F",O?"\u{1F64C}":"\u{1F932}"];T>0&&V.push("\u267B\uFE0F"),K>0&&V.push("\u{1F33F}"),L>0&&V.push("\u{1F940}"),ea>0&&V.push("\u{1F4DC}"),Wa>0&&V.push("\u0950"),ja>0&&V.push("\u270B"),f>0&&V.push("\u{1F41A}"),d>0&&V.push("\u{1FA94}"),S>0&&V.push("\u{1F64F}"),a.save(),a.globalAlpha=1;let Ae=10;for(let s=0;sg).filter(s=>s!==7&&va[s].count>0).sort((s,g)=>va[s].count-va[g].count);for(let s=0;s0){a.save();let b=u.glowTimer&&u.glowTimer>0?u.glowTimer/60*22:0;g===2&&za>0&&(b+=(Math.sin(h/300)*.5+.5)*12),b=Math.min(b,28),a.shadowBlur=(u.glow||6)+b,a.shadowColor=u.color;let v=h/1e3,P=Math.sin(v*1.2+g)*2,H=Bt+P,B=Math.min(u.count,36),R=Math.max(1,Math.ceil(u.count/B)),k=Math.ceil(u.count/R),pa=u.glowTimer&&u.glowTimer>0?u.glowTimer/60*1.6:0,at=(Math.max(1,Math.min(1.8,15/Math.sqrt(k)))*(u.sizeMult||1)+pa)*4.2,oa=Ut(u.emoji,at);for(let Aa=0;Aa0||this.ashuvhaKarma>0||this.prarabdha>0,t=this.activeNaam>=20||this.samarpita>=30||this.chetanaaJaagrita;this._pendingGoodKarma&&(this._pendingGoodKarma=!1,this._punyaTimer=0,this._pendingGoodKarmaCount=0);let e=this.shuvhaKarma>0||this.ashuvhaKarma>0||i,r=this.prarabdha;e&&(this.prarabdha=Math.min(st,this.prarabdha+1));let n=this.prarabdha-r;n>0&&(this.prarabdhaTimer+=nt,this._addFloatingText("+1 \u{1F4DC}","#a78bfa")),e&&n===0&&this._updateAlert(`\u26A0\uFE0F \u092A\u094D\u0930\u093E\u0930\u092C\u094D\u0927 \u0938\u0940\u092E\u093E: \u0905\u0927\u093F\u0915\u0924\u092E ${st} \u2014 \u0928\u092F\u093E \u092C\u094B\u091D \u0905\u0938\u0902\u092D\u0935\u0964`,"#f87171"),this.prarabdhaGatiModifier*=this._currentGatiModifier,this.prarabdhaGatiModifier=Math.max(.01,this.prarabdhaGatiModifier),this.ashuvhaKarma=0,this.shuvhaKarma=0,this.punaraJanmaCount++,this._triggerBlast("#f87171"),this.samaya=ha,this.swaansa=10,this.swaansaSamapta=!1,this._timerTickAccumulator=0,this._timerSoundPlayed=!1,this._prevSamaya200=!1,this._prevSamaya100Guided=!1,this.isNaamaJaapa=!1,this.naamaGhera=0,this.naamaJaapaPower=0,this.isKarmaImmune=this.chetanaaJaagrita,this.purnaSamarpana=!1,i?(this._updateAlert("\u267B\uFE0F \u0905\u092A\u0935\u093F\u0924\u094D\u0930 \u092A\u0941\u0928\u0930\u094D\u091C\u0928\u094D\u092E: \u0915\u0930\u094D\u092E \u0905\u0938\u0902\u0924\u0941\u0932\u093F\u0924 \u0930\u0939 \u0917\u092F\u093E, \u091A\u0915\u094D\u0930 \u091C\u093E\u0930\u0940 \u0939\u0948...","#ff3232"),this.notifyText="\u267B\uFE0F \u0905\u092A\u0935\u093F\u0924\u094D\u0930 \u092A\u0941\u0928\u0930\u094D\u091C\u0928\u094D\u092E"):(this._updateAlert("\u267B\uFE0F \u092A\u0935\u093F\u0924\u094D\u0930 \u092A\u0941\u0928\u0930\u094D\u091C\u0928\u094D\u092E: \u0915\u0930\u094D\u092E \u0936\u0941\u0926\u094D\u0927 \u0925\u093E, \u092A\u0930\u0902\u0924\u0941 \u092F\u093E\u0924\u094D\u0930\u093E \u0905\u0927\u0942\u0930\u0940 \u0930\u0939\u0940\u0964","#ffd700"),this.notifyText="\u267B\uFE0F \u092A\u0935\u093F\u0924\u094D\u0930 \u092A\u0941\u0928\u0930\u094D\u091C\u0928\u094D\u092E"),this.notifyTimer=120,t&&(this.kripa++,this._createGainedGlow(this.player.x+this.player.width/2,this.player.y+this.player.height/2,"#ffe9a8"),this._addFloatingText("\u270B","#ffe9a8",{alpha:1.3,vy:-1.6,isBigName:!0}),this.activeNaam>=20&&this._addFloatingText("\u0950","#ffffff",{alpha:1.5,vy:-2.2,isBigName:!0}),this.samarpita>=30&&this._addFloatingText("\u{1F64F}","#fb923c",{alpha:1.5,vy:-2.2,isBigName:!0}),this._updateAlert("\u270B \u0905\u0924\u093F\u0930\u093F\u0915\u094D\u0924 \u0915\u0943\u092A\u093E \u0932\u0947\u0915\u0930 \u0928\u090F \u091C\u0940\u0935\u0928 \u092E\u0947\u0902 \u092A\u094D\u0930\u0935\u0947\u0936!","#ffe9a8"),this._triggerGlow("#ffe9a8"),this._cb.playSound?.("kripa")),this._cb.playSound?.("punaha")},_spawnMaya(){let i=Math.random(),t="ashuvha",e,r=this.kripa*.05,n=Math.max(.1,.425-r*1.5),h=.425+(.425-n)*.4,c=n+h;i>.985?(t="kripa",e=Math.random()*(this.WIDTH-110)+40):i>.97?(t="chakravaata",e=Math.random()*(this.WIDTH-110)+40):i>.945?(t="shankha",e=Math.random()*(this.WIDTH-110)+40):i>.92?(t="jyoti",e=Math.random()*(this.WIDTH-110)+40):i>c?(t="naama",e=this.TUNNEL_X+Math.random()*(this.TUNNEL_WIDTH-20)):i>n?(t="shuvha",e=Math.random()*(this.WIDTH-110)+40):(t="ashuvha",e=Math.random()*(this.WIDTH-110)+40);for(let l=0;l0&&this.activeNaam>=1?(this.activeNaam--,this.shuvhaKarma--,this.samarpita++,this._addFloatingText("\u{1F33F}\u{1F338}","#32ff32"),this._triggerGlow("#32ff32"),this._cb.playSound?.("samarpita"),this._cb.playSound?.("bandhanaMukta"),this._updateAlert(this.shuvhaKarma===0?"\u{1F33F}\u{1F338} \u092A\u0941\u0923\u094D\u092F-\u092C\u0902\u0927\u0928 \u092E\u0941\u0915\u094D\u0924: \u0936\u0941\u092D \u0915\u0930\u094D\u092E \u092D\u0938\u094D\u092E \u2014 \u091A\u093F\u0924\u094D\u0924 \u0928\u093F\u0930\u094D\u092E\u0932 \u0939\u0941\u0906\u0964":`\u{1F33F}\u{1F338} \u092A\u0941\u0923\u094D\u092F-\u092C\u0902\u0927\u0928: ${this.shuvhaKarma} \u0936\u0947\u0937 \u2014 \u0928\u093E\u092E-\u091C\u093E\u092A \u091C\u093E\u0930\u0940 \u0930\u0916\u0947\u0902\u0964`,"#32ff32")):this.ashuvhaKarma>0&&this.activeNaam>=5&&(this.activeNaam-=5,this.ashuvhaKarma--,this.samarpita++,this._addFloatingText("\u{1F940}\u{1F525}","#ff3232"),this._triggerGlow("#ff3232"),this._cb.playSound?.("samarpita"),this._cb.playSound?.("bandhanaMukta"),this._updateAlert(this.ashuvhaKarma===0?"\u{1F940}\u{1F525} \u092A\u093E\u092A-\u092C\u0902\u0927\u0928 \u092E\u0941\u0915\u094D\u0924: \u0905\u0936\u0941\u092D \u0915\u0930\u094D\u092E \u092D\u0938\u094D\u092E \u2014 \u0906\u0924\u094D\u092E\u093E \u0936\u0941\u0926\u094D\u0927 \u0939\u0941\u0908\u0964":`\u{1F940}\u{1F525} \u092A\u093E\u092A-\u092C\u0902\u0927\u0928: ${this.ashuvhaKarma} \u0936\u0947\u0937 \u2014 \u096B \u0928\u093E\u092E \u0914\u0930 \u091A\u093E\u0939\u093F\u090F\u0964`,"#ff3232")));else if(i.type==="kripa")this._grantKripa(i.x,i.y);else if(i.type==="shankha")this._collectResource("shankha",i.x,i.y);else if(i.type==="jyoti")this._collectResource("jyoti",i.x,i.y);else if(i.type==="chakravaata"){let e=i.x+i.width/2,r=t=1){this.activeNaam--,this.samarpita++,this._createExplosion(i.x+i.width/2,i.y+i.height/2,"#ffffff"),this._addFloatingText("\u{1F64F}","#fb923c",{x:i.x+i.width/2,y:i.y}),this._cb.playSound?.("samarpita"),i.active=!1;return}else this._pendingGoodKarma||(this._pendingGoodKarma=!0,this._punyaTimer=180);this._pendingGoodKarmaCount++,this._cb.playSound?.("shuvha")}else if(i.type==="ashuvha")if(this.activeNaam>=5){this.activeNaam-=5,this.samarpita++,this._createExplosion(i.x+i.width/2,i.y+i.height/2,"#ffffff"),this._addFloatingText("\u{1F64F}","#fb923c",{x:i.x+i.width/2,y:i.y}),this._cb.playSound?.("samarpita"),i.active=!1;return}else this.ashuvhaKarma++,this._createExplosion(i.x+i.width/2,i.y+i.height/2,"#ffffff"),this._addFloatingText("\u{1F940}","#ff3232",{x:i.x+i.width/2,y:i.y}),this._triggerBlast("#ff3232"),this._cb.playSound?.("ashuvhaPrahaar"),this._updateAlert("\u{1F940} \u092A\u093E\u092A \u0915\u092E\u093E\u092F\u093E: \u0905\u0936\u0941\u092D \u0915\u0930\u094D\u092E \u0915\u093E \u0906\u0918\u093E\u0924!","#ff3232");i.active=!1},_grantKripa(i,t,e=null){let r=this.shuvhaKarma+this.ashuvhaKarma,n=r>0;n?(this.kripa>0&&this.kripa--,this.samarpita+=r,this.shuvhaKarma=0,this.ashuvhaKarma=0):this.kripa++;let o=i??this.player.x+this.player.width/2,h=t??this.player.y+this.player.height/2;if(this._createGainedGlow(o,h,"#ffe9a8"),e==="naam"?this._addFloatingText("\u270B\u0950","#ffffff",{x:o,y:h,alpha:1.5,vy:-2.2,isBigName:!0}):e==="samarpita"?this._addFloatingText("\u270B\u{1F64F}","#fb923c",{x:o,y:h,alpha:1.5,vy:-2.2,isBigName:!0}):this._addFloatingText("\u270B","#ffe9a8",{x:o,y:h,alpha:1.3,vy:-1.6,isBigName:!0}),n){let c=this.player.x+this.player.width/2,l=this.player.y+this.player.height/2+50;this._createExplosion(c,l,"#ffe9a8"),this._addFloatingText(`+${r} \u{1F64F}`,"#ffe9a8",{x:c,y:l-20})}this._triggerGlow("#ffe9a8"),this._cb.playSound?.("kripa"),this._updateAlert(n?"\u270B \u0915\u0943\u092A\u093E: \u0938\u093E\u0930\u0925\u0940 \u0915\u0947 \u0938\u092D\u0940 \u0938\u093E\u0902\u0938\u093E\u0930\u093F\u0915 \u092A\u0941\u0923\u094D\u092F-\u092A\u093E\u092A \u0938\u092E\u0930\u094D\u092A\u093F\u0924 \u0939\u0941\u090F\u0964":"\u270B \u0915\u0943\u092A\u093E \u092A\u094D\u0930\u093E\u092A\u094D\u0924 \u0939\u0941\u0908\u0964","#ffe9a8"),this.glowRings.kripa.active=!0,this.glowRings.kripa.radius=0},_collectResource(i,t,e,r={}){let n=Ht[i];n&&(i==="shankha"?this.shankha++:i==="jyoti"&&this.jyoti++,this._addFloatingText(n.icon,n.color,{x:t,y:e}),r.withGainedGlow&&this._createGainedGlow(t,e,n.color),this._triggerGlow(n.color),this._cb.playSound?.(n.sound),r.alert!==!1&&this._updateAlert(n.alert,n.color))},actionNaamaJaapa(){this.gameOver||this.isPaused||(this.activeNaam>=1&&!this.isNaamaJaapa?(this.naamaJaapaPower=this.activeNaam,this.activeNaam--,this.isNaamaJaapa=!0,this.naamaGhera=this.smoothSize/2,this._cb.playSound?.("jaapa"),this._addFloatingText(this.jaapaNaama,"#ffff00",{yOffset:-10,alpha:1.5,vy:-2,isBigName:!0})):this.activeNaam===0&&!this.isNaamaJaapa&&(this._updateAlert("\u274C \u0928\u093E\u092E \u091C\u093E\u092A \u0915\u0947 \u0932\u093F\u090F \u0928\u093E\u092E \u0915\u0940 \u0906\u0935\u0936\u094D\u092F\u0915\u0924\u093E \u0939\u0948!","#ff3232"),this._cb.playSound?.("ashuvha")))},actionShankha(){this.gameOver||this.isPaused||(this.shankha>0?(this.shankha--,this.glowRings.shankha.active=!0,this.glowRings.shankha.radius=0,this._cb.playSound?.("shankhaDhwani"),this._updateAlert("\u{1F41A} \u0936\u0902\u0916-\u0927\u094D\u0935\u0928\u093F: \u0936\u094D\u0935\u0947\u0924 \u092A\u094D\u0930\u0915\u093E\u0936 \u092B\u0948\u0932 \u0930\u0939\u093E \u0939\u0948...","#7dd3fc")):(this._updateAlert("\u274C \u0936\u0902\u0916-\u0936\u0915\u094D\u0924\u093F \u0938\u092E\u093E\u092A\u094D\u0924 \u2014 \u092A\u0939\u0932\u0947 \u0936\u0902\u0916 \u0938\u0902\u0917\u094D\u0930\u0939 \u0915\u0930\u0947\u0902\u0964","#ff3232"),this._cb.playSound?.("ashuvha")))},actionJyoti(){this.gameOver||this.isPaused||(this.jyoti>0?(this.jyoti--,this.glowRings.jyoti.active=!0,this.glowRings.jyoti.radius=0,this._cb.playSound?.("jyotiDhwani"),this._updateAlert("\u{1FA94} \u091C\u094D\u092F\u094B\u0924\u093F \u091C\u0932\u0940: \u092A\u093E\u092A-\u0905\u0902\u0927\u0915\u093E\u0930 \u092E\u0947\u0902 \u092A\u094D\u0930\u0915\u093E\u0936 \u092B\u0948\u0932 \u0930\u0939\u093E \u0939\u0948...","#ffe932")):(this._updateAlert("\u274C \u091C\u094D\u092F\u094B\u0924\u093F-\u0936\u0915\u094D\u0924\u093F \u0938\u092E\u093E\u092A\u094D\u0924 \u2014 \u092A\u0939\u0932\u0947 \u091C\u094D\u092F\u094B\u0924\u093F \u0938\u0902\u0917\u094D\u0930\u0939 \u0915\u0930\u0947\u0902\u0964","#ff3232"),this._cb.playSound?.("ashuvha")))},actionNaamaSamarpan(){if(this.gameOver||this.isPaused)return;if(this.samaya>=100){this._updateAlert("\u274C \u0928\u093E\u092E \u0938\u092E\u0930\u094D\u092A\u0923 \u0915\u0947\u0935\u0932 '\u0905\u0902\u0924\u093F\u092E \u091A\u0930\u0923' \u092E\u0947\u0902 \u0938\u0902\u092D\u0935 \u0939\u0948\u0964","#ff3232"),this._cb.playSound?.("ashuvha");return}if(this.activeNaam===0){this._updateAlert("\u274C \u0938\u092E\u0930\u094D\u092A\u0923 \u0939\u0947\u0924\u0941 \u0928\u093E\u092E \u0936\u0947\u0937 \u0928\u0939\u0940\u0902 \u0939\u0948\u0964","#ff3232"),this._cb.playSound?.("ashuvha");return}if(!this.playerInTunnel){this._updateAlert("\u274C \u0928\u093E\u092E \u0938\u092E\u0930\u094D\u092A\u0923 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0906\u092A\u0915\u094B \u092D\u0915\u094D\u0924\u093F-\u092E\u093E\u0930\u094D\u0917 \u0915\u0947 \u0905\u0902\u0926\u0930 \u0939\u094B\u0928\u093E \u091A\u093E\u0939\u093F\u090F\u0964","#ff3232"),this._cb.playSound?.("ashuvha");return}let i=this.activeNaam*3+(this.kripa+this.shankha+this.jyoti);this.samarpita+=i,this.activeNaam=0,this.kripa=0,this.shankha=0,this.jyoti=0,this.purnaSamarpana=!0,this.isKarmaImmune=!0,this._addFloatingText(`+${i} \u0950\u{1F64F}`,"#ffff00",{alpha:1.5,vy:-2,isBigName:!0,yOffset:-10}),this._updateAlert("\u{1F33F} \u0928\u093E\u092E \u0938\u092E\u0930\u094D\u092A\u093F\u0924: +"+i+" \u092E\u093F\u0932\u0947\u0964","#ffff00"),this._cb.playSound?.("naamaSamarpita")},actionVairaagya(){if(!(this.gameOver||this.isPaused))if(this._pendingGoodKarma){let i=this._pendingGoodKarmaCount;this.samarpita+=i,this._pendingGoodKarma=!1,this._punyaTimer=0,this._pendingGoodKarmaCount=0,this._addFloatingText(`+${i} \u{1F64F}`,"#fb923c"),this._triggerBlast("#32ff32"),this._cb.playSound?.("samarpita"),this._updateAlert("\u{1FAB7} \u0935\u0948\u0930\u093E\u0917\u094D\u092F: \u0938\u093E\u0930\u0925\u0940 \u0928\u0947 \u092A\u0941\u0923\u094D\u092F \u0915\u093E \u092A\u094D\u0930\u0932\u094B\u092D\u0928 \u0920\u0941\u0915\u0930\u093E\u092F\u093E\u0964","#ffd700")}else this._cb.playSound?.("ashuvha")},actionPralaya(){this.gameOver||(this.gameOver=!0,this.won=!1,this.showEndScreen("FORCE STOPPED"),this._cb.playSound?.("takraava"))},actionPause(){return this.gameOver||this.won?(this._cb.playSound?.("ashuvha"),!1):(this.isPaused=!this.isPaused,this._UI?.viraamaOverlay&&(this._UI.viraamaOverlay.style.display=this.isPaused?"flex":"none"),this._cb.playSound?.(this.isPaused?"viraama":"resume"),this._cb.updateAmbientVolumes?.(),this.isPaused)},actionResume(){this.isPaused=!1,this._UI?.viraamaOverlay&&(this._UI.viraamaOverlay.style.display="none"),this._cb.playSound?.("resume")}};var Wt={_isPlayerInsideTunnel(){return this.player.x>=this.TUNNEL_X-4&&this.player.x+this.player.width<=this.TUNNEL_X+this.TUNNEL_WIDTH+4},_updateGlowRing(i,t,e){i.active&&(i.radius+=i.speed*t,e&&e(i),i.radius>i.maxRadius&&(i.active=!1,i.radius=0))},_resetAllGlowRings(){for(let i in this.glowRings)this.glowRings[i].active=!1,this.glowRings[i].radius=0},_createExplosion(i,t,e){let r=0;for(let n=0;n=3&&this.alertQueue.shift(),this.alertQueue.push({id:this._nextAlertId++,icon:i,title:t,subtitle:e,category:r,age:0,maxAge:150,opacity:0,slideX:80})},_updateAlert(i,t){let e="info";t==="#32ff32"||t==="#00ff00"?e="achievement":t==="#ffd700"||t==="#ffe932"||t==="#ffa600"?e="guidance":(t==="#ff3232"||t==="#ff0000"||t==="#f87171")&&(e="warning");let r=i.match(/^(\p{Emoji_Presentation}|\p{Extended_Pictographic})\s*/u),n=r?r[1]:"",o=r?i.slice(r[0].length):i,h=o.indexOf(":"),c=h!==-1?o.slice(0,h).trim():o.trim(),l=h!==-1?o.slice(h+1).trim():"";this.triggerAlert({icon:n,title:c,subtitle:l,category:e})},_updateStatWithPulse(i,t,e,r,n=""){i&&this._oldStats[t]!==e&&(i.textContent=`${r} ${e}${n}`,this._uiScales[t]=1.15,this._uiGlows[t]=1,this._oldStats[t]=e)},_updateUIStats(){if(this._UI){if(this._updateStatWithPulse(this._UI.naama,"naama",this.activeNaam,"\u0950"),this._UI?.punya){let i=this._pendingGoodKarma?` \u23F1${Math.ceil(this._punyaTimer/60)}s`:"",t=`\u{1F33F} ${this.shuvhaKarma}${i}`;this._UI.punya.textContent!==t&&(this._UI.punya.textContent=t,this._uiScales.punya=1.15,this._uiGlows.punya=1,this._oldStats.punya=this.shuvhaKarma)}if(this._updateStatWithPulse(this._UI.paap,"paap",this.ashuvhaKarma,"\u{1F940}"),this._UI?.prarabdha){let i=this.prarabdhaTimer>0?` \u23F1${Math.ceil(this.prarabdhaTimer/60)}s`:"",t=`\u{1F4DC} ${this.prarabdha}${i}`;this._UI.prarabdha.textContent!==t&&(this._UI.prarabdha.textContent=t,this._uiScales.prarabdha=1.15,this._uiGlows.prarabdha=1,this._oldStats.prarabdha=this.prarabdha)}this._updateStatWithPulse(this._UI.samarpita,"samarpita",this.samarpita,"\u{1F64F}",` / ${ot}`),this._updateStatWithPulse(this._UI.punaraJanma,"punaraJanma",this.punaraJanmaCount,"\u267B\uFE0F"),this._updateStatWithPulse(this._UI.kripa,"kripa",this.kripa,"\u270B"),this._updateStatWithPulse(this._UI.shankha,"shankha",this.shankha,"\u{1F41A}"),this._updateStatWithPulse(this._UI.jyoti,"jyoti",this.jyoti,"\u{1FA94}"),this._updateStatWithPulse(this._UI.chetana,"chetana",this.chetanaaJaagrita?"\u{1F441}\uFE0F":"\u{1F634}",""),this._updateStatWithPulse(this._UI.drishti,"drishti",this.ashuvhaKarma>=3?"\u26AB":"\u2600\uFE0F",""),this._updateStatWithPulse(this._UI.purnaSamarpana,"purnaSamarpana",this.purnaSamarpana?"\u{1F64C}":"\u{1F932}","")}},_updateHUDAnimations(i){let t=["purnaSamarpana","naama","punya","paap","prarabdha","samarpita","punaraJanma","gatee","chetana","shankha","drishti","jyoti","kripa"];for(let e of t){Math.abs(this._uiScales[e]-1)>.001&&(this._uiScales[e]+=(1-this._uiScales[e])*.15*i,Math.abs(this._uiScales[e]-1)<.01&&(this._uiScales[e]=1)),this._uiGlows[e]>0&&(this._uiGlows[e]-=.025*i,this._uiGlows[e]<0&&(this._uiGlows[e]=0));let r=this._UI?.[e];if(r){let n=this._uiGlows[e]*15,o=`scale(${this._uiScales[e].toFixed(4)})`,h=n<.1?"":`0 0 ${n.toFixed(1)}px currentColor`;r._lastTransform!==o&&(r.style.transform=o,r._lastTransform=o),r._lastShadow!==h&&(r.style.boxShadow=h,r._lastShadow=h)}}},setContainerBorderColor(i){this.currentBorderColor!==i&&this._UI?.container&&(this._UI.container.style.borderColor=i,this.currentBorderColor=i)}};var ha=2880,ot=50,De=22,Le=1e3,Oe=160,Vt=20,Jt=30,nt=600,st=15,zt=160,Ue=.8,rt={naama:{width:36,height:36},kripa:{width:32,height:32},chakravaata:{width:32,height:32},shankha:{width:32,height:32},jyoti:{width:32,height:32},default:{width:20,height:24}},Ht={shankha:{icon:"\u{1F41A}",color:"#7dd3fc",sound:"shankhaPrapta",alert:"\u{1F41A} \u0936\u0902\u0916 \u092A\u094D\u0930\u093E\u092A\u094D\u0924: \u0935\u093F\u0915\u094D\u0937\u0947\u092A-\u0936\u092E\u0928 \u0939\u0947\u0924\u0941 \u0938\u0941\u0930\u0915\u094D\u0937\u093F\u0924 \u0930\u0916\u0947\u0902\u0964"},jyoti:{icon:"\u{1FA94}",color:"#ffe932",sound:"jyotiPrapta",alert:"\u{1FA94} \u091C\u094D\u092F\u094B\u0924\u093F \u092A\u094D\u0930\u093E\u092A\u094D\u0924: B \u0926\u092C\u093E\u0915\u0930 \u0905\u0902\u0927\u0915\u093E\u0930 \u092E\u0947\u0902 \u092A\u094D\u0930\u0915\u093E\u0936 \u092B\u0948\u0932\u093E\u090F\u0902\u0964"}},Ia=class{constructor(){this.WIDTH=600,this.HEIGHT=680,this.TUNNEL_X=210,this.TUNNEL_WIDTH=180,this.player={x:270,y:430,width:60,height:60,baseSpeed:8},this.shuvhaKarma=0,this.ashuvhaKarma=0,this.activeNaam=0,this.prarabdha=0,this.prarabdhaTimer=0,this.prarabdhaGatiModifier=1,this._currentGatiModifier=1,this._prarabdhaTimerPulseAccum=0,this.samarpita=0,this.punaraJanmaCount=0,this.isKarmaImmune=!1,this.kripa=0,this.shankha=0,this.jyoti=0,this.chetanaaJaagrita=!1,this.purnaSamarpana=!1,this.jaapaNaama="\u0930\u093E\u0927\u093E",this.isNaamaJaapa=!1,this.naamaGhera=0,this.naamaJaapaPower=0,this.samaya=ha,this.swaansa=10,this.swaansaTimer=0,this.swaansaSamapta=!1,this.gameOver=!1,this.isPaused=!1,this.won=!1,this.isShastraVisible=!1,this.wasAlreadyPaused=!1,this.smoothSize=60,this.bodyGlowTimer=0,this.bodyGlowColor="#ffffff",this.shakeTimer=0,this.naamaGlowTimer=0,this.playerInTunnel=!1,this.notifyTimer=0,this.notifyText="\u267B\uFE0F \u092A\u0935\u093F\u0924\u094D\u0930 \u092A\u0941\u0928\u0930\u094D\u091C\u0928\u094D\u092E",this.currentBorderColor="",this.glowRings={jyoti:{active:!1,radius:0,speed:18,maxRadius:420,strokeColor:"rgba(255, 233, 50, 0.85)",lineWidthMul:.004,shadowBlur:28,glowColor:"#ffe932",fillColor:"rgba(255, 233, 50, 0.05)"},shankha:{active:!1,radius:0,speed:18,maxRadius:420,strokeColor:"rgba(220, 240, 255, 0.85)",lineWidthMul:.004,shadowBlur:28,glowColor:"#ddf0ff",fillColor:"rgba(220, 240, 255, 0.04)"},kripa:{active:!1,radius:0,speed:22,maxRadius:420,strokeColor:"rgba(255, 215, 0, 0.85)",lineWidthMul:.005,shadowBlur:22,glowColor:"#ffd700",fillColor:"rgba(255, 215, 0, 0.06)"}},this.outerOrbits=[{count:0,color:"#32ff32",speed:.8,emoji:"\u{1F33F}"},{count:0,color:"#ff3232",speed:-.9,emoji:"\u{1F940}"},{count:0,color:"#a78bfa",speed:.6,emoji:"\u{1F4DC}",glowTimer:0},{count:0,color:"#ffffff",speed:1,emoji:"\u0950",glowTimer:0},{count:0,color:"#ffe9a8",speed:.7,emoji:"\u270B"},{count:0,color:"#7dd3fc",speed:.5,emoji:"\u{1F41A}"},{count:0,color:"#ffe932",speed:-.6,emoji:"\u{1FA94}"},{count:0,color:"#fb923c",speed:1.1,emoji:"\u{1F64F}",glowTimer:0},{count:0,color:"#f87171",speed:-.5,emoji:"\u267B\uFE0F"}],this.mayaPool=[],this.particlePool=[],this.glowEffectPool=[],this.floatingTextPool=[],this.stars=[],this.tunnelSparkles=[],this.chainSlots=[{active:!1,color:"",strength:0,isHeavy:!1},{active:!1,color:"",strength:0,isHeavy:!1},{active:!1,color:"",strength:0,isHeavy:!1}],this.finalHorsePositions=[{x:0,y:0},{x:0,y:0},{x:0,y:0},{x:0,y:0},{x:0,y:0},{x:0,y:0}],this.pulledHorseIndex=-1,this._pulledHorseX=0,this._pulledHorseY=0,this._pendingGoodKarma=!1,this._punyaTimer=0,this._pendingGoodKarmaCount=0,this._spawnTimer=0,this._prevGoodKarmaForSound=0,this._prevBadKarmaForSound=0,this._prevPrarabdhaForSound=0,this._prevPurnaSamarpana=!1,this._prevDrishtiClear=!0,this._prevPulledHorseIndex=-1,this._mayaConsumedWhilePulling=!1,this._prevActiveNaamForKripa=0,this._prevSamarpitaForKripa=0,this._naamaSinceLastKripa=0,this._samarpitaSinceLastKripa=0,this._timerSoundPlayed=!1,this._timerTickAccumulator=0,this._lastPrarabdhaAlertSecond=-1,this._prevSamaya200=!1,this._prevSamaya100Guided=!1,this._prevChetanaAlert=!1,this._chakravaataGuided=!1,this._samarpitaMilestones=new Set,this._oldStats={naama:-1,punya:-1,paap:-1,prarabdha:-1,samarpita:-1,punaraJanma:-1,gatee:"-1",kripa:-1,chetana:"",shankha:-1,drishti:"",purnaSamarpana:"",jyoti:-1},this._uiScales={naama:1,punya:1,paap:1,prarabdha:1,samarpita:1,punaraJanma:1,gatee:1,kripa:1,chetana:1,shankha:1,drishti:1,purnaSamarpana:1,jyoti:1},this._uiGlows={naama:0,punya:0,paap:0,prarabdha:0,samarpita:0,punaraJanma:0,gatee:0,kripa:0,chetana:0,shankha:0,drishti:0,purnaSamarpana:0,jyoti:0},this.alertQueue=[],this._nextAlertId=0,this._cb={},this._UI=null}setCallbacks(t){this._cb=t}setUI(t){this._UI=t}init(t,e,r,n){this.WIDTH=t,this.HEIGHT=e,this.TUNNEL_X=r,this.TUNNEL_WIDTH=n,this.player.x=t/2-30,this.player.y=e-250;for(let o=0;o<50;o++)this.mayaPool.push({active:!1,x:0,y:0,width:20,height:24,type:"ashuvha",isPulling:!1});for(let o=0;o<50;o++)this.particlePool.push({active:!1,x:0,y:0,vx:0,vy:0,radius:0,color:"#ffffff",alpha:0});for(let o=0;o<20;o++)this.glowEffectPool.push({active:!1,x:0,y:0,radius:0,maxRadius:0,color:"#ffffff",alpha:0});for(let o=0;o<25;o++)this.floatingTextPool.push({active:!1,x:0,y:0,text:"",color:"#ffffff",alpha:0,vy:0,isBigName:!1,_cachedTextWidth:void 0,_cachedText:""});for(let o=0;o<35;o++)this.stars.push({x:Math.random()*t,y:Math.random()*e,speed:Math.random()*1.5+.5,size:Math.random()*1+.3});for(let o=0;o<20;o++)this.tunnelSparkles.push({x:r+Math.random()*n,y:Math.random()*e,speed:Math.random()*1.2+.6,size:Math.random()*1.5+.5,alpha:Math.random()*.7+.3,fadeSpeed:.01+Math.random()*.02})}update(t,e,r){if(this.gameOver||this.isPaused||this.isShastraVisible)return;for(this._syncOrbitCounts(),!this.gameOver&&!this.chetanaaJaagrita&&this.samarpita>=ot&&(this.chetanaaJaagrita=!0,this.isKarmaImmune=!0,this._cb.playSound?.("chetana"),this._cb.stopSushuptiSwaansaLayer?.(),this._cb.startJaagritaSwaansaLayer?.(),this._addFloatingText("\u{1F441}\uFE0F","#ffffff",{yOffset:-10,alpha:1.5,vy:-3,isBigName:!0})),this.shuvhaKarma>0&&this._prevGoodKarmaForSound===0&&this._cb.playSound?.("punyaBandhana"),this.ashuvhaKarma>0&&this._prevBadKarmaForSound===0&&this._cb.playSound?.("paapaBandhana"),this.shuvhaKarma===0&&this._prevGoodKarmaForSound>0&&this._cb.playSound?.("bandhanaMukta"),this.ashuvhaKarma===0&&this._prevBadKarmaForSound>0&&this._cb.playSound?.("bandhanaMukta"),this._prevGoodKarmaForSound=this.shuvhaKarma,this._prevBadKarmaForSound=this.ashuvhaKarma,this.prarabdha>0&&this._prevPrarabdhaForSound===0&&this._cb.playSound?.("prarabdhaBandhana"),this.prarabdha===0&&this._prevPrarabdhaForSound>0&&this._cb.playSound?.("bandhanaMukta"),this._prevPrarabdhaForSound=this.prarabdha,this.activeNaam>this._prevActiveNaamForKripa&&(this._naamaSinceLastKripa+=this.activeNaam-this._prevActiveNaamForKripa),this._prevActiveNaamForKripa=this.activeNaam;this._naamaSinceLastKripa>=Vt;)this._naamaSinceLastKripa-=Vt,this._grantKripa(void 0,void 0,"naam"),this.outerOrbits[3]&&(this.outerOrbits[3].glowTimer=60);for(this.samarpita>this._prevSamarpitaForKripa&&(this._samarpitaSinceLastKripa+=this.samarpita-this._prevSamarpitaForKripa),this._prevSamarpitaForKripa=this.samarpita;this._samarpitaSinceLastKripa>=Jt;)this._samarpitaSinceLastKripa-=Jt,this._grantKripa(void 0,void 0,"samarpita"),this.outerOrbits[7]&&(this.outerOrbits[7].glowTimer=60);this.purnaSamarpana&&!this._prevPurnaSamarpana&&(this._cb.playSound?.("purnaSamarpana"),this._addFloatingText("\u{1F64C}","#ffe9a8",{alpha:1.5,vy:-3,isBigName:!0})),this._prevPurnaSamarpana=this.purnaSamarpana;let n=this.ashuvhaKarma<3;n&&!this._prevDrishtiClear&&(this._cb.playSound?.("drishti"),this._addFloatingText("\u2600\uFE0F","#ffe9a8",{alpha:1.5,vy:-3,isBigName:!0})),!n&&this._prevDrishtiClear&&(this._cb.playSound?.("andhakaara"),this._addFloatingText("\u26AB","#888888",{alpha:1.5,vy:-3,isBigName:!0}),this.jyoti>0?this._updateAlert("\u26AB \u0926\u0943\u0937\u094D\u091F\u093F \u0905\u0935\u0930\u0941\u0926\u094D\u0927: B \u0926\u092C\u093E\u090F\u0901 \u2014 \u091C\u094D\u092F\u094B\u0924\u093F \u0938\u0947 \u0905\u0902\u0927\u0915\u093E\u0930 \u092D\u0917\u093E\u090F\u0901\u0964","#ffe932"):this._updateAlert("\u26AB \u0926\u0943\u0937\u094D\u091F\u093F \u0905\u0935\u0930\u0941\u0926\u094D\u0927: \u091C\u094D\u092F\u094B\u0924\u093F \u0938\u0902\u0917\u094D\u0930\u0939 \u0915\u0930\u0947\u0902 \u2014 \u092A\u093E\u092A \u0915\u093E \u0905\u0902\u0927\u0915\u093E\u0930 \u092C\u0922\u093C\u093E\u0964","#888888")),this._prevDrishtiClear=n,this.samaya<200&&this.samaya>0&&!this.swaansaSamapta&&!this._prevSamaya200&&(this._prevSamaya200=!0,this._updateAlert("\u23F3 \u0938\u092E\u092F \u0938\u092E\u093E\u092A\u094D\u0924 \u0939\u094B\u0928\u0947 \u0935\u093E\u0932\u093E \u0939\u0948 \u2014 \u0936\u0940\u0918\u094D\u0930 \u0938\u092E\u0930\u094D\u092A\u0923 \u0915\u0930\u0947\u0902!","#ffd700")),this.samaya<100&&this.samaya>0&&!this.swaansaSamapta&&!this._prevSamaya100Guided&&(this._prevSamaya100Guided=!0,this.activeNaam>0&&this.playerInTunnel?this._updateAlert("\u{1F33F} \u0905\u0902\u0924\u093F\u092E \u091A\u0930\u0923: W \u0926\u092C\u093E\u090F\u0901 \u2014 \u0928\u093E\u092E \u0938\u092E\u0930\u094D\u092A\u0923 \u0915\u0930\u0947\u0902!","#32ff32"):this.activeNaam>0?this._updateAlert("\u{1F33F} \u0905\u0902\u0924\u093F\u092E \u091A\u0930\u0923: \u092D\u0915\u094D\u0924\u093F-\u092E\u093E\u0930\u094D\u0917 \u092E\u0947\u0902 \u091C\u093E\u090F\u0901, W \u0926\u092C\u093E\u090F\u0901\u0964","#ffd700"):this._updateAlert("\u26A0\uFE0F \u0905\u0902\u0924\u093F\u092E \u091A\u0930\u0923: \u0928\u093E\u092E \u0938\u0902\u0917\u094D\u0930\u0939 \u0928\u0939\u0940\u0902 \u2014 \u0950 \u090F\u0915\u0924\u094D\u0930 \u0915\u0930\u0947\u0902!","#ff3232")),this.chetanaaJaagrita&&!this._prevChetanaAlert&&(this._prevChetanaAlert=!0,this.triggerAlert({icon:"\u{1F441}\uFE0F",title:"\u091A\u0947\u0924\u0928\u093E \u091C\u093E\u0917\u0943\u0924!",subtitle:"\u0938\u093E\u0930\u0925\u0940 \u0928\u0947 \u092E\u093E\u092F\u093E \u0915\u093E \u092D\u0947\u0926 \u091C\u093E\u0928 \u0932\u093F\u092F\u093E\u0964",category:"achievement"}));let o=[10,25,50];for(let f of o)this.samarpita>=f&&!this._samarpitaMilestones.has(f)&&(this._samarpitaMilestones.add(f),this.triggerAlert({icon:"\u{1F64F}",title:`${f} \u0938\u092E\u0930\u094D\u092A\u093F\u0924!`,subtitle:f===50?"\u0905\u0926\u094D\u092D\u0941\u0924! \u092A\u0942\u0930\u094D\u0923 \u0935\u0948\u0930\u093E\u0917\u094D\u092F \u0915\u0940 \u0913\u0930\u0964":f===25?"\u0936\u093E\u092C\u093E\u0936! \u0928\u093F\u0937\u094D\u0915\u093E\u092E \u0915\u0930\u094D\u092E \u091C\u093E\u0930\u0940 \u0930\u0916\u0947\u0902\u0964":"\u092A\u094D\u0930\u0925\u092E \u092E\u0940\u0932 \u0915\u093E \u092A\u0924\u094D\u0925\u0930 \u2014 \u0938\u092E\u0930\u094D\u092A\u0923 \u0915\u093E \u092E\u093E\u0930\u094D\u0917 \u0916\u0941\u0932\u093E\u0964",category:"achievement"}));{let f=!1,d=this.player.x+this.smoothSize/2,S=this.player.y+this.smoothSize/2;for(let T=0;T0?this._updateAlert("\u{1F32A}\uFE0F \u091A\u0915\u094D\u0930\u0935\u093E\u0924 \u0928\u093F\u0915\u091F: Y \u0926\u092C\u093E\u090F\u0901 \u2014 \u0936\u0902\u0916-\u0927\u094D\u0935\u0928\u093F \u0938\u0947 \u0928\u0937\u094D\u091F \u0915\u0930\u0947\u0902!","#7dd3fc"):this._updateAlert("\u{1F32A}\uFE0F \u091A\u0915\u094D\u0930\u0935\u093E\u0924 \u0928\u093F\u0915\u091F: \u0936\u0902\u0916 \u0938\u0902\u0917\u094D\u0930\u0939 \u0915\u0930\u0947\u0902 \u2014 \u0905\u092D\u0940 \u0938\u0941\u0930\u0915\u094D\u0937\u093E \u0928\u0939\u0940\u0902\u0964","#aaaaaa")),f||(this._chakravaataGuided=!1)}this.notifyTimer>0&&(this.notifyTimer-=t,this.notifyTimer<0&&(this.notifyTimer=0));let h=this.player.baseSpeed*t;(e.arrowleft||e.a)&&(this.player.x-=h),(e.arrowright||e.d)&&(this.player.x+=h),this.player.x=Math.max(0,Math.min(this.WIDTH-this.player.width,this.player.x)),this.playerInTunnel=this._isPlayerInsideTunnel();let c=this.smoothSize/2,l=this.player.x+c,p=this.player.y+c,y=!1;this.pulledHorseIndex=-1;for(let f=0;fS&&(this.player.x-=1.8*t)}}}this.pulledHorseIndex!==-1&&this._prevPulledHorseIndex===-1?this._cb.playSound?.("aakarshana"):this.pulledHorseIndex===-1&&this._prevPulledHorseIndex!==-1&&(this._mayaConsumedWhilePulling||this._cb.playSound?.("tyaaga"),this._mayaConsumedWhilePulling=!1),this._prevPulledHorseIndex=this.pulledHorseIndex;let E=2.2;for(let f=0;f0){let O=(1-w/zt)*Ue;this.player.x+=(S-l)*O*t}}if(this.player.x=Math.max(0,Math.min(this.WIDTH-this.player.width,this.player.x)),this.isNaamaJaapa){this.naamaGhera+=De*t;let f=!1;for(let d=0;dLe&&(this.isNaamaJaapa=!1,this.naamaGhera=0,this._updateAlert("\u{1F33F} \u0928\u093E\u092E \u091C\u092A\u0924 \u092E\u0902\u0917\u0932 \u0926\u093F\u0938\u093F \u0926\u0938\u0939\u0942\u0901\u0965","#ffd700"),this.naamaJaapaPower=0)}if(this._updateGlowRing(this.glowRings.jyoti,t),this._updateGlowRing(this.glowRings.shankha,t,f=>{let d=!1;for(let S=0;S0?this.prarabdhaGatiModifier:1;if(this.swaansaSamapta)this._checkMokhsha();else{this.samaya-=.8*I*N*t,this.swaansaTimer+=t,this.swaansaTimer>=360&&(this.swaansaTimer-=360,this.swaansa>0&&this.swaansa--);let f=`${Math.max(0,Math.ceil(this.samaya))}s`,d=`${Math.max(0,Math.ceil(this.swaansa))}`;this._UI?.samayaVal?.innerText!==f&&this._UI?.samayaVal&&(this._UI.samayaVal.innerText=f),this._UI?.swaansaVal?.innerText!==d&&this._UI?.swaansaVal&&(this._UI.swaansaVal.innerText=d);let S=(I*N*K*100).toFixed(0);this._updateStatWithPulse(this._UI?.gatee,"gatee",S,"\u26A1","%"),this.samaya<=0&&(this.samaya=0,this.swaansa=0,this.swaansaSamapta=!0,this._updateAlert("\u{1F549}\uFE0F \u092C\u094D\u0930\u0939\u094D\u092E\u093E\u0902\u0921\u0940\u092F \u0915\u094D\u0937\u093F\u0924\u093F\u091C: \u0938\u092E\u092F \u0938\u094D\u0925\u093F\u0930 \u0939\u0948 \u2014 \u0928\u093F\u0930\u094D\u0923\u092F \u0915\u093E \u0915\u094D\u0937\u0923\u0964","#ffffff"))}let L=this.samaya<100&&this.samaya>0&&!this.swaansaSamapta,ea=L||this._pendingGoodKarma;L&&!this._timerSoundPlayed&&(this._timerSoundPlayed=!0,this._cb.playSound?.("antimaCharana")),ea?(this._timerTickAccumulator+=t,this._timerTickAccumulator>=60&&(this._timerTickAccumulator-=60,this._cb.playSound?.("timer"))):this._timerTickAccumulator=0,this.stars.forEach(f=>{this.swaansaSamapta||(f.y+=f.speed*(I*N*K+.1)*t,f.y>this.HEIGHT&&(f.y=0,f.x=Math.random()*this.WIDTH))}),this.tunnelSparkles.forEach(f=>{this.swaansaSamapta||(f.y-=f.speed*(I*N*K+.2)*t,f.alpha+=f.fadeSpeed*t,(f.alpha>.9||f.alpha<.2)&&(f.fadeSpeed=-f.fadeSpeed),f.y<0&&(f.y=this.HEIGHT,f.x=this.TUNNEL_X+Math.random()*this.TUNNEL_WIDTH,f.alpha=Math.random()*.5+.2))});for(let f=0;f=d.maxRadius)&&(d.active=!1))}for(let f=0;fWa&&(this._spawnTimer=0,this._spawnMaya());let ja=Math.max(1.2,4*I*N);for(let f=0;fthis.HEIGHT){d.active=!1;continue}let S=d.xthis.player.x,T=d.ythis.player.y;if(S&&T){if(d.isPulling&&(this._mayaConsumedWhilePulling=!0),this.isKarmaImmune){this._createExplosion(d.x+d.width/2,d.y+d.height/2,"#ffffff"),this._addFloatingText("\u{1F64F}","#fb923c",{x:d.x+d.width/2,y:d.y+d.height/2}),this.samarpita++,this._cb.playSound?.("samarpita"),d.active=!1;continue}this.shakeTimer=8,this._handlePlayerMayaCollision(d,l)}}if(this.shakeTimer>0&&(this.shakeTimer-=t),this.naamaGlowTimer>0&&(this.naamaGlowTimer-=t),this.bodyGlowTimer>0&&(this.bodyGlowTimer-=t),this.outerOrbits[3]?.glowTimer>0&&(this.outerOrbits[3].glowTimer-=t),this.outerOrbits[7]?.glowTimer>0&&(this.outerOrbits[7].glowTimer-=t),this.outerOrbits[2]?.glowTimer>0&&(this.outerOrbits[2].glowTimer-=t),this.prarabdhaTimer>0){this._prarabdhaTimerPulseAccum+=t,this._prarabdhaTimerPulseAccum>=60&&(this._prarabdhaTimerPulseAccum-=60,this.outerOrbits[2]&&(this.outerOrbits[2].glowTimer=18));let f=this.prarabdha;this.prarabdhaTimer=Math.max(0,this.prarabdhaTimer-t);let d=this.prarabdhaTimer>0?Math.ceil(this.prarabdhaTimer/nt):0;d0?(this._createExplosion(this.player.x+this.player.width/2,this.player.y+this.player.height/2,"#a78bfa"),this._addFloatingText("-\u{1F4DC}","#a78bfa",{vy:-2.5,isBigName:!0}),this._updateAlert(`\u{1F4DC}\u{1F525} \u090F\u0915 \u092A\u094D\u0930\u093E\u0930\u092C\u094D\u0927 \u092D\u094B\u0917 \u0932\u093F\u092F\u093E \u2014 ${this.prarabdha} \u0936\u0947\u0937`,"#a78bfa"),this._cb.playSound?.("bandhanaMukta")):(this.prarabdhaTimer=0,this._createExplosion(this.player.x+this.player.width/2,this.player.y+this.player.height/2,"#e879f9"),this._addFloatingText("\u{1F4DC}\u{1F525} \u092E\u0941\u0915\u094D\u0924!","#e879f9",{vy:-2.8,isBigName:!0}),this._updateAlert("\u{1F4DC}\u{1F525} \u092A\u094D\u0930\u093E\u0930\u092C\u094D\u0927 \u0938\u0947 \u092E\u0941\u0915\u094D\u0924\u093F \u2014 \u092A\u0942\u0930\u094D\u0923 \u092D\u094B\u0917 \u0938\u0902\u092A\u0928\u094D\u0928!","#a78bfa"),this._cb.playSound?.("bandhanaMukta"),this._triggerGlow("#e879f9")))}this.smoothSize+=((this.playerInTunnel?30:60)-this.smoothSize)*.18*t;for(let T=this.alertQueue.length-1;T>=0;T--){let w=this.alertQueue[T];w.age+=t,w.age<12?w.opacity=w.age/12:w.age<120?w.opacity=1:w.opacity=Math.max(0,1-(w.age-12-108)/30),w.slideX=Math.max(0,80*(1-Math.min(1,w.age/12))),w.age>=w.maxAge&&this.alertQueue.splice(T,1)}this._updateHUDAnimations(t),this._updateUIStats()}toggleShastra(){this._UI?.viraamaOverlay?.style.display==="flex"&&(this._UI.viraamaOverlay.style.display="none"),this.isShastraVisible=!this.isShastraVisible,this._UI?.shastraOverlay&&(this._UI.shastraOverlay.style.display=this.isShastraVisible?"flex":"none"),this.isShastraVisible?(this.wasAlreadyPaused=this.isPaused,this.isPaused=!0,this._cb.playSound?.("viraama")):(this.wasAlreadyPaused?(this.isPaused=!0,this._UI?.viraamaOverlay&&(this._UI.viraamaOverlay.style.display="flex"),this._cb.playSound?.("viraama")):(this.isPaused=!1,this._cb.playSound?.("resume")),this.wasAlreadyPaused=!1),this._cb.updateAmbientVolumes?.()}showEndScreen(t="EVALUATING"){this._UI?.viraamaOverlay&&(this._UI.viraamaOverlay.style.display="none"),this._UI?.overlay&&(this._UI.overlay.style.display="flex"),t==="FORCE STOPPED"?(this._UI?.overlayTitle&&(this._UI.overlayTitle.innerText="\u{1F6D1} \u092A\u094D\u0930\u0932\u092F \u{1F6D1}",this._UI.overlayTitle.style.fontFamily="'Noto Sans Devanagari', sans-serif",this._UI.overlayTitle.style.color="#ff3232"),this._UI?.overlaySubtitle&&(this._UI.overlaySubtitle.innerHTML=`\u092F\u093E\u0924\u094D\u0930\u093E \u0930\u0926\u094D\u0926:
\u0938\u093E\u0930\u0925\u0940 \u0928\u0947 \u0930\u0925 \u0915\u094B \u092C\u0940\u091A \u092E\u0947\u0902 \u0939\u0940 \u091B\u094B\u0921\u093C \u0926\u093F\u092F\u093E\u0964
\u091A\u093F\u0924\u094D\u0924 \u0915\u0940 \u0905\u0935\u0938\u094D\u0925\u093E: \u092A\u0941\u0923\u094D\u092F: ${this.shuvhaKarma} | \u092A\u093E\u092A: ${this.ashuvhaKarma}

\u0906\u0924\u094D\u092E\u093E \u0905\u092A\u094D\u0930\u0915\u091F \u0905\u0902\u0927\u0915\u093E\u0930\u092E\u092F \u0938\u094D\u0925\u093E\u0928 \u092E\u0947\u0902 \u092B\u0902\u0938\u0940 \u0930\u0939\u0924\u0940 \u0939\u0948\u0964
\u0905\u0924\u0903, \u0918\u094B\u0921\u093C\u0947 \u0906\u0924\u094D\u092E\u093E \u0915\u094B \u0938\u0902\u0938\u093E\u0930 \u092E\u0947\u0902 \u090F\u0915 \u0928\u090F \u0936\u0930\u0940\u0930 \u0915\u0940 \u0913\u0930 \u0916\u0940\u0902\u091A \u0932\u0947 \u091C\u093E\u0924\u0947 \u0939\u0948\u0902\u0964

\u267B\uFE0F \u092A\u0941\u0928\u0930\u094D\u091C\u0928\u094D\u092E: ${this.punaraJanmaCount}

Developed by Weired Codes
`)):this.won?(this._UI?.overlayTitle&&(this._UI.overlayTitle.innerText="\u{1F4A5} \u092E\u094B\u0915\u094D\u0937 \u{1F4A5}",this._UI.overlayTitle.style.color="#ffffff"),this._UI?.overlaySubtitle&&(this._UI.overlaySubtitle.innerHTML=`
\u0906\u092A\u0915\u094B \u092A\u0941\u0928\u0903 \u091C\u0928\u094D\u092E \u0932\u0947\u0928\u0947 \u0915\u0940 \u0906\u0935\u0936\u094D\u092F\u0915\u0924\u093E \u0928\u0939\u0940\u0902 \u0939\u0948\u0964 \u092F\u0939 \u0938\u0902\u0938\u093E\u0930 \u090F\u0915 \u092E\u093E\u092F\u093E \u091C\u093E\u0932 \u0939\u0948, \u091C\u093F\u0938\u0938\u0947 \u0906\u092A\u0928\u0947 \u0905\u0902\u0924\u0924\u0903 \u092E\u0941\u0915\u094D\u0924\u093F \u092A\u093E \u0932\u0940 \u0939\u0948\u0964
\u0906\u092A\u0928\u0947 \u091C\u0928\u094D\u092E-\u092E\u0930\u0923 \u0915\u0947 \u0907\u0938 \u0916\u0947\u0932 \u092A\u0930 \u0935\u093F\u091C\u092F \u092A\u094D\u0930\u093E\u092A\u094D\u0924 \u0915\u0930 \u0932\u0940 \u0939\u0948\u0964
\u0917\u0941\u0923\u094B\u0902 \u0914\u0930 \u0915\u0930\u094D\u092E\u094B\u0902 \u0938\u0947 \u092A\u0930\u0947
\u0905\u0926\u094D\u092D\u0941\u0924 \u0905\u0928\u0941\u092D\u0942\u0924\u093F! \u0938\u093E\u0930\u0925\u0940 \u0928\u0947 \u0907\u0902\u0926\u094D\u0930\u093F\u092F\u094B\u0902 \u0930\u0942\u092A\u0940 \u0918\u094B\u0921\u093C\u094B\u0902 \u0915\u094B \u0938\u094D\u0925\u093F\u0930 \u0930\u0916\u093E \u0914\u0930 \u092E\u0928 \u0915\u094B \u092A\u0942\u0930\u094D\u0923\u0924\u0903 \u0906\u0938\u0915\u094D\u0924\u093F \u092E\u0941\u0915\u094D\u0924 \u0915\u0930 \u0926\u093F\u092F\u093E\u0964


Developed by Weired Codes
`),this._cb.playSound?.("vijaya")):(this._UI?.overlayTitle&&(this._UI.overlayTitle.innerText="\u0938\u0902\u0938\u093E\u0930 \u092E\u0947\u0902 \u092A\u0941\u0928\u0930\u094D\u091C\u0928\u094D\u092E",this._UI.overlayTitle.style.color="#ff3232"),this._UI?.overlaySubtitle&&(this._UI.overlaySubtitle.innerHTML="\u092E\u094B\u0939 \u0915\u0940 \u0932\u0917\u093E\u092E:
"+(this.ashuvhaKarma>0?`\u0906\u092A\u0915\u0947 (${this.ashuvhaKarma}) \u092A\u093E\u092A\u094B\u0902 \u0928\u0947 \u0938\u093E\u0930\u0925\u0940 \u0915\u094B \u0905\u0902\u0927\u093E \u0915\u0930 \u0926\u093F\u092F\u093E\u0964
`:"")+(this.shuvhaKarma>0?`\u0906\u092A\u0915\u0947 (${this.shuvhaKarma}) \u092A\u0941\u0923\u094D\u092F\u094B\u0902 \u092E\u0947\u0902 \u092E\u0928 \u0906\u0938\u0915\u094D\u0924 \u0939\u094B \u0917\u092F\u093E\u0964
`:"")+`
\u0918\u094B\u0921\u093C\u0947 \u0906\u0924\u094D\u092E\u093E \u0915\u094B \u0928\u090F \u0936\u0930\u0940\u0930 \u0915\u0940 \u0913\u0930 \u0932\u0947 \u091C\u093E\u0924\u0947 \u0939\u0948\u0902\u0964

\u267B\uFE0F \u092A\u0941\u0928\u0930\u094D\u091C\u0928\u094D\u092E: ${this.punaraJanmaCount}

Developed by Weired Codes
`))}reset(){this.prarabdha=0,this.prarabdhaTimer=0,this.shuvhaKarma=0,this.ashuvhaKarma=0,this.prarabdhaGatiModifier=1,this._currentGatiModifier=1,this.activeNaam=0,this.samarpita=0,this.punaraJanmaCount=0,this.isKarmaImmune=!1,this.kripa=0,this.shankha=0,this.jyoti=0,this.alertQueue=[],this._nextAlertId=0,this.outerOrbits[2]&&(this.outerOrbits[2].glowTimer=0),this.samaya=ha,this.swaansa=10,this._UI?.samayaVal&&(this._UI.samayaVal.innerText=`${ha}s`),this._UI?.swaansaVal&&(this._UI.swaansaVal.innerText="10"),this.chetanaaJaagrita=!1,this.purnaSamarpana=!1,this._prevPurnaSamarpana=!1,this._prevDrishtiClear=!0,this._prevGoodKarmaForSound=0,this._prevBadKarmaForSound=0,this._prevPrarabdhaForSound=0,this._prevActiveNaamForKripa=0,this._prevSamarpitaForKripa=0,this._naamaSinceLastKripa=0,this._samarpitaSinceLastKripa=0,this._prevPulledHorseIndex=-1,this._mayaConsumedWhilePulling=!1,this._timerSoundPlayed=!1,this._timerTickAccumulator=0,this._lastPrarabdhaAlertSecond=-1,this._prevSamaya200=!1,this._prevSamaya100Guided=!1,this._prevChetanaAlert=!1,this._chakravaataGuided=!1,this._samarpitaMilestones=new Set,this.swaansaTimer=0,this.gameOver=!1,this.isPaused=!1,this.won=!1,this.swaansaSamapta=!1,this._spawnTimer=0,this._pendingGoodKarma=!1,this._pendingGoodKarmaCount=0,this._punyaTimer=0,this.pulledHorseIndex=-1,this._pulledHorseX=0,this._pulledHorseY=0,this.naamaGlowTimer=0,this.bodyGlowTimer=0,this.smoothSize=60,this.isNaamaJaapa=!1,this.naamaGhera=0,this.naamaJaapaPower=0,this.outerOrbits[3]&&(this.outerOrbits[3].glowTimer=0),this.outerOrbits[7]&&(this.outerOrbits[7].glowTimer=0),this._resetAllGlowRings();for(let t=0;t{this._isAudioPreloadDone=!0,this._checkReadiness()})}catch(t){console.warn("\u26A0\uFE0F \u0911\u0921\u093F\u092F\u094B-\u092A\u094D\u0930\u0940\u0932\u094B\u0921 \u092A\u094D\u0930\u093E\u0930\u0902\u092D \u0928\u0939\u0940\u0902 \u0939\u094B \u0938\u0915\u093E:",t),this._isAudioPreloadDone=!0,this._checkReadiness()}this._readinessTimeoutId=setTimeout(()=>{console.warn("\u26A0\uFE0F \u0924\u0924\u094D\u092A\u0930\u0924\u093E-\u0938\u092E\u092F-\u0938\u0940\u092E\u093E (6s) \u092A\u093E\u0930 \u0939\u094B \u0917\u0908 \u2014 Low Mode \u092E\u0947\u0902 \u0906\u0917\u0947 \u092C\u0922\u093C \u0930\u0939\u0947 \u0939\u0948\u0902"),this._isAudioPreloadDone=!0,this._finalizeReadiness()},6e3)}notifyReadiness(){this._checkReadiness()}ensureAudio(){try{if(!this.audioCtx){let t=window.AudioContext||window.webkitAudioContext;if(!t)return;this.audioCtx=new t,setTimeout(()=>this._loadAllAudioBuffers(),0)}this.audioCtx.state==="suspended"&&this.audioCtx.resume(),this.audioUnlocked=!0,this.startBackgroundMusic()}catch(t){console.warn("\u26A0\uFE0F Audio init failed:",t)}}setSwaansaPulse(t){this.swaansaPulseGlobal=t}setMasterVolume(t){this.bgMusicVolume=Math.max(0,Math.min(1,t/100))}toggleBgMusic(){this.bgMusicMuted=!this.bgMusicMuted;let t=document.getElementById("music-toggle-btn");t&&(t.textContent=this.bgMusicMuted?"\u{1F507}":"\u{1F50A}"),this.updateAmbientVolumes()}playSound(t){$t.has(t)&&this.duckBackgroundMusic($t.get(t));let e=this.audioBuffers,r=this.audioCtx;if(r)switch(t){case"shuvha":this._playTone(523.25,.07,"triangle",.035,783.99),this._vibrate?.(.15,.1,90);break;case"ashuvha":this._playTone(155.56,.1,"sawtooth",.03,92.5),this._vibrate?.(.5,.7,160);break;case"ashuvhaPrahaar":this._playTone(100,.2,"square",.015,140),this._vibrate?.(.3,.2,80);break;case"jaapa":e.jaapaDhwani?this._playBufferedSound(e.jaapaDhwani,r.destination,.6):this._playTone(880,.09,"sine",.03,1320),this._vibrate?.(.1,.05,50);break;case"naamaSamarpita":e.naamaSamarpita?this._playBufferedSound(e.naamaSamarpita,r.destination,.6):this._playTone(880,.09,"sine",.03,1320),this._vibrate?.(.1,.05,50);break;case"purnaSamarpana":e.purnaSamarpana?this._playBufferedSound(e.purnaSamarpana,r.destination,.65):this._playTone(987.77,.14,"sine",.04,1567.98),this._vibrate?.(.2,.25,130);break;case"drishti":e.drishti?this._playBufferedSound(e.drishti,r.destination,.55):this._playTone(880,.1,"sine",.03,1318.51),this._vibrate?.(.1,.08,60);break;case"andhakaara":e.andhakaara?this._playBufferedSound(e.andhakaara,r.destination,.55):this._playTone(196,.12,"sawtooth",.03,130.81),this._vibrate?.(.18,.12,90);break;case"shankhaDhwani":e.shankhaDhwani?this._playBufferedSound(e.shankhaDhwani,r.destination,.65):this._playTone(523.25,.12,"sine",.04,783.99),this._vibrate?.(.2,.25,120);break;case"shankhaPrapta":e.shankhaPrapta?this._playBufferedSound(e.shankhaPrapta,r.destination,.6):this._playTone(700,.1,"sine",.035,1e3),this._vibrate?.(.12,.1,70);break;case"jyotiDhwani":e.jyotiDhwani?this._playBufferedSound(e.jyotiDhwani,r.destination,.6):this._playTone(659.25,.12,"triangle",.04,987.77),this._vibrate?.(.15,.18,100);break;case"jyotiPrapta":e.jyotiPrapta?this._playBufferedSound(e.jyotiPrapta,r.destination,.6):this._playTone(740,.1,"triangle",.035,1050),this._vibrate?.(.12,.1,70);break;case"kripa":e.kripaDhwani?this._playBufferedSound(e.kripaDhwani,r.destination,.6):this._playTone(1046.5,.15,"sine",.04,1318.51),this._vibrate?.(.15,.2,80);break;case"antimaCharana":if(e.antimaCharana){let n=r.currentTime,o=r.createBufferSource();o.buffer=e.antimaCharana;let h=r.createGain(),c=.35,l=o.buffer.duration;h.gain.setValueAtTime(1e-4,n),h.gain.exponentialRampToValueAtTime(c,n+.08);let p=Math.max(n+.08,n+l-.15);h.gain.setValueAtTime(c,p);let y=Math.max(p+.02,n+l-.02);h.gain.exponentialRampToValueAtTime(1e-4,y),o.connect(h),h.connect(r.destination),o.start(n)}else console.warn("\u26A0\uFE0F antimaCharana.mp3 \u0932\u094B\u0921 \u0928\u0939\u0940\u0902 \u0939\u0941\u0908 \u2014 ./audio/antimaCharana.mp3 path \u091C\u093E\u0901\u091A\u0947\u0902");this._vibrate?.(.25,.3,140);break;case"samarpita":{let n=performance.now();n-this._lastSamarpitaSoundTime>=90&&(this._lastSamarpitaSoundTime=n,e.samarpita?this._playBufferedSound(e.samarpita,r.destination,.6):(this._playTone(659.25,.12,"triangle",.04,987.77),setTimeout(()=>this._playTone(987.77,.08,"sine",.025,1318.51),55))),this._vibrate?.(.2,.15,100);break}case"aakarshana":e.aakarshana?this._playBufferedSound(e.aakarshana,r.destination,.5):this._playTone(440,.07,"sine",.025,660),this._vibrate?.(.08,.05,40);break;case"tyaaga":e.tyaaga?this._playBufferedSound(e.tyaaga,r.destination,.5):this._playTone(392,.08,"square",.025,329.63),this._vibrate?.(.1,.06,60);break;case"punaha":e.punarJanma?this._playBufferedSound(e.punarJanma,r.destination,.7):(this._playTone(329.63,.06,"triangle",.025,523.25),setTimeout(()=>this._playTone(659.25,.07,"triangle",.025,987.77),60)),this._vibrate?.(.6,.85,280);break;case"takraava":e.pralaya?this._playBufferedSound(e.pralaya,r.destination,.7):this._playTone(110,.08,"square",.03,82.41),this._vibrate?.(.6,.9,220);break;case"vijaya":e.moksha?this._playBufferedSound(e.moksha,r.destination,.7):(this._playTone(523.25,.12,"sine",.03,783.99),setTimeout(()=>this._playTone(659.25,.12,"sine",.03,987.77),70),setTimeout(()=>this._playTone(783.99,.14,"sine",.03,1174.66),140)),this._vibrate?.(.3,.3,150),setTimeout(()=>this._vibrate?.(.3,.3,150),200),setTimeout(()=>this._vibrate?.(.4,.5,300),400);break;case"chetana":if(e.chetanaJaagrita){let n=r.currentTime,o=r.createBufferSource();o.buffer=e.chetanaJaagrita;let h=r.createGain();h.gain.setValueAtTime(1e-4,n),h.gain.exponentialRampToValueAtTime(.7,n+.05),o.connect(h),h.connect(r.destination),o.start(n)}else console.warn("\u26A0\uFE0F chetanaJaagrita.mp3 \u0932\u094B\u0921 \u0928\u0939\u0940\u0902 \u0939\u0941\u0908 \u2014 ./audio/chetanaJaagrita.mp3 path \u091C\u093E\u0901\u091A\u0947\u0902");break;case"timer":e.timer&&this._playBufferedSound(e.timer,r.destination,.6);break;case"prarabdhaBandhana":e.prarabdhaBandhana&&this._playBufferedSound(e.prarabdhaBandhana,r.destination,.6);break;case"paapaBandhana":e.paapaBandhana&&this._playBufferedSound(e.paapaBandhana,r.destination,.6);break;case"punyaBandhana":e.punyaBandhana&&this._playBufferedSound(e.punyaBandhana,r.destination,.6);break;case"bandhanaMukta":e.bandhanaMukta&&this._playBufferedSound(e.bandhanaMukta,r.destination,.6);break;case"naama":e.naamaDhwani?this._playBufferedSound(e.naamaDhwani,r.destination,.6):this._playTone(880,.09,"sine",.03,1320),this._vibrate?.(.1,.05,50);break;case"viraama":this._playTone(220,.05,"sine",.02,196);break;case"resume":this._playTone(196,.05,"sine",.02,220);break;default:break}}duckBackgroundMusic(t){t>this._duckLevel&&(this._duckLevel=t)}updateDuckDecay(){if(!this.audioCtx)return;let t=this.audioCtx.currentTime;if(this._lastDuckCheckTime===0){this._lastDuckCheckTime=t;return}let e=t-this._lastDuckCheckTime;this._lastDuckCheckTime=t,this._duckLevel>0&&(this._duckLevel-=1.8*e,this._duckLevel<0&&(this._duckLevel=0))}updateAmbientVolumes(){if(!this._bgMasterGain||(this._bgMasterGain.gain.value=this.bgMusicMuted?0:1,this.bgMusicMuted))return;let t=this._duckLevel,e=this.bgMusicVolume,r=this.swaansaPulseGlobal,n=this.audioCtx,o=1-t*.75,h=1-t*.15,c=1-t*.55,l=1-t*.2,p=this._isActiveGameplay();if(this._bgMusicMp3Gain&&(this._bgMusicMp3Gain.gain.value=.01*o*e),this._shathendriyaGain){let y=.16*h*e*(p?1:0);this._shathendriyaGain.gain.setTargetAtTime(y,n.currentTime,.08)}if(this._jaagritaSwaansaGain){let m=.22*(.7+r*.3)*c*e*(p?1:0);this._jaagritaSwaansaGain.gain.setTargetAtTime(m,n.currentTime,.08)}if(this._sushuptiSwaansaGain){let m=1*(.7+r*.3)*l*e*(p?1:0);this._sushuptiSwaansaGain.gain.setTargetAtTime(m,n.currentTime,.08)}}startBackgroundMusic(){if(this._bgMusicStarted||!this.audioCtx)return;this._bgMusicStarted=!0,this._bgMasterGain=this.audioCtx.createGain(),this._bgMasterGain.gain.setValueAtTime(this.bgMusicMuted?0:1,this.audioCtx.currentTime),this._bgMasterGain.connect(this.audioCtx.destination),this._startBgMusicMp3Layer(),this._startRunningHorsesLayer(),this._getGameState?.()?.chetanaaJaagrita||this._startSushuptiSwaansaLayer()}onChetanaaJaagrita(){this.stopSushuptiSwaansaLayer(),this._startJaagritaSwaansaLayer()}stopJaagritaSwaansaLayer(){if(this._jaagritaSwaansaSourceNode){try{this._jaagritaSwaansaSourceNode.stop()}catch{}this._jaagritaSwaansaSourceNode.disconnect(),this._jaagritaSwaansaSourceNode=null}this._jaagritaSwaansaGain=null}startJaagritaSwaansaLayer(){this._startJaagritaSwaansaLayer()}startSushuptiSwaansaLayer(){this._startSushuptiSwaansaLayer()}stopSushuptiSwaansaLayer(){if(this._sushuptiSwaansaSourceNode){try{this._sushuptiSwaansaSourceNode.stop()}catch{}this._sushuptiSwaansaSourceNode.disconnect(),this._sushuptiSwaansaSourceNode=null}this._sushuptiSwaansaGain=null}_isActiveGameplay(){let t=this._getGameState?.();return t?t.isGameStarted&&!t.gameOver&&!t.won&&!t.isPaused&&!t.isShastraVisible:!1}_playTone(t,e=.08,r="sine",n=.04,o=null){if(!this.audioUnlocked||!this.audioCtx)return;let h=this.audioCtx,c=h.currentTime,l=h.createOscillator(),p=h.createGain();l.type=r,l.frequency.setValueAtTime(t,c),o!==null&&l.frequency.exponentialRampToValueAtTime(Math.max(1,o),c+e),p.gain.setValueAtTime(1e-4,c),p.gain.exponentialRampToValueAtTime(n,c+.01),p.gain.exponentialRampToValueAtTime(1e-4,c+e),l.connect(p),p.connect(h.destination),l.start(c),l.stop(c+e+.03)}_playBufferedSound(t,e,r=.6,n=!1){if(!this.audioCtx||!t)return null;let o=this.audioCtx,h=o.createBufferSource();h.buffer=t,h.loop=n;let c=o.createGain();return c.gain.setValueAtTime(r,o.currentTime),h.connect(c),c.connect(e||o.destination),h.start(0),{source:h,gainNode:c}}_checkReadiness(){this._isGameFullyReady||this._isAudioPreloadDone&&this._finalizeReadiness()}_finalizeReadiness(){this._isGameFullyReady||(this._isGameFullyReady=!0,this.gameReadinessMode=this.audioLoadFailures.length===0?"high":"low",this.gameReadinessMode==="high"&&this.ambientLoadFailures.length===0&&console.info("\u{1F7E2} High Mode - all audio loaded successfully"),this.audioLoadFailures.length>0&&console.warn("\u{1F534} Low Mode - essential \u0911\u0921\u093F\u092F\u094B \u0932\u094B\u0921 \u0935\u093F\u092B\u0932:",this.audioLoadFailures),this.ambientLoadFailures.length>0&&console.warn("\u{1F7E1} High Mode (degraded) ambient tracks unavailable:",this.ambientLoadFailures),this._readinessTimeoutId&&(clearTimeout(this._readinessTimeoutId),this._readinessTimeoutId=null),this._showReadyState())}_showReadyState(){let t=document.getElementById("loading-overlay"),e=document.getElementById("mode-badge"),r=document.getElementById("start-btn");e&&(this.gameReadinessMode==="high"?(e.textContent="\u{1F7E2} \u0909\u091A\u094D\u091A \u092E\u094B\u0921",e.title="\u0938\u092D\u0940 \u0938\u0902\u0938\u093E\u0927\u0928 \u0938\u092B\u0932\u0924\u093E\u092A\u0942\u0930\u094D\u0935\u0915 \u0932\u094B\u0921 \u0939\u0941\u090F \u2014 \u092A\u0942\u0930\u094D\u0923 \u0905\u0928\u0941\u092D\u0935 \u0938\u0915\u094D\u0930\u093F\u092F"):(e.textContent="\u{1F7E1} \u0928\u093F\u092E\u094D\u0928 \u092E\u094B\u0921",e.title="\u0915\u0941\u091B \u0927\u094D\u0935\u0928\u093F-\u0938\u0902\u0938\u093E\u0927\u0928 \u0932\u094B\u0921 \u0928\u0939\u0940\u0902 \u0939\u094B \u0938\u0915\u0947 (\u0927\u0940\u092E\u093E \u0928\u0947\u091F/\u092A\u0941\u0930\u093E\u0928\u093E \u0921\u093F\u0935\u093E\u0907\u0938) \u2014 \u092E\u0942\u0932 \u0905\u0928\u0941\u092D\u0935 \u0938\u0915\u094D\u0930\u093F\u092F, \u0916\u0947\u0932 \u092A\u0942\u0930\u094D\u0923\u0924\u0903 \u0916\u0947\u0932\u0928\u0947-\u092F\u094B\u0917\u094D\u092F \u0939\u0948")),t&&(t.style.opacity="0",t.style.pointerEvents="none",setTimeout(()=>{t.style.display="none"},520)),r&&(r.disabled=!1)}async _loadAllAudioBuffers(){this.audioCtx&&await Promise.all([this._loadCriticalAudioBuffers(),this._loadDeferredAudioBuffers()])}async _loadCriticalAudioBuffers(){let t=[{url:"./audio/naamaSamarpita.mp3",key:"naamaSamarpita"},{url:"./audio/samarpita.mp3",key:"samarpita"},{url:"./audio/punaraJanma.mp3",key:"punarJanma"},{url:"./audio/shathendriya.mp3",key:"shathendriya"},{url:"./audio/sushuptiSwaansa.mp3",key:"sushuptiSwaansa"},{url:"./audio/timer.mp3",key:"timer"},{url:"./audio/prarabdhaBandhana.mp3",key:"prarabdhaBandhana"},{url:"./audio/paapaBandhana.mp3",key:"paapaBandhana"},{url:"./audio/punyaBandhana.mp3",key:"punyaBandhana"},{url:"./audio/bandhanaMukta.mp3",key:"bandhanaMukta"},{url:"./audio/naamaDhwani.mp3",key:"naamaDhwani"},{url:"./audio/jaapaDhwani.mp3",key:"jaapaDhwani"},{url:"./audio/aakarshana.mp3",key:"aakarshana"},{url:"./audio/tyaaga.mp3",key:"tyaaga"},{url:"./audio/kripaDhwani.mp3",key:"kripaDhwani"},{url:"./audio/shankhaDhwani.mp3",key:"shankhaDhwani"},{url:"./audio/jyotiDhwani.mp3",key:"jyotiDhwani"},{url:"./audio/jyotiPrapta.mp3",key:"jyotiPrapta"},{url:"./audio/drishti.mp3",key:"drishti"},{url:"./audio/shankhaPrapta.mp3",key:"shankhaPrapta"},{url:"./audio/purnaSamarpana.mp3",key:"purnaSamarpana"},{url:"./audio/andhakaara.mp3",key:"andhakaara"}],e=4;for(let r=0;rthis._loadAudioBuffer(h)));n.forEach(({key:h},c)=>{o[c]!==null&&(this.audioBuffers[h]=o[c])}),r+erequestAnimationFrame(h))}this._bgMusicStarted&&(this._startRunningHorsesLayer(),this._getGameState?.()?.chetanaaJaagrita||this._startSushuptiSwaansaLayer())}async _loadDeferredAudioBuffers(){let t=async l=>{let p=await this._loadAudioBufferWithRetry(l,3,1e3);return p||this.ambientLoadFailures.push(l),p},[e,r,n,o,h,c]=await Promise.all([t("./audio/bgMusic.mp3"),t("./audio/chetanaJaagrita.mp3"),t("./audio/pralaya.mp3"),t("./audio/jaagritaSwaansa.mp3"),t("./audio/moksha.mp3"),t("./audio/antimaCharana.mp3")]);Object.assign(this.audioBuffers,{bgMusic:e,chetanaJaagrita:r,pralaya:n,jaagritaSwaansa:o,moksha:h,antimaCharana:c}),this._bgMusicStarted&&this._startBgMusicMp3Layer()}async _loadAudioBufferWithRetry(t,e=3,r=1e3){for(let n=0;n<=e;n++)try{let o=await fetch(t);if(!o.ok)throw new Error(`HTTP ${o.status}`);let h=await o.arrayBuffer();return await this.audioCtx.decodeAudioData(h)}catch(o){if(n===e)return console.warn(`\u26A0\uFE0F \u0911\u0921\u093F\u092F\u094B \u0932\u094B\u0921 \u0935\u093F\u092B\u0932 (${t}) \u2014 ${e} retries exhausted:`,o),null;let c=r*Math.pow(2,n);console.warn(`\u21A9\uFE0F retry ${n+1}/${e} (${c}ms) \u2014 ${t}`),await new Promise(l=>setTimeout(l,c))}return null}async _loadAudioBuffer(t){try{let e=await fetch(t);if(!e.ok)throw new Error(`HTTP ${e.status}`);let r=await e.arrayBuffer();return await this.audioCtx.decodeAudioData(r)}catch(e){return console.warn(`\u26A0\uFE0F \u0911\u0921\u093F\u092F\u094B \u0932\u094B\u0921 \u0935\u093F\u092B\u0932 (${t}):`,e),this.audioLoadFailures.push(t),null}}_startBgMusicMp3Layer(){if(!this._bgMasterGain||!this.audioBuffers.bgMusic||this._bgMusicSourceNode)return;let t=this.audioCtx.currentTime;this._bgMusicMp3Gain=this.audioCtx.createGain(),this._bgMusicMp3Gain.gain.setValueAtTime(.01,t),this._bgMusicMp3Gain.connect(this._bgMasterGain),this._bgMusicSourceNode=this.audioCtx.createBufferSource(),this._bgMusicSourceNode.buffer=this.audioBuffers.bgMusic,this._bgMusicSourceNode.loop=!0,this._bgMusicSourceNode.connect(this._bgMusicMp3Gain),this._bgMusicSourceNode.start(t)}_startRunningHorsesLayer(){if(!this._bgMasterGain||!this.audioBuffers.shathendriya||this._shathendriyaSourceNode)return;let t=this.audioCtx.currentTime;this._shathendriyaGain=this.audioCtx.createGain();let e=this._isActiveGameplay()?.16:0;this._shathendriyaGain.gain.setValueAtTime(e,t),this._shathendriyaGain.connect(this._bgMasterGain),this._shathendriyaSourceNode=this.audioCtx.createBufferSource(),this._shathendriyaSourceNode.buffer=this.audioBuffers.shathendriya,this._shathendriyaSourceNode.loop=!0,this._shathendriyaSourceNode.connect(this._shathendriyaGain),this._shathendriyaSourceNode.start(t)}_startJaagritaSwaansaLayer(){if(!this._bgMasterGain||!this.audioBuffers.jaagritaSwaansa||this._jaagritaSwaansaSourceNode)return;let t=this.audioCtx.currentTime;this._jaagritaSwaansaGain=this.audioCtx.createGain();let e=this._isActiveGameplay()?.22:0;this._jaagritaSwaansaGain.gain.setValueAtTime(e,t),this._jaagritaSwaansaGain.connect(this._bgMasterGain),this._jaagritaSwaansaSourceNode=this.audioCtx.createBufferSource(),this._jaagritaSwaansaSourceNode.buffer=this.audioBuffers.jaagritaSwaansa,this._jaagritaSwaansaSourceNode.loop=!0,this._jaagritaSwaansaSourceNode.connect(this._jaagritaSwaansaGain),this._jaagritaSwaansaSourceNode.start(t)}_startSushuptiSwaansaLayer(){if(!this._bgMasterGain||!this.audioBuffers.sushuptiSwaansa||this._sushuptiSwaansaSourceNode)return;let t=this.audioCtx.currentTime;this._sushuptiSwaansaGain=this.audioCtx.createGain();let e=this._isActiveGameplay()?1:0;this._sushuptiSwaansaGain.gain.setValueAtTime(e,t),this._sushuptiSwaansaGain.connect(this._bgMasterGain),this._sushuptiSwaansaSourceNode=this.audioCtx.createBufferSource(),this._sushuptiSwaansaSourceNode.buffer=this.audioBuffers.sushuptiSwaansa,this._sushuptiSwaansaSourceNode.loop=!0,this._sushuptiSwaansaSourceNode.connect(this._sushuptiSwaansaGain),this._sushuptiSwaansaSourceNode.start(t)}},Yt=new ht;var M=Yt,Ke=document.getElementById("gameCanvas"),Fe=Ke.getContext("2d",{alpha:!1,willReadFrequently:!1}),Fa=600,Ha=680,dt=180,Xt=(Fa-dt)/2,ni=Ha-60-(document.getElementById("ui-overlay")?.offsetHeight??120),_a={container:document.getElementById("gameContainer"),naama:document.getElementById("naama"),punya:document.getElementById("punya"),paap:document.getElementById("paap"),prarabdha:document.getElementById("prarabdha"),samarpita:document.getElementById("samarpita"),punaraJanma:document.getElementById("punaraJanma"),kripa:document.getElementById("kripa"),shankha:document.getElementById("shankha"),jyoti:document.getElementById("jyoti"),drishti:document.getElementById("drishti"),purnaSamarpana:document.getElementById("purnaSamarpana"),chetana:document.getElementById("chetana"),samayaVal:document.getElementById("ui-samaya-val"),swaansaVal:document.getElementById("ui-swaansa-val"),gatee:document.getElementById("ui-gatee"),alertBox:document.getElementById("alert-box"),overlay:document.getElementById("screen-overlay"),overlayTitle:document.getElementById("overlay-title"),overlaySubtitle:document.getElementById("overlay-subtitle"),viraamaOverlay:document.getElementById("viraama-overlay"),shastraOverlay:document.getElementById("shastra-overlay")},_=new Ia;window._engine=_;_.setCallbacks({playSound:i=>M?.playSound(i),vibrateGamepad:(i,t,e)=>ut(i,t,e),updateAmbientVolumes:()=>M?.updateAmbientVolumes(),stopSushuptiSwaansaLayer:()=>M?.stopSushuptiSwaansaLayer(),startJaagritaSwaansaLayer:()=>M?.startJaagritaSwaansaLayer(),stopJaagritaSwaansaLayer:()=>M?.stopJaagritaSwaansaLayer(),startSushuptiSwaansaLayer:()=>M?.startSushuptiSwaansaLayer()});_.setUI(_a);_.init(Fa,Ha,Xt,dt);it.init(Fe,Fa,Ha);var da=!1,ta=0,lt=0,j={},qt=!1,Qt=!1,J=1,ba={up:!1,down:!1},oi=document.getElementById("shastra-body"),ga=.18,U={Y:0,B:1,X:2,A:3,LB:4,RB:5,LT:6,RT:7,BACK:8,START:9,DPAD_UP:12,DPAD_DOWN:13,DPAD_LEFT:14,DPAD_RIGHT:15},$=null,Sa={},Oa={start:!1,back:!1};function la(i,t){window.dispatchEvent(new KeyboardEvent(i,{key:t,bubbles:!0,cancelable:!0}))}function ut(i,t,e){if(t=Math.max(t,.18*(t>0?1:0)),$===null)return;let n=navigator.getGamepads()[$];n?.vibrationActuator?.playEffect&&n.vibrationActuator.playEffect("dual-rumble",{startDelay:0,duration:e,weakMagnitude:i,strongMagnitude:t}).catch(()=>{})}function X(i,t,e){let r=!!i.buttons[t]?.pressed,n=!!Sa[t];r&&!n&&la("keydown",e),!r&&n&&la("keyup",e),Sa[t]=r}function Ua(i,t,e){let r=!!Sa[i];t&&!r&&e(),Sa[i]=t}function Zt(i){let t=i.axes[0]||0,e=i.axes[1]||0,r=!!i.buttons[U.DPAD_LEFT]?.pressed,n=!!i.buttons[U.DPAD_RIGHT]?.pressed,o=!!i.buttons[U.DPAD_UP]?.pressed,h=!!i.buttons[U.DPAD_DOWN]?.pressed,c=t<-ga||r,l=t>ga||n;if(Ua("shastra_left",c,()=>la("keydown","ArrowLeft")),Ua("shastra_right",l,()=>la("keydown","ArrowRight")),Ua("shastra_dpad_up",o,()=>la("keydown","PageUp")),Ua("shastra_dpad_down",h,()=>la("keydown","PageDown")),e<-ga||e>ga){let p=document.getElementById("shastra-body");p&&(p.scrollTop+=e*6*2)}}function He(){if($===null){let n=navigator.getGamepads();for(let o=0;oga||r,X(i,U.RT," "),X(i,U.X,"s"),X(i,U.RB,"arrowup"),X(i,U.LB,"q"),X(i,U.LT,"r"),X(i,U.START,"f"),X(i,U.Y,"y"),X(i,U.B,"b")),X(i,U.BACK,"Escape")}function Ka(){for(let t=1;t<=3;t++)document.getElementById(`shastra-page-${t}`)?.classList.remove("active");document.getElementById(`shastra-page-${J}`)?.classList.add("active");let i=document.getElementById("shastra-nav-btn");i&&(i.textContent=J<3?`\u0905\u0917\u0932\u093E [ ${J} / 3 ]`:`\u092A\u093F\u091B\u0932\u093E [ ${J} / 3 ]`)}function ct(){_.toggleShastra(),_.isShastraVisible?(J=1,Ka(),j={},requestAnimationFrame(ft)):j={}}function ft(){if(_.isShastraVisible){let i=document.getElementById("shastra-body");i&&(ba.up&&(i.scrollTop-=6),ba.down&&(i.scrollTop+=6))}requestAnimationFrame(ft)}requestAnimationFrame(ft);function We(i,t){let e;return function(){clearTimeout(e),e=setTimeout(i,t)}}function ae(){let i=Math.min(window.innerWidth/600,window.innerHeight/680)*.9;_a.container.style.transform=`scale(${i})`,Qt=!0,M?.notifyReadiness?.()}ae();var je=We(ae,200);window.addEventListener("resize",je);window.addEventListener("wheel",i=>{if(!_.isShastraVisible)return;i.preventDefault();let t=document.getElementById("shastra-body");t&&(t.scrollTop+=i.deltaY)},{passive:!1});window.addEventListener("keydown",i=>{let t=i.key.toLowerCase();if(!(!da&&t!=="escape"&&!_.isShastraVisible)){if(M?.ensureAudio(),["arrowup","arrowdown","arrowleft","arrowright"," ","q","f","r","escape","pageup","pagedown"].includes(t)&&i.preventDefault(),t==="escape"){ct();return}if(_.isShastraVisible){let e=document.getElementById("shastra-body");t==="arrowleft"&&J>1&&(J--,Ka(),e&&(e.scrollTop=0)),t==="arrowright"&&J<3&&(J++,Ka(),e&&(e.scrollTop=0)),t==="arrowup"&&(ba.up=!0),t==="arrowdown"&&(ba.down=!0),t==="pageup"&&e&&(e.scrollTop-=e.clientHeight*.9),t==="pagedown"&&e&&(e.scrollTop+=e.clientHeight*.9);return}if(j[t]=!0,t==="r"){_.reset(),ta=performance.now();return}if(t==="q"){_.actionPralaya();return}if(t==="f"){_.actionPause();return}if(t===" "){_.actionNaamaJaapa();return}if(t==="y"){_.actionShankha();return}if(t==="b"){_.actionJyoti();return}if(t==="arrowup"||t==="w"){_.actionNaamaSamarpan();return}if(t==="arrowdown"||t==="s"){_.actionVairaagya();return}}});window.addEventListener("keyup",i=>{let t=i.key.toLowerCase();j[t]=!1,t==="arrowup"&&(ba.up=!1),t==="arrowdown"&&(ba.down=!1)});window.addEventListener("blur",()=>{j={}});window.addEventListener("pointerdown",()=>M?.ensureAudio(),{passive:!0});window.addEventListener("gamepadconnected",i=>{$=i.gamepad.index,Sa={},_.triggerAlert({icon:"\u{1F3AE}",title:"\u0917\u0947\u092E\u092A\u0948\u0921 \u091C\u0941\u0921\u093C\u093E",subtitle:"\u0928\u093F\u092F\u0902\u0924\u094D\u0930\u0923 \u0938\u0915\u094D\u0930\u093F\u092F",category:"achievement"})});window.addEventListener("gamepaddisconnected",i=>{$===i.gamepad.index&&($=null,j.arrowleft=!1,j.arrowright=!1)});document.addEventListener("visibilitychange",()=>{document.hidden&&da&&!_.gameOver&&!_.won&&!_.isPaused&&!_.isShastraVisible&&(_.isPaused=!0,_a.viraamaOverlay&&(_a.viraamaOverlay.style.display="flex"),M?.playSound("viraama"),j={},_.triggerAlert({icon:"\u23F8\uFE0F",title:"\u0916\u0947\u0932 \u0938\u094D\u0924\u092E\u094D\u092D\u093F\u0924",subtitle:"\u0927\u094D\u092F\u093E\u0928 \u092D\u091F\u0915\u093E, \u091F\u0948\u092C \u092C\u0926\u0932\u093E \u0917\u092F\u093E\u0964",category:"guidance"}),M?.updateAmbientVolumes())});document.getElementById("resume-btn")?.addEventListener("click",()=>{_.actionResume(),ta=performance.now()});document.getElementById("restart-btn")?.addEventListener("click",()=>{_a.viraamaOverlay.style.display="none",_.reset(),ta=performance.now()});document.getElementById("quit-btn")?.addEventListener("click",()=>{_a.viraamaOverlay.style.display="none",_.actionPralaya()});document.getElementById("music-toggle-btn")?.addEventListener("click",()=>{M?.ensureAudio(),M?.toggleBgMusic()});document.getElementById("shastra-help-btn")?.addEventListener("click",()=>{M?.ensureAudio(),ct()});document.getElementById("shastra-close-btn")?.addEventListener("click",()=>{ct()});document.getElementById("shastra-nav-btn")?.addEventListener("click",()=>{J=J<3?J+1:1,Ka();let i=document.getElementById("shastra-body");i&&(i.scrollTop=0)});document.getElementById("music-volume-slider")?.addEventListener("input",i=>{M&&(M.bgMusicVolume=parseFloat(i.target.value)/100,M.updateAmbientVolumes())});function Ve(){let i=_.getState();M?.setSwaansaPulse?.(i.worldSwaansaPulse??0),M?.updateDuckDecay?.(),M?.updateAmbientVolumes?.(),it.drawScene({WIDTH:Fa,HEIGHT:Ha,TUNNEL_X:Xt,TUNNEL_WIDTH:dt,SAMAYA_PRAARAMBHIKA:ha,frameNow:lt,..._.getState(),pulledHorseX:_._pulledHorseX,pulledHorseY:_._pulledHorseY,pendingGoodKarma:_._pendingGoodKarma,punyaTimer:_._punyaTimer,pendingGoodKarmaCount:_._pendingGoodKarmaCount})}ta=performance.now();function te(i){if(He(),!_.isPaused&&!_.gameOver&&!_.won&&!_.isShastraVisible){let t=Math.min((i-ta)/16.666666666666668,2);lt+=i-ta,_.update(t,j,lt)}ta=i,Ve(),requestAnimationFrame(te)}var ee=document.getElementById("start-btn");function ie(){if(da)return;let i=navigator.getGamepads(),t=null;for(let e=0;e{da||(M?.ensureAudio(),da=!0,document.getElementById("start-screen")?.remove(),ta=performance.now(),requestAnimationFrame(te))});M?.setGameStateProvider?.(()=>({isGameStarted:da,gameOver:_.gameOver,won:_.won,isPaused:_.isPaused,isShastraVisible:_.isShastraVisible,chetanaaJaagrita:_.chetanaaJaagrita}));M?.setGameStateGetter?.(()=>({isGameStarted:da,gameOver:_.gameOver,won:_.won,isPaused:_.isPaused,isShastraVisible:_.isShastraVisible,chetanaaJaagrita:_.chetanaaJaagrita}));M?.setVibrateGamepad?.(ut);M?.setVibrateCallback?.(ut);M?.setReadinessGetters?.({getFontsReady:()=>qt,getScaleGameDone:()=>Qt});document.fonts.ready.then(()=>{qt=!0,M?.notifyReadiness?.(),M?.checkReadiness?.()});M?.init?.();})(); diff --git a/src/render.js b/src/render.js index 2c89633..e05a41d 100644 --- a/src/render.js +++ b/src/render.js @@ -238,6 +238,8 @@ function drawAlerts(alertQueue, WIDTH) { for (let i = 0; i < alertQueue.length; i++) { const a = alertQueue[i]; if (a.opacity <= 0) continue; + // warning/guidance → drawProximateAlerts में render होंगे + if (a.category === 'warning' || a.category === 'guidance') continue; const color = CATEGORY_COLOR[a.category] ?? CATEGORY_COLOR.info; @@ -310,6 +312,98 @@ function drawAlerts(alertQueue, WIDTH) { } } +// ====================== 🔔 Proximate Alert Pills (Issue #32) ====================== + +/** + * warning/guidance alerts को player के ऊपर compact pill में render करें। + * Timer pills से ऊपर stack होते हैं — clutter नहीं। + * + * @param {Array} alertQueue — engine.alertQueue snapshot + * @param {Object} player — {x, y, width, height} + * @param {number} smoothSize — player body radius × 2 + * @param {number} WIDTH — canvas width (boundary clamp हेतु) + */ +function drawProximateAlerts(alertQueue, player, smoothSize, WIDTH) { + if (!alertQueue || alertQueue.length === 0) return; + + const CATEGORY_COLOR = { + warning: '#ef4444', // लाल — चेतावनी + guidance: '#f97316', // नारंगी — मार्गदर्शन + }; + + const PILL_W = 164; + const PILL_H = 28; + const PILL_R = 8; + const PILL_GAP = 6; + // timer pills baseY = player.y - smoothSize*0.5 - 48 + // proximate pills उससे ऊपर शुरू हों + const BASE_OFFSET = (smoothSize * 0.5) + 82; + + // सिर्फ warning/guidance filter + const proxAlerts = alertQueue.filter( + a => a.category === 'warning' || a.category === 'guidance' + ); + if (proxAlerts.length === 0) return; + + const cx = player.x + (player.width ?? smoothSize) / 2; + + for (let i = 0; i < proxAlerts.length; i++) { + const a = proxAlerts[i]; + if (a.opacity <= 0) continue; + + const color = CATEGORY_COLOR[a.category] ?? '#94a3b8'; + + // position — ऊपर की तरफ stack (newest सबसे नीचे) + const pillCX = Math.max(PILL_W / 2 + 6, + Math.min(WIDTH - PILL_W / 2 - 6, + cx + a.slideX * (cx < WIDTH / 2 ? -1 : 1))); + const pillY = player.y - BASE_OFFSET - i * (PILL_H + PILL_GAP); + + ctx.save(); + ctx.globalAlpha = Math.min(1, a.opacity) * (1 - i * 0.15); + + // ── background pill ── + ctx.fillStyle = 'rgba(6, 6, 18, 0.85)'; + ctx.shadowBlur = 10; + ctx.shadowColor = 'rgba(0,0,0,0.6)'; + ctx.beginPath(); + ctx.roundRect(pillCX - PILL_W / 2, pillY - PILL_H / 2, PILL_W, PILL_H, PILL_R); + ctx.fill(); + ctx.shadowBlur = 0; + + // ── colored border ── + ctx.strokeStyle = color; + ctx.lineWidth = 1; + ctx.shadowBlur = 5; + ctx.shadowColor = color; + ctx.beginPath(); + ctx.roundRect(pillCX - PILL_W / 2, pillY - PILL_H / 2, PILL_W, PILL_H, PILL_R); + ctx.stroke(); + ctx.shadowBlur = 0; + + // ── icon ── + ctx.textAlign = 'center'; + ctx.textBaseline = 'middle'; + if (a.icon) { + ctx.font = "14px 'Noto Sans Devanagari', sans-serif"; + ctx.fillStyle = '#ffffff'; + ctx.shadowBlur = 4; + ctx.shadowColor = color; + ctx.fillText(a.icon, pillCX - PILL_W / 2 + 16, pillY); + ctx.shadowBlur = 0; + } + + // ── title (short, no subtitle) ── + ctx.textAlign = 'left'; + ctx.font = "700 9px 'Orbitron', sans-serif"; + ctx.fillStyle = '#ffffff'; + const textStartX = pillCX - PILL_W / 2 + (a.icon ? 28 : 10); + ctx.fillText(a.title, textStartX, pillY, PILL_W - (a.icon ? 38 : 20)); + + ctx.restore(); + } +} + // ====================== 🎬 मुख्य रेंडरर मॉड्यूल (Main Renderer Module) ====================== export const Renderer = { @@ -1016,5 +1110,6 @@ export const Renderer = { // ── Alert Queue — सबसे ऊपर (HUD के नीचे नहीं दबें) ── drawAlerts(alertQueue ?? [], WIDTH); - } + // ── Proximate Alerts — warning/guidance player के ऊपर ── + drawProximateAlerts(alertQueue ?? [], player, smoothSize, WIDTH); } };