Add selectable controller background styles#368
Conversation
This introduces distinct visual style options (ribbon, mesh, grid) while keeping existing theme palettes, so users can personalize controller UI visuals and get consistent style/theme behavior on loading overlays. Made-with: Cursor
| .xmb-wrapper.xmb-bg-style-grid.xmb-animate .xmb-bg-gradient::before { | ||
| animation: xmb-grid-pulse 10s ease-in-out infinite; | ||
| } |
There was a problem hiding this comment.
[🟡 Medium] [🔵 Bug]
The grid background style defines animation overrides for .xmb-bg-gradient (xmb-grid-pan) and .xmb-bg-gradient::before (xmb-grid-pulse), but there is no .xmb-wrapper.xmb-bg-style-grid.xmb-animate .xmb-bg-gradient::after rule. The pre-existing ribbon animation rule:
/* line 6643 */
.xmb-wrapper.xmb-animate .xmb-bg-gradient::after {
animation: xmb-ribbon-swell 22s ease-in-out infinite;
}matches when grid + xmb-animate is active because the selector still applies (the element has both xmb-wrapper and xmb-animate classes). The animation property isn't overridden by any grid-specific rule for ::after, so xmb-ribbon-swell runs on the grid's noise-dot pseudo-element. That keyframe animates opacity between 0.74–0.9 and applies transform scaling/rotation — completely overriding the grid's intended static opacity: 0.24 and producing visible visual artifacts (swelling/rotating noise dots). Add animation: none for the grid ::after to cancel the inherited ribbon animation.
| .xmb-wrapper.xmb-bg-style-grid.xmb-animate .xmb-bg-gradient::before { | |
| animation: xmb-grid-pulse 10s ease-in-out infinite; | |
| } | |
| .xmb-wrapper.xmb-bg-style-grid.xmb-animate .xmb-bg-gradient::before { | |
| animation: xmb-grid-pulse 10s ease-in-out infinite; | |
| } | |
| .xmb-wrapper.xmb-bg-style-grid.xmb-animate .xmb-bg-gradient::after { | |
| animation: none; | |
| } |
This introduces distinct visual style options (ribbon, mesh, grid) while keeping existing theme palettes, so users can personalize controller UI visuals and get consistent style/theme behavior on loading overlays. Made-with: Cursor
Summary
ribbon,mesh,grid) separate from existing color themesTest plan
npm run typecheck --prefix opennow-stableMade with Cursor