diff --git a/frontend/css/style.css b/frontend/css/style.css index f3665de..454a5d5 100644 --- a/frontend/css/style.css +++ b/frontend/css/style.css @@ -3014,3 +3014,34 @@ body.theme-light .video-card img:not(.is-loaded) { pointer-events: none; } + +/* Privacy veil -- the page goes behind a blur whenever this window isn't the + one in front. Above everything else the app can put on screen, and painted + as a backdrop filter rather than a filter on the page itself, which would + make every fixed element inside it position against the wrong box. */ +.privacy-veil { + position: fixed; + inset: 0; + z-index: 9000; + opacity: 0; + pointer-events: none; + background: rgba(10, 8, 6, 0.38); + -webkit-backdrop-filter: blur(26px) saturate(0.55); + backdrop-filter: blur(26px) saturate(0.55); + transition: opacity 200ms ease; +} + +.privacy-veil.is-on { + opacity: 1; + /* Going behind the blur is immediate -- a fade would be a window during + which the page is still readable. Coming back can take its time. */ + transition: none; + /* So the tap that brings the window back lands here and lifts the veil, + rather than pressing something on a page nobody could see. */ + pointer-events: auto; +} + +/* Nothing to blur through without backdrop-filter, so the veil covers instead. */ +@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) { + .privacy-veil { background: var(--bg-primary); } +} diff --git a/frontend/index.html b/frontend/index.html index 42410a8..b8d25d7 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -226,6 +226,8 @@ +
+ @@ -240,6 +242,7 @@ +