/* One static neutral ambient for every non-feed route. No poster sampling or
   route-specific colours; the Feed keeps its own video ambient unchanged. */
.tab-page:not([data-tab=home]),.social-screen,.social-screen.is-profile-search,
.social-screen.is-profile,.social-screen.is-conversation,.pro-page,
#positionsScreen,.positions-page,.route-page-sheet{background:var(--ambient-neutral);background-attachment:local}
/* Only the page backgrounds vary. Component colours/materials remain global.
   Scroll attachment anchors the composition to the scroller's viewport. */
.tab-page[data-tab=search],.social-screen.is-profile-search{background:var(--ambient-search);background-blend-mode:lighten;background-attachment:scroll}
.tab-page[data-tab=pro],.pro-page{background:var(--ambient-pro);background-blend-mode:lighten;background-attachment:scroll}
.screen-heading,.route-page-sheet .sheet-header,.profile-topbar,.positions-page-header{background:var(--surface-glass);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px)}
.route-page-sheet .sheet-content{background:transparent}
/* The pill floats 12px above the safe area. Keep that separate from the exact
   64px + 24px + safe-area content padding. One rounding pixel protects the
   24px clearance when a 55dvh plot ends on a fractional CSS pixel. */
.pro-page .pro-page-content,.profile-search-scroll,.social-screen:not(.is-profile-search),.positions-page{padding-bottom:var(--floating-page-inset);scroll-padding-bottom:var(--floating-page-inset)}
.pro-page-content::after,.profile-search-scroll::after,.social-screen:not(.is-profile-search)::after,.positions-page::after{content:'';display:block;flex:none;height:13px;pointer-events:none}
.route-page-sheet{padding-bottom:0}
.route-page-sheet .sheet-content{padding-bottom:var(--floating-page-inset)}
.route-page-sheet .sheet-content::after{content:'';display:block;flex:none;height:13px;pointer-events:none}
