Skip to content

Commit bc898b4

Browse files
TMHSDigitalclaude
andcommitted
feat(showcase): add weight-rack (sports)
The third piece in the sports category: a home-gym half rack holding a loaded Olympic barbell. Four 3 in square uprights (2.08 m) on bolted base plates over padded, end-capped feet, 23 punched hole pockets per face on a 2 in pitch with raised numerals on the front uprights, side rails on bolted flanges, a rear crossmember, a zinc pull-up bar with welded collars and capped tops. J-hooks (J-section plate, UHMW-lined saddle) and spotter arms (mount plate, gusset, UHMW strip, end cap) hang on pull pins seated in the holes. The bar is one turned body (knurled shaft, centre knurl, ring marks, collars, grooved sleeves, recessed end caps) loaded per side with a 20 kg and a 15 kg bumper (steel hub, raised rim, raised kg/lb numerals) and a 5 kg cast-iron plate behind a coiled spring clip with rubber grips. Four storage horns on weld plates hold five more plates; two hex dumbbells lie on the floor. Twelve materials: powder coat, bore, zinc, chrome, knurl, rubber, UHMW, numeral, blue, yellow and green bumper, cast iron. Blender: E:\Blender-Developer-Tools\.scratch\5.2\blender-5.2.1-windows-x64\blender.exe reports "Blender 5.2.1 LTS". 4.5 LTS and 5.1 are left to CI (not run locally). Recomputed budgets (5.2.1): - 44264 tris (band 43500-45000); LOD1 0.5000, LOD2 0.2197 - 12 materials: powder 4758, bore 3036, zinc 4196, chrome 3348, knurl 256, rubber 1328, UHMW 104, numeral 3112, blue 864, yellow 576, green 576, iron 2240 faces - UVs in 0..1, overlap 0; AABB 2.2000 x 1.6364 x 2.0920 m, zmin 0 - collider 598 tris (ceiling 640); bake FINISHED; glTF 3303420 B - hygiene all 0, zero coplanar cross-shell pairs (first draft 264: plate bores shared the sleeve's cylinder and phase, a bumper numeral top sat on the iron plate's plane, a hole numeral wall on the J-hook side; fixed in the model by turning bores a third of a segment apart, lowering the numerals to 0.8 mm and narrowing the J-hook 1 mm) - 4 pads and 4 dumbbell heads each at zmin 0 - 4 pull pins 0.000 mm off their holes' axes (read from the pocket floors), 7.0 mm deep - bar seated -0.20 mm in both saddles, tilt 0.0000 deg, length 2.2000 m, uprights 2.0800 m, bumpers 0.450 m - 12 plates on 6 sleeves, 0.80 mm off axis (they hang on the sleeve), all 14 stop/plate/clip gaps -0.50 mm (band -0.8 to -0.2) - loaded bar 96.4 kg, mass centre 0.002 mm off its midpoint (tol 2 mm) - 3 components (the rack and two dumbbells), 222 shells - two default runs print identical measurements Falsifiers (flag -> measured -> exit): - --skip-decimate -> LOD1 ratio 1.0000 -> 9 - --stray-vert -> loose_v 1 -> 15 - --lift-z -> zmin 0.05000 -> 16 - --float-foot -> left front pad zmin 0.00300 -> 16 - --offset-pin -> left spotter pin 0.012 m off its hole axis -> 17 - --float-bar -> shaft-to-liner +0.0048 m both saddles -> 18 - --hook-high -> right hook one hole up, bar tilt 2.644 deg -> 19 - --gap-plate -> right iron plate gap +0.0075 m -> 20 - --odd-load -> left 5 kg swapped for 2.5 kg, mass centre 0.0226 m -> 21 - --loose-horn -> 4 components -> 22 Tris unchanged under every falsifier, envelope within 0.2 mm, every earlier budget green (hook-high keeps pins coaxial and seats at -0.215 mm; gap-plate moves the mass centre 0.4 mm, inside tolerance). Render: render_hero.py wrote hero and preview. Framing fill x 0.422, y 0.883, margins >= 0.039. The rack is about as wide as it is tall, so in 16:9 the vertical axis binds; yaw 42 deg measured x 0.400, no better. Asset-quality floors pass (edge90 0.243); a violation remaps to exit 23. Asset sheet (docs/gallery/asset-sheets/weight-rack.webp): not the least- designed object in the lineup; the hydrant is plainer. It reads at once as a loaded rack: numbered hole rows, plates with rims and numerals, horns, spotters, dumbbells. Weak points: the J-hooks hide behind the plates, the crossmembers are plain tubes, and the panel tool's fit crops the tall rack's caps slightly. Contact sheet: luma 0.2390 against calibration 0.2369-0.2428 (in band). Stage 0.2089 against 0.1919-0.2517 (in band). Wedge warmth +0.1007 against -0.1440/+0.1052/+0.0921 (warm, in spread). Saturation 0.2335 against 0.1525-0.2367 (upper end: red frame, coloured bumpers). Thumbnail legibility good. The first draft measured luma 0.2028; relit by raising the key, fill and wedge. Also updated: README, CLAUDE.md and ROADMAP counts and entries, the asset_sheet.py SELECT row, catalog.json, plugin.json and the regenerated gallery. build_gallery, check_site_links (100 pages, 0 failures), check_falsifier_targets, check_exit_code_readme, check_engine_id, check_gallery_images and the count check all pass. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
1 parent 1e807db commit bc898b4

