diff --git a/src/Pennington.Beck/BeckZoomHeadContributor.cs b/src/Pennington.Beck/BeckZoomHeadContributor.cs
index ea99d6b9..b57bb616 100644
--- a/src/Pennington.Beck/BeckZoomHeadContributor.cs
+++ b/src/Pennington.Beck/BeckZoomHeadContributor.cs
@@ -7,7 +7,8 @@ namespace Pennington.Beck;
/// <script> block contributed to every page head while
/// is on. The script is a single delegated click listener on document (so it survives
/// Blazor re-renders and covers every embed on the page) that opens a native
-/// <dialog class="beck-lightbox"> holding a clone of the clicked diagram's SVG —
+/// <dialog class="beck-lightbox"> holding a clone of the clicked diagram's SVG on an
+/// opaque theme-surface panel —
/// cloning is safe because the SVG's animation and theming are hash-scoped CSS classes that apply
/// to the copy too, and its url(#id) refs still resolve to the original's defs, which stay
/// in the document. The dialog is built per-open and removed on close.
@@ -32,7 +33,12 @@ public Task ContributeAsync(HeadContext context, HeadBuilder head)
///
/// The zoom button/lightbox CSS and the dialog-opening script, emitted verbatim. Colors ride
/// the host's --color-base-* ramp with slate fallbacks, and dark mode keys off
- /// [data-theme="dark"] — the same signal the Beck SVG itself uses.
+ /// [data-theme="dark"] — the same signal the Beck SVG itself uses. The backdrop washes
+ /// the page out (blur + desaturate) behind a scrim mixed from the ramp's ends rather than the
+ /// SVG's own surface token, which is scoped to the per-diagram class inside each SVG and
+ /// doesn't resolve on a <dialog> in <body>. @starting-style
+ /// gives the ::backdrop — newly rendered on every open — a from-state to transition
+ /// out of; the dialog is removed on close, so the cue is entrance-only.
///
internal const string Assets = """