/* Static 393 × 852 app viewport. The supplied bezel draws the status bar. */
html { color-scheme:dark; scroll-behavior:auto; }
body { width:393px; height:852px; overflow:hidden; pointer-events:none; user-select:none; }
/* Shared SVG paint servers must not reserve an inline line box above the app. */
#refund-mask-holder { position:absolute; width:0; height:0; overflow:hidden; }
*,*::before,*::after { animation:none !important; transition:none !important; caret-color:transparent; }
/* Match #header-bubble: safe-area top + 9px margin, 20px content + 8px padding. */
.telegram-back,.telegram-actions { position:absolute; z-index:10; top:calc(var(--tg-safe-area-inset-top) + 9px); height:28px; display:flex; align-items:center; justify-content:center; gap:7px; padding:0 11px; border-radius:20px; color:var(--tg-theme-text-color); background:var(--tg-theme-mod-bg-color); font:600 13px/18px system-ui; }
.telegram-back { left:15px; }
.telegram-actions { right:15px; gap:16px; padding-inline:10px; }
.telegram-back svg,.telegram-actions svg { display:block; flex:none; }
/* Freeze a scrolled profile without requiring JavaScript in the iframe.
   Translate both grid children equally; keep their original layout and spacing. */
.screen-frame-2 #profile-scroll-wrap > * { translate:0 calc(-1 * var(--profile-scroll-y)); }
/* Keep the app's grd_dissolve_vertic mask: content reaches the viewport top,
   and the avatar fades above Dynamic Island instead of being hard-clipped. */
/* The catalogue snapshot starts at search, not at the home intro/quick view. */
.screen-frame-4 #search-panel { scroll-snap-type:none; scroll-behavior:auto; }
.screen-frame-4 #search-results-wrapper { opacity:1; }
