/* =============================================================================
 * 首页布局（对话全宽，无玩偶留白/占位）
 * ============================================================================= */

.page[data-page="home"].active > .home-body-split {
  flex: 1 1 auto !important;
  min-height: 0 !important;
}

.page[data-page="home"].active .home-body-split {
  position: relative !important;
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;
  min-height: 0 !important;
  overflow: hidden !important;
}

/* =============================================================================
 * 首页：顶栏下固定机器人 + 全宽半透明聊天气泡
 * ============================================================================= */

.page[data-page="home"].active .home-chat-col {
  flex: 1 1 auto !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  position: relative !important;
  z-index: 10 !important;
  display: flex !important;
  flex-direction: column !important;
  overflow: hidden !important;
  background: transparent !important;
}

.page[data-page="home"].active .home-body-split {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  position: relative !important;
  display: flex !important;
  flex-direction: column !important;
  overflow: hidden !important;
}

.page[data-page="home"].active #homeScroll,
.page[data-page="home"].active #chatThread {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  width: 100% !important;
  box-sizing: border-box !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch !important;
  position: relative !important;
  z-index: 12 !important;
}

.page[data-page="home"].active #chatThread {
  padding: 8px 14px 12px !important;
  overflow-x: hidden !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}

/* 用户气泡与助手同宽：行级 padding/宽度见下方 .chat-row.user 与文件末尾 HOME-USER-BUBBLE-LOCK */

.page[data-page="home"].active .chat-row.user {
  position: relative !important;
  z-index: 14 !important;
  justify-content: flex-start !important;
  padding-left: var(--home-robot-safe-left, calc(min(23vw, 120px) + 12px)) !important;
  padding-right: 14px !important;
  width: 100% !important;
  box-sizing: border-box !important;
}

.page[data-page="home"].active .chat-row.user .home-user-bubble-slot {
  width: 100% !important;
  max-width: 100% !important;
  align-items: stretch !important;
}

.page[data-page="home"].active .chat-row.user .chat-bubble-stack {
  position: relative !important;
  z-index: 14 !important;
  max-width: 100% !important;
  width: 100% !important;
  align-items: stretch !important;
  align-self: stretch !important;
}

.page[data-page="home"].active .chat-row.user .chat-bubble {
  width: 100% !important;
  max-width: 100% !important;
}

.page[data-page="home"].active .chat-row.user .msg-icon-row {
  align-self: flex-end !important;
  justify-content: flex-end !important;
  flex-direction: row-reverse !important;
  position: relative !important;
  z-index: 16 !important;
  margin-top: 6px !important;
  padding-right: 2px !important;
  min-height: 36px !important;
}

.page[data-page="home"].active .chat-row.user .msg-retry-btn,
.page[data-page="home"].active .chat-row.user .msg-del-btn {
  min-height: 36px !important;
  min-width: 36px !important;
  padding: 6px 12px 6px 10px !important;
  position: relative !important;
  z-index: 16 !important;
}

.page[data-page="home"].active .chat-row.assistant .chat-bubble-stack {
  max-width: 100% !important;
  width: 100% !important;
  position: relative !important;
  z-index: 14 !important;
}

.page[data-page="home"].active .chat-row.assistant {
  justify-content: flex-start !important;
  padding-left: var(--home-robot-safe-left, calc(min(23vw, 120px) + 12px)) !important;
  padding-right: 14px !important;
  width: 100% !important;
  box-sizing: border-box !important;
}

.page[data-page="home"].active .chat-row.assistant .chat-bubble {
  width: 100% !important;
  max-width: 100% !important;
  word-break: normal !important;
  overflow-wrap: break-word !important;
  line-break: auto !important;
  hyphens: none !important;
}

.page[data-page="home"].active .chat-row.user .chat-bubble {
  text-align: left !important;
}

.page[data-page="home"].active .chat-row.assistant .msg-icon-row {
  margin-left: 0 !important;
  align-self: flex-start !important;
}