59 files changed

Lines changed: 6809 additions & 98 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.cursor-plugin/plugin.json‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@
182182
"showcase/soccer-goal",
183183
"showcase/fallen-log",
184184
"showcase/office-chair",
185-
"showcase/hover-bike"
185+
"showcase/hover-bike",
186+
"showcase/weight-rack"
186187
]
187188
}

‎CLAUDE.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ rules/<rule-name>.mdc - Anti-pattern rules, 9 total
2222
templates/<template-name>/ - Starter projects, 3 total
2323
snippets/<snippet-name>.py - Standalone code patterns, 27 total
2424
examples/<name>/ - Runnable smoke-gated examples, 60 total (+ gallery.json)
25-
showcase/<name>/ - Budget-conformance props, 44 pieces, each with a gallery `category` (sibling of examples/; see showcase/README.md § Categories)
25+
showcase/<name>/ - Budget-conformance props, 45 pieces, each with a gallery `category` (sibling of examples/; see showcase/README.md § Categories)
2626
scripts/build_gallery.py - Regenerates docs/gallery/ from examples/gallery.json + showcase/gallery.json
2727
scripts/site/ - Vendored landing-page build (Jinja2); tokens.css is the shared palette
2828
tests/check_site_links.py - Internal link/anchor/alt gate over the built site (docs/)

‎README.md‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
</p>
1919

2020
<p align="center">
21-
<strong>16 skills</strong> &nbsp;&bull;&nbsp; <strong>9 rules</strong> &nbsp;&bull;&nbsp; <strong>3 templates</strong> &nbsp;&bull;&nbsp; <strong>27 snippets</strong> &nbsp;&bull;&nbsp; <strong>60 examples</strong> &nbsp;&bull;&nbsp; <strong>44 showcase pieces</strong>
21+
<strong>16 skills</strong> &nbsp;&bull;&nbsp; <strong>9 rules</strong> &nbsp;&bull;&nbsp; <strong>3 templates</strong> &nbsp;&bull;&nbsp; <strong>27 snippets</strong> &nbsp;&bull;&nbsp; <strong>60 examples</strong> &nbsp;&bull;&nbsp; <strong>45 showcase pieces</strong>
2222
</p>
2323

2424
<p align="center">
@@ -37,7 +37,7 @@
3737

3838
## Overview
3939

