diff --git a/app.py b/app.py
index eca4362..a380263 100644
--- a/app.py
+++ b/app.py
@@ -366,7 +366,7 @@ li{text-align:left;margin:.2rem 0}
{{body}}
✦ REACH THE DEV
-{{ CFG_JS }}
+
⚙
TUNABLES (saved to your account — agents: POST /api/settings)
@@ -405,7 +405,7 @@ window.addEventListener('load',lbDone);
(function(){
var DRB=window.DRB||{};
function drbN(v){v=parseFloat(v);return isNaN(v)?1:v}
-var c=document.getElementById('space'),x=c.getContext('2d'),W,H,stars=[],dust=[],warpF=1,warpT=0;
+var c=document.getElementById('space'),x=c.getContext('2d'),W,H,stars=[],dust=[];
function rs(){W=c.width=innerWidth;H=c.height=innerHeight;
stars=[];var n=Math.min(340,Math.floor(W*H/7000*drbN(DRB.density||1)));
for(var i=0;i0){warpT-=.04;warpF=1+warpT*10}else warpF=1;
-for(var i=0;iW+100)d.x=-80;if(d.y<-100)d.y=H+80;if(d.y>H+100)d.y=-80;
var g=x.createRadialGradient(d.x,d.y,0,d.x,d.y,d.r);
g.addColorStop(0,'hsla('+d.h+',70%,60%,'+d.a+')');g.addColorStop(1,'transparent');
x.fillStyle=g;x.beginPath();x.arc(d.x,d.y,d.r,0,6.29);x.fill();}
mx+=(tx-mx)*.03;my+=(ty-my)*.03;
for(i=0;i0?1.6:1);
+var px=s.x+mx*s.z*40, py=s.y+my*s.z*40;
+var a=.28+.4*Math.abs(Math.sin(s.tw));
x.fillStyle='rgba(220,228,255,'+(a*s.z)+')';
x.beginPath();x.arc(px,py,s.z*1.25,0,6.29);x.fill();}
requestAnimationFrame(frame);}
@@ -468,12 +478,16 @@ fetch('/api/settings',{method:'POST',headers:{'Content-Type':'application/x-www-
var _st=document.createElement('style');_st.textContent='.noscan .gridlines{display:none!important}';document.head.appendChild(_st);
new MutationObserver(function(){document.body.classList.toggle('noscan',window.DRB&&window.DRB.scan==='0')}).observe(document.documentElement,{attributes:true,childList:true,subtree:true});
setTimeout(function(){spApply()},0);
-// ---------- hyperdrive warp on click ----------
-document.addEventListener('click',function(e){
+// ---------- stars scurry to cursor on background click ----------
+var scurry=null; // {x,y,t}
+document.addEventListener('pointerdown',function(e){
if(window.DRB&&window.DRB.warp==='0')return;
-if(e.target.closest('a,button,input,select,textarea,label,.card,#spanel,#palwin,#gearbtn'))return;
-warpT=.35;
-});
+if(e.target.closest('a,button,input,select,textarea,label,.card,#spanel,#palwin,#gearbtn,#pinp'))return;
+scurry={x:e.clientX,y:e.clientY,t:1};
+},{passive:true});
+document.addEventListener('pointermove',function(e){
+if(scurry&&scurry.t>0){scurry.x=e.clientX;scurry.y=e.clientY}
+},{passive:true});
// ---------- command palette (⌘K / Ctrl+K) ----------
var PAL=[
['/ip','IP intel — geo, ASN, VPN flags'],