.page[data-page="home"].active .chat-row.user .chat-bubble {
  background: rgba(37, 99, 235, 0.20) !important;
  border-color: rgba(37, 99, 235, 0.18) !important;
  color: rgba(255, 255, 255, 0.92) !important;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

.page[data-page="home"].active .chat-row.assistant .chat-bubble {
  background: rgba(255, 255, 255, 0.20) !important;
  border-color: rgba(255, 255, 255, 0.18) !important;
  color: rgba(15, 23, 42, 0.92) !important;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

body:not(.theme-light) .page[data-page="home"].active .chat-row.assistant .chat-bubble {
  background: rgba(28, 32, 40, 0.20) !important;
  border-color: rgba(255, 255, 255, 0.12) !important;
  color: rgba(232, 236, 242, 0.92) !important;
}

body.theme-light .page[data-page="home"].active .chat-row.user .chat-bubble {
  background: rgba(37, 99, 235, 0.20) !important;
  border-color: rgba(37, 99, 235, 0.18) !important;
  color: rgba(255, 255, 255, 0.92) !important;
}

body.theme-light .page[data-page="home"].active .chat-row.assistant .chat-bubble {
  background: rgba(255, 255, 255, 0.20) !important;
  border-color: rgba(15, 23, 42, 0.08) !important;
  color: rgba(15, 23, 42, 0.92) !important;
}

/* 背景在 section 级 fixed，z-index 1 = 最底；机器人在上、气泡再其上 */
.page[data-page="home"]:not(.active) .home-chat-bg {
  visibility: hidden !important;
  pointer-events: none !important;
}

.page[data-page="home"].active .home-chat-bg {
  position: fixed;
  left: var(--home-bg-frame-left, var(--vv-offset-left, 0px));
  width: var(--home-bg-frame-width, var(--vv-layout-width, 100%));
  top: calc(var(--home-bg-frame-top, calc(var(--vv-offset-top, 0px) + var(--home-bg-top, 56px))) - 6px);
  height: calc(var(--home-bg-frame-height, 420px) + 16px);
  bottom: auto;
  right: auto;
  z-index: 1 !important;
  overflow: hidden;
  pointer-events: none;
}

/* 键盘态：锁定弹起前的像素框，人物图尺寸不再随 Tab 收起而变化 */
body.home-chat-bg-locked .page[data-page="home"].active .home-chat-bg {
  top: calc(var(--home-bg-lock-top) - 6px) !important;
  left: var(--home-bg-lock-left) !important;
  width: var(--home-bg-lock-width) !important;
  height: calc(var(--home-bg-lock-height) + 16px) !important;
  bottom: auto !important;
}

/* 键盘弹起时保留 Tab 占位，避免对话区整体被撑高 */
body.native-app.keyboard-open.page-home .home-body-split,
body.native-app.keyboard-open:has(.page[data-page="home"].active) .home-body-split {
  padding-bottom: 74px !important;
  box-sizing: border-box !important;
}

.home-chat-bg-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
  opacity: 1;
}

.home-chat-bg-veil {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg,
    rgba(255, 255, 255, 0.06) 0%,
    rgba(255, 255, 255, 0.10) 40%,
    rgba(255, 255, 255, 0.18) 100%);
}

body:not(.theme-light) .home-chat-bg-veil {
  background: linear-gradient(180deg,
    rgba(15, 20, 25, 0.08) 0%,
    rgba(15, 20, 25, 0.12) 40%,
    rgba(15, 20, 25, 0.20) 100%);
}

.page[data-page="home"].active .home-chat-col.has-home-chat-bg #homeScroll,
.page[data-page="home"].active .home-chat-col.has-home-chat-bg #chatThread {
  position: relative;
  z-index: 1;
  background: transparent !important;
}

.page[data-page="home"].active .home-chat-col.has-home-chat-bg .chat-row.user .chat-bubble,
.page[data-page="home"].active .home-chat-col.has-home-chat-bg .chat-row.assistant .chat-bubble {
  background: rgba(255, 255, 255, 0.20) !important;
  border-color: rgba(255, 255, 255, 0.18) !important;
  color: rgba(15, 23, 42, 0.92) !important;
}

body:not(.theme-light) .page[data-page="home"].active .home-chat-col.has-home-chat-bg .chat-row.user .chat-bubble,
body:not(.theme-light) .page[data-page="home"].active .home-chat-col.has-home-chat-bg .chat-row.assistant .chat-bubble {
  background: rgba(28, 32, 40, 0.20) !important;
  border-color: rgba(255, 255, 255, 0.14) !important;
  color: rgba(232, 236, 242, 0.92) !important;
}

body.theme-light .page[data-page="home"].active .home-chat-col.has-home-chat-bg .chat-row.user .chat-bubble {
  background: rgba(37, 99, 235, 0.20) !important;
  border-color: rgba(37, 99, 235, 0.18) !important;
  color: rgba(255, 255, 255, 0.92) !important;
}

body.theme-light .page[data-page="home"].active .home-chat-col.has-home-chat-bg .chat-row.assistant .chat-bubble {
  background: rgba(255, 255, 255, 0.20) !important;
  border-color: rgba(15, 23, 42, 0.08) !important;
  color: rgba(15, 23, 42, 0.92) !important;
}

.page[data-page="home"].active .home-chat-col #homeScroll,
.page[data-page="home"].active .home-chat-col #chatThread {
  background: transparent !important;
}

.page[data-page="home"].active #homeScroll,
.page[data-page="home"].active #chatThread {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  width: 100% !important;
  box-sizing: border-box !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  -webkit-overflow-scrolling: touch !important;
}

.page[data-page="home"].active #chatThread {
  padding: 8px 14px 12px !important;
  max-width: 100% !important;
}

.page[data-page="home"].active .home-chat-col.has-home-chat-bg #chatThread {
  padding-top: 18px !important;
}

.page[data-page="home"].active .chat-row.assistant .chat-bubble-stack {
  align-items: stretch !important;
  width: 100% !important;
  max-width: 100% !important;
}

.page[data-page="home"].active .chat-row.assistant .chat-bubble {
  width: 100% !important;
  max-width: 100% !important;
}

.page[data-page="home"] .chat-row.user .msg-del-btn {
  display: none !important;
}

.page[data-page="home"] .chat-row.user:not(:has(.msg-retry-btn)) .msg-icon-row {
  display: none !important;
}

body.create-flow-genre-pane #tabbar,
body.create-flow-genre-pane .bottom-rail #tabbar {
  display: grid !important;
}

body.create-flow-genre-pane #bottomRail {
  display: flex !important;
  visibility: visible !important;
}

/* =============================================================================
 * 原生壳：外层高度锁 visualViewport，禁止文档级滚动
 * ============================================================================= */
