"""Saturated magenta marks any max-channel delta above 0 or 16/255."""
from pathlib import Path
from PIL import Image,ImageChops,ImageDraw,ImageFont
import json
root=Path('/tmp/lead-25709-r1b/evidence-capture');out=root/'diffs';out.mkdir(exist_ok=True)
base=root/'2026-10-27T07-37-30-138Z-base-baseline';off=root/'2026-10-27T07-37-31-442Z-after-off-baseline'
pairs=[('R0-'+n,base/(n+'.png'),off/(n+'.png')) for n in ['sidebar-W-L','search-W-L','route-W-L','sidebar-W-D','route-W-D','sidebar-N-L','route-N-L']]
# Optional flag-on feature manifest is passed as a positional argument.
import sys
if len(sys.argv)>1:
 on=Path(sys.argv[1]);extra=sorted(root.glob('*-base-baseline-extra'))[-1];pairs.append(('R1-search-N-L',extra/'B0-search-N-L.png',on/'R1-search-N-L.png'));pairs += [('R1-'+n,base/(n+'.png'),on/('R1-'+n+'.png')) for n in ['sidebar-W-L','search-W-L']]
report=[]
for name,a,b in pairs:
 if not(a.exists() and b.exists()):continue
 x=Image.open(a).convert('RGB');y=Image.open(b).convert('RGB');assert x.size==y.size
 diff=ImageChops.difference(x,y);r,g,bl=diff.split();mx=ImageChops.lighter(ImageChops.lighter(r,g),bl)
 item={'name':name,'before':str(a),'after':str(b),'pixels':x.width*x.height,'diffs':{}}
 for t in [0,16]:
  mask=mx.point(lambda v:255 if v>t else 0);count=mask.histogram()[255]
  canvas=Image.blend(x.convert('L').convert('RGB'),Image.new('RGB',x.size,'white'),.6);canvas.paste((255,0,140),(0,0),mask)
  dest=out/(name+('-diff0.png' if t==0 else '-diff16.png'));canvas.save(dest)
  item['diffs'][str(t)]={'file':str(dest),'changedPixels':count}
 report.append(item)
(out/'diff-report.json').write_text(json.dumps(report,indent=2));print(json.dumps([{ 'name':r['name'],'counts':{t:v['changedPixels'] for t,v in r['diffs'].items()}}for r in report],indent=2))
