/* ============================================================================
 * dock-geometry.css  ·  v717  ·  数字人「琍璇」dock 几何唯一权威层
 * ----------------------------------------------------------------------------
 * 为什么存在（审计实证）：
 *   v643 实测 chain_probe —— 单个 .ai-dock-avatar-area 命中 62 条 CSS 规则
 *   （theme 16 / v285-layout 41 / nav-refined 3 / inline 2），历史补丁层层叠加，
 *   同一选择器被重复定义 6 次，末尾 `aspect-ratio:auto!important`、
 *   `flex:1 1 auto!important`、`min-width:280px!important` 互相覆盖：
 *     · desk expanded 宽高比 0.84306（被 flex 挤压 10.95px，应为 0.81612）
 *     · mob expanded area 280px 宽撑破 fab 150px 宽 → 右溢出 137px
 *   → 结论：靠"再加一条规则"永远打不赢层叠战争。
 *   v644 已从 theme/v285-layout/nav-refined 中物理剥离 285 条几何声明，
 *   本文件是 dock 几何的唯一真源，最后加载。
 *
 * 铁律：
 *   1. 素材真值 avatar-portrait.webp = 648×794 → 比例 0.816120（禁止再出现 812/1132）
 *   2. area 宽度跟随 fab 内宽，高度由 aspect-ratio 派生（禁 flex 挤压：flex:0 0 auto）
 *   3. canvas 用 cover + 顶部对齐（object-position:50% 0%）吸收亚像素取整 → 零黑边
 *   4. 任何几何值只允许改本文件；JS 不得写 width/height/aspect-ratio 内联
 *   5. tv-mode / body-mode 由各自专属规则负责，本层不介入
 * ========================================================================= */

:root {
  /* 素材真值比例：648 / 794 */
  --dock-ar: 648 / 794;
}