40-
This repository ships **16 skills, 9 rules, 3 templates, 27 snippets, 60 examples, and 44 showcase pieces** for Blender Python development targeting Blender 5.2 LTS (current stable) with Blender 4.5 LTS fallback support. Blender 5.1 is prior stable.
40+
This repository ships **16 skills, 9 rules, 3 templates, 27 snippets, 60 examples, and 45 showcase pieces** for Blender Python development targeting Blender 5.2 LTS (current stable) with Blender 4.5 LTS fallback support. Blender 5.1 is prior stable.
4141

4242
The content is consumed by AI coding agents reading these files directly from a checkout — **there is no MCP server in this repository, and none is required**. Cursor applies `rules/*.mdc` automatically wherever their scope globs match and takes skills by name in chat; Claude Code reads `skills/` and `rules/` from the project workspace, or from this repo kept as a referenced checkout. Any agent that can read files in a workspace can use it the same way. There is no build step for the content — edit the Markdown and Python files directly.
4343

@@ -106,7 +106,7 @@ per-script exit-code model, are in
106106
Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](showcase/README.md).
107107

108108
<details>
109-
<summary><strong>44 showcase pieces</strong> — click to expand the preview grid</summary>
109+
<summary><strong>45 showcase pieces</strong> — click to expand the preview grid</summary>
110110