html.native-app-boot,
html.native-app-boot body,
body.native-app {
  overflow: hidden !important;
  height: calc(var(--app-vh, 1vh) * 100) !important;
  max-height: calc(var(--app-vh, 1vh) * 100) !important;
  width: 100% !important;
  overscroll-behavior: none !important;
}

html.native-app-boot body .stage,
body.native-app .stage,
html.native-app-boot body .device,
body.native-app .device,
html.native-app-boot body .screen,
body.native-app .screen {
  height: calc(var(--app-vh, 1vh) * 100) !important;
  max-height: calc(var(--app-vh, 1vh) * 100) !important;
  min-height: 0 !important;
  overflow: hidden !important;
}

html.native-app-boot body .app-shell,
body.native-app .app-shell {
  display: flex !important;
  flex-direction: column !important;
  height: calc(var(--app-vh, 1vh) * 100) !important;
  max-height: calc(var(--app-vh, 1vh) * 100) !important;
  min-height: 0 !important;
  overflow: hidden !important;
}

html.native-app-boot body .pages,
body.native-app .pages {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  height: auto !important;
  max-height: none !important;
  overflow: hidden !important;
}

html.native-app-boot body .bottom-rail,
body.native-app .bottom-rail {
  flex: 0 0 auto !important;
}

html.native-app-boot body .stage,
body.native-app .stage {
  padding: 0 !important;
}

.page[data-page="home"].active {
  background: var(--c-bg) !important;
}

/* 浅色模式下首页用淡蓝渐变 */
body.theme-light .page[data-page="home"].active {
  background: linear-gradient(180deg, #f4f6fa 0%, #eef2f7 60%, #e9eef5 100%) !important;
}

html.native-app-boot body .screen,
body.native-app .screen {
  background: var(--c-bg) !important;
}

body.native-app.theme-light .screen,
html.native-app-boot.theme-light body .screen {
  background: #f4f6fa !important;
}

body.native-app:not(.keyboard-rail-active) .bottom-rail {
  position: relative !important;
  bottom: auto !important;
  left: 0 !important;
  right: 0 !important;
  width: 100% !important;
  max-width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  transform: none !important;
  box-sizing: border-box !important;
}

/* 附件菜单打开：禁止误粘 keyboard-open 把底栏 fixed 到屏底顶替 Tab */
body.native-app.composer-attach-menu-open .bottom-rail {
  position: relative !important;
  bottom: auto !important;
  left: 0 !important;
  right: 0 !important;
  width: 100% !important;
  transform: none !important;
}
body.native-app.composer-attach-menu-open .bottom-rail #tabbar {
  display: grid !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}
body.native-app.composer-attach-menu-open.keyboard-open .bottom-rail #tabbar,
body.native-app.composer-attach-menu-open.keyboard-android .bottom-rail #tabbar,
body.native-app.composer-attach-menu-open.keyboard-rail-active .bottom-rail #tabbar {
  display: grid !important;
}

/* 100vw 在 Android WebView 常大于可视宽 → 整页右偏且可左右滑；锁横向溢出 */
html.native-app-boot,
body.native-app {
  overflow-x: hidden !important;
  max-width: 100% !important;
  touch-action: pan-y pinch-zoom;
}

html.native-app-boot body .stage,
body.native-app .stage,
html.native-app-boot body .device,
body.native-app .device {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}

html.native-app-boot body .pages,
body.native-app .pages,
html.native-app-boot body .page,
body.native-app .page {
  max-width: 100% !important;
  overflow-x: hidden !important;
  box-sizing: border-box !important;
}

/* 真机：钉死根布局，消除 WebView 整页右偏 / 可左右滑 */
html.native-app-boot,
html.native-app-boot body,
body.native-app {
  position: fixed !important;
  inset: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  overscroll-behavior-x: none !important;
}

html.native-app-boot body .stage,
body.native-app .stage,
html.native-app-boot body .device,
body.native-app .device,
html.native-app-boot body .screen,
body.native-app .screen {
  position: fixed !important;
  inset: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  transform: none !important;
}

html.native-app-boot body .app-shell,
body.native-app .app-shell {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  max-width: 100% !important;
  left: 0 !important;
  right: 0 !important;
}

body.native-app:not(.keyboard-rail-active) .bottom-rail {
  padding-left: max(12px, env(safe-area-inset-left, 0px)) !important;
  padding-right: max(12px, env(safe-area-inset-right, 0px)) !important;
  min-width: 0 !important;
  overflow: visible !important;
  box-sizing: border-box !important;
}

/* composer 默认 content-box：width:100% + 左右 padding 会右溢 → 贴右缘、左侧留白、圆形按钮被裁 */
body.native-app:not(.keyboard-rail-active) .bottom-rail #composer,
body.native-app:not(.keyboard-rail-active) .bottom-rail .composer {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  align-self: stretch !important;
  box-sizing: border-box !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  overflow: visible !important;
}

body.native-app .bottom-rail .composer .composer-input {
  flex: 1 1 0 !important;
  min-width: 0 !important;
}

body.native-app .bottom-rail .composer-attach-wrap {
  flex: 0 0 auto !important;
  display: flex !important;
  align-items: center !important;
  min-width: 0 !important;
}

