<!-- SOLID CITY · part 3461 -->
gClientRect(),x=(ev.clientX-r.left)/r.width,y=(ev.clientY-r.top)/r.height,best=null,dist=.045;drones.forEach(function(d){if(d.status!=='ACTIVE')return;var dd=Math.hypot(d.x-x,(d.y-y)*r.height/r.width);if(dd<dist){dist=dd;best=d}});if(best)claimDrone(best.id)}
  canvas.addEventListener('pointerdown',pointerDrone);
  document.getElementById('orderGrid').addEventListener('click',function(e){var b=e.target.closest('[data-order]');if(b)issueOrder(b.dataset.order)});
  document.querySelectorAll('[data-dir]').forEach(function(b){var dir=b.dataset.dir;function on(e){e.preventDefault();pressed[dir]=true}function off(e){e.preventDefault();pressed[dir]=false}b.addEventListener('pointerdown',on);b.addEventListener('pointerup',off);b.addEventListener('pointercancel',off);b.addEventListener('pointerleave',off)});
  window.addEventListener('keydown',function(e){var map={ArrowUp:'up',w:'up',ArrowDown:'down',s:'down',ArrowLeft:'left',a:'left',ArrowRight:'right',d:'right'};if(map[e.key]){pressed[map[e.key]]=true;e.preventDefault()}if(e.code==='Space'){firePulse();e.preventDefault()}});
  window.addEventListener('keyup',function(e){var map={ArrowUp:'up',w:'up',ArrowDown:'down',s:'down',ArrowLeft:'left',a:'left',ArrowRight:'right',d:'right'};if(map[e.key])pressed[map[e.key]]=false});
  document.getElementById('pulseBtn').addEventListener('click',firePulse);document.getElementById('releaseBtn').addEventListener('click',releaseSelected);document.getElementById('statsBtn').addEventListener('click',openStats);document.getElementById('closeStats').addEventListener('click',function(){document.getElementById('statsDialog').close()});
  document.getElementById('launchBtn').addEventListener('click',function(){startScreen.hidden=true;missionStart=performance.now();last=missionStart;running=true;addEvent('LAUNCH','MISSION','Human launched swarm; local coordination channel active');requestAnimationFrame(loop)});
  document.getElementById('restartBtn').addEventListener('click',function(){debrief.hidden=true;setup();missionStart=performance.now();last=missionStart;running=true;requestAnimationFrame(loop)});
  setup();resize();draw();
})();
</script>
</body>
</html>

===== FILE: public/city/swarm/index.html.bak-deploy-20261011 =====
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
  <meta name="color-scheme" content="light dark" />
  <link rel="icon" href="data:," />
  <title>Swarm Command</title>
  <style>
    :root{
      color-scheme:light dark;
      --bg:#071013;--panel:#0d1a1e;--panel2:#122329;--ink:#f2f7f6;--muted:#9bb0b2;
      --line:#284047;--gold:#ffc34d;--gold2:#ff8b3d;--teal:#52e0d0;--red:#ff625f;--green:#7ee39b;
      --shadow:0 18px 48px rgba(0,0,0,.28);--soft:rgba(255,255,255,.055);
    }
    @media(prefers-color-scheme:light){
      :root{--bg:#eaf2f1;--panel:#f8fbfa;--panel2:#fff;--ink:#102326;--muted:#52696d;--line:#bfd0d1;
      --gold:#a85b00;--gold2:#c63e19;--teal:#007f77;--red:#bd2f36;--green:#087b38;--shadow:0 18px 48px rgba(20,48,53,.15);--soft:rgba(14,58,64,.06)}
    }
    *{box-sizing:border-box}
    html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
    body{overflow-x:hidden}
    button{font:inherit;color:inherit}
    button:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
    .app{width:min(1500px,100%);margin:0 auto;padding:clamp(10px,2vw,24px);padding-bottom:max(16px,env(safe-area-inset-bottom))}
    .mission-bar{display:grid;grid-template-columns:minmax(190px,1fr) minmax(260px,2fr) auto;gap:14px;align-items:center;margin-bottom:12px}
    .objective h1{font-size:clamp(1.25rem,2.5vw,2rem);line-height:1;margin:0 0 6px;font-weight:780;letter-spacing:-.035em}
    .objective p{margin:0;color:var(--muted);font-size:.86rem}
    .progress-wrap{min-width:0}
    .progress-label{display:flex;justify-content:space-between;gap:12px;margin-bottom:6px;font:700 .72rem ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted);letter-spacing:.05em}
    .progress-track{height:14px;border:1px solid var(--line);background:var(--panel);position:relative;overflow:hidden;clip-path:polygon(0 0,98% 0,100% 50%,98% 100%,0 100%)}
    .progress-fill{height:100%;width:0;background:linear-gradient(90deg,var(--teal),var(--gold));transition:width .25s linear}
    .integrity{display:flex;gap:10px;align-items:center;background:var(--panel);border:1px solid var(--line);padding:9px 12px}
    .integrity strong{font:800 1.25rem ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--green)}
    .integrity span{font-size:.68rem;color:var(--muted);line-height:1.2;text-transform:uppercase;letter-spacing:.09em}
    .layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:12px;align-items:start}
    .field-shell{position:relative;background:#03090b;border:1px solid var(--line);min-