Yes webview for adding shadows is definitely the wrong direction, it basically replaces your entire interface (or at least a rectangle of it) by a web browser.
The problem why melatonin blur hasn't been integrated into the Graphics API calls yet is because there were some inconsistencies with the API parameters with what melatonin expects and before breaking the API call surface I just decided to use it in CSS where there is no issue with backwards compatibility, but maybe now it's time to rethink that and (at least) put it behind a preprocessor like we always do when deprecating stuff.
The melatonin blur is a marvelous piece of engineering, but it still renders the shadows on the CPU so it still is super slow compared to a solution that just gives the GPU the instruction to blur something with its millions of shader units. Unfortunately this is the one hard restriction that comes with using JUCE as underlying GUI framework.
I would also recommend starting to play around with the CSS LAF stuff to get a feel for the performance of melatonin - start with buttons, these are best suited for CSS LAF. Sliders / Knobs are a bit quirky because you need to abuse the pseudo element classes to render different parts of the knob (eg. the track, the arc, the thumb).
const var laf = Content.createLocalLookAndFeel();
laf.setInlineStyleSheet("
button
{
background: #666;
color: white;
margin: 5px;
border-radius: 3px;
box-shadow: 0px 2px 3px black;
}
button:hover
{
background: #999;
transition: background-color 0.1s;
}
button:active
{
transform: translate(0px, 2px);
}
");
Content.getComponent("Button1").setLocalLookAndFeel(laf);