/* 附件 + / 发送：独立正圆按钮（不用 square-plus，避免 SVG 外框叠在圆底上变「歪圆」） */
body.native-app .bottom-rail .composer .composer-circle-btn {
  appearance: none !important;
  -webkit-appearance: none !important;
  width: 36px !important;
  height: 36px !important;
  min-width: 36px !important;
  min-height: 36px !important;
  max-width: 36px !important;
  max-height: 36px !important;
  flex: 0 0 36px !important;
  padding: 0 !important;
  margin: 0 !important;
  border: none !important;
  border-radius: 9999px !important;
  background: rgba(255, 255, 255, 0.08) !important;
  color: #9aa3b2 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-sizing: border-box !important;
  overflow: hidden !important;
  line-height: 0 !important;
  position: relative !important;
}

/* 流式中：发送/麦/插入键必须让位给「暂停」。circle-btn 带 !important 的 display
   会盖过无 !important 的 .composer.sending 隐藏规则，这里用等权 !important 纠正，
   避免「发送与暂停同时出现」。 */
body.native-app .bottom-rail .composer.sending #composerSend,
body.native-app .bottom-rail .composer.sending #composerMic,
body.native-app .bottom-rail .composer.sending #composerKbBtn,
body.native-app .bottom-rail .composer.sending #composerInsertBtn {
  display: none !important;
}
body.native-app .bottom-rail .composer.sending .stop {
  display: inline-flex !important;
}

body.native-app .bottom-rail .composer .composer-circle-btn .ic {
  width: 20px !important;
  height: 20px !important;
  min-width: 20px !important;
  min-height: 20px !important;
  flex: 0 0 20px !important;
  display: block !important;
  pointer-events: none !important;
}

body.native-app .bottom-rail .composer .composer-circle-btn:active {
  background: rgba(255, 255, 255, 0.14) !important;
}

body.theme-light .bottom-rail .composer .composer-circle-btn {
  background: rgba(15, 23, 42, 0.07) !important;
  color: #64748b !important;
}

/* 知识库：圆角方形容器（勿套用 50% 圆） */
body.native-app .bottom-rail .composer .ico.kb-entry-ico {
  width: 36px !important;
  height: 36px !important;
  min-width: 36px !important;
  min-height: 36px !important;
  max-width: 36px !important;
  max-height: 36px !important;
  flex: 0 0 36px !important;
  border-radius: 10px !important;
  overflow: visible !important;
  box-sizing: border-box !important;
}

body.native-app .bottom-rail .composer .mic {
  width: 36px !important;
  height: 36px !important;
  min-width: 36px !important;
  min-height: 36px !important;
  max-width: 36px !important;
  max-height: 36px !important;
  flex: 0 0 36px !important;
  border-radius: 9999px !important;
  overflow: hidden !important;
  box-sizing: border-box !important;
  padding: 0 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
}

body.native-app .bottom-rail .composer .mic .ic-lg {
  width: 22px !important;
  height: 22px !important;
  flex: 0 0 22px !important;
}

body.native-app .bottom-rail .tabbar {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}

/* 深色/浅色：对话层透明，让下层 Live2D 机器人透出 */
body.native-app .page[data-page="home"].active .home-body-split,
body.native-app .page[data-page="home"].active .home-chat-col,
body.native-app .page[data-page="home"].active .home-scroll,
body.native-app .page[data-page="home"].active #chatThread {
  background: transparent !important;
}

body.native-app .page[data-page="home"].active .home-robot-panel {
  z-index: 6 !important;
  visibility: visible !important;
  opacity: 1 !important;
}

/* 未绘制完成前隐藏 WebGL canvas，避免 APK 冷启动黑块 */
.page[data-page="home"].active .home-robot-panel .robot-figure:not(.live2d-painted) .robot-live2d-canvas {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

body.native-app .page[data-page="home"].active .home-robot-panel .robot-live2d-canvas {
  background: transparent !important;
}

body.theme-light.native-app .page[data-page="home"].active .home-robot-panel .robot-live2d-canvas,
body.theme-light.native-app .page[data-page="home"].active .home-robot-panel .robot-live2d-canvas-2d {
  background: transparent !important;
}

/* 深色：canvas 必须透明，勿铺 #0a0e18 实色（会在机器人周围露出矩形块） */
body:not(.theme-light).native-app .page[data-page="home"].active .home-robot-panel .robot-live2d-canvas,
body:not(.theme-light).native-app .page[data-page="home"].active .home-robot-panel .robot-live2d-canvas-2d {
  background: transparent !important;
}

body.native-app:not(.keyboard-rail-active) .page[data-page="home"].active .home-robot-panel {
  left: 0 !important;
}

body.native-app .page[data-page="home"].active > .home-head-band .home-topbar {
  padding-left: max(14px, calc(8px + env(safe-area-inset-left, 0px))) !important;
  padding-right: max(14px, calc(8px + env(safe-area-inset-right, 0px))) !important;
  box-sizing: border-box !important;
}

body.native-app .page[data-page="home"].active #chatThread {
  padding-left: max(14px, env(safe-area-inset-left, 0px)) !important;
  padding-right: max(14px, env(safe-area-inset-right, 0px)) !important;
  box-sizing: border-box !important;
}

body.native-app .agents-square-root.agents-in-editor .agents-sq-scroll {
  padding-left: max(14px, env(safe-area-inset-left, 0px)) !important;
  padding-right: max(14px, env(safe-area-inset-right, 0px)) !important;
  /* 编辑页在 .pages 内，底栏已在 app-shell 文档流下方，勿再叠一层 tabbar 高度 */
  padding-bottom: max(12px, env(safe-area-inset-bottom, 0px)) !important;
  box-sizing: border-box !important;
}

