/* ============================================================================
 * Deva Web — 手机端适配层（仅 Web 注入，不改上游源码）
 *
 * 断点：≤768px 进入「单栏」模式（由 mobile.js 给 <html> 加 .dm-mobile）。
 *   - 原三列网格（56px 图标栏 + 列表栏 + 主区）→ 一次只显示一屏：
 *       .dm-view-list  列表屏（对话/角色/任务/机器人列表）
 *       .dm-view-main  内容屏（对话/资料/详情），顶部加「返回」
 *   - 图标栏 → 底部 Tab 栏（含安全区 inset）
 *   - 输入区：16px 字号（防 iOS 聚焦缩放）、工具条可横滑、发送键常显
 *   - 弹窗 → 全屏 / 底部抽屉；设置左侧导航 → 顶部横向滚动
 *   - 触屏无 hover：hover 才出现的按钮常显
 *
 * 选择器全部挂在 html.dm-mobile 下，桌面宽度下零影响。
 * ========================================================================== */

/* ---------- 全局（所有宽度都安全） ---------- */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
:root { --dm-tabbar-h: 56px; --dm-head-h: 48px; --dm-sab: env(safe-area-inset-bottom, 0px); --dm-sat: env(safe-area-inset-top, 0px); }

/* ---------- 手机单栏 ---------- */
html.dm-mobile, html.dm-mobile body { overscroll-behavior: none; }
html.dm-mobile body { -webkit-tap-highlight-color: transparent; }
html.dm-mobile .cf-shell {
  /* 用动态视口高度，避免地址栏/键盘遮挡（mobile.js 写入 --dm-vh 兜底旧浏览器） */
  height: var(--dm-vh, 100dvh); bottom: auto;
  padding-top: var(--dm-sat);
}

/* 三列 → 单列：用同一个网格单元叠放，按视图切换显示 */
html.dm-mobile .cf-body {
  grid-template-columns: minmax(0, 1fr) !important;
  grid-template-rows: minmax(0, 1fr) auto;
}
html.dm-mobile .cf-body > .cf-resizer { display: none !important; }
html.dm-mobile .cf-body > .cf-rail,
html.dm-mobile .cf-body > .cf-conv { grid-column: 1; grid-row: 1; min-width: 0; border-right: none; }

html.dm-mobile.dm-view-list .cf-body > .cf-conv { display: none !important; }
html.dm-mobile.dm-view-main .cf-body > .cf-rail { display: none !important; }
/* 内容屏隐藏底部 Tab（全高给对话与键盘） */
html.dm-mobile.dm-view-main .cf-body > .cf-iconrail { display: none !important; }

/* ---------- 图标栏 → 底部 Tab 栏 ---------- */
html.dm-mobile .cf-body > .cf-iconrail {
  grid-column: 1; grid-row: 2;
  flex-direction: row; align-items: stretch; justify-content: space-around;
  gap: 0; padding: 0 4px var(--dm-sab);
  height: calc(var(--dm-tabbar-h) + var(--dm-sab));
  border-right: none; border-top: 1px solid var(--border);
  background: var(--bg-panel);
  -webkit-app-region: no-drag;
}
html.dm-mobile .cf-iconrail > .cf-spacer { display: none; }
html.dm-mobile .cf-iconrail > .cf-navbtn,
html.dm-mobile .cf-iconrail > .cf-iconrail__me {
  flex: 1 1 0; width: auto; height: var(--dm-tabbar-h); margin: 0;
  border-radius: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
}
html.dm-mobile .cf-iconrail > .cf-navbtn::after,
html.dm-mobile .cf-iconrail > .cf-iconrail__me::after {
  content: attr(data-dm-label); font-size: 10.5px; line-height: 1; font-weight: 500;
}
html.dm-mobile .cf-iconrail > .cf-navbtn.is-active { background: transparent; }
/* 桌面竖栏的左侧激活竖条：底栏里改为顶部短横条 */
html.dm-mobile .cf-iconrail > .cf-navbtn.is-active::before {
  left: 50%; top: 0; transform: translateX(-50%); width: 22px; height: 3px;
  border-radius: 0 0 3px 3px;
}
html.dm-mobile .cf-iconrail > .cf-iconrail__me { padding: 0; box-shadow: none !important; color: var(--fg-subtle); }
html.dm-mobile .cf-iconrail > .cf-iconrail__me .cf-ava { --sz: 22px !important; }
html.dm-mobile .cf-iconrail > .cf-iconrail__me:active .cf-ava { box-shadow: 0 0 0 2px var(--accent); border-radius: 999px; }
html.dm-mobile .cf-iconrail > .cf-navbtn > svg { width: 22px; height: 22px; }
html.dm-mobile .cf-iconrail .cf-navbtn__dot { top: 6px; right: calc(50% - 16px); }

