/* ============================================================================
   mobile-fix.css  手机端 composer 适配修复（2026-09-12）
   修复：参数胶囊溢出屏幕、输入框占位文字与参数行重叠、价格角标出屏、发送钮重叠
   说明：必须最后加载，以相同选择器靠加载顺序覆盖 composer-v2 / sp-17fix
   ============================================================================ */

/* ---------- ≤991px 手机/平板竖屏：隐藏贴侧栏的竖排「对话历史」rail ----------
   该 rail 仅桌面端侧栏常驻时有意义；移动端侧栏是抽屉，rail 会错位坍缩成竖条压在输入区。
   移动端历史入口由顶部 tbTipBtn（时钟图标）承担，故此处直接隐藏，且不依赖 .ws-v2 前缀与层叠顺序。 */
@media (max-width: 991px) {
  .sb-history-rail,
  #sbHistoryRail,
  [data-history-rail] { display: none !important; }
  /* 顶部历史按钮在移动端保持可见可点 */
  .tb-history-ico#tbTipBtn, #tbTipBtn { display: inline-flex !important; }
}

/* ---------- ≤767px 平板/手机 ---------- */
@media (max-width: 767px) {
  /* 输入框主体：纵向弹性、子元素不互相挤压 */
  .cp-v2 .composer-box {
    display: flex;
    flex-direction: column;
    overflow: visible;
  }
  .cp-v2 .composer-box > * { min-width: 0; }

  /* 输入框：占位文案常为两行，min-height 至少容纳两行 16px*1.55，避免压到参数行 */
  .ws-v2 .ws-composer.cp-v2 .composer-box textarea,
  .cp-v2 .composer-box textarea {
    min-height: 56px !important;
    line-height: 1.55;
    overflow-y: auto;
    flex: 0 0 auto;
  }
  /* 拉大状态仍以拉大高度为准（选择器更高优先级） */
  .ws-composer.cp-v2.cp-expanded .composer-box textarea { min-height: 220px !important; }

  /* 参数胶囊行：随输入框宽度自动换行全部可见（不再单行横滑+隐藏滚动条裁切功能键）；芯片不收缩 */
  .ws-v2 .ws-composer.cp-v2 .composer-params,
  .cp-v2 .composer-params {
    flex-wrap: wrap !important;
    overflow-x: visible !important;
    overflow-y: visible !important;
    width: 100%;
    max-width: 100%;
    padding: 6px 2px 4px;
    margin-top: 2px;
    row-gap: 6px;
    flex: 0 0 auto;
  }
  .cp-v2 .composer-params::-webkit-scrollbar { display: none; }
  .cp-v2 .composer-params .param-chip {
    flex: 0 0 auto !important;
    white-space: nowrap !important;
    max-width: 48%;
  }
  .cp-v2 .composer-params .param-chip .param-val,
  .cp-v2 .composer-params .param-chip span { white-space: nowrap; }
  /* 下拉菜单展开的瞬间放开纵向裁剪，保证向上弹出的菜单不被滑动容器切掉（选择器需高过上面的基础规则） */
  .ws-v2 .ws-composer.cp-v2 .composer-params.param-menu-open,
  .cp-v2 .composer-params.param-menu-open { overflow: visible !important; }

  /* 底部行：不换行、发送钮固定在右且不与参数行重叠 */
  .cp-v2 .composer-bottom {
    flex-wrap: nowrap !important;
    align-items: center;
    width: 100%;
    flex: 0 0 auto;
  }
  .cp-v2 .composer-bottom .send-stack {
    margin-left: auto !important;
    flex: 0 0 auto;
    flex-direction: row !important;
    gap: 8px;
  }
  .cp-v2 .composer-bottom .send-stack > * { flex: 0 0 auto; }
  .cp-v2 .send-btn, .cp-v2 .send-stack .send-btn { min-width: 42px; min-height: 42px; }

  /* 价格角标：右锚定、限宽、超长省略，绝不出屏（不遮挡参考图列） */
  .cp-v2 .cp-corner {
    left: auto !important;
    right: 10px !important;
    top: 8px;
    max-width: 56% !important;
    display: flex;
    justify-content: flex-end;
    z-index: 3;
  }
  .cp-v2 .cp-price {
    max-width: 100%;
    display: inline-flex;
    align-items: center;
    white-space: nowrap;
    overflow: hidden;
  }
  .cp-v2 .cp-price #cpPriceText {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .cp-v2 .cp-price .cp-bolt { flex: 0 0 auto; }
  .cp-v2 .cp-price-info { flex: 0 0 auto; }

  /* 左右圆形工具列在手机隐藏（功能已进工具栏/应用中心），给输入区让位 */
  .ws-v2 .ws-composer.cp-v2 .cp-side { display: none !important; }
}

