{
  "streamed": true,
  "usage": {
    "prompt_tokens": 308,
    "completion_tokens": 11727,
    "total_tokens": 12035,
    "cost": 0.070786,
    "is_byok": false,
    "prompt_tokens_details": {
      "cached_tokens": 128,
      "cache_write_tokens": 0,
      "audio_tokens": 0,
      "video_tokens": 0
    },
    "cost_details": {
      "upstream_inference_cost": 0.070786,
      "upstream_inference_prompt_cost": 0.000424,
      "upstream_inference_completions_cost": 0.070362
    },
    "completion_tokens_details": {
      "reasoning_tokens": 8331,
      "image_tokens": 0,
      "audio_tokens": 0
    }
  },
  "finishReason": "stop",
  "content": "```html\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Big Mac</title>\n<style>\nhtml,body{margin:0;padding:0;overflow:hidden;width:100%;height:100%;background:#111}\ncanvas{display:block;width:100%;height:100%}\n</style>\n</head>\n<body>\n<script type=\"importmap\">\n{\n  \"imports\": {\n    \"three\": \"https://cdn.jsdelivr.net/npm/three@0.160.0/build/three.module.js\",\n    \"three/addons/\": \"https://cdn.jsdelivr.net/npm/three@0.160.0/examples/jsm/\"\n  }\n}\n</script>\n<script type=\"module\">\nimport * as THREE from 'three';\nimport { OrbitControls } from 'three/addons/controls/OrbitControls.js';\n\nconst scene = new THREE.Scene();\nscene.background = new THREE.Color(0xb8b0a4);\nscene.fog = new THREE.Fog(0xb8b0a4, 12, 28);\n\nconst camera = new THREE.PerspectiveCamera(42, window.innerWidth / window.innerHeight, 0.1, 100);\ncamera.position.set(3.8, 2.6, 6.2);\n\nconst renderer = new THREE.WebGLRenderer({ antialias: true, powerPreference: 'high-performance' });\nrenderer.setSize(window.innerWidth, window.innerHeight);\nrenderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));\nrenderer.shadowMap.enabled = true;\nrenderer.shadowMap.type = THREE.PCFSoftShadowMap;\nrenderer.toneMapping = THREE.ACESFilmicToneMapping;\nrenderer.toneMappingExposure = 1.15;\nrenderer.outputColorSpace = THREE.SRGBColorSpace;\ndocument.body.appendChild(renderer.domElement);\n\n// Lights\nconst hemi = new THREE.HemisphereLight(0xfff4e0, 0x2a2520, 0.55);\nscene.add(hemi);\n\nconst key = new THREE.DirectionalLight(0xfff8f0, 1.65);\nkey.position.set(5.5, 12, 6);\nkey.castShadow = true;\nkey.shadow.mapSize.set(2048, 2048);\nkey.shadow.camera.near = 1;\nkey.shadow.camera.far = 35;\nkey.shadow.camera.left = -8;\nkey.shadow.camera.right = 8;\nkey.shadow.camera.top = 8;\nkey.shadow.camera.bottom = -8;\nkey.shadow.bias = -0.00015;\nkey.shadow.normalBias = 0.02;\nscene.add(key);\n\nconst fill = new THREE.DirectionalLight(0xddeeff, 0.45);\nfill.position.set(-6, 4, -3);\nscene.add(fill);\n\nconst rim = new THREE.DirectionalLight(0xffccaa, 0.35);\nrim.position.set(-2, 3, 8);\nscene.add(rim);\n\nconst point = new THREE.PointLight(0xffaa77, 0.6, 18, 2);\npoint.position.set(2.2, 4, 2.5);\nscene.add(point);\n\n// Materials\nconst bunMat = new THREE.MeshStandardMaterial({\n  color: 0xe0b07a,\n  roughness: 0.88,\n  metalness: 0.02\n});\n\nconst pattyMat = new THREE.MeshStandardMaterial({\n  color: 0x3a2214,\n  roughness: 0.92,\n  metalness: 0.04\n});\n\nconst cheeseMat = new THREE.MeshPhysicalMaterial({\n  color: 0xf5c94a,\n  roughness: 0.32,\n  metalness: 0.05,\n  clearcoat: 0.25,\n  clearcoatRoughness: 0.4\n});\n\nconst sauceMat = new THREE.MeshPhysicalMaterial({\n  color: 0xf2c49a,\n  roughness: 0.28,\n  metalness: 0,\n  clearcoat: 0.55,\n  clearcoatRoughness: 0.25,\n  transparent: true,\n  opacity: 0.96\n});\n\nconst lettuceMat = new THREE.MeshStandardMaterial({\n  color: 0x3d9e2a,\n  roughness: 0.72,\n  metalness: 0,\n  side: THREE.DoubleSide\n});\n\nconst pickleMat = new THREE.MeshStandardMaterial({\n  color: 0x6a8f28,\n  roughness: 0.48,\n  metalness: 0.02\n});\n\nconst onionMat = new THREE.MeshPhysicalMaterial({\n  color: 0xf4f0e8,\n  roughness: 0.38,\n  metalness: 0.03,\n  clearcoat: 0.15,\n  transparent: true,\n  opacity: 0.92\n});\n\nconst sesameMat = new THREE.MeshStandardMaterial({\n  color: 0xf3ead2,\n  roughness: 0.55,\n  metalness: 0.08\n});\n\nconst floorMat = new THREE.MeshStandardMaterial({\n  color: 0x2c2824,\n  roughness: 0.9,\n  metalness: 0.05\n});\n\n// Burger construction\nconst burger = new THREE.Group();\nlet y = 0;\n\n// Bottom bun\nconst bottomBunH = 0.48;\nconst bottomBun = new THREE.Mesh(\n  new THREE.CylinderGeometry(1.48, 1.62, bottomBunH, 64),\n  bunMat\n);\nbottomBun.position.y = y + bottomBunH * 0.5;\nbottomBun.castShadow = true;\nbottomBun.receiveShadow = true;\nburger.add(bottomBun);\ny += bottomBunH;\n\n// Special sauce\nconst sauceH = 0.055;\nconst sauce1 = new THREE.Mesh(\n  new THREE.CylinderGeometry(1.38, 1.42, sauceH, 48),\n  sauceMat\n);\nsauce1.position.y = y + sauceH * 0.5;\nsauce1.castShadow = true;\nburger.add(sauce1);\ny += sauceH + 0.015;\n\n// Lettuce generator\nfunction addLettuce(baseY, count) {\n  for (let i = 0; i < count; i++) {\n    const r = 0.32 + Math.random() * 0.28;\n    const leaf = new THREE.Mesh(new THREE.CircleGeometry(r, 8), lettuceMat);\n    const ang = (i / count) * Math.PI * 2 + Math.random() * 0.6;\n    const dist = 0.25 + Math.random() * 0.85;\n    leaf.position.set(\n      Math.cos(ang) * dist,\n      baseY + Math.random() * 0.05,\n      Math.sin(ang) * dist\n    );\n    leaf.rotation.x = -Math.PI / 2 + (Math.random() - 0.5) * 0.9;\n    leaf.rotation.z = Math.random() * Math.PI * 2;\n    leaf.scale.setScalar(0.9 + Math.random() * 0.35);\n    leaf.castShadow = true;\n    leaf.receiveShadow = true;\n    burger.add(leaf);\n  }\n}\naddLettuce(y, 14);\ny += 0.11;\n\n// Cheese 1\nconst cheeseH = 0.065;\nconst cheese1 = new THREE.Mesh(new THREE.BoxGeometry(2.85, cheeseH, 2.85), cheeseMat);\ncheese1.position.y = y + cheeseH * 0.5;\ncheese1.rotation.y = 0.18;\ncheese1.castShadow = true;\ncheese1.receiveShadow = true;\nburger.add(cheese1);\ny += cheeseH + 0.02;\n\n// Patty 1\nconst pattyH = 0.23;\nconst patty1 = new THREE.Mesh(\n  new THREE.CylinderGeometry(1.52, 1.52, pattyH, 48),\n  pattyMat\n);\npatty1.position.y = y + pattyH * 0.5;\npatty1.castShadow = true;\npatty1.receiveShadow = true;\nburger.add(patty1);\ny += pattyH + 0.015;\n\n// Middle bun\nconst midH = 0.34;\nconst midBun = new THREE.Mesh(\n  new THREE.CylinderGeometry(1.48, 1.52, midH, 64),\n  bunMat\n);\nmidBun.position.y = y + midH * 0.5;\nmidBun.castShadow = true;\nmidBun.receiveShadow = true;\nburger.add(midBun);\ny += midH;\n\n// Sauce 2\nconst sauce2 = new THREE.Mesh(\n  new THREE.CylinderGeometry(1.36, 1.4, sauceH, 48),\n  sauceMat\n);\nsauce2.position.y = y + sauceH * 0.5;\nsauce2.castShadow = true;\nburger.add(sauce2);\ny += sauceH + 0.012;\n\n// Onions\nfor (let i = 0; i < 7; i++) {\n  const ringR = 0.22 + Math.random() * 0.55;\n  const onion = new THREE.Mesh(\n    new THREE.TorusGeometry(ringR, 0.032, 8, 28),\n    onionMat\n  );\n  onion.rotation.x = Math.PI / 2 + (Math.random() - 0.5) * 0.45;\n  onion.rotation.z = Math.random() * Math.PI * 2;\n  const a = Math.random() * Math.PI * 2;\n  const d = Math.random() * 0.75;\n  onion.position.set(Math.cos(a) * d, y + Math.random() * 0.025, Math.sin(a) * d);\n  onion.castShadow = true;\n  burger.add(onion);\n}\ny += 0.07;\n\n// Pickles\nfor (let i = 0; i < 5; i++) {\n  const pickle = new THREE.Mesh(\n    new THREE.CylinderGeometry(0.26 + Math.random() * 0.06, 0.26, 0.038, 18),\n    pickleMat\n  );\n  pickle.rotation.x = Math.PI / 2;\n  const a = (i / 5) * Math.PI * 2 + Math.random() * 0.4;\n  const d = 0.35 + Math.random() * 0.55;\n  pickle.position.set(Math.cos(a) * d, y, Math.sin(a) * d);\n  pickle.rotation.z = Math.random() * Math.PI;\n  pickle.castShadow = true;\n  pickle.receiveShadow = true;\n  burger.add(pickle);\n}\ny += 0.055;\n\n// Second lettuce\naddLettuce(y, 12);\ny += 0.105;\n\n// Cheese 2\nconst cheese2 = new THREE.Mesh(new THREE.BoxGeometry(2.8, cheeseH, 2.8), cheeseMat);\ncheese2.position.y = y + cheeseH * 0.5;\ncheese2.rotation.y = -0.22;\ncheese2.castShadow = true;\ncheese2.receiveShadow = true;\nburger.add(cheese2);\ny += cheeseH + 0.02;\n\n// Patty 2\nconst patty2 = new THREE.Mesh(\n  new THREE.CylinderGeometry(1.52, 1.52, pattyH, 48),\n  pattyMat\n);\npatty2.position.y = y + pattyH * 0.5;\npatty2.castShadow = true;\npatty2.receiveShadow = true;\nburger.add(patty2);\ny += pattyH + 0.012;\n\n// Top bun base\nconst topBaseH = 0.28;\nconst topBase = new THREE.Mesh(\n  new THREE.CylinderGeometry(1.48, 1.55, topBaseH, 64),\n  bunMat\n);\ntopBase.position.y = y + topBaseH * 0.5;\ntopBase.castShadow = true;\ntopBase.receiveShadow = true;\nburger.add(topBase);\ny += topBaseH;\n\n// Top dome (hemisphere)\nconst domeR = 1.5;\nconst dome = new THREE.Mesh(\n  new THREE.SphereGeometry(domeR, 64, 32, 0, Math.PI * 2, 0, Math.PI * 0.5),\n  bunMat\n);\ndome.position.y = y;\ndome.castShadow = true;\ndome.receiveShadow = true;\nburger.add(dome);\n\n// Sesame seeds\nfor (let i = 0; i < 55; i++) {\n  const sR = 0.032 + Math.random() * 0.018;\n  const seed = new THREE.Mesh(new THREE.SphereGeometry(sR, 6, 5), sesameMat);\n  const phi = Math.random() * 0.95;\n  const theta = Math.random() * Math.PI * 2;\n  seed.position.set(\n    domeR * Math.sin(phi) * Math.cos(theta),\n    y + domeR * Math.cos(phi) - 0.012,\n    domeR * Math.sin(phi) * Math.sin(theta)\n  );\n  seed.castShadow = true;\n  burger.add(seed);\n}\n\nconst totalH = y + domeR;\nburger.position.y = -totalH * 0.5 + 0.15;\nscene.add(burger);\n\n// Floor\nconst floor = new THREE.Mesh(new THREE.CircleGeometry(7.5, 64), floorMat);\nfloor.rotation.x = -Math.PI / 2;\nfloor.position.y = burger.position.y - 0.01;\nfloor.receiveShadow = true;\nscene.add(floor);\n\n// Controls\nconst controls = new OrbitControls(camera, renderer.domElement);\ncontrols.enableDamping = true;\ncontrols.dampingFactor = 0.06;\ncontrols.minDistance = 3.2;\ncontrols.maxDistance = 14;\ncontrols.maxPolarAngle = Math.PI * 0.48;\ncontrols.target.set(0, 0.15, 0);\ncontrols.update();\n\n// Resize\nfunction onResize() {\n  camera.aspect = window.innerWidth / window.innerHeight;\n  camera.updateProjectionMatrix();\n  renderer.setSize(window.innerWidth, window.innerHeight);\n}\nwindow.addEventListener('resize', onResize);\n\n// Animate\nfunction animate() {\n  requestAnimationFrame(animate);\n  burger.rotation.y += 0.0045;\n  controls.update();\n  renderer.render(scene, camera);\n}\nanimate();\n</script>\n</body>\n</html>\n```"
}