/* ---------- 列表屏 ---------- */
html.dm-mobile .cf-rail { background: var(--bg); }
html.dm-mobile .cf-rail__top { padding: 10px 12px; gap: 10px; -webkit-app-region: no-drag; }
html.dm-mobile .cf-search { height: 40px; border-radius: 10px; }
html.dm-mobile .cf-search__input { font-size: 16px; }
html.dm-mobile .cf-rail__addbtn { width: 44px; height: 40px; border-radius: 10px; }
html.dm-mobile .cf-addmenu__pop { right: 0; max-width: calc(100vw - 24px); }
html.dm-mobile .cf-addmenu__pop--scroll { width: min(300px, calc(100vw - 24px)); }
html.dm-mobile .cf-addmenu__item { padding: 11px 12px; font-size: 15px; }
html.dm-mobile .cf-list { padding: 0 8px 12px; -webkit-overflow-scrolling: touch; }
html.dm-mobile .cf-thread,
html.dm-mobile .cf-prow,
html.dm-mobile .cf-trow { padding: 12px; min-height: 64px; }
html.dm-mobile .cf-thread__title { font-size: 15px; }
html.dm-mobile .cf-thread__owner { font-size: 12.5px; }
/* 列表屏不保留桌面式「当前选中」高亮（手机上点一下就进入了） */
html.dm-mobile.dm-view-list .cf-rail .cf-thread.is-active,
html.dm-mobile.dm-view-list .cf-rail .cf-prow.is-active,
html.dm-mobile.dm-view-list .cf-rail .cf-trow.is-active { background: transparent; }
html.dm-mobile .cf-rail .cf-thread:active,
html.dm-mobile .cf-rail .cf-prow:active,
html.dm-mobile .cf-rail .cf-trow:active { background: var(--bg-active); }