/* ---------- ≤480px 手机 ---------- */
@media (max-width: 480px) {
  .ws-v2 .ws-composer.cp-v2 .composer-box,
  .cp-v2 .composer-box { padding: 9px 10px 8px !important; }
  .cp-v2 .composer-box textarea { min-height: 54px !important; font-size: 16px !important; }
  .cp-v2 .composer-params .param-chip { font-size: 12.5px; padding: 5px 9px; max-width: 48%; }
  .cp-v2 .cp-corner { max-width: 60% !important; font-size: 11px; }
  .cp-v2 .cp-price { font-size: 11px; gap: 2px; }
  .cp-v2 .cp-price-info { width: 16px; height: 16px; }
  .cp-v2 .send-btn, .cp-v2 .send-stack .send-btn { min-width: 40px; min-height: 40px; }
}

/* ---------- ≤360px 极小屏 ---------- */
@media (max-width: 360px) {
  .cp-v2 .composer-box textarea { min-height: 52px !important; }
  .cp-v2 .composer-params .param-chip { font-size: 12px; padding: 4px 8px; }
  .cp-v2 .cp-price-info { display: none; } /* 极窄屏隐藏 ⓘ，保住价格文本 */
}

/* ---------- 需求14：手机端发送行必须常驻可达（修复参数多行把发送钮挤出视口导致“模型调用不了”） ---------- */
@media (max-width: 767px) {
  /* 主区锁定为视口高度：顶栏固定、对话区内部滚动、输入区常驻底部（修复整页滚动把发送钮带出屏幕） */
  .workspace-shell.ws-v2 { height: 100dvh !important; height: 100vh !important; overflow: hidden; }
  .ws-v2 .ws-main { position: fixed; inset: 0; z-index: 1; display: flex; flex-direction: column;
    height: 100dvh !important; height: 100vh !important; min-height: 0; overflow: hidden; }
  .ws-v2 .ws-topbar { flex: 0 0 auto; }
  .ws-v2 .ws-chat { flex: 1 1 0 !important; min-height: 0; overflow-y: auto !important; -webkit-overflow-scrolling: touch; }
  /* 输入区钉底、限高、自身可滚动，不再把底部发送行顶出屏幕 */
  .ws-v2 .ws-composer.cp-v2 { position: static !important; flex: 0 0 auto; max-height: 54vh; overflow-y: auto; -webkit-overflow-scrolling: touch; padding-bottom: 8px; }
  /* 底部发送/工具行吸附在输入区可视下沿，任何时候都能点到发送 */
  .cp-v2 .composer-bottom { position: sticky; bottom: -8px; z-index: 6; background: linear-gradient(180deg,rgba(10,10,12,.4),#0a0a0c 38%); padding: 8px 2px 4px; }
  .cp-v2 .send-btn, .cp-v2 .send-stack .send-btn { width: 44px; height: 44px; flex: 0 0 auto; }
  .cp-v2 .composer-params .param-chip { max-width: 100%; }
}

/* ============================================================
   v19 响应式 QA 补充（2026-09-16）：移动端弹窗关闭钮触控热区放大 + 矮高度安全内边距
   仅作用于 ≤767px 移动端，不改桌面布局、不改业务逻辑。
   背景：充值/智能引擎/运镜广场/灵感详情等弹窗右上角关闭钮原为 30px，
   低于 44px 触控热区建议值，窄屏易误点；此处仅放大命中区，位置仍绝对定位于右上。
   ============================================================ */
@media (max-width: 767px) {
  #rechargeMask .modal-close,
  .cp-cam-x,
  .ws-modal .modal-close,
  .s2e-modal .modal-close,
  .s2e-modal .cp-x,
  .insp-detail-modal .close,
  .sq-pub-modal .x {
    width: 40px !important;
    height: 40px !important;
    font-size: 20px !important;
    line-height: 40px !important;
  }
  /* 矮高度（横屏小窗 / 667~720）下弹窗留安全内边距，避免头部关闭钮贴边被视口裁切 */
  .cp-cam-mask,
  #rechargeMask { padding: 12px !important; }
}
