# dsh-narrow-screen-fix > Unified narrow-screen (mobile) CSS adaptation for the DeepSeek Harness web GUI. One client-only plugin fixes the overflow/overlap issues that plague the UI on phones — question-card footers, the send button, the top tab bar, settings panels, model/permission selectors, SSH panel tabs. **No dsh sources are touched.** > > DSH Web GUI 窄屏(手机)适配**统一插件**(纯 client 覆盖样式,不改 dsh 源码)。一个插件解决手机端所有常见的溢出/重叠问题。 --- ## English ### What it fixes | Component (style tag) | Fix (all under `max-width: 768px`) | |---|---| | `ui-user-questions` QuestionComposer | question-card footer wraps; action row (skip + confirm) becomes full-width right-aligned | | `ui-user-questions` PlanReviewPanel | same footer treatment for the plan-review buttons | | `ui-conversation` InputBar | bottom row wraps; trailing (model select + meter + send) takes its own right-aligned row; send button inset via 36px right padding | | `ui-conversation` ConversationRoot | top tab bar horizontally scrollable (hidden scrollbar), tabs never shrink; header/title row wraps, crumbs cap at 130px, header actions take their own row | | `ui-settings-general` SettingsRoot | settings panel stacks vertically (full-width bottom sheet, 88vh, rounded top), side nav scrolls internally, content adapts | | `ui-directory-picker-browse` DirectoryBrowser | directory columns relax their min-width | | `ui-model-selection` ModelSelect | trigger caps at 140px so the input row fits; **dropdown menu is re-anchored to a bottom-sheet on phones** — `position:fixed; left:8px; right:8px; bottom:8px; max-height:65vh; transform:none`. The default CSS (`position:absolute; right:0`) hangs the menu off the trigger's right edge in the composer's right-aligned trailing row, extending ~240px to the LEFT — completely off-screen on a 360px phone. The bottom-sheet pattern (1) is fully visible, (2) is fully interactive, (3) requires no JS to work — UX mirrors native iOS ActionSheet. Pure-CSS keeps the menu a child of `_7KE1Ra_root` so the model's own `closeOutside` / `onBlur` handlers (which gate on `rootRef.contains(target)`) keep working — clicks inside the menu are correctly treated as "inside the menu", which is what enables the second-level pane (model list / effort level) to open. | | `PermissionSelect` | trigger caps at 140px so the input row fits | | `@linxin666/dsh-ssh` panel | SSH panel tab bar horizontally scrollable | | `dsh-session-log-export` | Session log button shrinks (28px, tight padding) to sit inline with alias/copy buttons | | `dsh-client-ui-agent-preset` | preset row description releases its 48px reservation so Chinese text wraps normally | ### Mechanism - **Static CSS**: the plugin injects a dedicated `