/* Static visual snapshots during a pull: don't re-blur moving content on iOS. */
html.tg-pull-active body,
html.tg-pull-active body *,
html.tg-pull-active body::before,
html.tg-pull-active body::after,
html.tg-pull-active body *::before,
html.tg-pull-active body *::after{
 -webkit-backdrop-filter:none!important;
 backdrop-filter:none!important;
 animation-play-state:paused!important;
}
/* Keep only the small refresh spinner running. */
html.tg-pull-active body .tg-pull-refresh .tg-pull-rotor{
 animation-play-state:running!important;
}

/* Bound the actual moving surface, not just its visible pixels. A long catalog
   must not become one enormous iOS compositor texture during a pull.
   Size changes only at activation/cleanup, never in the animation loop. */
html body .tg-pull-moving{
 max-height:var(--tg-pull-surface-height)!important;
 overflow:hidden!important;
 overflow:clip!important;
 overflow-anchor:none;
}
html.tg-pull-active{overflow-anchor:none}
