At this level
social.twinkl · 1- social.twinkl.actor.profile record The actor's Twinkl app/viewer preferences, kept separate from their authored look (social.twinkl.actor.style) so a private viewing preference is never bundled into a published theme pack or copied by "steal this look". Extensible home for future viewer toggles.
- social.twinkl.actor.profileMusic record Songs that play when someone visits the actor's home page, sourced from plyr.fm.
- social.twinkl.actor.style record The actor's visual customization: a selected built-in theme plus optional custom CSS/JS for their home page and post decorations. Custom JS runs only inside a sandboxed iframe; custom CSS is sanitized and scoped server-side before use.
- social.twinkl.theme.defs defs One enabled first-party page effect. The effect id selects a curated, first-party component; params drive it. Unknown ids are ignored and params are clamped/validated server-side against the effects registry.
- social.twinkl.theme.pack record The user's active look AND the unit of theme sharing (one per user, key=self). Holds the base theme, tokens, custom CSS, effects, and asset blobs (backgrounds/fonts) — which are kept live by this record's structural blob references. Listed in the public gallery by setting `gallery` to the Twinkl gallery DID (the publish property); discovered via constellation backlinks on `.gallery`. "Stealing" copies another user's pack into the applier's own self pack (copy-on-apply) — there is no live cross-r