body.native-app .agents-sq-topbar {
  padding-left: max(12px, env(safe-area-inset-left, 0px)) !important;
  padding-right: max(12px, env(safe-area-inset-right, 0px)) !important;
  box-sizing: border-box !important;
}

body.native-app .agents-mine-editor,
body.native-app .agents-mine-input,
body.native-app .agents-mine-textarea,
body.native-app .agents-mine-section {
  max-width: 100% !important;
  box-sizing: border-box !important;
}

body.native-app.keyboard-rail-active:has(.page[data-page="home"].active) .bottom-rail,
body.native-app.keyboard-rail-active:has(.page[data-page="create"].active) .bottom-rail,
body.native-app.keyboard-rail-active:has(.page[data-page="agents"].active.agents-in-chat) .bottom-rail,
body.native-app.keyboard-android.keyboard-open:has(.page[data-page="home"].active) .bottom-rail,
body.native-app.keyboard-android.keyboard-open:has(.page[data-page="create"].active) .bottom-rail,
body.native-app.keyboard-android.keyboard-open:has(.page[data-page="agents"].active.agents-in-chat) .bottom-rail,
/* 兼容不支持 :has() 的旧版 WebView（MIUI / 低版本 Android）：用 body.page-* 类替代 */
body.native-app.keyboard-rail-active.page-home .bottom-rail,
body.native-app.keyboard-rail-active.page-create .bottom-rail,
body.native-app.keyboard-rail-active.page-agents.page-chat .bottom-rail,
body.native-app.keyboard-android.keyboard-open.page-home .bottom-rail,
body.native-app.keyboard-android.keyboard-open.page-create .bottom-rail,
body.native-app.keyboard-android.keyboard-open.page-agents.page-chat .bottom-rail,
body.native-app.keyboard-rail-active.page-agents.agents-chat-focus .bottom-rail,
body.native-app.keyboard-android.keyboard-open.page-agents.agents-chat-focus .bottom-rail {
  position: fixed !important;
  bottom: var(--kb-vv-inset, 0px) !important;
  left: var(--vv-offset-left, 0px) !important;
  width: var(--vv-layout-width, 100%) !important;
  z-index: 60 !important;
  transform: none !important;
  padding-bottom: max(6px, env(safe-area-inset-bottom, 0px)) !important;
  box-sizing: border-box !important;
  gap: 0 !important;
  padding-top: 6px !important;
}
body.native-app.keyboard-rail-active.page-agents.agents-chat-focus .bottom-rail #tabbar,
body.native-app.keyboard-android.keyboard-open.page-agents.agents-chat-focus .bottom-rail #tabbar {
  display: none !important;
  height: 0 !important;
  min-height: 0 !important;
  max-height: 0 !important;
  overflow: hidden !important;
  margin: 0 !important;
  padding: 0 !important;
}

body.native-app.keyboard-android.keyboard-open .bottom-rail .composer {
  position: relative !important;
  z-index: 2 !important;
}

body.native-app.keyboard-android.keyboard-open .bottom-rail .composer-input {
  scroll-margin-bottom: calc(var(--kb-vv-inset, 0px) + 12px);
}

/* 创作工作台：键盘弹出时给聊天线程底部留出空间，确保最后一条气泡能滚到输入框上方 */
body.native-app.keyboard-open.create-workbench-pane #createResultThread {
  padding-bottom: calc(16px + var(--kb-vv-inset, 0px)) !important;
}
body.native-app.keyboard-rail-active.create-workbench-pane #createResultThread {
  padding-bottom: calc(16px + var(--kb-vv-inset, 0px)) !important;
}

/* 智能体对话：键盘弹出时同理给聊天线程底部留空，让最后一条回答气泡滚到输入框上方。
   公式与首页 #homeScroll 完全一致：--kb-vv-inset（键盘高+ANDROID_PAD）+
   --bottom-rail-height 兜底 96px（输入条高度）+ 8px 缓冲。 */
body.native-app.keyboard-open.agents-chat-focus #agentChatThread,
body.native-app.keyboard-open:has(.page[data-page="agents"].active.agents-in-chat) #agentChatThread {
  padding-bottom: calc(var(--kb-vv-inset, 0px) + var(--bottom-rail-height, 96px) + 8px) !important;
}
body.native-app.keyboard-rail-active.agents-chat-focus #agentChatThread,
body.native-app.keyboard-rail-active:has(.page[data-page="agents"].active.agents-in-chat) #agentChatThread {
  padding-bottom: calc(var(--kb-vv-inset, 0px) + var(--bottom-rail-height, 96px) + 8px) !important;
}

/* 智能体对话：滚动容器与首页 #homeScroll 对齐 */
.page[data-page="agents"].active.agents-in-chat #agentChatThread {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  width: 100% !important;
  box-sizing: border-box !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  -webkit-overflow-scrolling: touch !important;
}
body.native-app.keyboard-open.agents-chat-focus #agentChatThread,
body.native-app.keyboard-open:has(.page[data-page="agents"].active.agents-in-chat) #agentChatThread,
body.native-app.keyboard-rail-only.keyboard-open #agentChatThread,
body.native-app.keyboard-rail-only.keyboard-rail-active #agentChatThread {
  padding-bottom: calc(var(--kb-vv-inset, 0px) + var(--bottom-rail-height, 96px) + 12px) !important;
  scroll-padding-bottom: calc(var(--kb-vv-inset, 0px) + var(--bottom-rail-height, 96px) + 16px) !important;
}