/* ---------------------------------------------------------------------------
 * 1) collapsed —— 64×64 圆形小头像（保持既有形态）
 * ------------------------------------------------------------------------ */
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed .ai-dock-avatar-area {
  width: 64px !important;
  height: 64px !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: 64px !important;
  max-height: 64px !important;
  aspect-ratio: auto !important;
  flex: 0 0 auto !important;
  border-radius: 50% !important;
  overflow: hidden !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed .ai-avatar-living-canvas {
  width: 100% !important;
  height: 100% !important;
  min-height: 0 !important;
  max-width: 100% !important;
  max-height: 100% !important;
  object-fit: cover !important;
  object-position: 50% 12% !important;
}

/* ---------------------------------------------------------------------------
 * 2) expanded（非全屏 / 非 TV / 非 body）—— 竖版数字人主形态
 *    fab 宽度定档，高度 auto 由内容决定（杜绝 flex 挤压 area）
 * ------------------------------------------------------------------------ */
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded:not(.fullscreen-mode):not(.tv-mode):not(.body-mode) {
  width: 300px !important;
  max-width: 300px !important;
  min-width: 0 !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: 94vh !important;
  overflow: hidden !important;
}

html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded:not(.fullscreen-mode):not(.tv-mode):not(.body-mode) .ai-dock-avatar-area {
  /* 宽度跟随 fab 内宽；高度严格由素材比派生；flex 不可收缩 */
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  aspect-ratio: var(--dock-ar) !important;
  flex: 0 0 auto !important;
  flex-shrink: 0 !important;
  flex-basis: auto !important;
  border-radius: 12px !important;
  overflow: hidden !important;
  position: relative !important;
  margin: 10px auto 0 !important;
}

html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded:not(.fullscreen-mode):not(.tv-mode):not(.body-mode) .ai-avatar-living-canvas {
  position: static !important;
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: 100% !important;
  max-height: 100% !important;
  /* cover + 顶对齐：吸收 aspect-ratio 亚像素取整，杜绝上下黑边 */
  object-fit: cover !important;
  object-position: 50% 0% !important;
}

/* 笔记本 / 窄桌面 768–1319px：略收窄，保持竖版比例 */
@media (min-width: 768px) and (max-width: 1319px) {
  html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded:not(.fullscreen-mode):not(.tv-mode):not(.body-mode) {
    width: 268px !important;
    max-width: 268px !important;
  }
}

/* 移动端 ≤767px：宽度按视口比例，防止 area 撑破 fab（v643 实测右溢出 137px） */
@media (max-width: 767px) {
  html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded:not(.fullscreen-mode):not(.tv-mode):not(.body-mode) {
    width: min(260px, 84vw) !important;
    max-width: min(260px, 84vw) !important;
    max-height: 88vh !important;
  }
  html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded:not(.fullscreen-mode):not(.tv-mode):not(.body-mode) .ai-dock-avatar-area {
    margin: 8px auto 0 !important;
    border-radius: 10px !important;
  }
}

/* ---------------------------------------------------------------------------
 * 3) fullscreen —— 居中最大化竖版，比例锁定，零黑边
 *    高度以视口为基准，宽度由比例派生；窄屏由 max-width 反向约束高度
 * ------------------------------------------------------------------------ */
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-dock-avatar-area {
  /* 宽度双约束取小：既不超过 94vw，高度也不超过 84vh（84vh×0.81612=推导宽度上限）；
     高度由 aspect-ratio 从宽度派生 → 桌面/移动全比例零失真 */
  width: min(94vw, calc(84vh * 0.81612)) !important;
  min-width: 0 !important;
  max-width: 94vw !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: 84vh !important;
  aspect-ratio: var(--dock-ar) !important;
  flex: 0 0 auto !important;
  flex-shrink: 0 !important;
  border-radius: 14px !important;
  overflow: hidden !important;
  position: relative !important;
  margin: 0 auto !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-avatar-living-canvas {
  position: static !important;
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  min-height: 0 !important;
  max-width: 100% !important;
  max-height: 100% !important;
  object-fit: cover !important;
  object-position: 50% 0% !important;
}
@media (max-width: 767px) {
  html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-dock-avatar-area {
    width: min(96vw, calc(84vh * 0.81612)) !important;
    max-width: 96vw !important;
    height: auto !important;
    max-height: 84vh !important;
  }
}

/* ===========================================================================
 * AUTHORITATIVE fullscreen-mode (v685) — 沉浸式全屏 · 零黑边
 * 覆盖 theme.css:1418/1421/1437/1445 与 nav-refined.css:748/981/1755 的冲突：
 *   - fab 强制铺满 100vw x 100vh（此前仅 550x674 浮动盒 → 大片深底黑边）
 *   - ::before 用 avatar-portrait.webp 做模糊铺底（整屏满是头像，根除黑边空隙）
 *   - .ai-dock-avatar-area 居中显示清晰竖版（AR 一致 → object-fit 不裁切）
 * ======================================================================== */
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode {
  position: fixed !important;
  inset: 0 !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important;
  width: 100vw !important; height: 100vh !important;
  /* #1461 根治移动端 fullscreen 16px 黑边：内联 @media(max-width:640px)
     `#ai-avatar-fab:not(.dock-expanded){max-width:calc(100vw-16px)}` 在全屏态
     （无 dock-expanded 类）把 dock 压到 374(=390-16)。本权威层以更高特异性
     + 双 !important 强制 max-width:100vw，使全屏真铺满视口，零黑边。 */
  max-width: 100vw !important; max-height: 100vh !important;
  display: flex !important; align-items: center !important; justify-content: center !important;
  background: #0a0f1c !important;  /* v692 不透明品牌深底：杜绝透出页面=真黑边空隙 */
  z-index: 99999 !important; overflow: hidden !important;
  border-radius: 0 !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode::before {
  content: "" !important;
  position: absolute !important; inset: 0 !important;
  width: 100% !important; height: 100% !important; z-index: 0 !important;
  background-color: #0a0f1c !important;  /* v692 图片失败兜底：绝不留黑空洞 */
  background-image: url(/static/img/avatar-portrait.webp?v=v777) !important;
  background-size: cover !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
  transform: scale(1.18) !important;  /* v728 放大覆盖模糊暗角，无缝铺满根除黑边 */
  transform-origin: center center !important;
  filter: blur(52px) brightness(0.38) !important;  /* v728 重度模糊+压暗：根除浅色脸/白衣放大白色块 */
  pointer-events: none !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-dock-avatar-area {
  position: relative !important; transform: none !important; z-index: 5 !important;
  width: min(96vw, calc(94vh * 0.81612)) !important;
  min-width: 0 !important; max-width: 96vw !important;
  height: auto !important; min-height: 0 !important; max-height: 94vh !important;
  aspect-ratio: var(--dock-ar) !important;
  flex: 0 0 auto !important; flex-shrink: 0 !important;
  border-radius: 18px !important; overflow: hidden !important;
  box-shadow: none !important;
  margin: 0 auto !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-avatar-living-canvas {
  position: static !important; display: block !important;
  width: 100% !important; height: 100% !important;
  min-height: 0 !important; max-width: 100% !important; max-height: 100% !important;
  object-fit: cover !important; object-position: 50% 0% !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-avatar-fs-bg {
  z-index: 1 !important;
}
@media (max-width: 767px) {
  html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-dock-avatar-area {
    width: min(98vw, calc(94vh * 0.81612)) !important;
    max-width: 98vw !important; max-height: 94vh !important;
  }
}

/* ========================================================================
 * v689 hotfix —— 根治数字人椭圆/黑角遮挡（#1299）
 * .ai-avatar-img-base / .ai-avatar-living-canvas 携带内联 border-radius:50%
 * （非 important）。在竖版 area（高>宽，如 601×736）下被裁成竖直椭圆，
 * 四角落在椭圆之外 → 透出父级背景 = 纯黑角 = 用户所见「数字人被遮挡/被切」。
 * 统一重置为 0，由父级 .ai-dock-avatar-area 的 overflow:hidden + 自身
 * border-radius 负责裁剪：
 *   - collapsed(64×64): 父级 50% → 干净圆形头像（保持既有形态）
 *   - expanded/fullscreen: 父级 12px/18px → 圆角矩形头像填满，零黑角
 * ====================================================================== */
html body #ai-avatar-fab.fab-ai.ai-dock .ai-dock-avatar-area .ai-avatar-img-base,
html body #ai-avatar-fab.fab-ai.ai-dock .ai-dock-avatar-area .ai-avatar-living-canvas {
  border-radius: 0 !important;
}

/* ========================================================================
 * v689 hotfix —— fs-mini（退出/进入全屏按钮）原无 CSS 定位规则，被 flex 流
 * 推到人脸正中心遮挡头像。固定到右上角（expanded + fullscreen 两态），
 * z-index 高于头像层，绝不压脸。collapsed 态不作用（保持既有行为）。
 * ====================================================================== */
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded .ai-avatar-fs-mini,
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-avatar-fs-mini {
  position: absolute !important;
  top: 10px !important;
  right: 10px !important;
  z-index: 30 !important;
}

/* v693 hotfix —— #1309 根治：fullscreen-mode 态强制显示 fs-mini 退出按钮
 * 根因：进入全屏时 state=dock-expanded fullscreen-mode，theme.css 的
 *   #ai-avatar-fab.fab-ai.dock-expanded .ai-avatar-fs-mini{display:none}
 * 把退出按钮藏掉 -> 全屏后"回不去只能强制刷新"。
 * 本规则 !important 压过 theme.css，且仅作用于 fullscreen-mode，
 * 不影响 expanded（非全屏）态既有的隐藏行为。 */
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-avatar-fs-mini {
  display: flex !important;
  z-index: 100000 !important;
  pointer-events: auto !important;
}

/* ============================================================================
 * v707 · #1409 扁平化：数字人 dock 冗余层收敛（禁欲极简 · 纯色/细线/大留白）
 * 实证：ai-avatar-v285.js 的 innerHTML 原叠 3 层装饰 div
 *   .ai-dock-bg（暗色表面，功能性，保留）/ .ai-dock-glow（无 CSS，死层）/
 *   .ai-dock-ambient（无 CSS，死层）。JS 还残留 _shadowKiller 运行时去阴影 hack。
 * 修复：① 前端已移除 glow/ambient 死层 DOM；② 本层作为权威兜底，
 *   根除任何残留 glow/阴影/边框，.ai-dock-bg 改为纯色深底、无边框无阴影。
 * ======================================================================== */
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded .ai-dock-bg {
  background: #0a0f1c !important;       /* 品牌深底，纯色无渐变 */
  border: none !important;              /* 去掉 1px 细线，扁平化 */
  box-shadow: none !important;
  -webkit-box-shadow: none !important;
}
/* 冗余 dead 层兜底（前端已移除，此处防御性压制） */
html body #ai-avatar-fab.fab-ai.ai-dock .ai-dock-glow,
html body #ai-avatar-fab.fab-ai.ai-dock .ai-dock-ambient {
  display: none !important;
}
/* 全 dock 子树根除任何阴影/光晕/模糊残留（替代 JS _shadowKiller hack） */
html body #ai-avatar-fab.fab-ai.ai-dock .ai-avatar-panel,
html body #ai-avatar-fab.fab-ai.ai-dock .ai-avatar-bubble,
html body #ai-avatar-fab.fab-ai.ai-dock .ai-avatar-tooltip,
html body #ai-avatar-fab.fab-ai.ai-dock .ai-avatar-btn {
  box-shadow: none !important;
  -webkit-box-shadow: none !important;
  filter: none !important;
  -webkit-filter: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
/* v754 · #1569 根除 expanded 数字人对话气泡品牌蓝边（nav-refined.css:1369 残留
 *   border:1px solid rgba(79,141,247,.28)）——与 v708/v750 头像区蓝边同属品牌蓝，
 *   违反禁欲极简 + 老板「强烈拒绝品牌蓝边」。此处彻底清零，气泡改为中性无边框。 */
html body #ai-avatar-fab.fab-ai.ai-dock .ai-avatar-bubble,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded .ai-avatar-bubble {
  border: none !important;
  outline: none !important;
  box-shadow: none !important;
  -webkit-box-shadow: none !important;
}

/* ============================================================================
 * v708 · #1417 紧急 hotfix：彻底拔除数字人 area 蓝卡污染与黑边空隙
 * 根因（程序化审计实证）：nav-refined.css 多处给 .ai-dock-avatar-area 加
 *   background:#0c1220 / rgba(12,18,32,0.72) + border:rgba(79,141,247,0.3-0.6)，
 *   形成「照片嵌在蓝边卡片里」的廉价相框感，违反禁欲极简。
 * 修复：
 *   ① area 全态（collapsed/expanded/fullscreen/body-mode）背景透明、边框清零
 *   ② 伪元素 ::before/::after 蓝线/暗层兜底清零
 *   ③ .ai-dock-toggle 去蓝边、透明底
 *   ④ fullscreen 区域放大到 96vh/96vw，canvas 微放大 1.08 减少照片背景场景露出
 *   v709 补刀：fullscreen-mode .ai-dock-toggle 蓝边（nav-refined.css:992 用
 *   1id/4class 特异性带 !important 压过 v708 通用 toggle 规则）→ 补 1id/4class/2elem
 *   全态透明无蓝边规则，并灭活 :993 红色 hover 残留。
 * ========================================================================= */
html body #ai-avatar-fab.fab-ai.ai-dock .ai-dock-avatar-area,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed .ai-dock-avatar-area,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded .ai-dock-avatar-area,
html body #ai-avatar-fab.fab-ai.ai-dock.body-mode .ai-dock-avatar-area,
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-dock-avatar-area {
  background: transparent !important;
  border: none !important;
  border-top: none !important;
  border-right: none !important;
  border-bottom: none !important;
  border-left: none !important;
  box-shadow: none !important;
  -webkit-box-shadow: none !important;
}

html body #ai-avatar-fab.fab-ai.ai-dock .ai-dock-avatar-area::before,
html body #ai-avatar-fab.fab-ai.ai-dock .ai-dock-avatar-area::after,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed .ai-dock-avatar-area::before,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed .ai-dock-avatar-area::after,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded .ai-dock-avatar-area::before,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded .ai-dock-avatar-area::after,
html body #ai-avatar-fab.fab-ai.ai-dock.body-mode .ai-dock-avatar-area::before,
html body #ai-avatar-fab.fab-ai.ai-dock.body-mode .ai-dock-avatar-area::after,
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-dock-avatar-area::before,
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-dock-avatar-area::after {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  -webkit-box-shadow: none !important;
  opacity: 0 !important;
}

html body #ai-avatar-fab.fab-ai.ai-dock .ai-dock-toggle {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  -webkit-box-shadow: none !important;
}

/* fullscreen 态 toggle 蓝边专项根治：
 * nav-refined.css:992 用 `#id.class.class.class .class`（1 id / 4 class / 0 elem）
 * 带 !important 压过上条规则；本规则补 .fullscreen-mode 使特异性
 * = 1 id / 4 class / 2 elem（> 992 的 0 elem），同 !important 下严格胜出。
 * 同时灭活 :993 的红色 hover 蓝/红边残留。 */
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-dock-toggle {
  background: transparent !important;
  border: none !important;
  border-top: none !important;
  border-right: none !important;
  border-bottom: none !important;
  border-left: none !important;
  box-shadow: none !important;
  -webkit-box-shadow: none !important;
  color: var(--text-secondary, #8a93a6) !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-dock-toggle:hover {
  background: transparent !important;
  border: none !important;
  border-top: none !important;
  border-right: none !important;
  border-bottom: none !important;
  border-left: none !important;
}

html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-dock-avatar-area {
  width: min(96vw, calc(96vh * 0.81612)) !important;
  max-width: 96vw !important;
  max-height: 96vh !important;
}

/* v730 · 撤销 v717 scale(1.5) 过度放大：area 已 100vw×100vh 满铺，
   改由 object-fit:cover 顶对齐裁切肖像，零 letterbox（不裁控件）。 */
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-avatar-living-canvas,
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-avatar-img-base {
  object-fit: cover !important;
  object-position: 50% 0% !important;
  transform: none !important;
}

@media (max-width: 767px) {
  html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-dock-avatar-area {
    width: min(98vw, calc(96vh * 0.81612)) !important;
    max-width: 98vw !important;
    max-height: 96vh !important;
  }
}

/* ============================================================================
 * v710 · #1417 收尾：全屏 dock 系统性蓝卡污染根治
 * 程序化审计（grep nav-refined.css fullscreen-mode 子树）实证，全屏态数字人
 * 被整体染成冷蓝「卡片」：
 *   · :748 / :981  `.ai-dock.fullscreen-mode{background:#0e1422!important}`
 *       整块 fab 是蓝调深底（R14/G20/B34，B 明显> R）→ 廉价蓝卡感
 *   · :986  `.ai-dock-info{border:1px solid rgba(90,140,255,.18)!important}`
 *   · :1001 `.ai-dock [class*=input]{border:1px solid rgba(90,140,255,.3)!important}`
 *   · :992  toggle 蓝边（v709 已根治）
 * 修复（仅改色相，不动布局/定位/层级，落实禁欲极简·纯色细线）：
 *   ① fab 全屏底 → 中性深底 #0b0e14（rgb 11/14/20，B≈R，去蓝调）
 *   ② info / input 边框 → 中性细线 rgba(255,255,255,.10~.14)（去蓝）
 * 特异性：nav-refined 上述规则为 1id/4~5class；本层补 html body 前缀
 *   = 1id/4~5class/2elem，同 !important 下严格胜出。
 * ========================================================================= */
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode {
  background: #0b0e14 !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-dock-info {
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode [class*="input"] {
  border: 1px solid rgba(255, 255, 255, 0.14) !important;
}
@media (max-width: 767px) {
  html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode {
    background: #0b0e14 !important;
  }
}

/* ============================================================================
 * v711 · #1417 悬浮模式（老板拍板）：全屏 dock 实心底→透明
 * 老板选「头像直接悬浮于页面之上」的沉浸感版本。落实：
 *   ① fab 全屏底 → transparent（页面内容穿透到照片四周，去一切卡片感）
 *   ② .ai-dock-info → 透明底 + 去边框 + 轻 text-shadow 保可读性
 *   ③ .ai-avatar-panel → 透明底 + 去边框（9 按钮直接浮于页面）
 * 注：.ai-avatar-btn 全屏态本就 background:transparent + 中性细线，无需改；
 *     [class*=input] 保留 v710 中性细线（聊天输入仍需可见可点）。
 * 特异性同 v710（1id/4~5class/2elem），本块靠文件顺序后置胜出。
 * ========================================================================= */
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode {
  background: transparent !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-dock-info {
  background: transparent !important;
  border: none !important;
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.6) !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-avatar-panel {
  background: transparent !important;
  border: none !important;
}
@media (max-width: 767px) {
  html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode {
    background: transparent !important;
  }
}

/* ============================================================================
 * v712 · #1418 全屏悬浮布局根治：文字脱离眼睛 + 去层层叠叠卡片
 * 程序化审计（probe_fullscreen_now.py 真全屏态 dump）实证根因：
 *   ① nav-refined.css:981 全屏 `flex-direction:row` + info/tooltip/bubble
 *      `position:absolute` 居中 → y≈377px 直接压在数字人眼睛上；
 *   ② .ai-avatar-tooltip 带半透深底卡片（rgb(16,21,31) + 细边），
 *      .ai-avatar-bubble 带蓝边 `rgba(79,141,247,.28)`（nav-refined 残留）
 *      → 卡片层层叠叠；
 *   ③ 头像区 96vh 过大，无悬浮呼吸感。
 * 修复（落实禁欲极简·纯色细线·无渐变无阴影）：
 *   a) 头像区按比例缩小为「悬浮」：max-height 74vh / 宽 min(74vh*0.81612,84vw)
 *      （移动端 78vh / 90vw），四周留白 = 真正浮于页面之上；
 *   b) .ai-dock-info / .ai-avatar-bubble 改 position:fixed 锚定底部居中
 *      （info bottom:30px / bubble bottom:80px，错层不重叠），彻底脱离眼睛区；
 *   c) 灭活全屏 .ai-avatar-tooltip（info 已承载身份，避免双卡叠眼）；
 *   d) bubble 去蓝边 → 中性细线 rgba(255,255,255,.14)，背景透明；
 *   e) info 透明底 + 轻 text-shadow 保可读性（保留 v711 设定）。
 * 特异性：延续 html body #id.3class .target = 1id/4class/2elem，
 *   严格压过 nav-refined 的 1id/3~4class 规则（同 !important 下胜出）。
 * ========================================================================= */
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-dock-avatar-area {
  /* v730 · 彻底消除 letterbox：area 释放 AR 约束，满铺 100vw×100vh，
     由 canvas/img-base 的 object-fit:cover 顶对齐裁切肖像（仅裁肖像，
     不裁 info/bubble/fs-mini —— 三者为 area 兄弟节点，不在 area 内） */
  width: 100vw !important;
  height: 100vh !important;
  max-width: 100vw !important;
  max-height: 100vh !important;
  aspect-ratio: auto !important;
}
@media (max-width: 767px) {
  html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-dock-avatar-area {
    /* v730 · 移动端同样满铺，cover 裁切 */
    width: 100vw !important;
    height: 100vh !important;
    max-width: 100vw !important;
    max-height: 100vh !important;
    aspect-ratio: auto !important;
  }
}

/* 文字/气泡移到底部居中，彻底脱离眼睛区域，消除层层叠叠 */
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-dock-info {
  position: fixed !important;
  top: auto !important;
  left: 50% !important;
  right: auto !important;
  bottom: 30px !important;
  transform: translateX(-50%) !important;
  background: transparent !important;
  border: none !important;
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.6) !important;
  z-index: 6 !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-avatar-bubble {
  position: fixed !important;
  top: auto !important;
  left: 50% !important;
  right: auto !important;
  bottom: 80px !important;
  transform: translateX(-50%) !important;
  background: transparent !important;
  border: 1px solid rgba(255, 255, 255, 0.14) !important;
  box-shadow: none !important;
  -webkit-box-shadow: none !important;
  z-index: 7 !important;
}
/* 灭活全屏 tooltip：info 已承载身份，避免第二张卡片叠在脸上 */
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-avatar-tooltip {
  display: none !important;
}

/* ============================================================================
 * v714 · #1419 根治全屏「底部白色块」+ 恢复悬浮深蓝实底
 *   —— v728 已重写：白色块改由 v685 ::before 的 blur+brightness 根除，
 *      铺底恢复 → 同时消除黑边空隙（#1481）。本段仅保留 fab 双保险。
 * 程序化像素审计（probe_hide2.py 截图 + PIL 量化）实锤根因：
 *   - 灭活 ::before（background-image:none）后，白区从 3649px 骤降为
 *     全视口透出白页 → 证明白色来自 ::before 的 avatar-portrait.webp 铺底；
 *   - avatar-portrait.webp 为不透明 RGB 角色图（无 alpha），角色脸/肤色/白衣
 *     为浅色（(210,186,167)/(239,239,239)），background-size:cover 放大后
 *     在底部形成「白色块」= 用户 image#2 所见；
 *   - 隐藏 canvas/video/img 均不能消除白区 → 白源确定在 ::before 铺底层。
 * 修复（禁欲极简·纯色·无渐变无阴影，对准 --brand-deep:#0a0f1c）：
 *   a) ::before 改为纯深蓝实底（background-image:none + #0a0f1c），
 *      彻底根除角色浅色脸/白衣放大形成的白色块；
 *   b) 恢复 fab 自身不透明深蓝底（v712 误改 transparent 会让背后白页透出），
 *      与 ::before 构成双保险：任一渲染失败都仍是深蓝，绝无黑边/透白；
 *   c) 头像区维持 v712 悬浮比例（74vh / 移动 78vh），浮于干净深蓝之上。
 * 特异性：同 v685/v712（1id/4class/2elem），靠文件顺序后置胜出。
 * ========================================================================= */
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode {
  background: #0a0f1c !important;   /* 双保险：fab 自身不透明深蓝，杜绝透白页 */
}
/* v728 撤销 v714 的「移除铺底」：白色块改由 v685 ::before 的
   filter:blur(52px) brightness(0.38) 根除，铺底恢复 → 黑边空隙彻底消除。
   此处不再清除 backdrop，仅保留上行 fab 自身深蓝双保险。 */

/* ============================================================================
 * v716 · #1420 消除全屏数字人重复 chips
 * 根因：ai-avatar-v285.js 在全屏态仍会插入硬编码 .ai-avatar-quick-chips
 * （今天看什么板块？/帮我选 3 只票/大盘怎么样？），与 chat 面板内由
 * lx-paper-nl.js 注入的模型驱动 .lx-nl-suggest 条同时出现，造成两行重复
 * chips 叠在头像下方。
 * 修复：在 fullscreen-mode 下隐藏 .ai-avatar-quick-chips；展开态 dock
 * （非全屏）保留 native chips，避免误伤正常交互。
 * 特异性：1id/4class/2elem，维持 dock-geometry 权威层。
 * ========================================================================= */
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-avatar-quick-chips {
  display: none !important;
}

/* ============================================================================
 * v727 · #1474 根治 dock collapsed 态加载闪烁
 * 根因：collapsed 态 dock 及子元素上的 CSS animation/transition 在加载/状态
 *    enforcement 期间造成离散像素跳变；且与用户「禁欲极简」美学冲突。
 * 修复：
 *   a) collapsed 态 dock 自身及所有子元素强制 animation:none；
 *   b) 同时禁用 transition，避免 hover/状态切换时的微动效；
 *   c) 保留展开态/全屏态必要动效由各自规则负责。
 * ========================================================================= */
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed * {
  animation: none !important;
  transition: none !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed::before,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed::after,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed *::before,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed *::after {
  animation: none !important;
  transition: none !important;
}

/* ============================================================================
 * v733 · #1506 根治全屏数字人「偏左 + 右侧暗带」= 头像未顶满容器
 * 程序化审计实锤根因（probe_fs_detail.py 真全屏态 dump）：
 *   theme.css:1373 全屏 fab → display:grid!important; place-items:center；
 *   theme.css:1374/1382 全屏 .ai-dock-avatar-area →
 *     position:absolute!important; transform:translate(-50%,-50%)!important
 *   —— 旧「absolute + translate(-50%,-50%)」居中技巧，但【缺 left/top:50%】，
 *      在 grid 居中容器内再叠加一次 -50% 位移 → 头像被推到视口左上角
 *      (bbox x=-195..195：左半屏在屏外、右半屏露深蓝底 rgb(14,20,34)
 *      = 老板截图所见「右侧暗带 / 未顶满容器」)。
 *   且 theme 用 `.dock-expanded.fullscreen-mode`(5 class) 选择器，特异性 (1,5,0)
 *   压过本层既有 `.fullscreen-mode`(4 class → 1,4,2) 规则 → 旧 transform:none 失效。
 * 修复（禁欲极简·纯色·无渐变无阴影，零布局破坏）：
 *   ① fab 全屏 → display:flex + 居中（灭活 theme grid + place-items）
 *   ② .ai-dock-avatar-area 全屏 → position:relative!important; transform:none!important
 *      （灭活 theme absolute+translate，回归弹性/网格居中，头像满铺零位移）
 *   ③ 选择器补 .dock-expanded 使特异性 (1,5,2) 严格压过 theme (1,5,0)
 * ========================================================================= */
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded.fullscreen-mode,
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded.fullscreen-mode .ai-dock-avatar-area,
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode .ai-dock-avatar-area {
  position: relative !important;
  transform: none !important;
  width: 100vw !important;
  height: 100vh !important;
  max-width: 100vw !important;
  max-height: 100vh !important;
  aspect-ratio: auto !important;
  margin: 0 auto !important;
}

/* ============================================================================
 * v755 · #1608 根治「外框差 + 遮盖」双缺陷（老板硬指令：无遮盖 / 完美 / 外框不差）
 * ----------------------------------------------------------------------------
 * 审计实证（verify_real2.py 双端真实点击流 + probe_svg.py）：
 *
 *  A) 外框差根因
 *     theme.css:1039/#1040 给 #ai-avatar-fab 写
 *       border:1px solid var(--line-default)  =  rgba(168,182,201,.08)  （廉价灰框）
 *     panel / btn / bg 同款灰边。本层以更高特异性 + !important 清零 →
 *     纯禁欲极简 · 无框浮窗（尊重「强烈拒绝品牌蓝边」纪律，绝不加蓝线）。
 *
 *  B) 遮盖根因（琍璇脸被按钮盖住）
 *     collapsed 态 .ai-avatar-fs-mini（全屏按钮）默认 position:absolute 无偏移，
 *     落在头像面部中央（probe_svg.py 实锤 topEl = svg → BUTTON.ai-avatar-fs-mini，
 *     overFaceCenter=True，面积 25×25 压在 64×64 头像脸上）。
 *     collapsed 整颗 mini 即全屏触发器（点击→fullscreen），fs-mini 冗余且挡脸 →
 *     直接 display:none；expanded / fullscreen 保持可见（顶部右上角）。
 *
 *  安全网：expanded 强制视口内尺寸上限，杜绝任何路径下溢出（双端 E2E 实证已 clamp，
 *  此处作防御性兜底，不影响拖动：仅约束尺寸不约束定位）。
 * ========================================================================= */
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded:not(.fullscreen-mode):not(.tv-mode):not(.body-mode) {
  border: none !important;
  box-shadow: none !important;
  background: transparent !important;
}
/* collapsed 态：隐藏挡脸的全屏按钮（整颗 mini 已是目前全屏触发器） */
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed .ai-avatar-fs-mini {
  display: none !important;
}
/* 子元素廉价灰边清零（panel / btn / bg），保持禁欲极简无框。
 * 关键根因：v285-layout.css 在 @media (min-width:769px) 用
 *   ...:not(.fullscreen-mode):not(.tv-mode):not(.body-mode) .ai-avatar-panel {border-top:1px solid rgba(255,255,255,.06)!important}
 *   （特异性 (1,7,2) / 带 :not(.user-moved) 时 (1,8,2)），且带 !important。
 * 普通覆盖选择器 (.dock-expanded .ai-avatar-panel = (1,6,2)) 压不过 → 桌面端残留廉价边框。
 * 修复：用两个永不命中的 :not(.lxclean755):not(.lxclean755b) 把特异性抬到 (1,9,2)，
 * 无论 dock-geometry.css 与 v285-layout.css 的加载先后都稳赢；并置于同款媒体查询内精确匹配。 */
@media (min-width: 769px) {
  html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded:not(.fullscreen-mode):not(.tv-mode):not(.body-mode):not(.lxclean755):not(.lxclean755b) .ai-avatar-panel,
  html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded:not(.fullscreen-mode):not(.tv-mode):not(.body-mode):not(.user-moved):not(.lxclean755):not(.lxclean755b) .ai-avatar-panel {
    border-top: none !important;
    border-right: none !important;
    border-bottom: none !important;
    border-left: none !important;
    border: none !important;
    box-shadow: none !important;
  }
}
/* 全宽度兜底：collapsed/expanded 任意态 panel 一律无框（覆盖非媒体查询路径下的廉价灰边） */
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed .ai-avatar-panel,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded .ai-avatar-panel,
html body #ai-avatar-fab.fab-ai.ai-dock .ai-avatar-panel {
  border: none !important;
  border-top: none !important;
  border-right: none !important;
  border-bottom: none !important;
  border-left: none !important;
  box-shadow: none !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock .ai-avatar-btn {
  border: none !important;
  box-shadow: none !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock .ai-dock-bg {
  border: none !important;
  box-shadow: none !important;
}
/* 头像区域与头像载体：彻底清除任何边框/阴影/内发光/伪元素遮罩（v763 提升特异性至 (1,5,2)，压过 nav-refined 全部 collapsed/expanded 蓝边规则 (1,4,0)/(1,4,1)） */
html body #ai-avatar-fab.fab-ai.ai-dock:not(.lxclr755):not(.lxclr755b) .ai-dock-avatar-area,
html body #ai-avatar-fab.fab-ai.ai-dock:not(.lxclr755):not(.lxclr755b) .ai-avatar-img-base,
html body #ai-avatar-fab.fab-ai.ai-dock:not(.lxclr755):not(.lxclr755b) .ai-avatar-living-canvas,
html body #ai-avatar-fab.fab-ai.ai-dock:not(.lxclr755):not(.lxclr755b) .ai-avatar-canvas,
html body #ai-avatar-fab.fab-ai.ai-dock:not(.lxclr755):not(.lxclr755b) .ai-avatar-video,
html body #ai-avatar-fab.fab-ai.ai-dock:not(.lxclr755):not(.lxclr755b) .ai-avatar-face,
html body #ai-avatar-fab.fab-ai.ai-dock:not(.lxclr755):not(.lxclr755b) .badge {
  border: none !important;
  box-shadow: none !important;
  outline: none !important;
  text-shadow: none !important;
  -webkit-box-shadow: none !important;
}
/* 头像区/头像载体背景清零（根除 collapsed/expanded 深蓝底 rgba(12,18,32,…)） */
html body #ai-avatar-fab.fab-ai.ai-dock:not(.lxclr755):not(.lxclr755b) .ai-dock-avatar-area,
html body #ai-avatar-fab.fab-ai.ai-dock:not(.lxclr755):not(.lxclr755b) .ai-avatar-img-base {
  background: transparent !important;
}
/* 清除伪元素遮罩/渐变（常见“左脸暗影”来源） */
html body #ai-avatar-fab.fab-ai.ai-dock .ai-dock-avatar-area::before,
html body #ai-avatar-fab.fab-ai.ai-dock .ai-dock-avatar-area::after,
html body #ai-avatar-fab.fab-ai.ai-dock .ai-avatar-img-base::before,
html body #ai-avatar-fab.fab-ai.ai-dock .ai-avatar-img-base::after,
html body #ai-avatar-fab.fab-ai.ai-dock .ai-avatar-living-canvas::before,
html body #ai-avatar-fab.fab-ai.ai-dock .ai-avatar-living-canvas::after {
  content: none !important;
  display: none !important;
  background: none !important;
  box-shadow: none !important;
}
/* expanded 视口内尺寸安全网（防御性；不影响拖动定位） */
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded:not(.fullscreen-mode):not(.tv-mode):not(.body-mode) {
  max-width: calc(100vw - 24px) !important;
  max-height: calc(100vh - 24px) !important;
}

/* ============================================================================
 * v763 · #1619 根除数字人 area 品牌蓝边+深蓝背景 —— 覆盖 collapsed/expanded/body/fullscreen 全态
 * 根因补全：nav-refined.css 在 collapsed(173/1326/1355/1828) 与 expanded/body/fullscreen(1832-1840)
 * 均给 .ai-dock-avatar-area 设 border:1-2px solid rgba(79,141,247,…) + 深蓝底 rgba(12,18,32,…)。
 * 上版 v762 仅覆盖 expanded/body/fullscreen，漏 collapsed，且全局规则特异性 (1,3,2) 输给
 * collapsed 规则 (1,4,0) → 蓝框残留（截图实锤）。
 * 本版：特异性抬到 (1,7,2)，同 !important 严格压过 nav-refined 全部蓝边规则；全态清零蓝框+蓝底。
 * ========================================================================= */
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed:not(.lxclr755):not(.lxclr755b) .ai-dock-avatar-area,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed:not(.lxclr755):not(.lxclr755b) .ai-avatar-img-base,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded:not(.lxclr755):not(.lxclr755b) .ai-dock-avatar-area,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded:not(.lxclr755):not(.lxclr755b) .ai-avatar-area,
html body #ai-avatar-fab.fab-ai.ai-dock.body-mode:not(.lxclr755):not(.lxclr755b) .ai-dock-avatar-area,
html body #ai-avatar-fab.fab-ai.ai-dock.body-mode:not(.lxclr755):not(.lxclr755b) .ai-avatar-area,
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode:not(.lxclr755):not(.lxclr755b) .ai-dock-avatar-area,
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode:not(.lxclr755):not(.lxclr755b) .ai-avatar-area {
  background: transparent !important;
  border: none !important;
  border-top: none !important;
  border-right: none !important;
  border-bottom: none !important;
  border-left: none !important;
  box-shadow: none !important;
  -webkit-box-shadow: none !important;
}

/* ============================================================================
 * v764 · #1620 根除数字人 dock 背后深蓝卡片 + 按钮蓝边
 * 真因：v763 只清 .ai-dock-avatar-area，但 theme.css 给 .ai-dock-bg 设 background:#0e1422、
 * .ai-avatar 设 background:rgb(14,20,34)、.ai-avatar-panel 设背景，整体形成深蓝卡片框；
 * .ai-avatar-btn 有 border:1px solid rgba(96,220,255,.35) 青蓝边。
 * 修复：全态清零 .ai-dock-bg / .ai-avatar / .ai-avatar-panel / .ai-avatar-btn 的背景与边框。
 * ========================================================================= */
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed:not(.lxclr755):not(.lxclr755b) .ai-dock-bg,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded:not(.lxclr755):not(.lxclr755b) .ai-dock-bg,
html body #ai-avatar-fab.fab-ai.ai-dock.body-mode:not(.lxclr755):not(.lxclr755b) .ai-dock-bg,
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode:not(.lxclr755):not(.lxclr755b) .ai-dock-bg {
  background: transparent !important;
  background-image: none !important;
  border: none !important;
  box-shadow: none !important;
  -webkit-box-shadow: none !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed:not(.lxclr755):not(.lxclr755b) .ai-avatar,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded:not(.lxclr755):not(.lxclr755b) .ai-avatar,
html body #ai-avatar-fab.fab-ai.ai-dock.body-mode:not(.lxclr755):not(.lxclr755b) .ai-avatar,
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode:not(.lxclr755):not(.lxclr755b) .ai-avatar {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  -webkit-box-shadow: none !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed:not(.lxclr755):not(.lxclr755b) .ai-avatar-panel,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded:not(.lxclr755):not(.lxclr755b) .ai-avatar-panel,
html body #ai-avatar-fab.fab-ai.ai-dock.body-mode:not(.lxclr755):not(.lxclr755b) .ai-avatar-panel,
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode:not(.lxclr755):not(.lxclr755b) .ai-avatar-panel {
  background: transparent !important;
  border: none !important;
  border-top: none !important;
  box-shadow: none !important;
  -webkit-box-shadow: none !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock.dock-collapsed:not(.lxclr755):not(.lxclr755b) .ai-avatar-btn,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded:not(.lxclr755):not(.lxclr755b) .ai-avatar-btn,
html body #ai-avatar-fab.fab-ai.ai-dock.body-mode:not(.lxclr755):not(.lxclr755b) .ai-avatar-btn,
html body #ai-avatar-fab.fab-ai.ai-dock.fullscreen-mode:not(.lxclr755):not(.lxclr755b) .ai-avatar-btn {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  -webkit-box-shadow: none !important;
}
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded:not(.lxclr755):not(.lxclr755b) .ai-dock-avatar-area::after,
html body #ai-avatar-fab.fab-ai.ai-dock.dock-expanded:not(.lxclr755):not(.lxclr755b) .ai-dock-avatar-area::before {
  content: none !important;
  display: none !important;
  background: none !important;
  border: none !important;
  box-shadow: none !important;
}
