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 = """