/* 首页 Picker 智能体分组 */
.home-ego-picker-divider {
  height: 1px;
  background: rgba(0,0,0,0.07);
  margin: 6px 12px;
}
body:not(.theme-light) .home-ego-picker-divider {
  background: rgba(255,255,255,0.08);
}
.home-ego-picker-group-label {
  font-size: 0.72em;
  font-weight: 600;
  color: #94a3b8;
  letter-spacing: 0.06em;
  padding: 4px 14px 2px;
  text-transform: uppercase;
}
.home-ego-agent-opt {
  gap: 10px !important;
}
.home-ego-agent-img {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  object-fit: cover;
  flex: 0 0 auto;
}

/* =============================================================================
 * 顶栏 + 顶栏下固定 Live2D 机器人
 * ============================================================================= */
/* 顶栏固定高度层，不被下方 Live2D 分栏顶上去 */
.page[data-page="home"].active > .home-head-band {
  flex: 0 0 auto !important;
  flex-shrink: 0 !important;
  position: relative !important;
  z-index: 40 !important;
  isolation: isolate;
}

.page[data-page="home"].active .home-head-band {
  position: relative !important;
  z-index: 40 !important;
}

.page[data-page="home"].active .home-topbar {
  align-items: center !important;
  min-height: 44px !important;
  max-height: 52px !important;
}

.page[data-page="home"].active .home-hist-robot-btn {
  align-self: center !important;
  margin-top: 0 !important;
  transform: none !important;
}

.page[data-page="home"].active .home-hist-robot-btn .robot-figure,
.page[data-page="home"].active .home-hist-robot-figure {
  width: 28px !important;
  height: 26px !important;
  min-height: 0 !important;
  max-height: 28px !important;
  flex: 0 0 auto !important;
  display: block !important;
  overflow: visible !important;
}

/* 顶栏下固定 Live2D：--home-robot-top 由 JS 写入（= homeHeadBand 底边） */
.page[data-page="home"].active .home-robot-panel {
  position: fixed !important;
  left: var(--vv-offset-left, 0px) !important;
  top: var(--home-robot-top, 108px) !important;
  transform: translateY(-34px) !important;
  width: min(46vw, 240px) !important;
  max-width: 240px !important;
  height: min(52vh, 420px) !important;
  max-height: min(52vh, 420px) !important;
  min-height: 200px !important;
  margin: 0 !important;
  padding: 0 0 0 4px !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: flex-end !important;
  overflow: hidden !important;
  background: transparent !important;
  z-index: 6 !important;
  pointer-events: none !important;
  transform: none !important;
}

.page[data-page="home"].active .home-robot-panel .robot-figure {
  flex: 1 1 auto !important;
  width: 100% !important;
  height: 100% !important;
  max-height: 100% !important;
  min-height: 0 !important;
  position: relative !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: flex-end !important;
  align-items: center !important;
  overflow: hidden !important;
  background: transparent !important;
}

.page[data-page="home"].active .home-robot-panel .robot-mark {
  width: min(48vw, 168px);
  margin-bottom: 6px;
}

/* 面板整体 pointer-events:none 会继承给 canvas；绘制完成后给机器人画布单独放行，
   使「点击招手」在真机生效（事件冒泡到 pe:none 的容器监听器不受影响）。 */
.page[data-page="home"].active .home-robot-panel .robot-figure.live2d-painted .robot-live2d-canvas,
.page[data-page="home"].active .home-robot-panel .robot-figure.live2d-painted .robot-live2d-canvas-2d {
  pointer-events: auto !important;
}

.page[data-page="home"].active .home-robot-panel .robot-live2d-canvas {
  background: transparent !important;
  display: block;
  width: 100% !important;
  height: 100% !important;
  max-height: 100% !important;
  object-fit: contain !important;
  object-position: bottom center !important;
  filter: none !important;
}

.page[data-page="home"].active .home-robot-panel .robot-live2d-canvas-2d {
  object-fit: contain !important;
  object-position: bottom center !important;
}

/* 原生：PIXI 画布向上 bleed，完整显示天线球/头盔顶（class 由 14-robot-live2d.js 写入） */
body.native-app .page[data-page="home"].active .home-robot-panel.robot-head-bleed-panel {
  overflow: visible !important;
  padding-top: var(--robot-head-bleed, 128px) !important;
  margin-top: calc(-1 * var(--robot-head-bleed, 128px)) !important;
}

body.native-app .page[data-page="home"].active .home-robot-panel.robot-head-bleed-panel .robot-figure.robot-head-bleed-figure {
  overflow: visible !important;
}

body.native-app .page[data-page="home"].active .home-robot-panel .robot-live2d-canvas.robot-head-bleed-canvas,
body.native-app .page[data-page="home"].active .home-robot-panel .robot-live2d-canvas-2d.robot-head-bleed-canvas {
  position: absolute !important;
  left: 0 !important;
  top: calc(-1 * var(--robot-head-bleed, 128px)) !important;
  width: 100% !important;
  height: calc(100% + var(--robot-head-bleed, 128px)) !important;
  max-height: none !important;
  object-fit: contain !important;
  object-position: center center !important;
}

