v3.21.186
Custom background: validate directions, guard empty opacity, escape URL, contrast
- gradient-angle validator uses an explicit direction set (rejects "to top bottom")
- empty watermark_opacity keeps the default instead of becoming 0; watermark URL
escaped with JSON.stringify so quotes can't break the CSS value - low-contrast warning checks both gradient endpoints, not just the flat bg
- expanded-editor visual snapshot for the gradient/watermark fields; direction
rejection test