The chassis decoration ancestor (added in v0.3.0 to host mobile/tablet
bezel pills as absolute-positioned siblings of the iframe wrapper)
was unconditionally inline-block. inline-block hugs its children's
intrinsic content width — for the iframe wrapper with width: 100% in
Full mode, that meant the percentage resolved against the iframe's UA
intrinsic ~300 px, collapsing the visible preview.
Promote the ancestor to 'block w-full h-full' whenever isFullPreset is
true so the wrapper's 100% computes against the flex parent (the chrome
pane). Preset / Custom modes keep inline-block — they need it for
chassis-decoration positioning siblings to not get clipped by the
wrapper's overflow-hidden.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>