<!-- SOLID CITY · part 3723 -->
',{objective:'Meridian Gate',range_km:8000});});
$('pauseBtn').addEventListener('click',()=>{if(!running||paused)return;paused=true;$('pauseOverlay').hidden=false;emit('mission_paused',{by:'human'});$('resumeBtn').focus();});
$('resumeBtn').addEventListener('click',()=>{if(!running)return;last=performance.now();paused=false;$('pauseOverlay').hidden=true;emit('mission_resumed',{by:'human'});$('pauseBtn').focus();});
$('statsBtn').addEventListener('click',()=>{renderStats();$('statsModal').hidden=false;});$('eventBtn').addEventListener('click',()=>{renderCoord();$('eventsModal').hidden=false;});document.querySelectorAll('[data-close]').forEach(b=>b.addEventListener('click',()=>$(b.dataset.close).hidden=true));
window.addEventListener('resize',resize,{passive:true});resize();reset();raf=requestAnimationFrame(loop);
})();
</script>
</body>
</html>

===== FILE: public/city/warship/index.html.bak-cityreturn-20261011 =====
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, maximum-scale=1, user-scalable=no">
  <meta name="color-scheme" content="light dark">
  <link rel="icon" href="data:,">
  <title>Warship: Twin Batteries</title>
  <style>
    :root{
      color-scheme:light dark;
      --bg:#e8eef1;--panel:#f7fafb;--panel2:#e2eaee;--ink:#10232d;--muted:#536872;
      --line:#9fb2bb;--cyan:#007d8e;--gold:#a96800;--red:#b52b35;--green:#237a54;
      --you:#006a79;--ai:#9a5b00;--shadow:0 12px 32px rgba(13,30,40,.16);
      --canvas:#06131d;
    }
    @media(prefers-color-scheme:dark){:root{
      --bg:#050a0f;--panel:#0b151d;--panel2:#101f29;--ink:#e8f3f5;--muted:#8fa6b0;
      --line:#263a45;--cyan:#23c7d9;--gold:#f2ad42;--red:#ff5b66;--green:#51d39b;
      --you:#23c7d9;--ai:#f2ad42;--shadow:0 18px 50px rgba(0,0,0,.35);--canvas:#02070c;
    }}
    *{box-sizing:border-box}
    html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:"Aptos","Segoe UI",sans-serif;overscroll-behavior:none}
    body{min-height:100vh;min-height:100svh;overflow-x:hidden}
    button{font:inherit;color:inherit;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
    button:focus-visible{outline:3px solid var(--cyan);outline-offset:2px}
    .app{min-height:100svh;display:grid;grid-template-rows:auto minmax(330px,1fr) auto;gap:10px;padding:max(10px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left))}
    .mission-bar{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;min-width:0}
    .objective{min-width:0}
    .objective strong{display:block;font-family:Georgia,serif;font-size:clamp(17px,2vw,25px);line-height:1.05}
    .objective span{font-size:12px;color:var(--muted)}
    .progress-wrap{display:flex;align-items:center;gap:8px;min-width:150px}.progress{height:8px;flex:1;background:var(--panel2);border:1px solid var(--line);overflow:hidden}.progress>i{display:block;height:100%;width:0;background:var(--cyan);transition:width .25s linear}
    .progress-label{font:700 11px ui-monospace,monospace;white-space:nowrap}
    .health{display:flex;gap:7px}.meter{width:92px}.meter label{display:flex;justify-content:space-between;font-size:10px;font-weight:800;letter-spacing:.04em}.bar{height:7px;background:var(--panel2);border:1px solid var(--line);margin-top:3px}.bar i{display:block;height:100%;width:100%;background:var(--green);transition:width .2s}.bar.shield i{background:var(--cyan)}
    .game-shell{display:grid;grid-template-columns:minmax(0,1fr) 292px;gap:10px;min-height:0}
    .viewport{position:relative;background:var(--canvas);border:1px solid var(--line);box-shadow:var(--shadow);min-height:360px;overflow:hidden;isolation:isolate}
    canvas{width:100%;height:100%;display:block;touch-action:none}
    .hud-top{position:absolute;inset:9px 9px auto 9px;display:flex;justify-content:space-between;align-items:flex-start;pointer-events:none;gap:10px}
    .chip{background:rgba(3,12,18,.82);border:1px solid rgba(130,188,207,.32);color:#dff8ff;padding:6px 8px;font:700 10px ui-monospace,monospace;letter-spacing:.06em}
    .signal{display:flex;align-items:center;gap:6px}.signal i{width:7px;height:7px;border-radius:50%;background:#55ecae;box-shadow:0 0 10px #55ecae}
    .warning{position:absolute;top:52px;left:50%;transform:translateX(-50%);max-width:76%;padding:7px 12px;background:rgba(91,34,4,.9);border:1px solid #efb04a;color:#fff0cf;font-size:11px;font-weight:800;text-align:center;opacity:0;transition:opacity .2s;pointer-events:none}.warning.show{opacity:1}
    .advisory{position:absolute;left:10px;bottom:10px;max-width:min(440px,70%);padding:8px 10px;background:rgba(4,20,27,.9);border-left:3px solid #23c7d9;color:#d9f7fa;font-size:11px;pointer-events:none}.advisory b{color:#6ce6f0}
    .pause-btn{position:absolute;right:10px;bottom:10px;border:1px solid rgba(170,211