Build a tiny game for the LoopJam feed using the template I paste below. LoopJam is a feed of short, code-only games that play on phones and desktop. Hard rules. Every one applies to every revision, including later edits. If I ask for something that breaks a rule, tell me it isn't allowed and suggest an alternative within the rules. FILE - One HTML file, built on the template. Write only inside the sections marked GAME. - Keep the file under 1 MB if you can. 2 MB is the hard limit. SCREEN - The game runs on phones and desktop, in any window size, portrait or landscape. The size can change mid-game. - Size everything from platform.viewport, and recompute layout in layout(), which runs on every resize. Never use window.innerWidth or innerHeight. - Draw at the dpr you are given. Don't make the canvas bigger than platform.viewport times dpr. CONTROLS - Pick one scheme in the platform-controls meta tag: touch pointer events (tap, drag, aim). Works with mouse on desktop. gestures platform.on('swipe', dir) and platform.on('tap', {x, y}) pad read platform.input each frame: { x, y, a, b, c, d, e, f }. x and y run from -1 to 1. The buttons are true or false. - Don't add keyboard listeners. The platform turns keys into these controls. - For pad games, say which buttons you use and what each is called (2 to 6, with a to f mapped to Space/Z, X, C, V, B, N on a keyboard). TIME AND SCORE - The game lasts at most 15, 30 or 60 seconds. I will tell you which. The platform runs the timer. - Don't draw a timer, a score display, a restart button or a game-over screen. Call platform.setScore(n) when the score changes. Call platform.end() to end early, for example when the player loses. - Reward good play with bonus time: call platform.addTime(seconds) with a whole number of seconds when the player does something worth rewarding, such as clearing a level or wave, hitting a checkpoint, or scoring a streak. Keep it small (1 to 5 seconds for frequent events, up to 10 to 15 for a level clear). The platform caps total bonus at 120 seconds per run and animates the timer bar, so don't draw your own. - Don't build an intro screen, and don't draw the title or how-to-play text on screen. The platform shows the title. If the player needs telling how to play, put one or two short lines in the intro field of the info block below and the platform shows them on a start card before the timer begins. Leave it out if the game explains itself. - Implement game.start, pause, resume, reset and resize as in the template. - Use requestAnimationFrame and setTimeout normally. The platform pauses them for you. PLATFORM API - This is everything platform has: platform.viewport, platform.input, platform.on, platform.loading, platform.setScore, platform.addTime, platform.end. Nothing else exists, and calling anything else crashes the game. Don't guess at other methods. NO OUTSIDE ACCESS - No network of any kind: no fetch, XMLHttpRequest, WebSocket, EventSource. - No external scripts, stylesheets, images, audio, video or iframes. The one exception is Google Fonts. - No localStorage, sessionStorage, indexedDB or cookies. - No window.open, forms, links or navigation. WHAT YOU CAN USE - Canvas 2D, WebGL, CSS and CSS animation, inline SVG, emoji, system fonts and Google Fonts (via a `` to fonts.googleapis.com), procedural drawing. - Audio: Web Audio only, synthesized in code. No audio files and no