Two CSS properties, one letter of difference in intent, and only one of them can make frosted glass.
backdrop-filter vs filterfilter: blur() blurs the element you put it on — its own text, its own borders, its own children. That is almost never what you wanted, because you wanted the panel readable.
backdrop-filter: blur() blurs everything painted behind the element, sampled through the element's own area. Its text stays crisp. This is the one operation frosted glass actually requires, and there is no way to fake it with filter.
The catch: it is only visible when the element is partly transparent — you are looking through it. So the recipe is always two declarations, never one: a semi-transparent background colour plus the blur.
filter takes the element as its input. backdrop-filter takes the backdrop — the already-composited pixels underneath — as its input. Same blur maths, different source pixels.
An opaque background hides the blurred backdrop completely, and the effect appears broken. Pair it with something like rgba(255,255,255,.3) so light gets through.
The property forces the element onto a separate layer and makes the browser read back the composited pixels beneath it. That is a genuine per-frame cost, not a one-off paint trick.
"Behind" is not "everything lower on the page." An ancestor that establishes a new stacking context changes which pixels are eligible to be sampled at all.
backdrop-filter, is promoted to its own compositing layer.rgba(255,255,255,.30) with backdrop-filter: blur(9px). The colour blobs behind it are soft; this sentence is sharp. Swap in filter and this sentence would be the thing that smears.
If your browser lacks support, this box degrades to plain transparency — which is exactly the fallback you must design for.
backdrop-filter: blur(10px) to a card and absolutely nothing changes. Name the most likely single-line cause, and the fix.
Hint: what has to be true before you can see through something?
box-shadow is not? Answer in terms of what the compositor has to do each frame.
Hint: something has to be read back, and it changes as you scroll.