The panel had no picker before this. 8 category tabs plus a recents tab, table
lifted verbatim from celest-chat's 07-emoji.js so the house row (💜🌙🐝🔫)
carries over. Offline by construction: no library, no fetch, the panel's CSP
would block a set anyway.
Inserts at the caret rather than appending, and the pad stays open so glyphs can
be stacked. Recents (last 24) live in localStorage under
`ccsidepanel-emoji-recent`; the pad opens on that tab once it has entries.
`#emoji-pad[hidden] { display: none }` is spelled out because an ID selector
outranks the UA's `[hidden]` rule — without it the pad never closes.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>