"""Prompts for the toolkit module: the task text plus the API reference of the toolkit for its category. The toolkits (kits/) are written by Claude; the system inlines them into the answer (scripts/kit_inline.py). kit_prompt(task_text, category) -> prompt; category(task_text) guesses svg / html / canvas / three for free requests. """ import re THREE = """Use the kit3d toolkit. The page already contains it: it creates the renderer, camera, lights, shadows, orbit \ controls and the animation loop, so you only build the scene. Import it in your module script: import { setup, box, sphere, cylinder, cone, torus, plane, group, onFrame } from 'kit3d'; API (sizes in world units, angles in degrees, colours like 0xff8800 or '#ff8800'; the y axis points up, the ground is \ the plane y = 0, so an object of height h stands on it at y = h/2): setup({ background, camera: [x,y,z], target: [x,y,z], ground: colour|true, groundSize, shadows, fog, autoRotate }) -> { scene, camera, renderer, controls, THREE }. Call it first. The camera looks at target (default [0,0,0]); autoRotate: true makes the camera circle slowly around the target. Every shape is added to the scene (or to `parent`) and returned as a three.js mesh: box({ size: [w,h,d], color, at: [x,y,z], rot: [rx,ry,rz], parent }), sphere({ r, color, at }), cylinder({ r, h, rTop, rBottom, color, at, rot }), cone({ r, h, color, at, rot }), torus({ r, tube, color, at, rot }), capsule({ r, h }), ring({ inner, outer }), plane({ size: [w,d], color, at }) (horizontal), poly({ kind: 'tetra'|'octa'|'dodeca'|'icosa', r }), extrude({ points: [[x,y],...], depth }) (a flat outline made 3D), lathe({ points: [[radius,y],...] }) (a profile turned around the vertical axis), tube({ points: [[x,y,z],...], r }). Material options on every shape: metal (0..1), rough (0..1), glow (emissive strength), opacity (0..1), flat, wire. group({ at, rot, parent }) -> an empty object for compound things: create parts with parent: g, then move/rotate g. points({ positions: [[x,y,z],...], colors: [...], size, glow }) and movePoints(pts, flatArray) for particles; stars({ count, radius }); line({ points: [[x,y,z],...], color }); label({ text, at, size, color }) (faces the camera). light.point({ color, intensity, at }), light.spot({ color, intensity, at, target, angle }). onFrame((t, dt) => { ... }) runs every frame (t = seconds since start): animate by changing mesh.position, mesh.rotation (radians), mesh.scale or material properties here. Example (a red ball bouncing next to a blue box): Answer with one complete HTML file in a single ```html code block: the import map from the task in , then \ Answer with one complete HTML file in a single ```html code block with your code in a at the end of (the system inlines both). Write semantic HTML with its classes and \ add your own