body.home-robot-keyboard-dock .page[data-page="home"].active .home-robot-panel,
#robotHero.is-keyboard-dock {
  pointer-events: none !important;
  overflow: hidden !important;
}

/* JS 状态文案：永不占布局（避免顶栏/对话区下方冒出「正在理解…」等字） */
#robotBubbleText,
#robotCaret {
  display: none !important;
  visibility: hidden !important;
  height: 0 !important;
  overflow: hidden !important;
  margin: 0 !important;
  padding: 0 !important;
  pointer-events: none !important;
}

.page[data-page="home"].active #sceneModule[hidden],
.page[data-page="home"].active #sceneChips[style*="display: none"],
.page[data-page="home"].active #sceneChips:empty {
  display: none !important;
  height: 0 !important;
  min-height: 0 !important;
  overflow: hidden !important;
  padding: 0 !important;
  margin: 0 !important;
}

/* =============================================================================
 * 首页机器人右侧开场白建议
 * ============================================================================= */
body.native-app.keyboard-rail-only.keyboard-open.page-home .home-openers-dock.show {
  display: none !important;
}

body.native-app.keyboard-rail-only.keyboard-open.page-home .home-robot-panel,
body.native-app.keyboard-rail-only.keyboard-open.page-home #homeChatBg {
  top: var(--home-robot-top, 108px) !important;
  left: 0 !important;
}

.home-openers-dock {
  position: fixed;
  top: var(--home-openers-top, calc(var(--home-robot-top, 108px) + 12px));
  left: min(46vw, 240px);
  right: max(10px, env(safe-area-inset-right, 0px));
  height: auto;
  max-height: calc(100vh - var(--home-openers-top, 120px) - var(--bottom-rail-height, 96px) - 16px);
  z-index: 12;
  display: none;
  flex-direction: column;
  align-items: flex-end;
  justify-content: flex-start;
  gap: 12px;
  margin: 0;
  padding: 2px 0;
  pointer-events: none;
}

.home-openers-dock.show { display: flex; }

/* 非首页时强制隐藏（fixed 定位兜底） */
body:not(.page-home) .home-openers-dock { display: none !important; }

.home-opener-chip {
  pointer-events: auto;
  max-width: 100%;
  text-align: left;
  font-size: 13px;
  line-height: 1.42;
  color: #1e3a8a;
  background: rgba(219, 234, 254, 0.92);
  border: 1px solid rgba(96, 165, 250, 0.45);
  border-radius: 14px;
  padding: 8px 12px;
  box-shadow: 0 2px 10px rgba(37, 99, 235, 0.12);
  cursor: pointer;
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  animation: homeOpenerIn 0.28s ease both;
  transition: transform 0.12s ease, opacity 0.12s ease;
}

.home-opener-chip:nth-child(2) { animation-delay: 0.05s; }
.home-opener-chip:nth-child(3) { animation-delay: 0.1s; }
.home-opener-chip:active { transform: scale(0.96); opacity: 0.85; }

@keyframes homeOpenerIn {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: none; }
}

body:not(.theme-light) .home-opener-chip {
  color: #dbeafe;
  background: rgba(37, 71, 128, 0.55);
  border-color: rgba(96, 165, 250, 0.40);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.30);
}

body.theme-light .home-opener-chip {
  color: #1e3a8a;
  background: rgba(219, 234, 254, 0.92);
  border-color: rgba(96, 165, 250, 0.45);
}

/* =============================================================================
 * HOME-USER-BUBBLE-LOCK · 首页用户/助手同宽同边距（与助手行共用 robot-safe-left + 14px 右内边距）
 * 必须放在本文件末尾；覆盖 app.css 的 flex 行 + min(92%,100%) 旧 WebView 失效
 * ============================================================================= */
.page[data-page="home"].active #homeScroll,
.page[data-page="home"].active #chatThread {
  overflow-x: hidden !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}

.page[data-page="home"] .chat-row.user {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  padding-left: var(--home-robot-safe-left, calc(min(23vw, 120px) + 12px)) !important;
  padding-right: 14px !important;
  margin: 0 0 10px 0 !important;
  overflow: hidden !important;
  box-sizing: border-box !important;
}

.page[data-page="home"] .chat-row.user .home-user-bubble-slot {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  overflow: hidden !important;
  box-sizing: border-box !important;
}

.page[data-page="home"] .chat-row.user .chat-bubble-stack {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  align-self: stretch !important;
  flex: 1 1 auto !important;
  max-width: 100% !important;
  width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
  overflow: hidden !important;
}

.page[data-page="home"] .chat-row.user .chat-bubble {
  display: block !important;
  box-sizing: border-box !important;
  max-width: 100% !important;
  width: 100% !important;
  min-width: 0 !important;
  overflow: hidden !important;
  overflow-wrap: break-word !important;
  word-wrap: break-word !important;
  word-break: normal !important;
  white-space: pre-wrap !important;
  hyphens: none !important;
  line-break: auto !important;
  text-align: left !important;
  position: relative !important;
  z-index: 0 !important;
  background-clip: padding-box !important;
  -webkit-background-clip: padding-box !important;
}

.page[data-page="home"] .chat-row.user .msg-icon-row {
  display: flex !important;
  justify-content: flex-end !important;
  align-self: flex-end !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}

