<!-- SOLID CITY · part 1862 -->
ieldShatterUntil:0,spreadUntil:0,rapidUntil:0,repairUntil:0,build:{hull:0,cannon:0,thruster:0,bio:0},ringScore:0,speedBank:0,altitude:0,corridorX:0}}
  function init(){
    paused=false;pauseMenu.hidden=true;pauseToggle.hidden=true;
    ships=[makeShip(1100,800,'#ffc84a','YOU'),makeShip(1280,840,'#44e1d0','AI')];
    enemies=[];shots=[];bolts=[];meteors=[];sparks=[];pickups=[];muzzles=[];rings=[];hazards=[];corridorThreats=[];corridorShots=[];corridorPickups=[];corridorStars=[];elapsed=0;levelElapsed=0;wave=1;level=1;spawnT=0;meteorT=2;enemyShotT=1;nextId=1;transitioning=false;runEnding=false;progression={componentIndex:0,speedHold:0,expansionStage:1,levelKills:0,boss:null,pursuer:null,corridorCleared:0,corridorRunT:0,corridorSequence:0,summit:null,summitResult:null};resetMetrics();
    controls=[makeControl(),makeControl()];friendlyHitGuard={};fireControl={active:false,pointer:null};fireEl.classList.remove('firing');keys={};armEl.checked=false;flightStateEl.textContent='FORMATION';flightStateEl.className='flight-state formation';
    stars=[];for(var i=0;i<260;i++)stars.push({x:Math.random()*WORLD.w,y:Math.random()*WORLD.h,r:.4+Math.random()*1.7,a:.25+Math.random()*.65});
    nebula=[{x:500,y:410,r:460,c:'rgba(64,32,90,.12)'},{x:1900,y:1180,r:560,c:'rgba(10,110,120,.10)'},{x:1480,y:260,r:360,c:'rgba(118,46,22,.09)'}];
    for(i=0;i<6;i++)spawnEnemy();setLevelHUD();resize();updateHUD();
  }
  function spawnEnemy(){var side=Math.floor(Math.random()*4),x,y;if(side<2){x=Math.random()*WORLD.w;y=side?WORLD.h-80:80}else{x=side===2?80:WORLD.w-80;y=Math.random()*WORLD.h}enemies.push({id:nextId++,x:x,y:y,vx:0,vy:0,a:0,hull:24+wave*4,fire:1+Math.random()*2,phase:Math.random()*6.2,targetIndex:-1,threatTargetIndex:-1,rescuePilot:-1,rescueBroke:false,lastHitBy:-1,lastHitAt:0,coordAt:0,splitter:level===4&&Math.random()<.45})}
  function setLevelHUD(){
    waveEl.textContent='LEVEL '+level+' · '+levelInfo[level].name;
    speedometerEl.classList.toggle('show',level===2||level===4||level===5);
    document.querySelectorAll('.buildbar').forEach(function(el){el.style.display=(level===1||level===4)?'block':'none'});
    document.querySelectorAll('.altitude-meter').forEach(function(el){el.classList.toggle('show',level===5)});
    if(level===1)objectiveEl.textContent='SOLIDIVISM · 0 / 16';
    if(level===2)objectiveEl.textContent='BANK 3 RINGS EACH · HOLD TARGET';
    if(level===3)objectiveEl.textContent='PUSH OUTWARD · SECTOR 1 / 3';
    if(level===4)objectiveEl.textContent='CONVERGENCE · BREAK THE DREADNOUGHT';
    if(level===5)objectiveEl.textContent='THREAD THE CORRIDOR · 0 / 24';
    if(level===6)objectiveEl.textContent='THE SUMMIT \u00B7 BREAK THE PAIRS';
  }
  function showLevelBrief(n){
    transitioning=true;
    document.querySelector('#levelNo').textContent=n===1?'LEVEL 1 · FIRST TEACHING':n===2?'SOLIDIVISM COMPLETE · BOTH SHIPS SOLID':'LEVEL '+(n-1)+' COMPLETE · NEXT';
    document.querySelector('#levelTitle').textContent=levelInfo[n].name;
    document.querySelector('#levelCopy').textContent=levelInfo[n].copy;
    document.querySelector('#continueLevel').textContent=levelInfo[n].button;
    document.querySelector('#levelCard').classList.remove('future');
    levelBeat.dataset.next=String(n);levelBeat.hidden=false;
  }
  function enterLevel(n){
    level=n;levelElapsed=0;wave=1;transitioning=false;spawnT=0;meteorT=n===4?0:.8;enemies=[];shots=[];bolts=[];meteors=[];pickups=[];rings=[];hazards=[];corridorThreats=[];corridorShots=[];corridorPickups=[];progression.levelKills=0;progression.speedHold=0;progression.expansionStage=n===4?3:1;progression.pursuer=null;progression.boss=null;progression.corridorCleared=0;progression.corridorRunT=.35;progression.corridorSequence=0;progression.summit=null;progression.summitResult=null;
    ships.forEach(function(s,i){s.x=1080+i*220;s.y=800;s.vx=0;s.vy=0;s.alive=true;s.hull=s.maxHull;s.ringScore=0;s.speedBank=0;s.coveringTarget=null;s.altitude=0;s.corridorX=i?0.22:-0.22});
    if(n===1){for(var i=0;i<6;i++)spawnEnemy()}
    if(n===2){spawnSpeedRing(0);spawnSpeedRing(1);progression.pursuer={x:430,y:800,vx:0,vy:0,a:0,r:42,lastHit:0}}
    if(n===3){hazards=[{x:420,y:350,r:150,type:'ion',color:'#755dff',stage:2},{x:1930,y:1180,r:180,type:'rift',color:'#ff4f88',stage:3}];for(var j=0;j<9;j++)spawnEnemy()}
    if(n===4){for(var k=0;k<10;k++)spawnEnemy();for(k=0;k<4;k++)spawnMeteor(true);progression.boss={id:nextId++,x:1950,y:800,vx:0,vy:0,a:Math.PI,hull:420,maxHull:420,r:60,fire:.7,targetIndex:0,threatTargetIndex:0,rescuePilot:-1,rescueBroke:false,lastHitBy:-1,lastHitAt:0,coordAt:0};enemies.push(progression.boss);for(k=0;k<2;k++){spawnSpeedRing(0);spawnSpeedRing(1)}}
    if(n===5){for(var q=0;q<110;q++)corridorStars.push({x:Math.random()*2-1,y:Math.random()*2-1,z:.08+Math.random()*.92,r:.4+Math.random()*1.4});spawnCorridorRun();notify(0,'DEPTH BEGINS HERE',1800);notify(1,'DEPTH BEGINS HERE',1800)}
    if(n===6){spawnT=1e9;meteorT=1e9;progression.summit={ph