{"params":{"colorway":{"type":"choice","default":"chalk-white","label":"Colorway","describe":"Curated kit-coherent scheme; sets all seven zone colours at once and shares its names with the kit's base cabinet run and oven housing so a kitchen built from all three reads as one design. brushed-steel is the approved cool stainless canopy on a charcoal capture band; chalk-white is a painted white hood with a warm grey band and darker brass; plaster-oak warms the canopy to painted plaster over a taupe band, which is how the kit concept draws it; sage-fitted keeps a near-white canopy and spends the kit accent on the band alone. Every scheme keeps the same ladder \u2014 canopy lightest, band a clear step under it, baffle slots darkest \u2014 so the thumbnail reads the same way in all four.","options":["brushed-steel","chalk-white","plaster-oak","sage-fitted"]},"canopy":{"type":"choice","default":"chimney","label":"Canopy","describe":"Which hood this build is, and the reason it is one asset rather than three. `chimney` is the approved default the hero draws: four flat canted flanks tapering from the full footprint up to the flue collar at 0.47 m. `box` squares those flanks into a straight-sided canopy of the same height, capped by the shallow tray the turnaround draws round the flue foot. `shelf` drops the canopy to a 0.115 m slab with a chamfered top arris and runs the flue the rest of the way. All three share ONE contract: the same 0.90 x 0.55 m footprint, the same underside and filter bank at y = 0, the same 0.30 x 0.24 m flue arriving at exactly 1.00 m, and the same palette \u2014 so a kitchen can swap between them under one wall run. REBUILDS rather than scales: the triangle count moves with it.","affects":"geometry","options":["chimney","box","shelf"]},"width":{"type":"range","default":0.8,"label":"Hood width","describe":"The hood's width in metres, the dimension real hoods are sold in: 0.6 for a single base unit, 0.9 (the default) for a standard hob, 1.2 for a range. It REBUILDS rather than stretching \u2014 the filter bank re-counts its cassettes at a constant 0.27 m pitch, so 0.6 m carries two baffle cassettes, 0.9 m three and 1.2 m four, and the triangle count moves with it. Depth, height, flue section, band height, cassette size, dial size and every chamfer are IDENTICAL at every width; only the number of cassettes and the lengths of the spans change.","affects":"geometry","min":0.6,"max":1.2,"step":0.1},"dials":{"type":"range","default":0,"label":"Control dials","describe":"How many turned brass control dials stand proud on the front of the canopy, in one centred row at a constant 0.13 m pitch and a constant 64 mm size, so the front stays bilaterally symmetric at every value. 0 is a clean touch-control hood with a bare canopy face; 2 (the default) is the domestic pair the hero draws; 3 reads as a commercial extractor. The dials never resize with the count, and they lie ON the canted face at its own 21-degree rake in the chimney build.","affects":"geometry","min":0,"max":3,"step":1},"rail":{"type":"toggle","default":false,"label":"Utensil rail","describe":"Fits a square-section brushed brass utensil rail across the front of the capture band on two stand-off brackets, 30 mm clear of the steel, the way a lived-in kitchen hangs its ladles off the hood. Off (the default) is the clean appliance the references draw. On, it adds a second warm horizontal to the front elevation under the dials and pushes the delivered depth from 0.55 m to 0.59 m, so leave it off where the hood has to sit tight under a 0.55 m soffit.","affects":"geometry"},"lived_in":{"type":"range","default":1,"label":"Lived in","describe":"The kit-wide showroom-to-lived-in axis, and all of it is geometry. A stainless hood has nothing soft on it, so it spends the axis on WEAR and on things not quite put back. 0 is showroom: a crisp 14 mm arris round the bottom of the capture band, the flue's joint collar dead on its line at 0.715 m, every filter cassette seated square in its runners. At the 0.35 default the arris is rubbed back to 20 mm and the collar has settled 35 mm down the flue. By 1.0 the arris is knocked right back to 32 mm where a lifted pan has caught the rim, the collar has slid a full 100 mm so the flue reads as two sections never pushed home, every cassette sits 4 mm low, and the left-hand one is back in crooked at 3 degrees. Every value keeps the same triangle count \u2014 the axis only displaces vertices.","affects":"geometry","min":0,"max":1,"step":0.05},"shell":{"type":"color","default":"#E3E6E4","label":"Canopy steel","describe":"Albedo of the brushed stainless canopy and of the whole flue including its top rim. The largest mass by far and the lightest zone, and the value everything else on the piece is read against; it must stay clearly lighter than the capture band or the hood loses the dark-bar-under-pale-trapezoid silhouette that makes it read as a hood at 10 m."},"trim":{"type":"color","default":"#5E5851","label":"Capture band","describe":"Albedo of the capture band round the bottom of the hood, its downward underside frame, and the joint collar partway up the flue. One clear value step under the canopy, which is what makes the 8 mm step at the top of the band read as a rim rather than as more canopy."},"interior":{"type":"color","default":"#8C837A","label":"Plenum","describe":"Albedo of everything seen INSIDE the hood: the plenum liner and ceiling above the filter bank, and the bodies and webs of the filter cassettes hanging in it. Bright galvanised duct, so it must stay a rung LIGHTER than the capture band around it, not darker: the frame, the liner and the cassettes stack within 30 mm of each other on the underside, and painting all three dark collapses them into one black hole with only the brass tabs to break it up. A light bank in a dark rim is what makes the plenum read as a real recess."},"throat":{"type":"color","default":"#47423C","label":"Flue throat","describe":"Albedo of the duct shaft behind the flue's top rim \u2014 the dark square mouth the top view looks into. Its own zone rather than sharing the plenum's, because the two cavities want opposite values: the plenum has to be LIGHT to read as a recess against the dark rim round it, while the throat has to be DARK to read as an opening against the pale flue round it. One value cannot do both, and painting them together washes the mouth out into a grey patch."},"filter":{"type":"color","default":"#2E2A26","label":"Baffle slots","describe":"Albedo of the floors of the baffle slots cut into each grease-filter cassette \u2014 the darkest zone on the piece, and what separates the filter bank from the light plenum behind it when the hood is seen from below. Keep it well under BOTH the frame and the plenum: the slots are the only near-dark on the underside, and they earn it by being real 9 mm channels rather than a painted grid."},"brass":{"type":"color","default":"#E0C078","label":"Brass hardware","describe":"Albedo of the turned control dials, the grab tab on the front of each filter cassette and the optional utensil rail \u2014 the single warm metal note on an otherwise cool piece. Reads as brushed brass by VALUE alone; the asset carries no metalness. Needs a clear step off the canopy steel it stands on."},"lamp":{"type":"color","default":"#F8F4EF","label":"Lamp lens","describe":"Albedo of the two recessed lens plates in the front underside strip, ahead of the filters. Its own zone because it is the piece's ONLY emitter (see `night`): a consumer finds the surface by colour, so it must never share a hex with the steel around it. Matte opal by day \u2014 a couple of rungs off the shell, invisible at noon and unmistakable after dark."}},"presets":{"brushed-steel":{"shell":"#E3E6E4","trim":"#5E5851","interior":"#8C837A","throat":"#47423C","filter":"#2E2A26","brass":"#E0C078","lamp":"#F8F4EF"},"chalk-white":{"shell":"#FAF8F3","trim":"#B4AAA0","interior":"#CFC3B0","throat":"#8C837A","filter":"#5E5851","brass":"#C9A24B","lamp":"#F8F4EF"},"plaster-oak":{"shell":"#F3EEE8","trim":"#8C837A","interior":"#B4AAA0","throat":"#5E5851","filter":"#2E2A26","brass":"#E0C078","lamp":"#FAF8F3"},"sage-fitted":{"shell":"#F0F2F1","trim":"#7E9179","interior":"#B4AAA0","throat":"#5E5851","filter":"#2E2A26","brass":"#C9A24B","lamp":"#FAF8F3"}},"night":{"lamp":{"color":"#E0C078","intensity":0.9,"describe":"twin halogen task lamps in the underside strip, burning down onto the hob","albedo":"#f8f4ef","findable":true}},"rev":1792408798,"materials":{"shell":{"kind":"metal","finish":"brushed"},"trim":{"kind":"metal","finish":"satin"},"interior":{"kind":"metal","finish":"satin"},"throat":{"kind":"metal","finish":"satin"},"filter":{"kind":"metal","finish":"satin"},"brass":{"kind":"metal","finish":"brushed"},"lamp":{"kind":"emissive","finish":"glow"}},"materials_note":"what each colour zone is made of: `kind` and `finish` name a procedural PBR material in https://polyfork.dev/materials.mjs (dressByAlbedo finds a zone by its albedo in COLOR_0). A zone not listed has not been classified.","night_note":"match `albedo` in COLOR_0 exactly, make those vertices emissive at `color` and `intensity`, and drop your scene lights. findable false means that colour is no longer in this asset's geometry: skip the zone rather than guessing.","preview_v":1792456441,"mod_v":1792408798}