diff --git a/src/views/CatalogArtist.svelte b/src/views/CatalogArtist.svelte index 0ab9f1b..d15fac9 100644 --- a/src/views/CatalogArtist.svelte +++ b/src/views/CatalogArtist.svelte @@ -1166,8 +1166,13 @@ const hostFlowTop = zone.offsetTop + zone.offsetHeight - 18; const fadeS = Math.max(0, hostFlowTop - cutScreen); page.style.setProperty("--fade-s", `${fadeS.toFixed(1)}px`); - page.style.setProperty("--frame-h", `${scroller.clientHeight}px`); } + // Unconditional: .fade-frame is scroll-driven-only, but .sheetclip + // sizes itself from --frame-h on BOTH branches (it is what keeps the + // 300vh sheet out of the pane's scroll range). Setting it on the + // fallback path is otherwise inert — .fade-frame's rule lives inside + // the @supports block and never matches there. + page.style.setProperty("--frame-h", `${scroller.clientHeight}px`); // The extras' hit-gate sentinel parks at the scrollTop where // p crosses 0.42. Probed live (2026-07-24, this WebView2): the // observers' rootBounds top coincides with the page's box top @@ -3409,7 +3414,9 @@ the wash of rounds 7-10: fewer layers, nothing to hand over between them, and a baked gradient moved as a whole cannot seam. --> -
+