OptionalclassesScope class name(s) placed on the float wrapper so the instance's per-instance @scope (.<class>){…}
rules treat the wrapper as a scope root and apply to it. Accumulated through nested providers so a float
can resolve every ancestor instance's scoped tokens (layer order settles conflicts).
OptionalmodeThe data-sxl-theme-mode a float opens with — the app's resolved mode (so floats follow the app).
OptionalsurfaceThe data-sxl-theme-surface a float opens with. App-driven; defaults to app.
The theme a float opens with (THEMING-DESIGN §7). A float portals to a shared, theme-free container (
getPortalContainer()), so it must carry its origin instance's theme onto its own wrapper. That theme rides the float-surface context: the nearest FloatSurface-providing ancestor (FloatProvider) decides it — the app sets one at its root; the grid deliberately sets none, so a grid-originated menu inherits the app's (a menu from a light grid in a dark app opens dark, following the app). To theme (or re-surface) floats for a subtree, drop a FloatProvider with a new theme.