The placement canvas sized itself with CSS aspect-ratio plus percentage widths/heights on the widget boxes. aspect-ratio isn't supported on every mobile browser this app gets viewed from, and without it a percentage height on an absolutely-positioned child collapses to 0 against an indeterminate-height ancestor -- the canvas rendered with no visible size at all, just unstyled labels and buttons floating in normal document flow. Confirmed working on desktop, broken on the reporter's phone. Canvas and widget-box geometry is now computed and applied in pixels from JS (measuring the wrap's own width, deriving height from the grid's row/col ratio), recalculated on window resize. Also gives .widget-box's color-mix() background a plain-color fallback for the same class of older-browser gap.