/**
 * stages_base.js
 * ステージ構成データ (全100ステージ再設計版)
 */

const STAGE_DATA = {
    FREE: [
        // ---- 入門 (1-10): QIX・TRACKER ----
        {
            id: 1, name: '手探り', difficulty: 1,
            assets: { hidden: 'images/stage001_hidden.jpg', reveal: 'images/stage001_reveal.jpg' },
            overlayAlpha: 0.55, clearQuota: 0.70,
            enemies: [
                { type: 'QIX', x: 300, y: 300, color: '#44FF88', speed: 3.0 }
            ], sparks: { count: 1, speed: 2.5, color: '#FF0055' }
        },
        {
            id: 2, name: 'もう二匹もいる', difficulty: 2,
            assets: { hidden: 'images/stage002_hidden.jpg', reveal: 'images/stage002_reveal.jpg' },
            overlayAlpha: 0.57, clearQuota: 0.72,
            enemies: [
                { type: 'QIX', x: 200, y: 200, color: '#44FFCC', speed: 3.2 },
                { type: 'QIX', x: 400, y: 400, color: '#44FF88', speed: 3.2 }
            ], sparks: { count: 1, speed: 2.8, color: '#FF0055' }
        },
        {
            id: 3, name: '影が追ってくる', difficulty: 3,
            assets: { hidden: 'images/stage003_hidden.jpg', reveal: 'images/stage003_reveal.jpg' },
            overlayAlpha: 0.57, clearQuota: 0.74,
            enemies: [
                { type: 'QIX', x: 150, y: 150, color: '#FF4400', speed: 3.5 },
                { type: 'QIX', x: 450, y: 450, color: '#FF8800', speed: 3.5 },
                { type: 'TRACKER', x: 10, y: 10, speed: 0.55 }
            ], sparks: { count: 1, speed: 3.0, color: '#FF0055' }
        },
        {
            id: 4, name: '来るな来るな', difficulty: 3,
            assets: { hidden: 'images/stage004_hidden.jpg', reveal: 'images/stage004_reveal.jpg' },
            overlayAlpha: 0.58, clearQuota: 0.75,
            enemies: [
                { type: 'QIX', x: 300, y: 200, color: '#44FF88', speed: 3.8 },
                { type: 'TRACKER', x: 10, y: 590, speed: 0.60 },
                { type: 'TRACKER', x: 590, y: 10, speed: 0.60 }
            ], sparks: { count: 1, speed: 3.0, color: '#FF0055' }
        },
        {
            id: 5, name: '三方向から詰め', difficulty: 4,
            assets: { hidden: 'images/stage005_hidden.jpg', reveal: 'images/stage005_reveal.jpg' },
            overlayAlpha: 0.58, clearQuota: 0.75,
            enemies: [
                { type: 'QIX', x: 150, y: 150, color: '#FF4400', speed: 3.5 },
                { type: 'QIX', x: 450, y: 150, color: '#FF8800', speed: 3.8 },
                { type: 'QIX', x: 300, y: 450, color: '#FFAA00', speed: 4.0 }
            ], sparks: { count: 2, speed: 3.2, color: '#FF0055' }
        },
        {
            id: 6, name: '上下左右全部敵', difficulty: 4,
            assets: { hidden: 'images/stage006_hidden.jpg', reveal: 'images/stage006_reveal.jpg' },
            overlayAlpha: 0.60, clearQuota: 0.76,
            enemies: [
                { type: 'QIX', x: 160, y: 160, color: '#44FFCC', speed: 4.0 },
                { type: 'QIX', x: 440, y: 440, color: '#44FF88', speed: 4.0 },
                { type: 'TRACKER', x: 10, y: 10, speed: 0.65 },
                { type: 'TRACKER', x: 590, y: 590, speed: 0.65 }
            ], sparks: { count: 2, speed: 3.5, color: '#FF0055' }
        },
        {
            id: 7, name: '四隅の悪魔め', difficulty: 4,
            assets: { hidden: 'images/stage007_hidden.jpg', reveal: 'images/stage007_reveal.jpg' },
            overlayAlpha: 0.60, clearQuota: 0.76,
            enemies: [
                { type: 'QIX', x: 80,  y: 80,  color: '#44FF88', speed: 4.2 },
                { type: 'QIX', x: 520, y: 80,  color: '#44FFCC', speed: 4.2 },
                { type: 'QIX', x: 80,  y: 520, color: '#FF4400', speed: 4.2 },
                { type: 'QIX', x: 520, y: 520, color: '#FF8800', speed: 4.2 }
            ], sparks: { count: 2, speed: 3.5, color: '#FF0055' }
        },
        {
            id: 8, name: 'こんなに追われるの', difficulty: 4,
            assets: { hidden: 'images/stage008_hidden.jpg', reveal: 'images/stage008_reveal.jpg' },
            overlayAlpha: 0.62, clearQuota: 0.77,
            enemies: [
                { type: 'QIX', x: 200, y: 300, color: '#FF4400', speed: 4.0 },
                { type: 'QIX', x: 400, y: 300, color: '#FF8800', speed: 4.0 },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 0.62 },
                { type: 'TRACKER', x: 590, y: 10,  speed: 0.62 },
                { type: 'TRACKER', x: 300, y: 590, speed: 0.62 }
            ], sparks: { count: 2, speed: 3.8, color: '#FF0055' }
        },
        {
            id: 9, name: '星形の罠を突破せよ', difficulty: 5,
            assets: { hidden: 'images/stage009_hidden.jpg', reveal: 'images/stage009_reveal.jpg' },
            overlayAlpha: 0.62, clearQuota: 0.78,
            enemies: [
                { type: 'QIX', x: 160, y: 160, color: '#44FF88', speed: 4.5 },
                { type: 'QIX', x: 440, y: 160, color: '#44FFCC', speed: 4.5 },
                { type: 'QIX', x: 300, y: 440, color: '#FFAA00', speed: 4.5 },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 0.70 },
                { type: 'TRACKER', x: 590, y: 590, speed: 0.70 }
            ], sparks: { count: 2, speed: 4.0, color: '#FF0055' }
        },
        {
            id: 10, name: '最初の山場だ', difficulty: 5,
            assets: { hidden: 'images/stage010_hidden.jpg', reveal: 'images/stage010_reveal.jpg' },
            overlayAlpha: 0.65, clearQuota: 0.80,
            enemies: [
                { type: 'QIX', x: 80,  y: 80,  color: '#44FF88', speed: 4.8 },
                { type: 'QIX', x: 520, y: 80,  color: '#FF4400', speed: 4.8 },
                { type: 'QIX', x: 80,  y: 520, color: '#FF8800', speed: 4.8 },
                { type: 'QIX', x: 520, y: 520, color: '#FFAA00', speed: 4.8 },
                { type: 'TRACKER', x: 10,  y: 300, speed: 0.75 },
                { type: 'TRACKER', x: 590, y: 300, speed: 0.75 }
            ], sparks: { count: 2, speed: 4.0, color: '#FF0055' }
        },

        // ---- GHOST・SHOOTER 導入 (11-20) ----
        {
            id: 11, name: '壁を抜ける怪物', difficulty: 5,
            assets: { hidden: 'images/stage011_hidden.jpg', reveal: 'images/stage011_reveal.jpg' },
            overlayAlpha: 0.65, clearQuota: 0.80,
            enemies: [
                { type: 'QIX', x: 160, y: 300, color: '#44FF88', speed: 4.5 },
                { type: 'QIX', x: 440, y: 300, color: '#44FFCC', speed: 4.5 },
                { type: 'GHOST', x: 300, y: 300, color: '#AA66FF', speed: 1.2 }
            ], sparks: { count: 2, speed: 4.2, color: '#FF0055' }
        },
        {
            id: 12, name: '幽霊二匹と踊れ', difficulty: 6,
            assets: { hidden: 'images/stage012_hidden.jpg', reveal: 'images/stage012_reveal.jpg' },
            overlayAlpha: 0.65, clearQuota: 0.78,
            enemies: [
                { type: 'QIX',   x: 300, y: 300, color: '#44FF88', speed: 4.5 },
                { type: 'GHOST', x: 160, y: 160, color: '#AA66FF', speed: 1.4 },
                { type: 'GHOST', x: 440, y: 440, color: '#8888FF', speed: 1.5 }
            ], sparks: { count: 2, speed: 4.2, color: '#FF0055' }
        },
        {
            id: 13, name: '幽霊三体に憑かれた', difficulty: 6,
            assets: { hidden: 'images/stage013_hidden.jpg', reveal: 'images/stage013_reveal.jpg' },
            overlayAlpha: 0.66, clearQuota: 0.80,
            enemies: [
                { type: 'GHOST', x: 160, y: 160, color: '#AA66FF', speed: 1.3 },
                { type: 'GHOST', x: 440, y: 160, color: '#8888FF', speed: 1.4 },
                { type: 'GHOST', x: 300, y: 440, color: '#FF88FF', speed: 1.4 }
            ], sparks: { count: 2, speed: 4.5, color: '#FF0055' }
        },
        {
            id: 14, name: '砲弾が止まらない', difficulty: 6,
            assets: { hidden: 'images/stage014_hidden.jpg', reveal: 'images/stage014_reveal.jpg' },
            overlayAlpha: 0.67, clearQuota: 0.81,
            enemies: [
                { type: 'QIX',     x: 160, y: 160, color: '#44FF88', speed: 5.0 },
                { type: 'QIX',     x: 440, y: 440, color: '#44FFCC', speed: 5.0 },
                // SHOOTER intro: interval 200, offset 0
                { type: 'SHOOTER', x: 300, y: 300, color: '#FF8800', speed: 5.0, interval: 200, offset: 0 }
            ], sparks: { count: 2, speed: 4.5, color: '#FF0055' }
        },
        {
            id: 15, name: '霊と弾と私', difficulty: 6,
            assets: { hidden: 'images/stage015_hidden.jpg', reveal: 'images/stage015_reveal.jpg' },
            overlayAlpha: 0.67, clearQuota: 0.81,
            enemies: [
                { type: 'GHOST',   x: 300, y: 300, color: '#AA66FF', speed: 1.4 },
                { type: 'SHOOTER', x: 160, y: 160, color: '#FF8800', speed: 5.0, interval: 200, offset: 0  },
                { type: 'SHOOTER', x: 440, y: 440, color: '#FF8800', speed: 5.0, interval: 200, offset: 100 }
            ], sparks: { count: 2, speed: 4.8, color: '#FF0055' }
        },
        {
            id: 16, name: '砲台と幽霊が組む日', difficulty: 7,
            assets: { hidden: 'images/stage016_hidden.jpg', reveal: 'images/stage016_reveal.jpg' },
            overlayAlpha: 0.68, clearQuota: 0.82,
            enemies: [
                { type: 'QIX',     x: 300, y: 300, color: '#FF4400', speed: 5.0 },
                { type: 'SHOOTER', x: 160, y: 160, color: '#FF8800', speed: 5.0, interval: 190, offset: 0  },
                { type: 'SHOOTER', x: 440, y: 440, color: '#FF8800', speed: 5.0, interval: 190, offset: 95 },
                { type: 'GHOST',   x: 440, y: 160, color: '#AA66FF', speed: 1.5 },
                { type: 'GHOST',   x: 160, y: 440, color: '#8888FF', speed: 1.6 }
            ], sparks: { count: 2, speed: 5.0, color: '#FF0055' }
        },
        {
            id: 17, name: '五重包囲から逃げろ', difficulty: 7,
            assets: { hidden: 'images/stage017_hidden.jpg', reveal: 'images/stage017_reveal.jpg' },
            overlayAlpha: 0.68, clearQuota: 0.82,
            enemies: [
                { type: 'QIX',     x: 160, y: 160, color: '#44FF88', speed: 5.2 },
                { type: 'QIX',     x: 440, y: 160, color: '#44FFCC', speed: 5.2 },
                { type: 'GHOST',   x: 160, y: 440, color: '#AA66FF', speed: 1.6 },
                { type: 'GHOST',   x: 440, y: 440, color: '#8888FF', speed: 1.6 },
                { type: 'SHOOTER', x: 300, y: 300, color: '#FF8800', speed: 5.0, interval: 185, offset: 0 }
            ], sparks: { count: 3, speed: 5.0, color: '#FF0055' }
        },
        {
            id: 18, name: '撃つ霊も殺意あり', difficulty: 7,
            assets: { hidden: 'images/stage018_hidden.jpg', reveal: 'images/stage018_reveal.jpg' },
            overlayAlpha: 0.68, clearQuota: 0.82,
            enemies: [
                // All non-QIX: 2 SHOOTER + 2 GHOST + 1 TRACKER
                { type: 'SHOOTER', x: 160, y: 160, color: '#FF8800', speed: 5.0, interval: 185, offset: 0  },
                { type: 'SHOOTER', x: 440, y: 440, color: '#FF8800', speed: 5.0, interval: 185, offset: 93 },
                { type: 'GHOST',   x: 440, y: 160, color: '#AA66FF', speed: 1.6 },
                { type: 'GHOST',   x: 160, y: 440, color: '#FF88FF', speed: 1.7 },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 0.78 }
            ], sparks: { count: 3, speed: 5.2, color: '#FF0055' }
        },
        {
            id: 19, name: '幻影が乱れ飛ぶ', difficulty: 7,
            assets: { hidden: 'images/stage019_hidden.jpg', reveal: 'images/stage019_reveal.jpg' },
            overlayAlpha: 0.70, clearQuota: 0.83,
            enemies: [
                { type: 'QIX',     x: 80,  y: 80,  color: '#FF4400', speed: 5.5 },
                { type: 'QIX',     x: 520, y: 80,  color: '#FF8800', speed: 5.5 },
                { type: 'QIX',     x: 300, y: 520, color: '#FFAA00', speed: 5.5 },
                { type: 'SHOOTER', x: 300, y: 300, color: '#FF8800', speed: 5.0, interval: 180, offset: 0 },
                { type: 'GHOST',   x: 300, y: 200, color: '#AA66FF', speed: 1.8 }
            ], sparks: { count: 3, speed: 5.2, color: '#FF0055' }
        },
        {
            id: 20, name: '幽霊大隊を突破せよ', difficulty: 7,
            assets: { hidden: 'images/stage020_hidden.jpg', reveal: 'images/stage020_reveal.jpg' },
            overlayAlpha: 0.70, clearQuota: 0.84,
            enemies: [
                { type: 'QIX',     x: 300, y: 300, color: '#44FF88', speed: 5.5 },
                { type: 'GHOST',   x: 80,  y: 80,  color: '#AA66FF', speed: 1.6 },
                { type: 'GHOST',   x: 520, y: 80,  color: '#8888FF', speed: 1.7 },
                { type: 'GHOST',   x: 80,  y: 520, color: '#FF88FF', speed: 1.6 },
                { type: 'GHOST',   x: 520, y: 520, color: '#CC66FF', speed: 1.7 },
                { type: 'SHOOTER', x: 300, y: 80,  color: '#FF8800', speed: 5.0, interval: 180, offset: 0  },
                { type: 'SHOOTER', x: 300, y: 520, color: '#FF8800', speed: 5.0, interval: 180, offset: 90 }
            ], sparks: { count: 3, speed: 5.5, color: '#FF0055' }
        },

        // ---- SNAKE・MINE 導入 (21-30) ----
        {
            id: 21, name: '足元に気をつけろ', difficulty: 7,
            assets: { hidden: 'images/stage021_hidden.jpg', reveal: 'images/stage021_reveal.jpg' },
            overlayAlpha: 0.70, clearQuota: 0.84,
            enemies: [
                { type: 'QIX',   x: 160, y: 160, color: '#FF4400', speed: 5.5 },
                { type: 'QIX',   x: 440, y: 440, color: '#FF8800', speed: 5.5 },
                { type: 'SNAKE', x: 300, y: 100, color: '#44FF88', speed: 1.1, bodyLength: 12, turnRate: 80 }
            ], sparks: { count: 3, speed: 5.5, color: '#FF0055' }
        },
        {
            id: 22, name: '蛇の巣穴へようこそ', difficulty: 8,
            assets: { hidden: 'images/stage022_hidden.jpg', reveal: 'images/stage022_reveal.jpg' },
            overlayAlpha: 0.70, clearQuota: 0.84,
            enemies: [
                { type: 'SNAKE',   x: 300, y: 100, color: '#44FF88', speed: 1.2, bodyLength: 14, turnRate: 76 },
                { type: 'GHOST',   x: 160, y: 440, color: '#AA66FF', speed: 1.7 },
                { type: 'GHOST',   x: 440, y: 440, color: '#8888FF', speed: 1.7 },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 0.80 }
            ], sparks: { count: 3, speed: 5.8, color: '#FF0055' }
        },
        {
            id: 23, name: '埋められた悪意', difficulty: 8,
            assets: { hidden: 'images/stage023_hidden.jpg', reveal: 'images/stage023_reveal.jpg' },
            overlayAlpha: 0.72, clearQuota: 0.85,
            enemies: [
                { type: 'QIX',  x: 300, y: 300, color: '#FF4400', speed: 5.5 },
                { type: 'MINE', x: 160, y: 160, color: '#FF6600' },
                { type: 'MINE', x: 440, y: 160, color: '#FF6600' },
                { type: 'MINE', x: 160, y: 440, color: '#FF6600' },
                { type: 'MINE', x: 440, y: 440, color: '#FF6600' },
                { type: 'MINE', x: 80,  y: 300, color: '#FF6600' }
            ], sparks: { count: 3, speed: 5.8, color: '#FF0055' }
        },
        {
            id: 24, name: '地中から蛇が来る', difficulty: 8,
            assets: { hidden: 'images/stage024_hidden.jpg', reveal: 'images/stage024_reveal.jpg' },
            overlayAlpha: 0.72, clearQuota: 0.85,
            enemies: [
                { type: 'QIX',     x: 300, y: 160, color: '#FF4400', speed: 5.8 },
                { type: 'SNAKE',   x: 300, y: 440, color: '#44FF88', speed: 1.4, bodyLength: 14, turnRate: 72 },
                { type: 'SHOOTER', x: 160, y: 300, color: '#FF8800', speed: 5.0, interval: 175, offset: 0 },
                { type: 'TRACKER', x: 590, y: 10,  speed: 0.85 }
            ], sparks: { count: 3, speed: 6.0, color: '#FF0055' }
        },
        {
            id: 25, name: '爆発物だらけの島', difficulty: 8,
            assets: { hidden: 'images/stage025_hidden.jpg', reveal: 'images/stage025_reveal.jpg' },
            overlayAlpha: 0.72, clearQuota: 0.85,
            enemies: [
                { type: 'QIX',  x: 160, y: 160, color: '#44FF88', speed: 5.5 },
                { type: 'QIX',  x: 440, y: 440, color: '#44FFCC', speed: 5.5 },
                { type: 'MINE', x: 160, y: 440, color: '#FF6600' },
                { type: 'MINE', x: 440, y: 160, color: '#FF6600' },
                { type: 'MINE', x: 300, y: 300, color: '#FF6600' },
                { type: 'MINE', x: 80,  y: 300, color: '#FF6600' }
            ], sparks: { count: 3, speed: 6.0, color: '#FF0055' }
        },
        {
            id: 26, name: '体をうねらせてくる', difficulty: 8,
            assets: { hidden: 'images/stage026_hidden.jpg', reveal: 'images/stage026_reveal.jpg' },
            overlayAlpha: 0.72, clearQuota: 0.83,
            enemies: [
                { type: 'SNAKE', x: 160, y: 100, color: '#44FF88', speed: 1.3, bodyLength: 14, turnRate: 72 },
                { type: 'SNAKE', x: 300, y: 500, color: '#44FFCC', speed: 1.4, bodyLength: 16, turnRate: 70 },
                { type: 'SNAKE', x: 500, y: 200, color: '#88FF44', speed: 1.5, bodyLength: 12, turnRate: 68 },
                { type: 'GHOST', x: 300, y: 300, color: '#AA66FF', speed: 1.8 }
            ], sparks: { count: 3, speed: 6.2, color: '#FF0055' }
        },
        {
            id: 27, name: '地雷を踏むな', difficulty: 9,
            assets: { hidden: 'images/stage027_hidden.jpg', reveal: 'images/stage027_reveal.jpg' },
            overlayAlpha: 0.73, clearQuota: 0.85,
            enemies: [
                { type: 'SNAKE',   x: 160, y: 100, color: '#44FF88', speed: 1.5, bodyLength: 16, turnRate: 68 },
                { type: 'SNAKE',   x: 440, y: 500, color: '#44FFCC', speed: 1.7, bodyLength: 14, turnRate: 64 },
                { type: 'MINE',    x: 300, y: 300, color: '#FF6600' },
                { type: 'MINE',    x: 160, y: 440, color: '#FF6600' },
                { type: 'MINE',    x: 440, y: 160, color: '#FF6600' },
                { type: 'TRACKER', x: 10,  y: 590, speed: 0.88 }
            ], sparks: { count: 4, speed: 6.2, color: '#FF0055' }
        },
        {
            id: 28, name: '蛇の大波が来た', difficulty: 9,
            assets: { hidden: 'images/stage028_hidden.jpg', reveal: 'images/stage028_reveal.jpg' },
            overlayAlpha: 0.73, clearQuota: 0.86,
            enemies: [
                { type: 'QIX',   x: 300, y: 300, color: '#FF4400', speed: 6.0 },
                { type: 'SNAKE', x: 100, y: 160, color: '#44FF88', speed: 1.5, bodyLength: 16, turnRate: 66 },
                { type: 'SNAKE', x: 500, y: 160, color: '#88FF44', speed: 1.6, bodyLength: 15, turnRate: 64 },
                { type: 'SNAKE', x: 100, y: 440, color: '#44FFCC', speed: 1.5, bodyLength: 14, turnRate: 68 },
                { type: 'SNAKE', x: 500, y: 440, color: '#CCFF44', speed: 1.7, bodyLength: 13, turnRate: 62 }
            ], sparks: { count: 4, speed: 6.2, color: '#FF0055' }
        },
        {
            id: 29, name: '今度こそ死ぬかも', difficulty: 9,
            assets: { hidden: 'images/stage029_hidden.jpg', reveal: 'images/stage029_reveal.jpg' },
            overlayAlpha: 0.73, clearQuota: 0.85,
            enemies: [
                { type: 'MINE',    x: 80,  y: 80,  color: '#FF6600' },
                { type: 'MINE',    x: 520, y: 80,  color: '#FF6600' },
                { type: 'MINE',    x: 80,  y: 520, color: '#FF6600' },
                { type: 'MINE',    x: 520, y: 520, color: '#FF6600' },
                { type: 'GHOST',   x: 160, y: 300, color: '#AA66FF', speed: 1.9 },
                { type: 'GHOST',   x: 440, y: 300, color: '#8888FF', speed: 1.9 },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 0.90 },
                { type: 'TRACKER', x: 590, y: 590, speed: 0.90 }
            ], sparks: { count: 4, speed: 6.5, color: '#FF0055' }
        },
        {
            id: 30, name: '蛇と地雷の合わせ技', difficulty: 9,
            assets: { hidden: 'images/stage030_hidden.jpg', reveal: 'images/stage030_reveal.jpg' },
            overlayAlpha: 0.75, clearQuota: 0.87,
            enemies: [
                { type: 'QIX',     x: 80,  y: 80,  color: '#44FF88', speed: 6.0 },
                { type: 'QIX',     x: 520, y: 80,  color: '#44FFCC', speed: 6.0 },
                { type: 'QIX',     x: 300, y: 520, color: '#FFAA00', speed: 6.0 },
                { type: 'SNAKE',   x: 160, y: 300, color: '#44FF88', speed: 1.6, bodyLength: 16, turnRate: 62 },
                { type: 'SNAKE',   x: 440, y: 300, color: '#FF8800', speed: 1.8, bodyLength: 14, turnRate: 60 },
                { type: 'MINE',    x: 300, y: 300, color: '#FF6600' },
                { type: 'MINE',    x: 160, y: 160, color: '#FF6600' },
                { type: 'TRACKER', x: 590, y: 10,  speed: 0.95 }
            ], sparks: { count: 4, speed: 6.5, color: '#FF0055' }
        },

        // ---- BEAM_BOSS・SNIPER_BEAM 導入 (31-40) ----
        {
            // Stage 31: first BEAM_BOSS
            // cycle = 200 + 82 + 26 = 308
            id: 31, name: '光の檻に閉じ込め', difficulty: 9,
            assets: { hidden: 'images/stage031_hidden.jpg', reveal: 'images/stage031_reveal.jpg' },
            overlayAlpha: 0.75, clearQuota: 0.86,
            enemies: [
                { type: 'QIX',       x: 160, y: 160, color: '#FF4400', speed: 6.0 },
                { type: 'QIX',       x: 440, y: 440, color: '#FF8800', speed: 6.0 },
                { type: 'BEAM_BOSS', x: 300, y: 300, color: '#FF4400', speed: 4.5,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 26, beamWidth: 14, offset: 0 }
            ], sparks: { count: 4, speed: 6.5, color: '#FF0055' }
        },
        {
            // Stage 32: BEAM_BOSS + GHOST + TRACKER
            id: 32, name: 'ビームの門を越えろ', difficulty: 10,
            assets: { hidden: 'images/stage032_hidden.jpg', reveal: 'images/stage032_reveal.jpg' },
            overlayAlpha: 0.75, clearQuota: 0.86,
            enemies: [
                { type: 'BEAM_BOSS', x: 300, y: 300, color: '#FF4400', speed: 4.5,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 26, beamWidth: 14, offset: 0 },
                { type: 'GHOST',   x: 160, y: 160, color: '#AA66FF', speed: 2.0 },
                { type: 'GHOST',   x: 440, y: 440, color: '#8888FF', speed: 2.0 },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 0.95 }
            ], sparks: { count: 4, speed: 6.8, color: '#FF0055' }
        },
        {
            // Stage 33: 2 BEAM_BOSS alternating
            // cycle = 200 + 82 + 26 = 308, alt offset = 154
            id: 33, name: '光速で動く奴がいる', difficulty: 10,
            assets: { hidden: 'images/stage033_hidden.jpg', reveal: 'images/stage033_reveal.jpg' },
            overlayAlpha: 0.76, clearQuota: 0.87,
            enemies: [
                { type: 'BEAM_BOSS', x: 160, y: 300, color: '#FF4400', speed: 4.5,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 26, beamWidth: 14, offset: 0   },
                { type: 'BEAM_BOSS', x: 440, y: 300, color: '#FF2200', speed: 4.5,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 26, beamWidth: 14, offset: 154 }
            ], sparks: { count: 4, speed: 7.0, color: '#FF0055' }
        },
        {
            // Stage 34: BEAM_BOSS + SNAKE + GHOST + TRACKER
            id: 34, name: '交差する閃光の中へ', difficulty: 10,
            assets: { hidden: 'images/stage034_hidden.jpg', reveal: 'images/stage034_reveal.jpg' },
            overlayAlpha: 0.76, clearQuota: 0.87,
            enemies: [
                { type: 'BEAM_BOSS', x: 300, y: 300, color: '#FF6600', speed: 4.5,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 26, beamWidth: 14, offset: 0 },
                { type: 'SNAKE',   x: 300, y: 100, color: '#44FF88', speed: 1.4, bodyLength: 18, turnRate: 72 },
                { type: 'GHOST',   x: 440, y: 440, color: '#AA66FF', speed: 2.0 },
                { type: 'TRACKER', x: 590, y: 590, speed: 1.00 }
            ], sparks: { count: 4, speed: 7.0, color: '#FF0055' }
        },
        {
            // Stage 35: BEAM_BOSS + 5 MINE + GHOST
            id: 35, name: '充填完了、撃て', difficulty: 10,
            assets: { hidden: 'images/stage035_hidden.jpg', reveal: 'images/stage035_reveal.jpg' },
            overlayAlpha: 0.76, clearQuota: 0.87,
            enemies: [
                { type: 'BEAM_BOSS', x: 300, y: 300, color: '#FF4400', speed: 4.5,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 26, beamWidth: 14, offset: 0 },
                { type: 'MINE',  x: 160, y: 160, color: '#FF6600' },
                { type: 'MINE',  x: 440, y: 160, color: '#FF6600' },
                { type: 'MINE',  x: 160, y: 440, color: '#FF6600' },
                { type: 'MINE',  x: 440, y: 440, color: '#FF6600' },
                { type: 'MINE',  x: 300, y: 520, color: '#FF6600' },
                { type: 'GHOST', x: 80,  y: 80,  color: '#AA66FF', speed: 2.0 }
            ], sparks: { count: 4, speed: 7.0, color: '#FF0055' }
        },
        {
            // Stage 36: SNIPER_BEAM intro — 2 QIX + 1 SNIPER
            // SNIPER cycle = 200 + 82 + 48 = 330
            id: 36, name: '十字に光が燃える夜', difficulty: 10,
            assets: { hidden: 'images/stage036_hidden.jpg', reveal: 'images/stage036_reveal.jpg' },
            overlayAlpha: 0.76, clearQuota: 0.87,
            enemies: [
                { type: 'QIX', x: 160, y: 160, color: '#44FF88', speed: 6.0 },
                { type: 'QIX', x: 440, y: 440, color: '#44FFCC', speed: 6.0 },
                { type: 'SNIPER_BEAM', x: 300, y: 300, color: '#FF0088', speed: 4.0,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 48, beamWidth: 12, offset: 0 }
            ], sparks: { count: 5, speed: 7.0, color: '#FF0055' }
        },
        {
            // Stage 37: 2 SNIPER_BEAM alternating
            // cycle = 200 + 82 + 48 = 330, alt offset = 165
            id: 37, name: '光が踊り狂う戦場', difficulty: 11,
            assets: { hidden: 'images/stage037_hidden.jpg', reveal: 'images/stage037_reveal.jpg' },
            overlayAlpha: 0.77, clearQuota: 0.87,
            enemies: [
                { type: 'SNIPER_BEAM', x: 160, y: 300, color: '#FF0088', speed: 4.0,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 48, beamWidth: 12, offset: 0   },
                { type: 'SNIPER_BEAM', x: 440, y: 300, color: '#FF44BB', speed: 4.0,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 48, beamWidth: 12, offset: 165 }
            ], sparks: { count: 5, speed: 7.2, color: '#FF0055' }
        },
        {
            // Stage 38: 1 BEAM_BOSS + 1 SNIPER_BEAM staggered ~quarter cycle + 1 GHOST
            // BEAM cycle = 190 + 80 + 24 = 294, quarter = 74
            // SNIPER cycle = 200 + 82 + 48 = 330, they fire with ~74 frame gap
            id: 38, name: '三条の閃光が走る', difficulty: 11,
            assets: { hidden: 'images/stage038_hidden.jpg', reveal: 'images/stage038_reveal.jpg' },
            overlayAlpha: 0.77, clearQuota: 0.88,
            enemies: [
                { type: 'BEAM_BOSS', x: 160, y: 300, color: '#FF4400', speed: 4.5,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 0  },
                { type: 'SNIPER_BEAM', x: 440, y: 300, color: '#FF0088', speed: 4.0,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 48, beamWidth: 12, offset: 74 },
                { type: 'GHOST', x: 300, y: 300, color: '#AA66FF', speed: 2.1 }
            ], sparks: { count: 5, speed: 7.2, color: '#FF0055' }
        },
        {
            // Stage 39: 2 BEAM_BOSS alt + 1 SNAKE + 3 MINE
            // cycle = 200 + 82 + 26 = 308, alt offset = 154
            id: 39, name: '光だけの地獄がある', difficulty: 11,
            assets: { hidden: 'images/stage039_hidden.jpg', reveal: 'images/stage039_reveal.jpg' },
            overlayAlpha: 0.77, clearQuota: 0.88,
            enemies: [
                { type: 'BEAM_BOSS', x: 160, y: 160, color: '#FF4400', speed: 4.8,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 26, beamWidth: 14, offset: 0   },
                { type: 'BEAM_BOSS', x: 440, y: 440, color: '#FF2200', speed: 4.8,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 26, beamWidth: 14, offset: 154 },
                { type: 'SNAKE', x: 300, y: 300, color: '#44FF88', speed: 1.7, bodyLength: 16, turnRate: 62 },
                { type: 'MINE',  x: 80,  y: 520, color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 300, y: 300, color: '#FF6600' }
            ], sparks: { count: 5, speed: 7.5, color: '#FF0055' }
        },
        {
            // Stage 40: tier boss — 2 SNIPER alt + 2 QIX fast + 2 MINE
            // SNIPER cycle = 195 + 80 + 46 = 321, alt offset = 161 (rounded)
            id: 40, name: '八方向から光が来た', difficulty: 11,
            assets: { hidden: 'images/stage040_hidden.jpg', reveal: 'images/stage040_reveal.jpg' },
            overlayAlpha: 0.78, clearQuota: 0.89,
            enemies: [
                { type: 'SNIPER_BEAM', x: 160, y: 160, color: '#FF0088', speed: 4.2,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 0   },
                { type: 'SNIPER_BEAM', x: 440, y: 440, color: '#FF44BB', speed: 4.2,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 161 },
                { type: 'QIX',  x: 300, y: 160, color: '#FFFFFF', speed: 7.0 },
                { type: 'QIX',  x: 300, y: 440, color: '#FF4400', speed: 7.0 },
                { type: 'MINE', x: 80,  y: 80,  color: '#FF6600' },
                { type: 'MINE', x: 520, y: 520, color: '#FF6600' }
            ], sparks: { count: 5, speed: 7.5, color: '#FF0055' }
        },

        // ---- OCTA_BEAM 導入 (41-50) ----
        {
            // Stage 41: OCTA intro — 1 OCTA + 2 QIX
            // OCTA cycle = 185 + 80 + 36 = 301
            id: 41, name: '全部盛りの戦場', difficulty: 11,
            assets: { hidden: 'images/stage041_hidden.jpg', reveal: 'images/stage041_reveal.jpg' },
            overlayAlpha: 0.78, clearQuota: 0.88,
            enemies: [
                { type: 'OCTA_BEAM', x: 300, y: 300, color: '#FF7700', speed: 3.5,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0 },
                { type: 'QIX', x: 160, y: 160, color: '#44FF88', speed: 6.2 },
                { type: 'QIX', x: 440, y: 440, color: '#44FFCC', speed: 6.2 }
            ], sparks: { count: 5, speed: 7.5, color: '#FF0055' }
        },
        {
            // Stage 42: 1 OCTA + 1 BEAM_BOSS — OCTA fires during BEAM's move phase
            // OCTA cycle = 185+80+36=301, BEAM cycle = 200+82+26=308
            // BEAM fires at t=200 (charge start), OCTA fires at t=185 → BEAM offset=0, OCTA offset=0, they almost alternate
            // Better: OCTA offset=0, BEAM offset=150 (BEAM fires ~midway through OCTA's next cycle)
            id: 42, name: '全てが一点に収束', difficulty: 11,
            assets: { hidden: 'images/stage042_hidden.jpg', reveal: 'images/stage042_reveal.jpg' },
            overlayAlpha: 0.78, clearQuota: 0.88,
            enemies: [
                { type: 'OCTA_BEAM', x: 300, y: 300, color: '#FF7700', speed: 3.5,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0   },
                { type: 'BEAM_BOSS', x: 160, y: 160, color: '#FF4400', speed: 4.5,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 26, beamWidth: 14, offset: 150 }
            ], sparks: { count: 5, speed: 7.5, color: '#FF0055' }
        },
        {
            // Stage 43: 1 OCTA + 3 GHOST
            id: 43, name: '重なる脅威の迷宮', difficulty: 12,
            assets: { hidden: 'images/stage043_hidden.jpg', reveal: 'images/stage043_reveal.jpg' },
            overlayAlpha: 0.78, clearQuota: 0.88,
            enemies: [
                { type: 'OCTA_BEAM', x: 300, y: 300, color: '#FF8800', speed: 3.5,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0 },
                { type: 'GHOST', x: 160, y: 160, color: '#AA66FF', speed: 2.0 },
                { type: 'GHOST', x: 440, y: 160, color: '#8888FF', speed: 2.2 },
                { type: 'GHOST', x: 300, y: 440, color: '#FF88FF', speed: 2.1 }
            ], sparks: { count: 5, speed: 7.8, color: '#FF0055' }
        },
        {
            // Stage 44: 1 OCTA + 1 SNAKE + 3 MINE + 1 TRACKER
            id: 44, name: 'どこからでも狙われる', difficulty: 12,
            assets: { hidden: 'images/stage044_hidden.jpg', reveal: 'images/stage044_reveal.jpg' },
            overlayAlpha: 0.78, clearQuota: 0.88,
            enemies: [
                { type: 'OCTA_BEAM', x: 300, y: 300, color: '#FF7700', speed: 3.5,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0 },
                { type: 'SNAKE',   x: 160, y: 100, color: '#44FF88', speed: 1.6, bodyLength: 16, turnRate: 64 },
                { type: 'MINE',    x: 160, y: 440, color: '#FF6600' },
                { type: 'MINE',    x: 440, y: 160, color: '#FF6600' },
                { type: 'MINE',    x: 440, y: 440, color: '#FF6600' },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 1.05 }
            ], sparks: { count: 5, speed: 7.8, color: '#FF0055' }
        },
        {
            // Stage 45: 2 OCTA alternating
            // OCTA cycle = 185+80+36=301, alt offset = 151 (rounded)
            id: 45, name: '混戦の中心に立て', difficulty: 12,
            assets: { hidden: 'images/stage045_hidden.jpg', reveal: 'images/stage045_reveal.jpg' },
            overlayAlpha: 0.79, clearQuota: 0.89,
            enemies: [
                { type: 'OCTA_BEAM', x: 160, y: 300, color: '#FF7700', speed: 3.5,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0   },
                { type: 'OCTA_BEAM', x: 440, y: 300, color: '#FFAA00', speed: 3.5,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 151 }
            ], sparks: { count: 5, speed: 7.8, color: '#FF0055' }
        },
        {
            // Stage 46: 1 OCTA + 2 SNIPER staggered + 1 QIX
            // OCTA cycle=301, SNIPER cycle=200+82+48=330
            // SNIPER[0] offset=0, SNIPER[1] offset=165 (alt), OCTA offset=82 (fires between snipers)
            id: 46, name: '嵐が来る前に囲め', difficulty: 12,
            assets: { hidden: 'images/stage046_hidden.jpg', reveal: 'images/stage046_reveal.jpg' },
            overlayAlpha: 0.79, clearQuota: 0.89,
            enemies: [
                { type: 'OCTA_BEAM', x: 300, y: 300, color: '#FF7700', speed: 3.8,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 82  },
                { type: 'SNIPER_BEAM', x: 160, y: 160, color: '#FF0088', speed: 4.0,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 48, beamWidth: 12, offset: 0   },
                { type: 'SNIPER_BEAM', x: 440, y: 440, color: '#FF44BB', speed: 4.0,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 48, beamWidth: 12, offset: 165 },
                { type: 'QIX', x: 300, y: 160, color: '#FFAA00', speed: 6.5 }
            ], sparks: { count: 5, speed: 7.8, color: '#FF0055' }
        },
        {
            // Stage 47: 1 OCTA + 2 BEAM_BOSS alt + 1 GHOST
            // BEAM cycle=308, alt offset=154; OCTA offset=77 (fires between BEAMs)
            id: 47, name: '全てが交差する場所', difficulty: 12,
            assets: { hidden: 'images/stage047_hidden.jpg', reveal: 'images/stage047_reveal.jpg' },
            overlayAlpha: 0.79, clearQuota: 0.89,
            enemies: [
                { type: 'OCTA_BEAM', x: 300, y: 300, color: '#FF8800', speed: 3.8,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 77  },
                { type: 'BEAM_BOSS', x: 160, y: 160, color: '#FF4400', speed: 4.8,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 26, beamWidth: 14, offset: 0   },
                { type: 'BEAM_BOSS', x: 440, y: 440, color: '#FF2200', speed: 4.8,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 26, beamWidth: 14, offset: 154 },
                { type: 'GHOST', x: 520, y: 160, color: '#AA66FF', speed: 2.2 }
            ], sparks: { count: 5, speed: 8.0, color: '#FF0055' }
        },
        {
            // Stage 48: 2 OCTA alt + 1 SNIPER + 2 MINE
            // OCTA cycle=301, alt offset=151; SNIPER offset=75 (fires between OCTAs)
            id: 48, name: '渦の中心は静かだ', difficulty: 12,
            assets: { hidden: 'images/stage048_hidden.jpg', reveal: 'images/stage048_reveal.jpg' },
            overlayAlpha: 0.80, clearQuota: 0.89,
            enemies: [
                { type: 'OCTA_BEAM', x: 160, y: 300, color: '#FF7700', speed: 4.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0   },
                { type: 'OCTA_BEAM', x: 440, y: 300, color: '#FFAA00', speed: 4.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 151 },
                { type: 'SNIPER_BEAM', x: 300, y: 300, color: '#FF0088', speed: 4.2,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 48, beamWidth: 12, offset: 75 },
                { type: 'MINE', x: 80,  y: 80,  color: '#FF6600' },
                { type: 'MINE', x: 520, y: 520, color: '#FF6600' }
            ], sparks: { count: 6, speed: 8.0, color: '#FF0055' }
        },
        {
            // Stage 49: 3 OCTA rotating
            // OCTA cycle=301, rotating offsets: 0, 100, 201 (cycle/3 ≈ 100)
            id: 49, name: '限界の一歩手前まで', difficulty: 12,
            assets: { hidden: 'images/stage049_hidden.jpg', reveal: 'images/stage049_reveal.jpg' },
            overlayAlpha: 0.80, clearQuota: 0.90,
            enemies: [
                { type: 'OCTA_BEAM', x: 160, y: 160, color: '#FF7700', speed: 4.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0   },
                { type: 'OCTA_BEAM', x: 440, y: 160, color: '#FF8800', speed: 4.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 100 },
                { type: 'OCTA_BEAM', x: 300, y: 440, color: '#FFAA00', speed: 4.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 201 }
            ], sparks: { count: 6, speed: 8.2, color: '#FF0055' }
        },
        {
            // Stage 50: tier boss — 2 OCTA alt + 1 BEAM_BOSS + 1 SNIPER
            // OCTA cycle=301, alt=151; BEAM offset=75; SNIPER offset=200
            id: 50, name: 'ここからが本番だぞ', difficulty: 12,
            assets: { hidden: 'images/stage050_hidden.jpg', reveal: 'images/stage050_reveal.jpg' },
            overlayAlpha: 0.80, clearQuota: 0.90,
            enemies: [
                { type: 'OCTA_BEAM', x: 160, y: 160, color: '#FF7700', speed: 4.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0   },
                { type: 'OCTA_BEAM', x: 440, y: 440, color: '#FFAA00', speed: 4.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 151 },
                { type: 'BEAM_BOSS', x: 440, y: 160, color: '#FF4400', speed: 4.8,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 26, beamWidth: 14, offset: 75  },
                { type: 'SNIPER_BEAM', x: 160, y: 440, color: '#FF0088', speed: 4.2,
                  moveDuration: 200, chargeDuration: 82, fireDuration: 48, beamWidth: 12, offset: 200 }
            ], sparks: { count: 6, speed: 8.2, color: '#FF0055' }
        },

        // ---- Mid-game variety (51-100): all enemy types mixed ----
        {
            // Stage 51: Speed Rush — 4 QIX speed 7.0 + 2 GHOST + 2 MINE (no beams)
            id: 51, name: '加速して駆け抜けろ', difficulty: 12,
            assets: { hidden: 'images/stage051_hidden.jpg', reveal: 'images/stage051_reveal.jpg' },
            overlayAlpha: 0.80, clearQuota: 0.89,
            enemies: [
                { type: 'QIX',   x: 160, y: 160, color: '#44FF88', speed: 7.0 },
                { type: 'QIX',   x: 440, y: 160, color: '#44FFCC', speed: 7.0 },
                { type: 'QIX',   x: 440, y: 440, color: '#88FF44', speed: 7.0 },
                { type: 'QIX',   x: 160, y: 440, color: '#FFFF44', speed: 7.0 },
                { type: 'GHOST', x: 300, y: 160, color: '#AA66FF', speed: 2.2 },
                { type: 'GHOST', x: 300, y: 440, color: '#8888FF', speed: 2.2 },
                { type: 'MINE',  x: 80,  y: 300, color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 300, color: '#FF6600' }
            ], sparks: { count: 6, speed: 8.2, color: '#FF0055' }
        },
        {
            // Stage 52: Serpent Garden — 3 SNAKE + 5 MINE (territory denial, no beams)
            id: 52, name: '蛇が育つ不思議な庭', difficulty: 12,
            assets: { hidden: 'images/stage052_hidden.jpg', reveal: 'images/stage052_reveal.jpg' },
            overlayAlpha: 0.80, clearQuota: 0.88,
            enemies: [
                { type: 'SNAKE', x: 160, y: 160, color: '#44FF88', speed: 1.6, bodyLength: 16, turnRate: 62 },
                { type: 'SNAKE', x: 440, y: 300, color: '#88FF44', speed: 1.8, bodyLength: 14, turnRate: 58 },
                { type: 'SNAKE', x: 160, y: 440, color: '#44FFCC', speed: 1.5, bodyLength: 18, turnRate: 65 },
                { type: 'MINE',  x: 80,  y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 300, y: 300, color: '#FF6600' },
                { type: 'MINE',  x: 80,  y: 520, color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 520, color: '#FF6600' }
            ], sparks: { count: 6, speed: 8.2, color: '#FF0055' }
        },
        {
            // Stage 53: 2 OCTA alt + 3 GHOST + 1 TRACKER
            // OCTA cycle=301, alt offset=151
            id: 53, name: '地雷に囲まれた迷路', difficulty: 13,
            assets: { hidden: 'images/stage053_hidden.jpg', reveal: 'images/stage053_reveal.jpg' },
            overlayAlpha: 0.80, clearQuota: 0.90,
            enemies: [
                { type: 'OCTA_BEAM', x: 160, y: 160, color: '#FF7700', speed: 4.2,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0   },
                { type: 'OCTA_BEAM', x: 440, y: 440, color: '#FFAA00', speed: 4.2,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 151 },
                { type: 'GHOST',   x: 300, y: 160, color: '#AA66FF', speed: 2.0 },
                { type: 'GHOST',   x: 160, y: 440, color: '#8888FF', speed: 2.2 },
                { type: 'GHOST',   x: 440, y: 160, color: '#FF88FF', speed: 1.9 },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 1.0 }
            ], sparks: { count: 6, speed: 8.5, color: '#FF0055' }
        },
        {
            // Stage 54: 3 BEAM rotating + 2 TRACKER fast — stillness vs movement tension
            // BEAM_BOSS cycle=294, rotating offsets: 0, 98, 196
            id: 54, name: '追跡者だらけの世界', difficulty: 13,
            assets: { hidden: 'images/stage054_hidden.jpg', reveal: 'images/stage054_reveal.jpg' },
            overlayAlpha: 0.81, clearQuota: 0.91,
            enemies: [
                { type: 'BEAM_BOSS', x: 160, y: 160, color: '#FF4400', speed: 5.0,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 0   },
                { type: 'BEAM_BOSS', x: 440, y: 160, color: '#FF2200', speed: 5.0,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 98  },
                { type: 'BEAM_BOSS', x: 300, y: 440, color: '#FF6600', speed: 5.0,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 196 },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 1.3 },
                { type: 'TRACKER', x: 590, y: 590, speed: 1.3 }
            ], sparks: { count: 6, speed: 8.5, color: '#FF0055' }
        },
        {
            // Stage 55: Ghost Gallery — 5 GHOSTs ONLY (special theme)
            id: 55, name: '幽霊が住む長い廊下', difficulty: 13,
            assets: { hidden: 'images/stage055_hidden.jpg', reveal: 'images/stage055_reveal.jpg' },
            overlayAlpha: 0.75, clearQuota: 0.87,
            enemies: [
                { type: 'GHOST', x: 80,  y: 80,  color: '#AA66FF', speed: 1.8 },
                { type: 'GHOST', x: 520, y: 80,  color: '#8888FF', speed: 2.0 },
                { type: 'GHOST', x: 300, y: 300, color: '#FF88FF', speed: 2.2 },
                { type: 'GHOST', x: 80,  y: 520, color: '#AA66FF', speed: 1.9 },
                { type: 'GHOST', x: 520, y: 520, color: '#8888FF', speed: 2.1 }
            ], sparks: { count: 6, speed: 8.2, color: '#FF0055' }
        },
        {
            // Stage 56: Pure organic — 3 QIX speed 7 + 2 GHOST + 2 TRACKER + 2 MINE (no beams)
            id: 56, name: '有機の嵐が来た', difficulty: 13,
            assets: { hidden: 'images/stage056_hidden.jpg', reveal: 'images/stage056_reveal.jpg' },
            overlayAlpha: 0.81, clearQuota: 0.90,
            enemies: [
                { type: 'QIX',     x: 160, y: 160, color: '#44FF88', speed: 7.0 },
                { type: 'QIX',     x: 440, y: 300, color: '#FFAA00', speed: 7.0 },
                { type: 'QIX',     x: 160, y: 440, color: '#44FFCC', speed: 7.0 },
                { type: 'GHOST',   x: 300, y: 160, color: '#AA66FF', speed: 2.0 },
                { type: 'GHOST',   x: 440, y: 440, color: '#8888FF', speed: 2.2 },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 1.1 },
                { type: 'TRACKER', x: 590, y: 10,  speed: 1.1 },
                { type: 'MINE',    x: 80,  y: 300, color: '#FF6600' },
                { type: 'MINE',    x: 520, y: 300, color: '#FF6600' }
            ], sparks: { count: 6, speed: 8.5, color: '#FF0055' }
        },
        {
            // Stage 57: 3 SHOOTER staggered (interval 150, offsets 0,70,140) + 3 GHOST + 3 MINE
            // SHOOTER cycle = interval+60 = 210, rotating: 0, 70, 140
            id: 57, name: '五匹の幽霊と戦え', difficulty: 13,
            assets: { hidden: 'images/stage057_hidden.jpg', reveal: 'images/stage057_reveal.jpg' },
            overlayAlpha: 0.81, clearQuota: 0.90,
            enemies: [
                { type: 'GHOST', x: 160, y: 160, color: '#AA66FF', speed: 1.9 },
                { type: 'GHOST', x: 440, y: 160, color: '#8888FF', speed: 2.0 },
                { type: 'GHOST', x: 300, y: 300, color: '#FF88FF', speed: 2.1 },
                { type: 'GHOST', x: 160, y: 440, color: '#CC66FF', speed: 2.0 },
                { type: 'GHOST', x: 440, y: 440, color: '#AA44FF', speed: 2.2 },
                { type: 'MINE',  x: 80,  y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 80,  y: 520, color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 520, color: '#FF6600' }
            ], sparks: { count: 6, speed: 8.5, color: '#FF0055' }
        },
        {
            // Stage 58: 2 SNIPER alt + 3 SNAKE + 3 MINE — snake destruction under sniper pressure
            // SNIPER cycle=321, alt offset=161
            id: 58, name: '光と霊が混在する場', difficulty: 14,
            assets: { hidden: 'images/stage058_hidden.jpg', reveal: 'images/stage058_reveal.jpg' },
            overlayAlpha: 0.82, clearQuota: 0.91,
            enemies: [
                { type: 'SNIPER_BEAM', x: 160, y: 160, color: '#FF0088', speed: 4.8,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 0   },
                { type: 'SNIPER_BEAM', x: 440, y: 440, color: '#FF44BB', speed: 4.8,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 161 },
                { type: 'GHOST', x: 300, y: 160, color: '#AA66FF', speed: 2.0 },
                { type: 'GHOST', x: 300, y: 440, color: '#8888FF', speed: 2.1 },
                { type: 'GHOST', x: 80,  y: 300, color: '#FF88FF', speed: 1.9 },
                { type: 'GHOST', x: 520, y: 300, color: '#CC66FF', speed: 2.0 },
                { type: 'MINE',  x: 160, y: 440, color: '#FF6600' },
                { type: 'MINE',  x: 440, y: 160, color: '#FF6600' }
            ], sparks: { count: 6, speed: 8.5, color: '#FF0055' }
        },
        {
            // Stage 59: 4 QIX speed 7.5 + 2 BEAM_BOSS alt + 1 GHOST — first QIX+beam combo
            // BEAM_BOSS cycle=294, alt offset=147
            id: 59, name: '序章が終わり本番へ', difficulty: 14,
            assets: { hidden: 'images/stage059_hidden.jpg', reveal: 'images/stage059_reveal.jpg' },
            overlayAlpha: 0.82, clearQuota: 0.91,
            enemies: [
                { type: 'QIX',     x: 160, y: 160, color: '#44FF88', speed: 7.5 },
                { type: 'QIX',     x: 440, y: 160, color: '#FFAA00', speed: 7.5 },
                { type: 'QIX',     x: 440, y: 440, color: '#44FFCC', speed: 7.5 },
                { type: 'QIX',     x: 160, y: 440, color: '#FF8844', speed: 7.5 },
                { type: 'BEAM_BOSS', x: 300, y: 160, color: '#FF4400', speed: 5.2,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 0   },
                { type: 'BEAM_BOSS', x: 300, y: 440, color: '#FF2200', speed: 5.2,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 147 },
                { type: 'GHOST',   x: 300, y: 300, color: '#AA66FF', speed: 2.2 }
            ], sparks: { count: 6, speed: 8.5, color: '#FF0055' }
        },
        {
            // Stage 60: Tier Boss All-Types — 2 OCTA alt + 1 BEAM_BOSS (offset 75) + 1 SNIPER (offset 200)
            //           + 2 QIX speed 6.5 + 1 GHOST + 1 TRACKER
            // OCTA cycle=301 alt=151; BEAM offset=75; SNIPER offset=200
            id: 60, name: '複数の脅威が重なる', difficulty: 14,
            assets: { hidden: 'images/stage060_hidden.jpg', reveal: 'images/stage060_reveal.jpg' },
            overlayAlpha: 0.83, clearQuota: 0.92,
            enemies: [
                { type: 'OCTA_BEAM', x: 160, y: 160, color: '#FF7700', speed: 4.5,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0   },
                { type: 'OCTA_BEAM', x: 440, y: 440, color: '#FFAA00', speed: 4.5,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 151 },
                { type: 'BEAM_BOSS', x: 440, y: 160, color: '#FF4400', speed: 5.2,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 75  },
                { type: 'SNIPER_BEAM', x: 160, y: 440, color: '#FF0088', speed: 4.8,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 200 },
                { type: 'QIX',     x: 300, y: 300, color: '#44FF88', speed: 6.5 },
                { type: 'QIX',     x: 80,  y: 80,  color: '#FFAA00', speed: 6.5 },
                { type: 'GHOST',   x: 520, y: 160, color: '#AA66FF', speed: 2.2 },
                { type: 'TRACKER', x: 590, y: 590, speed: 1.1 }
            ], sparks: { count: 6, speed: 8.5, color: '#FF0055' }
        },

        // ---- Expert (61-70) ----
        {
            // Stage 61: Mine Maze — 8 MINE + 1 OCTA + 1 GHOST
            id: 61, name: '地雷が道をふさぐ', difficulty: 14,
            assets: { hidden: 'images/stage061_hidden.jpg', reveal: 'images/stage061_reveal.jpg' },
            overlayAlpha: 0.78, clearQuota: 0.86,
            enemies: [
                { type: 'MINE', x: 160, y: 160, color: '#FF6600' },
                { type: 'MINE', x: 440, y: 160, color: '#FF6600' },
                { type: 'MINE', x: 80,  y: 300, color: '#FF6600' },
                { type: 'MINE', x: 520, y: 300, color: '#FF6600' },
                { type: 'MINE', x: 160, y: 440, color: '#FF6600' },
                { type: 'MINE', x: 440, y: 440, color: '#FF6600' },
                { type: 'MINE', x: 300, y: 80,  color: '#FF6600' },
                { type: 'MINE', x: 300, y: 520, color: '#FF6600' },
                { type: 'OCTA_BEAM', x: 300, y: 300, color: '#FF7700', speed: 4.5,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0 },
                { type: 'GHOST', x: 440, y: 440, color: '#AA66FF', speed: 2.0 }
            ], sparks: { count: 6, speed: 8.5, color: '#FF0055' }
        },
        {
            // Stage 62: 4 GHOST fast (speed 2.4-2.6) + 2 BEAM_BOSS alt
            // BEAM_BOSS cycle=294, alt offset=147
            id: 62, name: '幽霊が速すぎて無理', difficulty: 14,
            assets: { hidden: 'images/stage062_hidden.jpg', reveal: 'images/stage062_reveal.jpg' },
            overlayAlpha: 0.83, clearQuota: 0.90,
            enemies: [
                { type: 'GHOST',   x: 160, y: 160, color: '#AA66FF', speed: 2.4 },
                { type: 'GHOST',   x: 440, y: 160, color: '#8888FF', speed: 2.6 },
                { type: 'GHOST',   x: 440, y: 440, color: '#FF88FF', speed: 2.5 },
                { type: 'GHOST',   x: 160, y: 440, color: '#AA44FF', speed: 2.4 },
                { type: 'BEAM_BOSS', x: 300, y: 160, color: '#FF4400', speed: 5.5,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 0   },
                { type: 'BEAM_BOSS', x: 300, y: 440, color: '#FF2200', speed: 5.5,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 147 }
            ], sparks: { count: 7, speed: 9.0, color: '#FF0055' }
        },
        {
            // Stage 63: TRACKER SWARM — 5 TRACKER at speeds 1.4-1.8 (no other enemies)
            id: 63, name: '追跡者の軍勢が来た', difficulty: 14,
            assets: { hidden: 'images/stage063_hidden.jpg', reveal: 'images/stage063_reveal.jpg' },
            overlayAlpha: 0.83, clearQuota: 0.88,
            enemies: [
                { type: 'TRACKER', x: 10,  y: 10,  speed: 1.4 },
                { type: 'TRACKER', x: 590, y: 10,  speed: 1.6 },
                { type: 'TRACKER', x: 590, y: 590, speed: 1.8 },
                { type: 'TRACKER', x: 10,  y: 590, speed: 1.5 },
                { type: 'TRACKER', x: 300, y: 10,  speed: 1.7 }
            ], sparks: { count: 7, speed: 9.0, color: '#FF0055' }
        },
        {
            // Stage 64: 4 QIX speed 8 + 2 SNIPER_BEAM alt + 2 MINE
            // SNIPER cycle=321, alt offset=161
            id: 64, name: '砲台に囲まれた恐怖', difficulty: 15,
            assets: { hidden: 'images/stage064_hidden.jpg', reveal: 'images/stage064_reveal.jpg' },
            overlayAlpha: 0.84, clearQuota: 0.91,
            enemies: [
                { type: 'QIX',   x: 160, y: 160, color: '#44FF88', speed: 8.0 },
                { type: 'QIX',   x: 440, y: 160, color: '#FFAA00', speed: 8.0 },
                { type: 'QIX',   x: 440, y: 440, color: '#44FFCC', speed: 8.0 },
                { type: 'QIX',   x: 160, y: 440, color: '#FF8844', speed: 8.0 },
                { type: 'SNIPER_BEAM', x: 300, y: 160, color: '#FF0088', speed: 5.0,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 0   },
                { type: 'SNIPER_BEAM', x: 300, y: 440, color: '#FF44BB', speed: 5.0,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 161 },
                { type: 'MINE',  x: 80,  y: 300, color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 300, color: '#FF6600' }
            ], sparks: { count: 7, speed: 9.0, color: '#FF0055' }
        },
        {
            // Stage 65: 3 SNAKE + 1 OCTA_BEAM + 5 MINE + 1 GHOST
            // OCTA cycle=301
            id: 65, name: '蛇の軍団が押し寄せ', difficulty: 15,
            assets: { hidden: 'images/stage065_hidden.jpg', reveal: 'images/stage065_reveal.jpg' },
            overlayAlpha: 0.84, clearQuota: 0.91,
            enemies: [
                { type: 'SNAKE', x: 160, y: 160, color: '#44FF88', speed: 1.7, bodyLength: 16, turnRate: 60 },
                { type: 'SNAKE', x: 440, y: 300, color: '#88FF44', speed: 1.9, bodyLength: 14, turnRate: 56 },
                { type: 'SNAKE', x: 160, y: 440, color: '#44FFCC', speed: 1.6, bodyLength: 18, turnRate: 64 },
                { type: 'OCTA_BEAM', x: 300, y: 300, color: '#FF7700', speed: 5.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0 },
                { type: 'GHOST', x: 440, y: 160, color: '#AA66FF', speed: 2.3 },
                { type: 'MINE',  x: 80,  y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 80,  y: 520, color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 520, color: '#FF6600' },
                { type: 'MINE',  x: 300, y: 160, color: '#FF6600' }
            ], sparks: { count: 7, speed: 9.0, color: '#FF0055' }
        },
        {
            // Stage 66: 4 SHOOTER fast staggered (interval 120, offsets 0,45,90,135) + 2 QIX speed 7 + 2 MINE
            // SHOOTER cycle=180, covering 4: offsets 0, 45, 90, 135
            id: 66, name: '八方に渦が巻き散る', difficulty: 15,
            assets: { hidden: 'images/stage066_hidden.jpg', reveal: 'images/stage066_reveal.jpg' },
            overlayAlpha: 0.84, clearQuota: 0.91,
            enemies: [
                { type: 'SHOOTER', x: 160, y: 160, color: '#FF8800', speed: 5.0, interval: 120, offset: 0   },
                { type: 'SHOOTER', x: 440, y: 160, color: '#FFAA00', speed: 5.0, interval: 120, offset: 45  },
                { type: 'SHOOTER', x: 440, y: 440, color: '#FF6600', speed: 5.0, interval: 120, offset: 90  },
                { type: 'SHOOTER', x: 160, y: 440, color: '#FF5500', speed: 5.0, interval: 120, offset: 135 },
                { type: 'QIX',   x: 300, y: 160, color: '#44FF88', speed: 7.0 },
                { type: 'QIX',   x: 300, y: 440, color: '#FFAA00', speed: 7.0 },
                { type: 'MINE',  x: 80,  y: 300, color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 300, color: '#FF6600' }
            ], sparks: { count: 7, speed: 9.5, color: '#FF0055' }
        },
        {
            // Stage 67: 2 BEAM_BOSS alt + 2 OCTA_BEAM (offsets 75,225) + 2 GHOST + 1 TRACKER
            // BEAM cycle=294 alt=147; OCTA at 75, 225 (between beams)
            id: 67, name: '光の束に絡め取られ', difficulty: 15,
            assets: { hidden: 'images/stage067_hidden.jpg', reveal: 'images/stage067_reveal.jpg' },
            overlayAlpha: 0.84, clearQuota: 0.92,
            enemies: [
                { type: 'BEAM_BOSS', x: 160, y: 160, color: '#FF4400', speed: 5.5,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 0   },
                { type: 'BEAM_BOSS', x: 440, y: 440, color: '#FF2200', speed: 5.5,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 147 },
                { type: 'OCTA_BEAM', x: 440, y: 160, color: '#FF7700', speed: 5.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 75  },
                { type: 'OCTA_BEAM', x: 160, y: 440, color: '#FFAA00', speed: 5.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 225 },
                { type: 'GHOST',   x: 300, y: 160, color: '#AA66FF', speed: 2.4 },
                { type: 'GHOST',   x: 300, y: 440, color: '#8888FF', speed: 2.2 },
                { type: 'TRACKER', x: 10,  y: 590, speed: 1.2 }
            ], sparks: { count: 7, speed: 9.5, color: '#FF0055' }
        },
        {
            // Stage 68: 4 SNAKE + 2 SNIPER_BEAM alt + 4 MINE + 1 GHOST
            // SNIPER cycle=321, alt offset=161
            id: 68, name: '幽霊狩りの夜が来た', difficulty: 15,
            assets: { hidden: 'images/stage068_hidden.jpg', reveal: 'images/stage068_reveal.jpg' },
            overlayAlpha: 0.85, clearQuota: 0.92,
            enemies: [
                { type: 'SNAKE', x: 160, y: 160, color: '#44FF88', speed: 1.7, bodyLength: 16, turnRate: 60 },
                { type: 'SNAKE', x: 440, y: 160, color: '#88FF44', speed: 1.9, bodyLength: 15, turnRate: 58 },
                { type: 'SNAKE', x: 440, y: 440, color: '#44FFCC', speed: 1.6, bodyLength: 18, turnRate: 64 },
                { type: 'SNAKE', x: 160, y: 440, color: '#AAFFAA', speed: 2.0, bodyLength: 14, turnRate: 55 },
                { type: 'SNIPER_BEAM', x: 300, y: 160, color: '#FF0088', speed: 5.0,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 0   },
                { type: 'SNIPER_BEAM', x: 300, y: 440, color: '#FF44BB', speed: 5.0,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 161 },
                { type: 'GHOST', x: 300, y: 300, color: '#AA66FF', speed: 2.4 },
                { type: 'MINE',  x: 80,  y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 80,  y: 520, color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 520, color: '#FF6600' }
            ], sparks: { count: 7, speed: 9.5, color: '#FF0055' }
        },
        {
            // Stage 69: 5 QIX speed 9 + 1 TRACKER speed 1.5 + 2 MINE — pure QIX storm
            id: 69, name: '混沌の坩堝に落ちた', difficulty: 15,
            assets: { hidden: 'images/stage069_hidden.jpg', reveal: 'images/stage069_reveal.jpg' },
            overlayAlpha: 0.85, clearQuota: 0.92,
            enemies: [
                { type: 'QIX',     x: 160, y: 160, color: '#44FF88', speed: 9.0 },
                { type: 'QIX',     x: 440, y: 160, color: '#FFAA00', speed: 9.0 },
                { type: 'QIX',     x: 300, y: 300, color: '#44FFCC', speed: 9.0 },
                { type: 'QIX',     x: 440, y: 440, color: '#FF8844', speed: 9.0 },
                { type: 'QIX',     x: 160, y: 440, color: '#FFFFFF', speed: 9.0 },
                { type: 'TRACKER', x: 300, y: 10,  speed: 1.5 },
                { type: 'MINE',    x: 80,  y: 300, color: '#FF6600' },
                { type: 'MINE',    x: 520, y: 300, color: '#FF6600' }
            ], sparks: { count: 7, speed: 9.5, color: '#FF0055' }
        },
        {
            // Stage 70: Tier Boss Octa Horde — 4 OCTA covering + 2 QIX speed 7 + 2 GHOST + 1 TRACKER
            // OCTA cycle=301, covering: 0, 75, 151, 226
            id: 70, name: '中間地点の大番人', difficulty: 15,
            assets: { hidden: 'images/stage070_hidden.jpg', reveal: 'images/stage070_reveal.jpg' },
            overlayAlpha: 0.85, clearQuota: 0.92,
            enemies: [
                { type: 'OCTA_BEAM', x: 160, y: 160, color: '#FF7700', speed: 5.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0   },
                { type: 'OCTA_BEAM', x: 440, y: 160, color: '#FF8800', speed: 5.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 75  },
                { type: 'OCTA_BEAM', x: 440, y: 440, color: '#FFAA00', speed: 5.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 151 },
                { type: 'OCTA_BEAM', x: 160, y: 440, color: '#FF6600', speed: 5.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 226 },
                { type: 'QIX',     x: 300, y: 160, color: '#44FF88', speed: 7.0 },
                { type: 'QIX',     x: 300, y: 440, color: '#FFAA00', speed: 7.0 },
                { type: 'GHOST',   x: 80,  y: 300, color: '#AA66FF', speed: 2.2 },
                { type: 'GHOST',   x: 520, y: 300, color: '#8888FF', speed: 2.2 },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 1.2 }
            ], sparks: { count: 7, speed: 9.5, color: '#FF0055' }
        },

        // ---- Near-max (71-80) ----
        {
            // Stage 71: 5 QIX speed 9 + 3 GHOST + 2 MINE — organic speed hell (no beams)
            id: 71, name: '三重の圧力に耐えろ', difficulty: 15,
            assets: { hidden: 'images/stage071_hidden.jpg', reveal: 'images/stage071_reveal.jpg' },
            overlayAlpha: 0.85, clearQuota: 0.91,
            enemies: [
                { type: 'QIX',   x: 160, y: 160, color: '#44FF88', speed: 9.0 },
                { type: 'QIX',   x: 440, y: 160, color: '#FFAA00', speed: 9.0 },
                { type: 'QIX',   x: 300, y: 300, color: '#44FFCC', speed: 9.0 },
                { type: 'QIX',   x: 440, y: 440, color: '#FF8844', speed: 9.0 },
                { type: 'QIX',   x: 160, y: 440, color: '#FFFFFF', speed: 9.0 },
                { type: 'GHOST', x: 80,  y: 300, color: '#AA66FF', speed: 2.2 },
                { type: 'GHOST', x: 520, y: 300, color: '#8888FF', speed: 2.4 },
                { type: 'GHOST', x: 300, y: 80,  color: '#FF88FF', speed: 2.3 },
                { type: 'MINE',  x: 80,  y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 520, color: '#FF6600' }
            ], sparks: { count: 7, speed: 9.5, color: '#FF0055' }
        },
        {
            // Stage 72: SNAKE INVASION — 5 SNAKE (varying speeds/body) + 3 MINE + 1 GHOST (no beams)
            id: 72, name: 'うねる蛇の大波濤', difficulty: 16,
            assets: { hidden: 'images/stage072_hidden.jpg', reveal: 'images/stage072_reveal.jpg' },
            overlayAlpha: 0.85, clearQuota: 0.91,
            enemies: [
                { type: 'SNAKE', x: 160, y: 160, color: '#44FF88', speed: 1.6, bodyLength: 16, turnRate: 62 },
                { type: 'SNAKE', x: 440, y: 160, color: '#88FF44', speed: 2.0, bodyLength: 14, turnRate: 56 },
                { type: 'SNAKE', x: 440, y: 440, color: '#44FFCC', speed: 1.8, bodyLength: 20, turnRate: 68 },
                { type: 'SNAKE', x: 160, y: 440, color: '#AAFFAA', speed: 2.2, bodyLength: 15, turnRate: 58 },
                { type: 'SNAKE', x: 300, y: 300, color: '#66FF66', speed: 1.7, bodyLength: 18, turnRate: 64 },
                { type: 'GHOST', x: 80,  y: 80,  color: '#AA66FF', speed: 2.4 },
                { type: 'MINE',  x: 300, y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 80,  y: 520, color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 80,  color: '#FF6600' }
            ], sparks: { count: 8, speed: 10.0, color: '#FF0055' }
        },
        {
            // Stage 73: 3 SNIPER rotating + 3 GHOST + 2 TRACKER — sustained beam + chaser pressure
            // SNIPER cycle=321, rotating: 0, 107, 214
            id: 73, name: '幽霊の群れから逃げろ', difficulty: 16,
            assets: { hidden: 'images/stage073_hidden.jpg', reveal: 'images/stage073_reveal.jpg' },
            overlayAlpha: 0.85, clearQuota: 0.92,
            enemies: [
                { type: 'SNIPER_BEAM', x: 160, y: 160, color: '#FF0088', speed: 5.5,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 0   },
                { type: 'SNIPER_BEAM', x: 440, y: 160, color: '#FF44BB', speed: 5.5,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 107 },
                { type: 'SNIPER_BEAM', x: 300, y: 440, color: '#FF0055', speed: 5.5,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 214 },
                { type: 'GHOST',   x: 440, y: 440, color: '#AA66FF', speed: 2.4 },
                { type: 'GHOST',   x: 80,  y: 300, color: '#8888FF', speed: 2.6 },
                { type: 'GHOST',   x: 520, y: 300, color: '#FF88FF', speed: 2.5 },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 1.4 },
                { type: 'TRACKER', x: 590, y: 590, speed: 1.4 }
            ], sparks: { count: 8, speed: 10.0, color: '#FF0055' }
        },
        {
            // Stage 74: 3 OCTA rotating + 4 QIX speed 8 + 2 MINE — QIX+OCTA chaos
            // OCTA cycle=301 rotating: 0, 100, 201
            id: 74, name: '全てが狙われている', difficulty: 16,
            assets: { hidden: 'images/stage074_hidden.jpg', reveal: 'images/stage074_reveal.jpg' },
            overlayAlpha: 0.86, clearQuota: 0.93,
            enemies: [
                { type: 'OCTA_BEAM', x: 160, y: 160, color: '#FF7700', speed: 5.2,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0   },
                { type: 'OCTA_BEAM', x: 440, y: 160, color: '#FF8800', speed: 5.2,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 100 },
                { type: 'OCTA_BEAM', x: 300, y: 440, color: '#FFAA00', speed: 5.2,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 201 },
                { type: 'QIX',   x: 440, y: 440, color: '#44FF88', speed: 8.0 },
                { type: 'QIX',   x: 80,  y: 300, color: '#FFAA00', speed: 8.0 },
                { type: 'QIX',   x: 520, y: 300, color: '#44FFCC', speed: 8.0 },
                { type: 'QIX',   x: 300, y: 80,  color: '#FF8844', speed: 8.0 },
                { type: 'MINE',  x: 80,  y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 520, color: '#FF6600' }
            ], sparks: { count: 8, speed: 10.0, color: '#FF0055' }
        },
        {
            // Stage 75: 4 SHOOTER very fast staggered (interval 90, offsets 0,37,75,112) + 5 MINE + 1 GHOST
            // SHOOTER cycle=150, covering 4: offsets 0, 37, 75, 112
            id: 75, name: '砲台と地雷のコンボ', difficulty: 16,
            assets: { hidden: 'images/stage075_hidden.jpg', reveal: 'images/stage075_reveal.jpg' },
            overlayAlpha: 0.86, clearQuota: 0.92,
            enemies: [
                { type: 'SHOOTER', x: 160, y: 160, color: '#FF8800', speed: 5.0, interval: 90, offset: 0   },
                { type: 'SHOOTER', x: 440, y: 160, color: '#FFAA00', speed: 5.0, interval: 90, offset: 37  },
                { type: 'SHOOTER', x: 440, y: 440, color: '#FF6600', speed: 5.0, interval: 90, offset: 75  },
                { type: 'SHOOTER', x: 160, y: 440, color: '#FF5500', speed: 5.0, interval: 90, offset: 112 },
                { type: 'GHOST',   x: 300, y: 300, color: '#AA66FF', speed: 2.3 },
                { type: 'MINE',    x: 80,  y: 80,  color: '#FF6600' },
                { type: 'MINE',    x: 520, y: 80,  color: '#FF6600' },
                { type: 'MINE',    x: 300, y: 160, color: '#FF6600' },
                { type: 'MINE',    x: 80,  y: 520, color: '#FF6600' },
                { type: 'MINE',    x: 520, y: 520, color: '#FF6600' }
            ], sparks: { count: 8, speed: 10.0, color: '#FF0055' }
        },
        {
            // Stage 76: 4 BEAM_BOSS fast covering (cycle=220, offsets 0,55,110,165) + 2 GHOST + 2 MINE
            id: 76, name: '光の集中豪雨が降る', difficulty: 16,
            assets: { hidden: 'images/stage076_hidden.jpg', reveal: 'images/stage076_reveal.jpg' },
            overlayAlpha: 0.86, clearQuota: 0.92,
            enemies: [
                { type: 'BEAM_BOSS', x: 160, y: 160, color: '#FF4400', speed: 6.0,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 0   },
                { type: 'BEAM_BOSS', x: 440, y: 160, color: '#FF2200', speed: 6.0,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 55  },
                { type: 'BEAM_BOSS', x: 440, y: 440, color: '#FF6600', speed: 6.0,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 110 },
                { type: 'BEAM_BOSS', x: 160, y: 440, color: '#FF0000', speed: 6.0,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 165 },
                { type: 'GHOST', x: 300, y: 160, color: '#AA66FF', speed: 2.6 },
                { type: 'GHOST', x: 300, y: 440, color: '#8888FF', speed: 2.4 },
                { type: 'MINE',  x: 80,  y: 300, color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 300, color: '#FF6600' }
            ], sparks: { count: 8, speed: 10.5, color: '#FF0055' }
        },
        {
            // Stage 77: ORGANIC HELL — 3 QIX speed 8 + 3 GHOST + 3 TRACKER + 2 MINE (no beams)
            id: 77, name: '有機体だけの地獄', difficulty: 16,
            assets: { hidden: 'images/stage077_hidden.jpg', reveal: 'images/stage077_reveal.jpg' },
            overlayAlpha: 0.87, clearQuota: 0.93,
            enemies: [
                { type: 'QIX',     x: 160, y: 160, color: '#44FF88', speed: 8.0 },
                { type: 'QIX',     x: 440, y: 300, color: '#FFAA00', speed: 8.0 },
                { type: 'QIX',     x: 160, y: 440, color: '#44FFCC', speed: 8.0 },
                { type: 'GHOST',   x: 440, y: 160, color: '#AA66FF', speed: 2.6 },
                { type: 'GHOST',   x: 300, y: 440, color: '#8888FF', speed: 2.4 },
                { type: 'GHOST',   x: 80,  y: 300, color: '#FF88FF', speed: 2.7 },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 1.6 },
                { type: 'TRACKER', x: 590, y: 10,  speed: 1.8 },
                { type: 'TRACKER', x: 590, y: 590, speed: 1.7 },
                { type: 'MINE',    x: 300, y: 80,  color: '#FF6600' },
                { type: 'MINE',    x: 300, y: 520, color: '#FF6600' }
            ], sparks: { count: 8, speed: 10.5, color: '#FF0055' }
        },
        {
            // Stage 78: 3 OCTA rotating + 2 SNIPER_BEAM (offsets 50,211) + 3 GHOST — beam + ghost wall
            // OCTA cycle=301 rotating: 0, 100, 201
            id: 78, name: '全員が乱舞する戦場', difficulty: 16,
            assets: { hidden: 'images/stage078_hidden.jpg', reveal: 'images/stage078_reveal.jpg' },
            overlayAlpha: 0.87, clearQuota: 0.93,
            enemies: [
                { type: 'OCTA_BEAM', x: 160, y: 160, color: '#FF7700', speed: 5.5,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0   },
                { type: 'OCTA_BEAM', x: 440, y: 160, color: '#FF8800', speed: 5.5,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 100 },
                { type: 'OCTA_BEAM', x: 300, y: 440, color: '#FFAA00', speed: 5.5,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 201 },
                { type: 'SNIPER_BEAM', x: 440, y: 440, color: '#FF0088', speed: 5.5,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 50  },
                { type: 'SNIPER_BEAM', x: 80,  y: 440, color: '#FF44BB', speed: 5.5,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 211 },
                { type: 'GHOST', x: 300, y: 160, color: '#AA66FF', speed: 2.2 },
                { type: 'GHOST', x: 80,  y: 160, color: '#8888FF', speed: 2.2 },
                { type: 'GHOST', x: 520, y: 160, color: '#FF88FF', speed: 2.3 }
            ], sparks: { count: 8, speed: 10.5, color: '#FF0055' }
        },
        {
            // Stage 79: 4 SNAKE + 2 BEAM_BOSS alt + 5 MINE — territory war + beam timing
            // BEAM_BOSS cycle=294, alt offset=147
            id: 79, name: '漆黒の戦場が待つ', difficulty: 16,
            assets: { hidden: 'images/stage079_hidden.jpg', reveal: 'images/stage079_reveal.jpg' },
            overlayAlpha: 0.87, clearQuota: 0.93,
            enemies: [
                { type: 'SNAKE', x: 160, y: 160, color: '#44FF88', speed: 1.8, bodyLength: 16, turnRate: 60 },
                { type: 'SNAKE', x: 440, y: 160, color: '#88FF44', speed: 2.0, bodyLength: 15, turnRate: 56 },
                { type: 'SNAKE', x: 440, y: 440, color: '#44FFCC', speed: 1.7, bodyLength: 20, turnRate: 64 },
                { type: 'SNAKE', x: 160, y: 440, color: '#AAFFAA', speed: 1.9, bodyLength: 18, turnRate: 58 },
                { type: 'BEAM_BOSS', x: 300, y: 160, color: '#FF4400', speed: 5.8,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 0   },
                { type: 'BEAM_BOSS', x: 300, y: 440, color: '#FF2200', speed: 5.8,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 147 },
                { type: 'MINE',  x: 80,  y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 80,  y: 520, color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 520, color: '#FF6600' },
                { type: 'MINE',  x: 300, y: 300, color: '#FF6600' }
            ], sparks: { count: 8, speed: 10.5, color: '#FF0055' }
        },
        {
            // Stage 80: Tier Boss All-Types Hard
            // 2 OCTA alt + 2 BEAM_BOSS alt (75,222) + 2 SNIPER alt (37,198) + 2 QIX speed 8 + 2 GHOST + 1 TRACKER
            // OCTA cycle=301 alt=151; BEAM cycle=294 alt=147 offset 75,222; SNIPER cycle=321 alt=161 offset 37,198
            id: 80, name: '全方位からの大攻勢', difficulty: 16,
            assets: { hidden: 'images/stage080_hidden.jpg', reveal: 'images/stage080_reveal.jpg' },
            overlayAlpha: 0.88, clearQuota: 0.93,
            enemies: [
                { type: 'OCTA_BEAM', x: 160, y: 160, color: '#FF7700', speed: 5.5,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0   },
                { type: 'OCTA_BEAM', x: 440, y: 440, color: '#FFAA00', speed: 5.5,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 151 },
                { type: 'BEAM_BOSS', x: 440, y: 160, color: '#FF4400', speed: 6.0,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 75  },
                { type: 'BEAM_BOSS', x: 160, y: 440, color: '#FF2200', speed: 6.0,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 222 },
                { type: 'SNIPER_BEAM', x: 80,  y: 300, color: '#FF0088', speed: 5.5,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 37  },
                { type: 'SNIPER_BEAM', x: 520, y: 300, color: '#FF44BB', speed: 5.5,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 198 },
                { type: 'QIX',     x: 300, y: 160, color: '#44FF88', speed: 8.0 },
                { type: 'QIX',     x: 300, y: 440, color: '#FFAA00', speed: 8.0 },
                { type: 'GHOST',   x: 80,  y: 80,  color: '#AA66FF', speed: 2.6 },
                { type: 'GHOST',   x: 520, y: 80,  color: '#8888FF', speed: 2.6 },
                { type: 'TRACKER', x: 590, y: 590, speed: 1.5 }
            ], sparks: { count: 8, speed: 10.5, color: '#FF0055' }
        },

        // ---- Hell (81-90) ----
        {
            // Stage 81: TRACKER FINAL SWARM — 6 TRACKER at speeds 1.8-2.2 (no other enemies)
            id: 81, name: '追跡者の最終形態', difficulty: 17,
            assets: { hidden: 'images/stage081_hidden.jpg', reveal: 'images/stage081_reveal.jpg' },
            overlayAlpha: 0.88, clearQuota: 0.92,
            enemies: [
                { type: 'TRACKER', x: 10,  y: 10,  speed: 1.8 },
                { type: 'TRACKER', x: 300, y: 10,  speed: 2.0 },
                { type: 'TRACKER', x: 590, y: 10,  speed: 2.2 },
                { type: 'TRACKER', x: 590, y: 590, speed: 1.9 },
                { type: 'TRACKER', x: 300, y: 590, speed: 2.1 },
                { type: 'TRACKER', x: 10,  y: 590, speed: 2.0 }
            ], sparks: { count: 8, speed: 10.5, color: '#FF0055' }
        },
        {
            // Stage 82: 4 BEAM_BOSS fast covering + 3 QIX speed 8 + 1 GHOST
            // BEAM cycle=220 covering: 0, 55, 110, 165
            id: 82, name: '光に囲まれた牢獄', difficulty: 17,
            assets: { hidden: 'images/stage082_hidden.jpg', reveal: 'images/stage082_reveal.jpg' },
            overlayAlpha: 0.88, clearQuota: 0.93,
            enemies: [
                { type: 'BEAM_BOSS', x: 160, y: 160, color: '#FF4400', speed: 6.5,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 0   },
                { type: 'BEAM_BOSS', x: 440, y: 160, color: '#FF2200', speed: 6.5,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 55  },
                { type: 'BEAM_BOSS', x: 440, y: 440, color: '#FF6600', speed: 6.5,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 110 },
                { type: 'BEAM_BOSS', x: 160, y: 440, color: '#FF0000', speed: 6.5,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 165 },
                { type: 'QIX',   x: 300, y: 160, color: '#44FF88', speed: 8.0 },
                { type: 'QIX',   x: 80,  y: 440, color: '#FFAA00', speed: 8.0 },
                { type: 'QIX',   x: 520, y: 440, color: '#44FFCC', speed: 8.0 },
                { type: 'GHOST', x: 300, y: 300, color: '#AA66FF', speed: 2.4 }
            ], sparks: { count: 9, speed: 11.0, color: '#FF0055' }
        },
        {
            // Stage 83: 5 GHOST fast (speed 2.8-3.2) + 2 OCTA alt + 1 SNIPER — ghost swarm + beam timing
            // OCTA cycle=301, alt offset=151
            id: 83, name: '幽霊の電撃が炸裂', difficulty: 17,
            assets: { hidden: 'images/stage083_hidden.jpg', reveal: 'images/stage083_reveal.jpg' },
            overlayAlpha: 0.88, clearQuota: 0.93,
            enemies: [
                { type: 'GHOST',   x: 160, y: 160, color: '#AA66FF', speed: 2.3 },
                { type: 'GHOST',   x: 440, y: 160, color: '#8888FF', speed: 2.4 },
                { type: 'GHOST',   x: 300, y: 300, color: '#FF88FF', speed: 2.3 },
                { type: 'GHOST',   x: 440, y: 440, color: '#AA44FF', speed: 2.4 },
                { type: 'GHOST',   x: 160, y: 440, color: '#CC66FF', speed: 2.3 },
                { type: 'OCTA_BEAM', x: 80,  y: 300, color: '#FF7700', speed: 5.8,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0   },
                { type: 'OCTA_BEAM', x: 520, y: 300, color: '#FFAA00', speed: 5.8,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 151 },
                { type: 'SNIPER_BEAM', x: 300, y: 80, color: '#FF0088', speed: 5.5,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 75 }
            ], sparks: { count: 9, speed: 11.0, color: '#FF0055' }
        },
        {
            // Stage 84: 4 QIX speed 9 + 3 SNAKE + 5 MINE — pure organic territory annihilation (no beams)
            id: 84, name: '全種類が混ざる地獄', difficulty: 18,
            assets: { hidden: 'images/stage084_hidden.jpg', reveal: 'images/stage084_reveal.jpg' },
            overlayAlpha: 0.89, clearQuota: 0.93,
            enemies: [
                { type: 'QIX',   x: 160, y: 160, color: '#44FF88', speed: 9.0 },
                { type: 'QIX',   x: 440, y: 160, color: '#FFAA00', speed: 9.0 },
                { type: 'QIX',   x: 440, y: 440, color: '#44FFCC', speed: 9.0 },
                { type: 'QIX',   x: 160, y: 440, color: '#FFFFFF', speed: 9.0 },
                { type: 'SNAKE', x: 300, y: 160, color: '#44FF88', speed: 1.8, bodyLength: 18, turnRate: 60 },
                { type: 'SNAKE', x: 80,  y: 440, color: '#88FF44', speed: 2.0, bodyLength: 16, turnRate: 56 },
                { type: 'SNAKE', x: 520, y: 440, color: '#44FFCC', speed: 1.7, bodyLength: 20, turnRate: 64 },
                { type: 'MINE',  x: 80,  y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 300, y: 300, color: '#FF6600' },
                { type: 'MINE',  x: 80,  y: 520, color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 520, color: '#FF6600' }
            ], sparks: { count: 9, speed: 11.0, color: '#FF0055' }
        },
        {
            // Stage 85: PURE ORGANIC HELL — 4 QIX speed 8 + 2 GHOST speed 3.0 + 2 TRACKER speed 2.0 + 5 MINE (no beams)
            id: 85, name: '有機体だけの純地獄', difficulty: 18,
            assets: { hidden: 'images/stage085_hidden.jpg', reveal: 'images/stage085_reveal.jpg' },
            overlayAlpha: 0.89, clearQuota: 0.93,
            enemies: [
                { type: 'QIX',     x: 160, y: 160, color: '#44FF88', speed: 8.0 },
                { type: 'QIX',     x: 440, y: 160, color: '#FFAA00', speed: 8.0 },
                { type: 'QIX',     x: 440, y: 440, color: '#44FFCC', speed: 8.0 },
                { type: 'QIX',     x: 160, y: 440, color: '#FF8844', speed: 8.0 },
                { type: 'GHOST',   x: 80,  y: 300, color: '#AA66FF', speed: 2.3 },
                { type: 'GHOST',   x: 520, y: 300, color: '#8888FF', speed: 2.3 },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 2.0 },
                { type: 'TRACKER', x: 590, y: 590, speed: 2.0 },
                { type: 'MINE',    x: 300, y: 80,  color: '#FF6600' },
                { type: 'MINE',    x: 80,  y: 520, color: '#FF6600' },
                { type: 'MINE',    x: 520, y: 80,  color: '#FF6600' },
                { type: 'MINE',    x: 300, y: 520, color: '#FF6600' },
                { type: 'MINE',    x: 300, y: 300, color: '#FF6600' }
            ], sparks: { count: 9, speed: 11.0, color: '#FF0055' }
        },
        {
            // Stage 86: 3 SNIPER rotating + 3 OCTA rotating (offset 50 from snipers) + 2 GHOST + 2 TRACKER
            // SNIPER cycle=321 rotating: 0, 107, 214; OCTA cycle=301 rotating: 50, 150, 251
            id: 86, name: '影の豪雨が降り注ぐ', difficulty: 18,
            assets: { hidden: 'images/stage086_hidden.jpg', reveal: 'images/stage086_reveal.jpg' },
            overlayAlpha: 0.89, clearQuota: 0.93,
            enemies: [
                { type: 'SNIPER_BEAM', x: 160, y: 160, color: '#FF0088', speed: 6.0,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 0   },
                { type: 'SNIPER_BEAM', x: 440, y: 160, color: '#FF44BB', speed: 6.0,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 107 },
                { type: 'SNIPER_BEAM', x: 300, y: 440, color: '#FF0055', speed: 6.0,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 214 },
                { type: 'OCTA_BEAM', x: 440, y: 440, color: '#FF7700', speed: 5.8,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 50  },
                { type: 'OCTA_BEAM', x: 80,  y: 300, color: '#FF8800', speed: 5.8,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 150 },
                { type: 'OCTA_BEAM', x: 520, y: 300, color: '#FFAA00', speed: 5.8,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 251 },
                { type: 'GHOST',   x: 300, y: 160, color: '#AA66FF', speed: 2.3 },
                { type: 'GHOST',   x: 300, y: 440, color: '#8888FF', speed: 2.4 },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 1.8 },
                { type: 'TRACKER', x: 590, y: 590, speed: 2.0 }
            ], sparks: { count: 9, speed: 11.0, color: '#FF0055' }
        },
        {
            // Stage 87: SHOOTER INFERNO — 5 SHOOTER very fast (interval 80, offsets 0,28,56,84,112) + 3 MINE + 2 GHOST
            // SHOOTER cycle=140, rotating 5: offsets 0, 28, 56, 84, 112
            id: 87, name: '砲台が止まらない夜', difficulty: 18,
            assets: { hidden: 'images/stage087_hidden.jpg', reveal: 'images/stage087_reveal.jpg' },
            overlayAlpha: 0.90, clearQuota: 0.94,
            enemies: [
                { type: 'SHOOTER', x: 160, y: 160, color: '#FF8800', speed: 5.5, interval: 80, offset: 0   },
                { type: 'SHOOTER', x: 440, y: 160, color: '#FFAA00', speed: 5.5, interval: 80, offset: 28  },
                { type: 'SHOOTER', x: 520, y: 380, color: '#FF6600', speed: 5.5, interval: 80, offset: 56  },
                { type: 'SHOOTER', x: 300, y: 440, color: '#FF5500', speed: 5.5, interval: 80, offset: 84  },
                { type: 'SHOOTER', x: 80,  y: 380, color: '#FF9900', speed: 5.5, interval: 80, offset: 112 },
                { type: 'GHOST',   x: 300, y: 160, color: '#AA66FF', speed: 2.3 },
                { type: 'GHOST',   x: 300, y: 300, color: '#8888FF', speed: 2.4 },
                { type: 'MINE',    x: 80,  y: 80,  color: '#FF6600' },
                { type: 'MINE',    x: 520, y: 80,  color: '#FF6600' },
                { type: 'MINE',    x: 300, y: 520, color: '#FF6600' }
            ], sparks: { count: 9, speed: 11.5, color: '#FF0055' }
        },
        {
            // Stage 88: 3 BEAM_BOSS fast rotating (cycle=220, offsets 0,73,146) + 3 SNIPER rotating (offsets 37,137,237) + 3 QIX speed 9
            id: 88, name: '光の試練に立ち向かえ', difficulty: 19,
            assets: { hidden: 'images/stage088_hidden.jpg', reveal: 'images/stage088_reveal.jpg' },
            overlayAlpha: 0.90, clearQuota: 0.94,
            enemies: [
                { type: 'BEAM_BOSS', x: 160, y: 160, color: '#FF4400', speed: 7.0,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 0   },
                { type: 'BEAM_BOSS', x: 440, y: 160, color: '#FF2200', speed: 7.0,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 73  },
                { type: 'BEAM_BOSS', x: 300, y: 440, color: '#FF6600', speed: 7.0,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 146 },
                { type: 'SNIPER_BEAM', x: 440, y: 440, color: '#FF0088', speed: 6.5,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 37  },
                { type: 'SNIPER_BEAM', x: 80,  y: 300, color: '#FF44BB', speed: 6.5,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 137 },
                { type: 'SNIPER_BEAM', x: 520, y: 300, color: '#FF0055', speed: 6.5,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 237 },
                { type: 'QIX',   x: 300, y: 160, color: '#44FF88', speed: 9.0 },
                { type: 'QIX',   x: 80,  y: 80,  color: '#FFAA00', speed: 9.0 },
                { type: 'QIX',   x: 520, y: 520, color: '#44FFCC', speed: 9.0 }
            ], sparks: { count: 9, speed: 11.5, color: '#FF0055' }
        },
        {
            // Stage 89: 5 GHOST max speed (3.2-3.5) + 4 TRACKER fast (1.8-2.0) + 2 MINE — ultimate chaser nightmare
            id: 89, name: '幽霊の悪夢が始まる', difficulty: 19,
            assets: { hidden: 'images/stage089_hidden.jpg', reveal: 'images/stage089_reveal.jpg' },
            overlayAlpha: 0.90, clearQuota: 0.94,
            enemies: [
                { type: 'GHOST',   x: 160, y: 160, color: '#AA66FF', speed: 2.4 },
                { type: 'GHOST',   x: 440, y: 160, color: '#8888FF', speed: 2.5 },
                { type: 'GHOST',   x: 300, y: 300, color: '#FF88FF', speed: 2.5 },
                { type: 'GHOST',   x: 440, y: 440, color: '#AA44FF', speed: 2.4 },
                { type: 'GHOST',   x: 160, y: 440, color: '#CC66FF', speed: 2.5 },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 1.8 },
                { type: 'TRACKER', x: 590, y: 10,  speed: 2.0 },
                { type: 'TRACKER', x: 590, y: 590, speed: 1.9 },
                { type: 'TRACKER', x: 10,  y: 590, speed: 2.0 },
                { type: 'MINE',    x: 300, y: 80,  color: '#FF6600' },
                { type: 'MINE',    x: 300, y: 520, color: '#FF6600' }
            ], sparks: { count: 9, speed: 11.5, color: '#FF0055' }
        },
        {
            // Stage 90: TIER BOSS NO-BEAM ORGANIC HELL — 5 QIX speed 9 + 3 SNAKE + 4 MINE + 3 GHOST + 2 TRACKER
            id: 90, name: '有機的混沌の坩堝', difficulty: 19,
            assets: { hidden: 'images/stage090_hidden.jpg', reveal: 'images/stage090_reveal.jpg' },
            overlayAlpha: 0.91, clearQuota: 0.94,
            enemies: [
                { type: 'QIX',     x: 160, y: 160, color: '#44FF88', speed: 9.0 },
                { type: 'QIX',     x: 440, y: 160, color: '#FFAA00', speed: 9.0 },
                { type: 'QIX',     x: 300, y: 300, color: '#44FFCC', speed: 9.0 },
                { type: 'QIX',     x: 440, y: 440, color: '#FF8844', speed: 9.0 },
                { type: 'QIX',     x: 160, y: 440, color: '#FFFFFF', speed: 9.0 },
                { type: 'SNAKE',   x: 80,  y: 80,  color: '#44FF88', speed: 1.9, bodyLength: 18, turnRate: 60 },
                { type: 'SNAKE',   x: 520, y: 80,  color: '#88FF44', speed: 2.0, bodyLength: 16, turnRate: 56 },
                { type: 'SNAKE',   x: 300, y: 520, color: '#44FFCC', speed: 1.8, bodyLength: 20, turnRate: 64 },
                { type: 'GHOST',   x: 80,  y: 440, color: '#AA66FF', speed: 2.3 },
                { type: 'GHOST',   x: 520, y: 300, color: '#8888FF', speed: 2.3 },
                { type: 'GHOST',   x: 300, y: 80,  color: '#FF88FF', speed: 2.4 },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 2.0 },
                { type: 'TRACKER', x: 590, y: 590, speed: 2.0 },
                { type: 'MINE',    x: 80,  y: 300, color: '#FF6600' },
                { type: 'MINE',    x: 520, y: 440, color: '#FF6600' },
                { type: 'MINE',    x: 300, y: 160, color: '#FF6600' },
                { type: 'MINE',    x: 440, y: 520, color: '#FF6600' }
            ], sparks: { count: 9, speed: 11.5, color: '#FF0055' }
        },

        // ---- Maximum (91-100) ----
        {
            // Stage 91: 9-BEAM ARMAGEDDON — 3 OCTA rotating (0,90,180) + 3 BEAM fast (33,123,213) + 3 SNIPER (67,174,281)
            // Special pure-beam spectacle stage
            id: 91, name: '光が全てを薙ぎ払う', difficulty: 19,
            assets: { hidden: 'images/stage091_hidden.jpg', reveal: 'images/stage091_reveal.jpg' },
            overlayAlpha: 0.91, clearQuota: 0.93,
            enemies: [
                { type: 'OCTA_BEAM', x: 160, y: 160, color: '#FF7700', speed: 6.5,
                  moveDuration: 165, chargeDuration: 68, fireDuration: 37, beamWidth: 8, offset: 0   },
                { type: 'OCTA_BEAM', x: 440, y: 160, color: '#FF8800', speed: 6.5,
                  moveDuration: 165, chargeDuration: 68, fireDuration: 37, beamWidth: 8, offset: 90  },
                { type: 'OCTA_BEAM', x: 300, y: 440, color: '#FFAA00', speed: 6.5,
                  moveDuration: 165, chargeDuration: 68, fireDuration: 37, beamWidth: 8, offset: 180 },
                { type: 'BEAM_BOSS', x: 440, y: 440, color: '#FF4400', speed: 7.0,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 33  },
                { type: 'BEAM_BOSS', x: 80,  y: 300, color: '#FF2200', speed: 7.0,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 123 },
                { type: 'BEAM_BOSS', x: 520, y: 300, color: '#FF6600', speed: 7.0,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 213 },
                { type: 'SNIPER_BEAM', x: 160, y: 440, color: '#FF0088', speed: 6.5,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 67  },
                { type: 'SNIPER_BEAM', x: 300, y: 80,  color: '#FF44BB', speed: 6.5,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 174 },
                { type: 'SNIPER_BEAM', x: 520, y: 440, color: '#FF0055', speed: 6.5,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 281 }
            ], sparks: { count: 9, speed: 11.5, color: '#FF0055' }
        },
        {
            // Stage 92: 6 QIX max speed 10 + 3 GHOST + 2 MINE — organic hellstorm
            id: 92, name: '十二体が待ち構える', difficulty: 19,
            assets: { hidden: 'images/stage092_hidden.jpg', reveal: 'images/stage092_reveal.jpg' },
            overlayAlpha: 0.91, clearQuota: 0.94,
            enemies: [
                { type: 'QIX',   x: 160, y: 160, color: '#44FF88', speed: 10.0 },
                { type: 'QIX',   x: 440, y: 160, color: '#FFAA00', speed: 10.0 },
                { type: 'QIX',   x: 300, y: 300, color: '#44FFCC', speed: 10.0 },
                { type: 'QIX',   x: 440, y: 440, color: '#FF8844', speed: 10.0 },
                { type: 'QIX',   x: 160, y: 440, color: '#FFFFFF', speed: 10.0 },
                { type: 'QIX',   x: 80,  y: 80,  color: '#FF44FF', speed: 10.0 },
                { type: 'GHOST', x: 520, y: 160, color: '#AA66FF', speed: 2.3 },
                { type: 'GHOST', x: 80,  y: 440, color: '#8888FF', speed: 2.3 },
                { type: 'GHOST', x: 520, y: 440, color: '#FF88FF', speed: 2.4 },
                { type: 'MINE',  x: 300, y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 300, y: 520, color: '#FF6600' },
                { type: 'MINE',  x: 80,  y: 300, color: '#FF6600' }
            ], sparks: { count: 10, speed: 11.5, color: '#FF0055' }
        },
        {
            // Stage 93: 4 OCTA covering + 3 QIX speed 9 + 2 GHOST + 1 TRACKER — everything hard
            // OCTA cycle=301 covering: 0, 75, 151, 226
            id: 93, name: '八方の要塞を崩せ', difficulty: 20,
            assets: { hidden: 'images/stage093_hidden.jpg', reveal: 'images/stage093_reveal.jpg' },
            overlayAlpha: 0.91, clearQuota: 0.94,
            enemies: [
                { type: 'OCTA_BEAM', x: 160, y: 160, color: '#FF7700', speed: 7.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0   },
                { type: 'OCTA_BEAM', x: 440, y: 160, color: '#FF8800', speed: 7.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 75  },
                { type: 'OCTA_BEAM', x: 440, y: 440, color: '#FFAA00', speed: 7.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 151 },
                { type: 'OCTA_BEAM', x: 160, y: 440, color: '#FF6600', speed: 7.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 226 },
                { type: 'QIX',     x: 300, y: 160, color: '#44FF88', speed: 9.0 },
                { type: 'QIX',     x: 80,  y: 440, color: '#FFAA00', speed: 9.0 },
                { type: 'QIX',     x: 520, y: 440, color: '#44FFCC', speed: 9.0 },
                { type: 'GHOST',   x: 300, y: 300, color: '#AA66FF', speed: 2.3 },
                { type: 'GHOST',   x: 300, y: 440, color: '#8888FF', speed: 2.4 },
                { type: 'TRACKER', x: 590, y: 10,  speed: 2.0 }
            ], sparks: { count: 10, speed: 12.0, color: '#FF0055' }
        },
        {
            // Stage 94: 4 BEAM_BOSS covering + 4 SNAKE + 3 MINE + 1 GHOST — beam + snake territory annihilation
            // BEAM_BOSS cycle=294, covering: 0, 74, 147, 221
            id: 94, name: '光の迷宮をさまよえ', difficulty: 20,
            assets: { hidden: 'images/stage094_hidden.jpg', reveal: 'images/stage094_reveal.jpg' },
            overlayAlpha: 0.92, clearQuota: 0.94,
            enemies: [
                { type: 'BEAM_BOSS', x: 160, y: 160, color: '#FF4400', speed: 7.5,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 0   },
                { type: 'BEAM_BOSS', x: 440, y: 160, color: '#FF2200', speed: 7.5,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 74  },
                { type: 'BEAM_BOSS', x: 440, y: 440, color: '#FF6600', speed: 7.5,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 147 },
                { type: 'BEAM_BOSS', x: 160, y: 440, color: '#FF0000', speed: 7.5,
                  moveDuration: 190, chargeDuration: 80, fireDuration: 24, beamWidth: 14, offset: 221 },
                { type: 'SNAKE', x: 300, y: 160, color: '#44FF88', speed: 2.0, bodyLength: 18, turnRate: 58 },
                { type: 'SNAKE', x: 80,  y: 300, color: '#88FF44', speed: 1.9, bodyLength: 16, turnRate: 60 },
                { type: 'SNAKE', x: 520, y: 300, color: '#44FFCC', speed: 2.1, bodyLength: 20, turnRate: 56 },
                { type: 'SNAKE', x: 300, y: 440, color: '#AAFFAA', speed: 1.8, bodyLength: 15, turnRate: 64 },
                { type: 'GHOST', x: 300, y: 300, color: '#AA66FF', speed: 2.4 },
                { type: 'MINE',  x: 80,  y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 520, y: 80,  color: '#FF6600' },
                { type: 'MINE',  x: 300, y: 520, color: '#FF6600' }
            ], sparks: { count: 10, speed: 12.0, color: '#FF0055' }
        },
        {
            // Stage 95: 4 SNIPER covering + 4 GHOST fast speed 3.0 + 3 TRACKER speed 1.8 — beam + maximum chaser
            // SNIPER cycle=321, covering: 0, 80, 161, 241
            id: 95, name: '追跡者だらけの地獄', difficulty: 20,
            assets: { hidden: 'images/stage095_hidden.jpg', reveal: 'images/stage095_reveal.jpg' },
            overlayAlpha: 0.92, clearQuota: 0.94,
            enemies: [
                { type: 'SNIPER_BEAM', x: 160, y: 160, color: '#FF0088', speed: 7.0,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 0   },
                { type: 'SNIPER_BEAM', x: 440, y: 160, color: '#FF44BB', speed: 7.0,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 80  },
                { type: 'SNIPER_BEAM', x: 440, y: 440, color: '#FF0055', speed: 7.0,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 161 },
                { type: 'SNIPER_BEAM', x: 160, y: 440, color: '#FF66AA', speed: 7.0,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 241 },
                { type: 'GHOST',   x: 300, y: 160, color: '#AA66FF', speed: 2.3 },
                { type: 'GHOST',   x: 80,  y: 300, color: '#8888FF', speed: 2.3 },
                { type: 'GHOST',   x: 520, y: 300, color: '#FF88FF', speed: 2.4 },
                { type: 'GHOST',   x: 300, y: 440, color: '#CC66FF', speed: 2.3 },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 1.8 },
                { type: 'TRACKER', x: 590, y: 10,  speed: 1.8 },
                { type: 'TRACKER', x: 300, y: 590, speed: 1.8 }
            ], sparks: { count: 10, speed: 12.0, color: '#FF0055' }
        },
        {
            // Stage 96: 3 BEAM_BOSS fast rotating + 3 OCTA rotating (offset 30 from beams) + 3 QIX speed 9 + 2 GHOST
            // BEAM cycle=220 rotating: 0, 73, 146; OCTA cycle=301 rotating: 30, 130, 231
            id: 96, name: '三重の光線が唸る', difficulty: 20,
            assets: { hidden: 'images/stage096_hidden.jpg', reveal: 'images/stage096_reveal.jpg' },
            overlayAlpha: 0.92, clearQuota: 0.94,
            enemies: [
                { type: 'BEAM_BOSS', x: 160, y: 160, color: '#FF4400', speed: 7.5,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 0   },
                { type: 'BEAM_BOSS', x: 440, y: 160, color: '#FF2200', speed: 7.5,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 73  },
                { type: 'BEAM_BOSS', x: 300, y: 440, color: '#FF6600', speed: 7.5,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 146 },
                { type: 'OCTA_BEAM', x: 440, y: 440, color: '#FF7700', speed: 7.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 30  },
                { type: 'OCTA_BEAM', x: 80,  y: 300, color: '#FF8800', speed: 7.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 130 },
                { type: 'OCTA_BEAM', x: 520, y: 300, color: '#FFAA00', speed: 7.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 231 },
                { type: 'QIX',   x: 300, y: 160, color: '#44FF88', speed: 9.0 },
                { type: 'QIX',   x: 80,  y: 80,  color: '#FFAA00', speed: 9.0 },
                { type: 'QIX',   x: 520, y: 520, color: '#44FFCC', speed: 9.0 },
                { type: 'GHOST', x: 300, y: 300, color: '#AA66FF', speed: 2.3 },
                { type: 'GHOST', x: 300, y: 440, color: '#8888FF', speed: 2.4 }
            ], sparks: { count: 10, speed: 12.0, color: '#FF0055' }
        },
        {
            // Stage 97: FINAL ORGANIC — 4 QIX speed 9 + 4 GHOST speed 3.0 + 4 TRACKER speed 2.0 + 4 MINE (no beams)
            id: 97, name: '最後の有機的地獄', difficulty: 20,
            assets: { hidden: 'images/stage097_hidden.jpg', reveal: 'images/stage097_reveal.jpg' },
            overlayAlpha: 0.93, clearQuota: 0.94,
            enemies: [
                { type: 'QIX',     x: 160, y: 160, color: '#44FF88', speed: 9.0 },
                { type: 'QIX',     x: 440, y: 160, color: '#FFAA00', speed: 9.0 },
                { type: 'QIX',     x: 440, y: 440, color: '#44FFCC', speed: 9.0 },
                { type: 'QIX',     x: 160, y: 440, color: '#FFFFFF', speed: 9.0 },
                { type: 'GHOST',   x: 300, y: 160, color: '#AA66FF', speed: 2.3 },
                { type: 'GHOST',   x: 80,  y: 300, color: '#8888FF', speed: 2.3 },
                { type: 'GHOST',   x: 520, y: 300, color: '#FF88FF', speed: 2.4 },
                { type: 'GHOST',   x: 300, y: 440, color: '#CC66FF', speed: 2.3 },
                { type: 'TRACKER', x: 10,  y: 10,  speed: 2.0 },
                { type: 'TRACKER', x: 590, y: 10,  speed: 2.0 },
                { type: 'TRACKER', x: 590, y: 590, speed: 2.0 },
                { type: 'TRACKER', x: 10,  y: 590, speed: 2.0 },
                { type: 'MINE',    x: 300, y: 80,  color: '#FF6600' },
                { type: 'MINE',    x: 300, y: 520, color: '#FF6600' },
                { type: 'MINE',    x: 80,  y: 300, color: '#FF6600' },
                { type: 'MINE',    x: 520, y: 300, color: '#FF6600' }
            ], sparks: { count: 10, speed: 12.0, color: '#FF0055' }
        },
        {
            // Stage 98: 3 OCTA rotating + 3 BEAM fast rotating + 3 SNIPER rotating + 3 QIX speed 9 + 1 GHOST (13 enemies)
            // OCTA cycle=301 rotating: 0, 100, 201; BEAM cycle=220 rotating: 37, 110, 183; SNIPER: 67, 174, 281
            id: 98, name: '三柱の閃光が踊る', difficulty: 20,
            assets: { hidden: 'images/stage098_hidden.jpg', reveal: 'images/stage098_reveal.jpg' },
            overlayAlpha: 0.93, clearQuota: 0.95,
            enemies: [
                { type: 'OCTA_BEAM', x: 160, y: 160, color: '#FF7700', speed: 7.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0   },
                { type: 'OCTA_BEAM', x: 440, y: 160, color: '#FF8800', speed: 7.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 100 },
                { type: 'OCTA_BEAM', x: 300, y: 440, color: '#FFAA00', speed: 7.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 201 },
                { type: 'BEAM_BOSS', x: 440, y: 440, color: '#FF4400', speed: 7.5,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 37  },
                { type: 'BEAM_BOSS', x: 80,  y: 300, color: '#FF2200', speed: 7.5,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 110 },
                { type: 'BEAM_BOSS', x: 520, y: 300, color: '#FF6600', speed: 7.5,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 183 },
                { type: 'SNIPER_BEAM', x: 160, y: 440, color: '#FF0088', speed: 7.0,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 67  },
                { type: 'SNIPER_BEAM', x: 300, y: 80,  color: '#FF44BB', speed: 7.0,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 174 },
                { type: 'SNIPER_BEAM', x: 520, y: 440, color: '#FF0055', speed: 7.0,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 281 },
                { type: 'QIX',   x: 300, y: 300, color: '#44FF88', speed: 9.0 },
                { type: 'QIX',   x: 80,  y: 80,  color: '#FFAA00', speed: 9.0 },
                { type: 'QIX',   x: 520, y: 80,  color: '#44FFCC', speed: 9.0 },
                { type: 'GHOST', x: 300, y: 480, color: '#AA66FF', speed: 2.4 }
            ], sparks: { count: 10, speed: 12.0, color: '#FF0055' }
        },
        {
            // Stage 99: 2 OCTA alt + 2 BEAM_BOSS fast alt + 2 SNIPER alt + 3 QIX speed 9 + 2 GHOST + 2 TRACKER + 1 SNAKE + 2 MINE = 16 enemies
            // OCTA cycle=301 alt=151; BEAM cycle=220 alt=110; SNIPER cycle=321 alt=161
            id: 99, name: '終焉まであと一歩だ', difficulty: 20,
            assets: { hidden: 'images/stage099_hidden.jpg', reveal: 'images/stage099_reveal.jpg' },
            overlayAlpha: 0.93, clearQuota: 0.95,
            enemies: [
                { type: 'OCTA_BEAM', x: 160, y: 160, color: '#FF7700', speed: 7.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 0   },
                { type: 'OCTA_BEAM', x: 440, y: 440, color: '#FFAA00', speed: 7.0,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 151 },
                { type: 'BEAM_BOSS', x: 440, y: 160, color: '#FF4400', speed: 7.5,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 0   },
                { type: 'BEAM_BOSS', x: 160, y: 440, color: '#FF2200', speed: 7.5,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 110 },
                { type: 'SNIPER_BEAM', x: 80,  y: 300, color: '#FF0088', speed: 7.0,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 0   },
                { type: 'SNIPER_BEAM', x: 520, y: 300, color: '#FF44BB', speed: 7.0,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 161 },
                { type: 'QIX',     x: 300, y: 160, color: '#44FF88', speed: 9.0 },
                { type: 'QIX',     x: 80,  y: 80,  color: '#FFAA00', speed: 9.0 },
                { type: 'QIX',     x: 520, y: 520, color: '#44FFCC', speed: 9.0 },
                { type: 'GHOST',   x: 300, y: 300, color: '#AA66FF', speed: 2.4 },
                { type: 'GHOST',   x: 520, y: 80,  color: '#8888FF', speed: 2.4 },
                { type: 'TRACKER', x: 10,  y: 590, speed: 2.0 },
                { type: 'TRACKER', x: 590, y: 10,  speed: 2.0 },
                { type: 'SNAKE',   x: 300, y: 440, color: '#44FF88', speed: 2.0, bodyLength: 18, turnRate: 58 },
                { type: 'MINE',    x: 300, y: 80,  color: '#FF6600' },
                { type: 'MINE',    x: 300, y: 520, color: '#FF6600' }
            ], sparks: { count: 10, speed: 12.0, color: '#FF0055' }
        },
        {
            // Stage 100: TRUE FINAL — all types present
            // 2 BEAM_BOSS fast alt + 2 OCTA alt + 2 SNIPER alt + 3 QIX speed 9 + 2 GHOST + 2 TRACKER + 1 SNAKE + 2 MINE = 16 enemies
            id: 100, name: 'これが真の終着点だぞ', difficulty: 20,
            assets: { hidden: 'images/stage100_hidden.jpg', reveal: 'images/stage100_reveal.jpg' },
            overlayAlpha: 0.95, clearQuota: 0.95,
            enemies: [
                { type: 'BEAM_BOSS', x: 160, y: 160, color: '#FF4400', speed: 8.0,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 0   },
                { type: 'BEAM_BOSS', x: 440, y: 440, color: '#FF2200', speed: 8.0,
                  moveDuration: 136, chargeDuration: 58, fireDuration: 26, beamWidth: 14, offset: 110 },
                { type: 'OCTA_BEAM', x: 440, y: 160, color: '#FF7700', speed: 7.5,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 55  },
                { type: 'OCTA_BEAM', x: 160, y: 440, color: '#FFAA00', speed: 7.5,
                  moveDuration: 185, chargeDuration: 80, fireDuration: 36, beamWidth: 8, offset: 206 },
                { type: 'SNIPER_BEAM', x: 80,  y: 300, color: '#FF0088', speed: 7.2,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 27  },
                { type: 'SNIPER_BEAM', x: 520, y: 300, color: '#FF44BB', speed: 7.2,
                  moveDuration: 195, chargeDuration: 80, fireDuration: 46, beamWidth: 12, offset: 188 },
                { type: 'QIX',     x: 300, y: 160, color: '#44FF88', speed: 9.0 },
                { type: 'QIX',     x: 300, y: 440, color: '#FFAA00', speed: 9.0 },
                { type: 'QIX',     x: 300, y: 300, color: '#FFFFFF', speed: 9.0 },
                { type: 'GHOST',   x: 80,  y: 80,  color: '#AA66FF', speed: 2.4 },
                { type: 'GHOST',   x: 520, y: 80,  color: '#8888FF', speed: 2.5 },
                { type: 'TRACKER', x: 10,  y: 590, speed: 2.0 },
                { type: 'TRACKER', x: 590, y: 590, speed: 2.0 },
                { type: 'SNAKE',   x: 80,  y: 300, color: '#44FF88', speed: 2.0, bodyLength: 18, turnRate: 58 },
                { type: 'MINE',    x: 300, y: 80,  color: '#FF6600' },
                { type: 'MINE',    x: 300, y: 520, color: '#FF6600' }
            ], sparks: { count: 10, speed: 12.0, color: '#FF0055' }
        }
    ]
};
