const fs=require('fs'),path=require('path'),cp=require('child_process'); const root=__dirname,meta=require('./metadata.json'),repo=path.resolve(root,'../..'); const font=path.join(repo,'fonts/P052-Bold.otf'),medium=path.join(repo,'fonts/SanctificationP052-Medium.otf'); const mag=(...args)=>cp.execFileSync('magick',args.map(String),{stdio:'inherit'}); const cream='#f4ead4',teal='#263f50'; const title=(input,text,x,y,size,color,out,face=font)=>mag(input,'-font',face,'-pointsize',size,'-fill',color,'-gravity','NorthWest','-annotate','+'+x+'+'+y,text,out); const notes=[ ['Lighted Window','Architectural / contemplative','Cross and glass are immediate. Tall proportions reduce favicon presence.'], ['Renewing Flame','Growth / transformation','Expressive silhouette. Rough cross cutout needs a careful redraw.'], ['Rose of Grace','Sacred / compact','Best square silhouette. Simplify small gold details for production.'] ]; for(let i=0;i

'+notes[i][0]+'

'+notes[i][2]+'

';for(const theme of ['light','dark']){html+='

Favicon tile — actual dimensions

';for(const n of [16,32,64])html+='
'+n+' px
';html+='

Raw transparent mark — contrast diagnostic

';for(const n of [16,32,64])html+='
'+n+' px
';html+='
';}html+='
';}fs.writeFileSync(path.join(root,'index.html'),html);