=== PosterGrid Margins / Caption Placement Probe ===
resolution = HD  1280x 720
poster = 100x100 unless noted, itemSpacing = [0,0], grid.translation = [0,0] unless noted

M1. 1 col x 1 row, poster 100x100
    rect  x = -14  y = -14  w =  128  h =  164
    local x = -14  y = -14  w =  128  h =  164
M2. same, grid.translation=[300,200]
    rect  x =  286  y =  186  w =  128  h =  164
    local x = -14  y = -14  w =  128  h =  164
M3. 1 col x 2 rows
    rect  x = -14  y = -14  w =  128  h =  264
    local x = -14  y = -14  w =  128  h =  264
M4. 3 cols x 1 row
    rect  x = -14  y = -14  w =  328  h =  164
    local x = -14  y = -14  w =  328  h =  164
M5. 1 col x 1 row, poster 200x200
    rect  x = -14  y = -14  w =  228  h =  264
    local x = -14  y = -14  w =  228  h =  264
M6. 1 col x 1 row, itemSpacing=[0,40]
    rect  x = -14  y = -14  w =  128  h =  204
    local x = -14  y = -14  w =  128  h =  204
N1. caption2NumLines=1, font defaulted
    rect  x = -14  y = -14  w =  128  h =  207
    local x = -14  y = -14  w =  128  h =  207
N2. caption2NumLines=1, caption2Font=Smaller (non-bold)
    rect  x = -14  y = -14  w =  128  h =  207
    local x = -14  y = -14  w =  128  h =  207
N3. caption2NumLines=1, caption2Font=SmallerBold
    rect  x = -14  y = -14  w =  128  h =  207
    local x = -14  y = -14  w =  128  h =  207
N4. caption1NumLines=1, font defaulted (bold anchor)
    rect  x = -14  y = -14  w =  128  h =  207
    local x = -14  y = -14  w =  128  h =  207
N5. caption1NumLines=1, caption1Font=Smaller (non-bold)
    rect  x = -14  y = -14  w =  128  h =  207
    local x = -14  y = -14  w =  128  h =  207

--- per-side outsets (derived from each case's own declared inputs) ---
    left = tx - x    top = ty - y    right = w - contentW - left    bottom = h - contentH - top
    left =  14  top =  14  right =  14  bottom =  50   M1. 1 col x 1 row, poster 100x100
    left =  14  top =  14  right =  14  bottom =  50   M2. same, grid.translation=[300,200]
    left =  14  top =  14  right =  14  bottom =  50   M3. 1 col x 2 rows
    left =  14  top =  14  right =  14  bottom =  50   M4. 3 cols x 1 row
    left =  14  top =  14  right =  14  bottom =  50   M5. 1 col x 1 row, poster 200x200
    left =  14  top =  14  right =  14  bottom =  50   M6. 1 col x 1 row, itemSpacing=[0,40]
    left =  14  top =  14  right =  14  bottom =  93   N1. caption2NumLines=1, font defaulted
    left =  14  top =  14  right =  14  bottom =  93   N2. caption2NumLines=1, caption2Font=Smaller (non-bold)
    left =  14  top =  14  right =  14  bottom =  93   N3. caption2NumLines=1, caption2Font=SmallerBold
    left =  14  top =  14  right =  14  bottom =  93   N4. caption1NumLines=1, font defaulted (bold anchor)
    left =  14  top =  14  right =  14  bottom =  93   N5. caption1NumLines=1, caption1Font=Smaller (non-bold)

--- Label line heights (device font metrics) ---
    font:SmallerSystemFont  height =  20
    font:SmallerBoldSystemFont  height =  20
    font:MediumSystemFont  height =  24
    font:MediumBoldSystemFont  height =  24

--- group P: caption placement, read from a SCREENSHOT by subtraction ---
    caption font = font:SmallerBoldSystemFont  device line height =  20
    every poster is 100x100 with its BOTTOM EDGE at scene y =  360
    P1 real, caption1 only        x =  60 ..  160
    P2 reconstruction, offset 0   x =  260 ..  360
    P3 real, caption1 + caption2  x =  460 ..  560
    P4 reconstruction, offset 0   x =  660 ..  760
    CaptionTextOffset = firstInkedRow(P1) - firstInkedRow(P2), and likewise P3 - P4
    captions are pure red (0xFF0000FF); posters are red-free grey

=== Probe printing complete — group P is on screen, take a screenshot now ===
