- Clear inline preview styles before persisting CSS on save to avoid
specificity conflicts that required Ctrl+Shift+R
- Reset to Defaults now deletes uploaded images and clears logoText
- ColorPicker emits value on Solid/Gradient toggle for instant preview
- Show default color swatch with dashed border when field is cleared
- persistThemeCSS now handles background-image rules like server-side
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1. Fix 500 on hard refresh: branding page load was querying tenant
for logoUrl/logoText fields that may not exist in DB yet. Now
uses locals.tenant data (from resolver) instead of a separate query.
2. Instant theme application: after saving, persistThemeCSS() generates
CSS from the draft and writes it into the <style id="tenant-theme">
element in the DOM. This means navigating to any page after saving
immediately shows the new theme without a hard refresh.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>