diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 0475ee4b..69bbe884 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -351,7 +351,10 @@ export default function App() {
/>
)}
-
+ {/* `@container/appmain`: the floating header + its search box adapt to THIS column's width
+ (which shrinks when the filter sidebar is open), not the viewport — a viewport breakpoint
+ can't see the sidebar-driven narrowing (E5 S7). */}
+
{channelView ? (
diff --git a/frontend/src/components/SearchBar.tsx b/frontend/src/components/SearchBar.tsx
index d0e92ed1..364bee6a 100644
--- a/frontend/src/components/SearchBar.tsx
+++ b/frontend/src/components/SearchBar.tsx
@@ -56,7 +56,12 @@ export default function SearchBar({
if (onGo && !goDisabled) onGo();
};
return (
-
+ // `min-w-0` by default so it never forces overflow on a truly tiny column; once the content
+ // column (@container/appmain) has room (≥420px) enforce a usable floor so the box WRAPS to its
+ // own line via the header's flex-wrap instead of shrinking the input to ~0. On a narrow column
+ // (≤640px) it also takes a full line of its own (basis-full) and sorts LAST, so the small pills
+ // (module name + Plex scope toggle) share the line above it — a tidy two-row header (E5 S7).
+