7ab1d1bfe7
Problem: On phone-width viewports (~375-430px), the floating FormattingToolbar in EditableCell rendered as a single row with 17+ controls (B/I/U + 7 color swatches + 3 align buttons + font + size + Save/Cancel). The row was wider than the screen, so users only saw the edges (X, ✓, two "default" dropdowns) and could not reach Bold/Italic/Underline, color swatches, alignment, or font controls. The horizontal clamp also relied on the table's scroll-container bounds, which on mobile extend beyond the viewport because the table is wider than the screen — so the clamp could park the toolbar partially off-screen. Fix in artifacts/tx-os/src/components/editable-cell.tsx: - Toolbar container: `flex` → `flex flex-wrap` with `gap-x-1 gap-y-1` and `max-w-[calc(100vw-16px)]` so it wraps onto multiple rows whenever a single row would exceed the viewport. Bumped `py` to `py-1` for breathing room between wrapped rows. - Horizontal clamp: in addition to the scroll-container bounds, also clamp against the viewport (`[8, window.innerWidth - tbWidth - 8]`) so the toolbar always lands fully on-screen even when the scroll container is wider than the screen. Scope: visual / positioning only. No changes to TipTap config, toolbar buttons, or save/cancel logic. Above-vs-below placement (#581 iOS keyboard handling) is preserved.