111111
<p align="center">
112112
<a href="showcase/shipping-crate/"><img src="showcase/shipping-crate/preview.webp" width="24%" alt="Shipping crate: a wooden slat crate stencilled PORT ROYAL and NO 17, with iron corner brackets and an end handle, on a dark studio floor, warm wedge on the back wall" /></a>
@@ -153,6 +153,7 @@ Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](show
153153
<a href="showcase/fallen-log/"><img src="showcase/fallen-log/preview.webp" width="24%" alt="Fallen log: a mossy log settled into a soil mound, its dark furrowed bark peeled in patches, a hollow ringed butt, tiers of shelf fungi, toadstools, ferns and fallen leaves, on a dark studio floor" /></a>
154154
<a href="showcase/office-chair/"><img src="showcase/office-chair/preview.webp" width="24%" alt="Office chair: a tangerine-upholstered mesh-back task chair with a headrest, T-arms, a chrome gas lift and a polished five-star base on twin-wheel casters, on a dark studio floor" /></a>
155155
<a href="showcase/hover-bike/"><img src="showcase/hover-bike/preview.webp" width="24%" alt="Hover bike: a teal sci-fi speeder with pearl racing stripes, a stitched black saddle, clip-on bars and two ducted fans with orange spinners, parked on landing skids, on a dark studio floor" /></a>
156+
<a href="showcase/weight-rack/"><img src="showcase/weight-rack/preview.webp" width="24%" alt="Weight rack: a red half rack holding a barbell loaded with blue and yellow bumpers on J-hooks, plates on storage horns and two hex dumbbells, on a dark studio floor" /></a>
156157
</p>
157158

158159
[`shipping-crate`](showcase/shipping-crate/) — procedural crate through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets. Falsifier `--skip-decimate` exits 9.
@@ -239,6 +240,8 @@ Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](show
239240

240241
[`hover-bike`](showcase/hover-bike/) — the second `vehicles` piece: procedural sci-fi hover bike (a sculpted two-tone fuselage with panel seams, intake grilles, tail vents and cooling fins, a stitched pleated saddle, clip-on bars with grips, levers and an emissive instrument cluster, a flyscreen and headlight pod, two glowing exhaust nozzles, two ducted fans with canted stator vanes and handed seven-blade rotors, booms with foot pegs, and two landing skids on struts), whose skids on the floor, rotor hubs coaxial with their shrouds, blade-tip clearance to the shroud wall, mirror-symmetric fuselage with seat height, equal blade spacing, mass centre inside the skids' contact polygon and single connected assembly are recomputed from the mesh, through the same pipeline. Falsifiers `--float-skid` exits 16, `--offset-hub` 17, `--long-blades` 18, `--odd-hull` 19, `--skew-blade` 20, `--narrow-skids` 21, `--pop-lens` 22.
241242

243+
[`weight-rack`](showcase/weight-rack/) — the third `sports` piece: procedural home-gym half rack (punched, numbered square uprights on bolted base plates and padded feet, side rails on bolted flanges, a pull-up bar, J-hooks with UHMW-lined saddles and spotter arms on pull pins, four plate-storage horns, an Olympic barbell with a knurled shaft, collars and sleeves loaded with 20 and 15 kg bumpers and 5 kg iron plates behind spring clips, and two hex dumbbells on the floor), whose pads and dumbbell heads on the floor, pull pins coaxial with their holes, bar seated in both saddles and level, plates coaxial and seated along their sleeves, balanced load and single connected rack are recomputed from the mesh, through the same pipeline. Falsifiers `--float-foot` exits 16, `--offset-pin` 17, `--float-bar` 18, `--hook-high` 19, `--gap-plate` 20, `--odd-load` 21, `--loose-horn` 22.
244+
242245
</details>
243246

244247
## Examples

‎ROADMAP.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ Not committed; target list for the next content version. (v0.3.0 shipped the smo
156156
- Rowboat with oars in oarlocks as a game-prop showcase piece — oar shafts passing through the oarlock horns with clearance inside a band, hull resting on its keel line on a flat deck/floor
157157
- Weathervane as a game-prop showcase piece — arrow and cardinal arms on a spindle: the arrow's pivot bore coaxial with the spindle and the arrow statically balanced (centroid on the pivot axis within a band)
158158
- Showcase pieces above this line are category `village`. Candidates for the other categories (`showcase/README.md` § Categories):
159-
- **Sports:** ~~basketball hoop (pole, backboard, rim, hung net)~~ **SHIPPED** as `showcase/basketball-hoop/` — gooseneck pole on a bolted anchor plate, braced framed board with painted square, regulation rim, twelve-loop net hung on the rim hooks; `--drop-net` exits 18 on the loops threaded through the hooks while the envelope holds, `--tilt-rim` 19 on rim height/size/level, `--skip-decimate` 9 on the LOD1 ratio band; ~~soccer goal (tube frame, netting)~~ **SHIPPED** as `showcase/soccer-goal/` — 5 × 2 m youth goal, oval extrusion mitred and welded at the corners, cast brackets, foot connectors and hubs, sloped supports and a staked steel ground frame, sagging diamond-mesh net on a red head rope through 53 clips, turf patch with a goal line; `--float-bar` exits 16 on every ground bar bedded in the turf, `--short-support` 17 on the supports seated in their sockets, `--unclip-net` 18 on the head rope through every clip, `--wide-mouth` 19 on the clear mouth size, `--taut-net` 20 on the back panel's sag, while the envelope holds; tennis net on posts, weight rack with plates and dumbbells; alternates bowling pins and ball, skateboard
159+
- **Sports:** ~~basketball hoop (pole, backboard, rim, hung net)~~ **SHIPPED** as `showcase/basketball-hoop/` — gooseneck pole on a bolted anchor plate, braced framed board with painted square, regulation rim, twelve-loop net hung on the rim hooks; `--drop-net` exits 18 on the loops threaded through the hooks while the envelope holds, `--tilt-rim` 19 on rim height/size/level, `--skip-decimate` 9 on the LOD1 ratio band; ~~soccer goal (tube frame, netting)~~ **SHIPPED** as `showcase/soccer-goal/` — 5 × 2 m youth goal, oval extrusion mitred and welded at the corners, cast brackets, foot connectors and hubs, sloped supports and a staked steel ground frame, sagging diamond-mesh net on a red head rope through 53 clips, turf patch with a goal line; `--float-bar` exits 16 on every ground bar bedded in the turf, `--short-support` 17 on the supports seated in their sockets, `--unclip-net` 18 on the head rope through every clip, `--wide-mouth` 19 on the clear mouth size, `--taut-net` 20 on the back panel's sag, while the envelope holds; tennis net on posts, ~~weight rack with plates and dumbbells~~ **SHIPPED** as `showcase/weight-rack/` — half rack of punched, numbered uprights on bolted, padded feet, J-hooks with UHMW saddles and spotter arms on pull pins, plate-storage horns, a loaded Olympic barbell (knurled shaft, bumpers with raised numerals, iron change plates, spring clips) and two hex dumbbells; `--float-foot` exits 16 on every pad and dumbbell head on the floor, `--offset-pin` 17 on the pins coaxial with their holes, `--float-bar` 18 on the bar seated in both saddles, `--hook-high` 19 on the bar level, `--gap-plate` 20 on the plates seated along their sleeves, `--odd-load` 21 on the balanced load, `--loose-horn` 22 on one connected rack, while the envelope holds; alternates bowling pins and ball, skateboard
160160
- **Nature:** ~~pine tree (trunk, tiered branch whorls)~~ **SHIPPED** as `showcase/pine-tree/` — buttressed trunk with surface roots, ten seeded whorls of limbs seated in the bark, faceted needled shoots, dead stubs and cones; `--float-branches` exits 17 on the branch seat, `--lean-crown` 19 on trunk plumb, `--bunch-whorls` 20 on whorl spacing, while the envelope holds; boulder cluster, ~~fallen log with fungus~~ **SHIPPED** as `showcase/fallen-log/` — furrowed log on a bowed axis with peeled, galleried sapwood, a hollow saw-cut butt, a splintered top, broken stubs, moss cushions, three tiers of bracket fungi, and a soil mound with toadstools, ferns and fallen leaves; `--hump-ground` exits 17 on the log bedded along its length, `--float-fungi` 18 on the brackets rooted in the bark, `--tilt-ground` 19 on the mass centre over the contact patch, `--sunny-moss` 20 on moss facing up or into the shade, `--float-litter` 21 on the ground cover rooted in the soil, while the envelope holds; tree stump with mushrooms; alternates flowering shrub, cattail reeds
161161
- **Household:** ~~articulated desk lamp~~ **SHIPPED** as `showcase/desk-lamp/` — stepped cast base, parallelogram arm sections pinned through knuckle bosses, three springs hung on cross bars, domed shade with reflector, lamp, flex and plugged cable; `--offset-pin` exits 17 on the pins coaxial with their eyes, `--unhook-spring` 18 on the spring ends seated on their bars, `--hollow-base` 19 on the mass centre over the base footprint, while the envelope holds; ~~office chair (five-star base, casters)~~ **SHIPPED** as `showcase/office-chair/` — polished five-star base with ribbed spokes and swivelled twin-wheel casters, chrome gas lift in a telescoping cover, tilt mechanism with knob and levers, contoured seat with a piped welt, reclined mesh back with lumbar pad and headrest on an aluminium spine, height-adjustable T-arms; `--float-caster` exits 16 on every wheel on the floor, `--skew-spoke` 17 on the five-star spacing and plumb stems, `--offset-column` 18 on the gas lift coaxial with hub and socket, `--uneven-arms` 19 on mirrored level armrests, `--loose-wheel` 20 on one connected assembly, while the envelope holds; kitchen stool, mini fridge; alternates floor fan, laundry basket
162162
- **Vehicles:** ~~quad drone~~ **SHIPPED** as `showcase/quad-drone/` — two-tone moulded shell with battery, GPS, grilles and visor, four folding arms hinged on pinned clevises, slotted motors with twisted two-blade props, rubber-footed skids, three-axis gimbal camera; `--float-foot` exits 16 on every foot grounded, `--unlock-arm` 17 on the motor axes on an exact X, `--long-blades` 18 on the prop-disc clearance, `--narrow-skids` 19 on the mass centre inside the landing footprint, `--drop-lens` 20 on one connected assembly, while the envelope holds; traffic cone and barrier set, ~~hover bike~~ **SHIPPED** as `showcase/hover-bike/` — sculpted two-tone fuselage with panel seams, intake grilles, tail vents and cooling fins, a stitched pleated saddle, clip-on bars with grips, levers and an emissive instrument cluster, a flyscreen and headlight pod, two exhaust nozzles, two ducted fans (airfoil shrouds, canted stator vanes, handed seven-blade rotors), booms with foot pegs, and two landing skids on struts; `--float-skid` exits 16 on both skids grounded, `--offset-hub` 17 on the hubs coaxial with their shrouds, `--long-blades` 18 on the blade-tip clearance band, `--odd-hull` 19 on the fuselage's mirror symmetry, `--skew-blade` 20 on equal blade spacing, `--narrow-skids` 21 on the mass centre inside the skids' contact polygon, `--pop-lens` 22 on one connected assembly, while the envelope holds; sci-fi cargo loader; alternates sci-fi supply crate

‎docs/gallery/anvil/index.html‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ <h1>anvil</h1>
358358
<p>A procedural blacksmith anvil on a timber stump through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract.</p>
359359
</header>
360360
<main id="main">
361-
<nav class="pager" aria-label="Showcase pieces"><a rel="prev" href="../wheelbarrow/" aria-label="Previous showcase piece: wheelbarrow"><span aria-hidden="true">&larr;</span> wheelbarrow</a><span class="pager-pos hud">14 of 44 showcase pieces<span class="pager-keys"> &middot; <kbd>&larr;</kbd><kbd>&rarr;</kbd></span></span><a rel="next" href="../water-trough/" aria-label="Next showcase piece: water-trough">water-trough <span aria-hidden="true">&rarr;</span></a></nav>
361+
<nav class="pager" aria-label="Showcase pieces"><a rel="prev" href="../wheelbarrow/" aria-label="Previous showcase piece: wheelbarrow"><span aria-hidden="true">&larr;</span> wheelbarrow</a><span class="pager-pos hud">14 of 45 showcase pieces<span class="pager-keys"> &middot; <kbd>&larr;</kbd><kbd>&rarr;</kbd></span></span><a rel="next" href="../water-trough/" aria-label="Next showcase piece: water-trough">water-trough <span aria-hidden="true">&rarr;</span></a></nav>
362362
<button class="detail-hero" id="heroZoom" type="button" aria-label="View full size: A forged-steel anvil with a hammer-polished face and a flared, squared waist on a hooped timber stump, a cross-peen hammer on the floor and forge light on its flank.">
363363
<img src="../assets/anvil-hero.webp" alt="A forged-steel anvil with a hammer-polished face and a flared, squared waist on a hooped timber stump, a cross-peen hammer on the floor and forge light on its flank." width="1280" height="720" fetchpriority="high" />
364364
</button>
@@ -3716,7 +3716,7 @@ <h3><a href="../wooden-barrel/">wooden-barrel</a></h3>
37163716
</article>
37173717
</div>
37183718
</section>
3719-
<nav class="pager pager-foot" aria-label="Showcase pieces"><a rel="prev" href="../wheelbarrow/" aria-label="Previous showcase piece: wheelbarrow"><span aria-hidden="true">&larr;</span> wheelbarrow</a><span class="pager-pos hud">14 of 44 showcase pieces</span><a rel="next" href="../water-trough/" aria-label="Next showcase piece: water-trough">water-trough <span aria-hidden="true">&rarr;</span></a></nav>
3719+
<nav class="pager pager-foot" aria-label="Showcase pieces"><a rel="prev" href="../wheelbarrow/" aria-label="Previous showcase piece: wheelbarrow"><span aria-hidden="true">&larr;</span> wheelbarrow</a><span class="pager-pos hud">14 of 45 showcase pieces</span><a rel="next" href="../water-trough/" aria-label="Next showcase piece: water-trough">water-trough <span aria-hidden="true">&rarr;</span></a></nav>
37203720
</main>
37213721
<dialog class="lightbox" id="lightbox" aria-label="Full-size render">
37223722
<button class="lightbox-close" type="button" autofocus>Close</button>

‎docs/gallery/apothecary-shelf/index.html‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ <h1>apothecary-shelf</h1>
358358
<p>A procedural apothecary shelf — housed shelves, gallery rails, a drawer bank and an arched crest, stocked with fifteen lathed bottles, flasks and glazed jars, each corked or lidded and labelled — carried through UVs, bake, LOD, convex collider, and Unity glTF, asserting recomputed budgets rather than an API contract.</p>
359359
</header>
360360
<main id="main">
361-
<nav class="pager" aria-label="Showcase pieces"><a rel="prev" href="../brazier/" aria-label="Previous showcase piece: brazier"><span aria-hidden="true">&larr;</span> brazier</a><span class="pager-pos hud">32 of 44 showcase pieces<span class="pager-keys"> &middot; <kbd>&larr;</kbd><kbd>&rarr;</kbd></span></span><a rel="next" href="../wooden-yoke/" aria-label="Next showcase piece: wooden-yoke">wooden-yoke <span aria-hidden="true">&rarr;</span></a></nav>
361+
<nav class="pager" aria-label="Showcase pieces"><a rel="prev" href="../brazier/" aria-label="Previous showcase piece: brazier"><span aria-hidden="true">&larr;</span> brazier</a><span class="pager-pos hud">32 of 45 showcase pieces<span class="pager-keys"> &middot; <kbd>&larr;</kbd><kbd>&rarr;</kbd></span></span><a rel="next" href="../wooden-yoke/" aria-label="Next showcase piece: wooden-yoke">wooden-yoke <span aria-hidden="true">&rarr;</span></a></nav>
362362
<button class="detail-hero" id="heroZoom" type="button" aria-label="View full size: A stained wooden shelf with an arched crest, gallery rails and three brass-knobbed drawers, stocked with labelled glass bottles and flasks and cream and blue glazed jars.">
363363
<img src="../assets/apothecary-shelf-hero.webp" alt="A stained wooden shelf with an arched crest, gallery rails and three brass-knobbed drawers, stocked with labelled glass bottles and flasks and cream and blue glazed jars." width="1280" height="720" fetchpriority="high" />
364364
</button>
@@ -3733,7 +3733,7 @@ <h3><a href="../wooden-barrel/">wooden-barrel</a></h3>
37333733
</article>
37343734
</div>
37353735
</section>
3736-
<nav class="pager pager-foot" aria-label="Showcase pieces"><a rel="prev" href="../brazier/" aria-label="Previous showcase piece: brazier"><span aria-hidden="true">&larr;</span> brazier</a><span class="pager-pos hud">32 of 44 showcase pieces</span><a rel="next" href="../wooden-yoke/" aria-label="Next showcase piece: wooden-yoke">wooden-yoke <span aria-hidden="true">&rarr;</span></a></nav>
3736+
<nav class="pager pager-foot" aria-label="Showcase pieces"><a rel="prev" href="../brazier/" aria-label="Previous showcase piece: brazier"><span aria-hidden="true">&larr;</span> brazier</a><span class="pager-pos hud">32 of 45 showcase pieces</span><a rel="next" href="../wooden-yoke/" aria-label="Next showcase piece: wooden-yoke">wooden-yoke <span aria-hidden="true">&rarr;</span></a></nav>
37373737
</main>
37383738
<dialog class="lightbox" id="lightbox" aria-label="Full-size render">
37393739
<button class="lightbox-close" type="button" autofocus>Close</button>
59.9 KB
Loading
29.3 KB
Loading

0 commit comments

Comments
 (0)