/* ---------- 内容屏：顶部栏 + 返回 ---------- */
html.dm-mobile .cf-dragbar { display: none; }
html.dm-mobile .cf-conv__head {
  padding: 4px 8px !important; min-height: var(--dm-head-h); gap: 4px; -webkit-app-region: no-drag;
}
html.dm-mobile .cf-idbtn { flex: 1; min-width: 0; padding: 6px 8px; }
html.dm-mobile .cf-idbtn__name { font-size: 16px; }
.dm-back { display: none; }
html.dm-mobile.dm-view-main .dm-back {
  display: inline-flex; align-items: center; justify-content: center; flex: none;
  width: 40px; height: 40px; margin: 0; padding: 0; border: none; border-radius: 10px;
  background: transparent; color: var(--fg); cursor: pointer;
}
html.dm-mobile .dm-back:active { background: var(--bg-active); }
/* 没有自带头部的内容屏（资料卡/任务详情/机器人/空态）：注入一条浮动返回栏 */
html.dm-mobile .dm-backbar {
  display: flex; align-items: center; gap: 4px; flex: none;
  min-height: var(--dm-head-h); padding: 4px 8px; border-bottom: 1px solid var(--border); background: var(--bg);
}
html.dm-mobile .dm-backbar__title { font-size: 16px; font-weight: 700; color: var(--fg); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
html:not(.dm-mobile) .dm-backbar { display: none !important; }

/* ---------- 消息区 ---------- */
html.dm-mobile .cf-msgs { padding: 12px 0; -webkit-overflow-scrolling: touch; }
html.dm-mobile .cf-msgs__inner { padding: 0 12px; gap: 16px; }
html.dm-mobile .cf-msg { grid-template-columns: 28px minmax(0, 1fr); gap: 10px; }
/* 用户消息：上游是「内容 | 头像」反向两列；上一条规则特异性更高会覆盖它，这里显式反转 */
html.dm-mobile .cf-msg.is-user { grid-template-columns: minmax(0, 1fr) 28px; }
html.dm-mobile .cf-msg.is-user .cf-msg__body { max-width: 85%; }
html.dm-mobile .cf-msg.is-notify { grid-template-columns: minmax(0, 1fr); }
html.dm-mobile .cf-msg__text { font-size: 15px; line-height: 1.6; }
html.dm-mobile .md { font-size: 15px; }
html.dm-mobile .md-code__body, html.dm-mobile .code, html.dm-mobile .diffview { font-size: 12px; }
html.dm-mobile .cf-tool { max-width: 100%; }
html.dm-mobile .cf-toc { display: none; } /* 轮次索引：窄屏收起 */
html.dm-mobile .cf-turn { padding: 8px; }

/* ---------- 输入区 ---------- */
html.dm-mobile .cf-composer { padding: 6px 8px calc(8px + var(--dm-sab)); }
html.dm-mobile .cf-box { padding: 8px 10px; border-radius: 16px; }
html.dm-mobile .cf-resizer--box { display: none !important; }
html.dm-mobile .cf-box textarea {
  font-size: 16px !important; /* <16px 时 iOS 聚焦会放大页面 */
  height: auto !important; min-height: 44px; max-height: 32vh;
}
html.dm-mobile .cf-box__bar {
  gap: 4px; margin-top: 6px; flex-wrap: nowrap; overflow: visible; min-width: 0;
}
/* 工具栏：其余控件定宽，只有模型选择器可收缩（名称省略号），Send 永远完整可见 */
html.dm-mobile .cf-box__bar > * { flex-shrink: 0; }
html.dm-mobile .cf-iconbtn { width: 36px; height: 36px; }
html.dm-mobile .cf-wschip, html.dm-mobile .cf-wschip__main, html.dm-mobile .cf-gitchip { height: 36px; }
html.dm-mobile .cf-wschip:not(.cf-wschip--mounted) { padding: 0 8px; font-size: 0; gap: 0; } /* 未挂载：只留图标 */
html.dm-mobile .cf-wschip:not(.cf-wschip--mounted) > svg { width: 18px; height: 18px; }
html.dm-mobile .cf-wschip--mounted { flex-shrink: 1; min-width: 0; }
html.dm-mobile .cf-wschip__name { max-width: 88px; overflow: hidden; text-overflow: ellipsis; }
html.dm-mobile .cf-gitchip__branch { max-width: 72px; }
html.dm-mobile .cf-composer .model-pick { margin-left: auto; flex: 0 1 auto; min-width: 0; }
html.dm-mobile .cf-composer .model-pick + .model-pick { margin-left: 0; flex: 0 0 auto; }
html.dm-mobile .chip { height: 36px; padding: 0 8px; max-width: 100%; min-width: 0; }
html.dm-mobile .chip__label { max-width: 40vw; min-width: 0; }
/* 推理强度：只留灯泡图标（去掉文字与下拉箭头，44px 触控宽） */
html.dm-mobile .cf-composer .model-pick + .model-pick .chip__label,
html.dm-mobile .cf-composer .model-pick + .model-pick .chip__caret { display: none; }
html.dm-mobile .cf-composer .model-pick + .model-pick .chip { width: 40px; padding: 0; justify-content: center; }
html.dm-mobile .cf-composer .model-pick + .model-pick .chip svg { width: 18px; height: 18px; }
html.dm-mobile .cf-send { height: 36px; min-width: 60px; padding: 0 14px; margin-left: 2px; border-radius: 10px; font-size: 15px; }

/* 下拉/联想/待办：贴底全宽抽屉，避免溢出屏幕 */
html.dm-mobile .model-pick__backdrop { background: rgba(0, 0, 0, 0.32); }
html.dm-mobile .model-pick__menu {
  position: fixed !important; left: 8px !important; right: 8px !important; top: auto !important;
  bottom: calc(8px + var(--dm-sab)) !important;
  min-width: 0 !important; max-width: none !important; width: auto !important;
  max-height: 60vh !important; transform: none !important; border-radius: 16px; padding: 8px;
}
html.dm-mobile .model-pick__item { padding: 12px 10px; font-size: 15px; }
html.dm-mobile .cf-slash__list { max-height: 40vh; }
html.dm-mobile .cf-slash__item { padding: 11px 10px; font-size: 15px; }
html.dm-mobile .cf-todo__panel { max-height: 50vh; }

/* 右键菜单（长按触发）：限制宽度，保持在屏内 */
html.dm-mobile .cf-ctx { max-width: calc(100vw - 16px); min-width: 180px; }
html.dm-mobile .cf-ctx__item { padding: 12px 12px; font-size: 15px; }

/* ---------- 弹窗：全屏 ---------- */
html.dm-mobile .cf-modal__backdrop, html.dm-mobile .modal__backdrop { padding: 0; align-items: stretch; }
html.dm-mobile .cf-modal {
  max-width: none !important; width: 100vw; height: var(--dm-vh, 100dvh) !important; max-height: none !important;
  border-radius: 0; border: none; padding-top: var(--dm-sat);
}
html.dm-mobile .cf-modal__head { min-height: var(--dm-head-h); padding: 6px 8px 6px 16px; }
html.dm-mobile .cf-modal__title { font-size: 16px; }
html.dm-mobile .cf-modal__close { width: 40px; height: 40px; }
/* 设置：左侧导航 → 顶部等分标签（4 项刚好铺满，不再需要横滑） */
html.dm-mobile .cf-modal__body { grid-template-columns: minmax(0, 1fr) !important; grid-template-rows: auto minmax(0, 1fr); }
html.dm-mobile .cf-modal__body > .cf-nav {
  flex-direction: row; gap: 4px; overflow-x: auto; padding: 6px 8px; border-right: none; border-bottom: 1px solid var(--border);
  scrollbar-width: none;
}
html.dm-mobile .cf-modal__body > .cf-nav::-webkit-scrollbar { display: none; }
html.dm-mobile .cf-nav__item {
  flex: 1 1 0; min-width: 0; flex-direction: column; justify-content: center; gap: 3px;
  min-height: 52px; padding: 6px 4px; font-size: 12px; text-align: center; white-space: nowrap;
}
html.dm-mobile .cf-nav__item > span:not(.cf-nav__icon) { overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
html.dm-mobile .cf-pane { padding: 14px 14px calc(24px + var(--dm-sab)); -webkit-overflow-scrolling: touch; }
/* 分段控件：触控高度 ≥36px */
html.dm-mobile .cf-seg > button, html.dm-mobile .segmented > button { min-height: 34px; padding: 0 12px; font-size: 14px; }
html.dm-mobile .settings2 { grid-template-columns: minmax(0, 1fr); }
html.dm-mobile .settings2__nav { display: flex; overflow-x: auto; border-right: none; border-bottom: 1px solid var(--border); }
html.dm-mobile .settings2__nav-item { flex: none; width: auto; white-space: nowrap; }
html.dm-mobile .cf-set__row, html.dm-mobile .cf-setrow { flex-wrap: wrap; }
html.dm-mobile .cf-input, html.dm-mobile .cf-select, html.dm-mobile .cf-textarea,
html.dm-mobile input[type=text], html.dm-mobile input[type=password], html.dm-mobile input[type=search],
html.dm-mobile input[type=url], html.dm-mobile input[type=number], html.dm-mobile select, html.dm-mobile textarea { font-size: 16px !important; }
html.dm-mobile .cf-input, html.dm-mobile .cf-select { height: 40px; }
html.dm-mobile .modal__card { width: calc(100vw - 24px); max-width: none; margin: auto 12px; align-self: center; }

/* ---------- 资料卡 / 详情 / 空态 ---------- */
html.dm-mobile .cf-profile__inner, html.dm-mobile .cf-quick__inner { padding: 20px 16px calc(24px + var(--dm-sab)); }
html.dm-mobile .cf-qcard { width: calc(50% - 8px); }
html.dm-mobile .cf-editor { padding: 14px; }
html.dm-mobile .cf-tdetail__act, html.dm-mobile .cf-profile__new, html.dm-mobile .cf-profile__edit { height: 44px; }

/* ---------- 触屏：hover 才显示的控件常显 ---------- */
@media (hover: none) {
  .list-row__action, .cf-wschip__x, .termtab__close, .projtab__close, .gitrow__actions, .gitgroup__actions { opacity: 1 !important; pointer-events: auto !important; }
}

/* toast：贴顶居中 */
html.dm-mobile .toast-layer { left: 8px; right: 8px; top: calc(8px + var(--dm-sat)); max-width: none; }

/* 文件夹选择器（bridge 的 .deva-picker）：全屏 */
html.dm-mobile .deva-picker__box { width: 100vw; max-height: none; height: var(--dm-vh, 100dvh); border-radius: 0; }
html.dm-mobile .deva-picker__row { padding: 12px 14px; font-size: 15px; }
html.dm-mobile .deva-picker__input, html.dm-mobile .deva-picker__name { font-size: 16px; padding: 10px 12px; }
html.dm-mobile .deva-picker__btn { padding: 11px 18px; font-size: 15px; }
html.dm-mobile .deva-picker__foot { padding-bottom: calc(12px + var(--dm-sab)); }
