diff --git a/assets/_famroll.py b/assets/_famroll.py
index b80e9d2..ae29df2 100644
--- a/assets/_famroll.py
+++ b/assets/_famroll.py
@@ -35,7 +35,20 @@ FAMS = {
'bb': ('z_e1', 'a small young ZOMBIE BALL BOY in a pale tournament polo and shorts, slight and short'),
'st': ('z_d1', 'a ZOMBIE STEWARD in a dark uniform jacket with a high collar, stiff and official'),
'ru': ('z_f1', 'a wiry FAST ZOMBIE RUNNER in a sleeveless tennis top, lean and forward-leaning'),
- 'gk': ('z_boss1', 'a heavy ZOMBIE GROUNDSKEEPER in stained work overalls and a shapeless hat'),
+ # THE GROUNDSKEEPER ANCHORS ON THE HAND-FINISHED FRAME, not on z_boss1 (2026-08-16). His boss art
+ # is the last of the coarse legacy sheets, and the old description here ("work overalls and a
+ # shapeless hat") described a character the art never showed — so the roll had to average a picture
+ # and a paragraph that disagreed. `_ref_gk_hi` is his throw frame redrawn at the grain the other
+ # bosses ship at (density 0.34 against z_bosst1's 0.21) and it is now the source of truth for his
+ # build and colours. His ball hopper is a prop AT HEAD HEIGHT — the exact thing a 31-figure sheet
+ # cannot hold — so it is named and removed here, the same way the 2026-08-15 six had to be.
+ 'gk': ('_ref_gk_hi', 'a heavy ZOMBIE GROUNDSKEEPER in a DARK GREEN CLUB BLAZER worn open over a '
+ 'grubby pale shirt, with a small gold club crest on the breast pocket, brown '
+ 'leather braces over the shoulders, loose olive-brown work trousers and heavy '
+ 'brown work boots. A gaunt grey-green head with sunken yellow eyes and bared '
+ 'teeth, no hat, no hair. The wire basket of tennis balls image 2 shows on his '
+ 'shoulder is NOT part of him: there is no basket and there are no loose balls '
+ 'in any pose'),
'lj': ('z_judge1', 'a ZOMBIE LINE JUDGE in a dark blazer and pale trousers, upright and severe'),
# the 2026-08-13 four (Oliver picked them): each anchors on its own settled BOSS frame, so the
# match opponent and the chapter boss are the same person — which is the roster's whole narrative
diff --git a/assets/_ref_gk_hi.png b/assets/_ref_gk_hi.png
new file mode 100644
index 0000000..ac42f9c
Binary files /dev/null and b/assets/_ref_gk_hi.png differ
diff --git a/assets/z_gk1.png b/assets/z_gk1.png
index be38b26..5cb1fff 100644
Binary files a/assets/z_gk1.png and b/assets/z_gk1.png differ
diff --git a/assets/z_gk2.png b/assets/z_gk2.png
index 2b1de54..0f3a508 100644
Binary files a/assets/z_gk2.png and b/assets/z_gk2.png differ
diff --git a/assets/z_gk3.png b/assets/z_gk3.png
index 1b5b794..acea7f7 100644
Binary files a/assets/z_gk3.png and b/assets/z_gk3.png differ
diff --git a/assets/z_gk4.png b/assets/z_gk4.png
index e7ee34c..dcd6905 100644
Binary files a/assets/z_gk4.png and b/assets/z_gk4.png differ
diff --git a/assets/z_gkbounce.png b/assets/z_gkbounce.png
index cc202db..0e885bd 100644
Binary files a/assets/z_gkbounce.png and b/assets/z_gkbounce.png differ
diff --git a/assets/z_gkfall1.png b/assets/z_gkfall1.png
index 48e8fdd..3d13dc3 100644
Binary files a/assets/z_gkfall1.png and b/assets/z_gkfall1.png differ
diff --git a/assets/z_gkfall2.png b/assets/z_gkfall2.png
index adee4d7..80143c9 100644
Binary files a/assets/z_gkfall2.png and b/assets/z_gkfall2.png differ
diff --git a/assets/z_gkfall3.png b/assets/z_gkfall3.png
index 70aefb1..e088176 100644
Binary files a/assets/z_gkfall3.png and b/assets/z_gkfall3.png differ
diff --git a/assets/z_gkrise.png b/assets/z_gkrise.png
index 992bbb5..f8eaa4a 100644
Binary files a/assets/z_gkrise.png and b/assets/z_gkrise.png differ
diff --git a/assets/z_gkserve.png b/assets/z_gkserve.png
index 7e1516d..0a1861e 100644
Binary files a/assets/z_gkserve.png and b/assets/z_gkserve.png differ
diff --git a/assets/z_gktoss.png b/assets/z_gktoss.png
index b948b00..5a13f0e 100644
Binary files a/assets/z_gktoss.png and b/assets/z_gktoss.png differ
diff --git a/assets/z_gkw1.png b/assets/z_gkw1.png
index 304e44b..82c1906 100644
Binary files a/assets/z_gkw1.png and b/assets/z_gkw1.png differ
diff --git a/assets/z_gkw1b.png b/assets/z_gkw1b.png
index 9b3cff9..4133eb2 100644
Binary files a/assets/z_gkw1b.png and b/assets/z_gkw1b.png differ
diff --git a/assets/z_gkw1bounce.png b/assets/z_gkw1bounce.png
index 56ac209..d0a2106 100644
Binary files a/assets/z_gkw1bounce.png and b/assets/z_gkw1bounce.png differ
diff --git a/assets/z_gkw1fall1.png b/assets/z_gkw1fall1.png
index 9368bb1..90956da 100644
Binary files a/assets/z_gkw1fall1.png and b/assets/z_gkw1fall1.png differ
diff --git a/assets/z_gkw1fall2.png b/assets/z_gkw1fall2.png
index 4f401ca..84b1f6e 100644
Binary files a/assets/z_gkw1fall2.png and b/assets/z_gkw1fall2.png differ
diff --git a/assets/z_gkw1fall3.png b/assets/z_gkw1fall3.png
index b84ee77..a7a4f08 100644
Binary files a/assets/z_gkw1fall3.png and b/assets/z_gkw1fall3.png differ
diff --git a/assets/z_gkw1rise.png b/assets/z_gkw1rise.png
index 145b7b2..5108d52 100644
Binary files a/assets/z_gkw1rise.png and b/assets/z_gkw1rise.png differ
diff --git a/assets/z_gkw1s.png b/assets/z_gkw1s.png
index 8efcdf4..4d17631 100644
Binary files a/assets/z_gkw1s.png and b/assets/z_gkw1s.png differ
diff --git a/assets/z_gkw1serve.png b/assets/z_gkw1serve.png
index db658b4..c3014a7 100644
Binary files a/assets/z_gkw1serve.png and b/assets/z_gkw1serve.png differ
diff --git a/assets/z_gkw1toss.png b/assets/z_gkw1toss.png
index d0038cd..20e97d4 100644
Binary files a/assets/z_gkw1toss.png and b/assets/z_gkw1toss.png differ
diff --git a/assets/z_gkw2.png b/assets/z_gkw2.png
index 0d54e76..701a752 100644
Binary files a/assets/z_gkw2.png and b/assets/z_gkw2.png differ
diff --git a/assets/z_gkw2b.png b/assets/z_gkw2b.png
index 5107438..a7dbfc8 100644
Binary files a/assets/z_gkw2b.png and b/assets/z_gkw2b.png differ
diff --git a/assets/z_gkw2bounce.png b/assets/z_gkw2bounce.png
index 64a15ba..abeacff 100644
Binary files a/assets/z_gkw2bounce.png and b/assets/z_gkw2bounce.png differ
diff --git a/assets/z_gkw2fall1.png b/assets/z_gkw2fall1.png
index 0e93c84..792f2f5 100644
Binary files a/assets/z_gkw2fall1.png and b/assets/z_gkw2fall1.png differ
diff --git a/assets/z_gkw2fall2.png b/assets/z_gkw2fall2.png
index 4cd22d4..1ba9e70 100644
Binary files a/assets/z_gkw2fall2.png and b/assets/z_gkw2fall2.png differ
diff --git a/assets/z_gkw2fall3.png b/assets/z_gkw2fall3.png
index fda6182..285b6cf 100644
Binary files a/assets/z_gkw2fall3.png and b/assets/z_gkw2fall3.png differ
diff --git a/assets/z_gkw2rise.png b/assets/z_gkw2rise.png
index e75e95b..b9ee3f4 100644
Binary files a/assets/z_gkw2rise.png and b/assets/z_gkw2rise.png differ
diff --git a/assets/z_gkw2s.png b/assets/z_gkw2s.png
index 4ff1cdd..b99566f 100644
Binary files a/assets/z_gkw2s.png and b/assets/z_gkw2s.png differ
diff --git a/assets/z_gkw2serve.png b/assets/z_gkw2serve.png
index d270728..8940604 100644
Binary files a/assets/z_gkw2serve.png and b/assets/z_gkw2serve.png differ
diff --git a/assets/z_gkw2toss.png b/assets/z_gkw2toss.png
index d1e26a2..6ab2d23 100644
Binary files a/assets/z_gkw2toss.png and b/assets/z_gkw2toss.png differ
diff --git a/index.html b/index.html
index e8a6351..6778449 100644
--- a/index.html
+++ b/index.html
@@ -659,6 +659,6 @@ if (location.hostname !== 'splatter-tennis.wuwi.one') {
-
+