/* 20260615c: 智谱式 composer — 首页 / 智能体对话 / 小说工作台 */
body.native-app.page-home #kbBar,
body.native-app.page-agents.agents-chat-focus #kbBar,
body.native-app.create-workbench-pane #kbBar,
body.native-app.page-home #composerExportBtn,
body.native-app.page-agents.agents-chat-focus #composerExportBtn,
body.native-app.page-chat #composerExportBtn,
body.native-app.create-workbench-pane #composerExportBtn {
  display: none !important;
  visibility: hidden !important;
  pointer-events: none !important;
}
body.native-app.page-home:not(.home-composer-send-mode) #composerSend,
body.native-app.page-agents.agents-chat-focus:not(.home-composer-send-mode) #composerSend,
body.native-app.create-workbench-pane:not(.home-composer-send-mode) #composerSend,
body.native-app.page-home:not(.composer.sending) #composerStop,
body.native-app.page-agents.agents-chat-focus:not(.composer.sending) #composerStop,
body.native-app.create-workbench-pane:not(.composer.sending) #composerStop {
  display: none !important;
}
body.native-app.page-home.home-composer-send-mode #composerMic,
body.native-app.page-agents.agents-chat-focus.home-composer-send-mode #composerMic,
body.native-app.create-workbench-pane.home-composer-send-mode #composerMic {
  display: none !important;
}
body.native-app.page-home.home-composer-send-mode #composerSend,
body.native-app.page-agents.agents-chat-focus.home-composer-send-mode #composerSend,
body.native-app.create-workbench-pane.home-composer-send-mode #composerSend {
  display: inline-flex !important;
}
body.native-app.page-home:not(.home-composer-send-mode) #composerMic,
body.native-app.page-agents.agents-chat-focus:not(.home-composer-send-mode) #composerMic,
body.native-app.create-workbench-pane:not(.home-composer-send-mode) #composerMic {
  display: inline-flex !important;
}
body.native-app.page-home .composer.sending #composerStop,
body.native-app.page-agents.agents-chat-focus .composer.sending #composerStop,
body.native-app.create-workbench-pane .composer.sending #composerStop {
  display: inline-flex !important;
}

/* =============================================================================
 * HOME-BUBBLE-GLASS · 首页对话气泡强制超透（压过 app.css 全局玻璃）
 * 只动 background / border / shadow / blur，文字 color 保持各主题原值
 * ============================================================================= */
body.page-home .page[data-page="home"].active #chatThread .chat-row.user .chat-bubble,
body.page-home .page[data-page="home"].active #homeScroll .chat-row.user .chat-bubble,
body.page-home .page[data-page="home"].active .home-chat-col .chat-row.user .chat-bubble {
  background: rgba(37, 99, 235, 0.03) !important;
  border-color: rgba(37, 99, 235, 0.07) !important;
  box-shadow: none !important;
  backdrop-filter: blur(2px) !important;
  -webkit-backdrop-filter: blur(2px) !important;
}

body.page-home .page[data-page="home"].active #chatThread .chat-row.assistant .chat-bubble,
body.page-home .page[data-page="home"].active #homeScroll .chat-row.assistant .chat-bubble,
body.page-home .page[data-page="home"].active .home-chat-col .chat-row.assistant .chat-bubble {
  background: rgba(28, 32, 40, 0.03) !important;
  border-color: rgba(255, 255, 255, 0.06) !important;
  box-shadow: none !important;
  backdrop-filter: blur(2px) !important;
  -webkit-backdrop-filter: blur(2px) !important;
}

body.theme-light.page-home .page[data-page="home"].active #chatThread .chat-row.user .chat-bubble,
body.theme-light.page-home .page[data-page="home"].active #homeScroll .chat-row.user .chat-bubble,
body.theme-light.page-home .page[data-page="home"].active .home-chat-col .chat-row.user .chat-bubble {
  background: rgba(37, 99, 235, 0.03) !important;
  border-color: rgba(37, 99, 235, 0.08) !important;
}

body.theme-light.page-home .page[data-page="home"].active #chatThread .chat-row.assistant .chat-bubble,
body.theme-light.page-home .page[data-page="home"].active #homeScroll .chat-row.assistant .chat-bubble,
body.theme-light.page-home .page[data-page="home"].active .home-chat-col .chat-row.assistant .chat-bubble {
  background: rgba(255, 255, 255, 0.03) !important;
  border-color: rgba(15, 23, 42, 0.06) !important;
}

body.page-home .page[data-page="home"].active .home-chat-col.has-home-chat-bg #chatThread .chat-row.user .chat-bubble,
body.page-home .page[data-page="home"].active .home-chat-col.has-home-chat-bg #chatThread .chat-row.assistant .chat-bubble {
  background: rgba(28, 32, 40, 0.03) !important;
  border-color: rgba(255, 255, 255, 0.06) !important;
}

body.theme-light.page-home .page[data-page="home"].active .home-chat-col.has-home-chat-bg #chatThread .chat-row.user .chat-bubble {
  background: rgba(37, 99, 235, 0.03) !important;
  border-color: rgba(37, 99, 235, 0.08) !important;
}

body.theme-light.page-home .page[data-page="home"].active .home-chat-col.has-home-chat-bg #chatThread .chat-row.assistant .chat-bubble {
  background: rgba(255, 255, 255, 0.03) !important;
  border-color: rgba(15, 23, 42, 0.06) !important;
}
