/* ============================================================
   sp-v51.css  作曲器「插入内容区」1:1 复刻（参考站 hz.lk888.ai 实测）
   - 附件/参考图牌堆：白边斜卡交叉重叠 + 右下角圆形 +
   - hover：手牌横向扇形展开、悬停卡放大上浮、上方文件名气泡、右上圆形 X
   - hover 时右下 + 展开为完整虚线卡（附件 N/上限）移到扇形最右
   - 底部功能钮：暗底 #292B33 + 彩色渐变描边胶囊
   本文件最后加载，统一覆盖历史分散规则。
   ============================================================ */

/* ---------- 牌堆容器 ---------- */
.cp-v2 #attachmentList.sp-stack{
  display:block !important;
  position:relative;
  width:64px; height:80px;
  overflow:visible;
  margin:0;
}
.cp-v2 #attachmentList.sp-stack.hidden{ display:none !important; }

/* ---------- 斜卡（白边拍立得） ---------- */
.cp-v2 #attachmentList.sp-stack .sp-stack-card{
  position:absolute; left:0; top:0;
  width:64px; height:80px;
  margin:0; padding:0;
  border:2px solid #fff;
  border-radius:3px;
  background:#2d2f35;
  box-shadow:0 4px 12px rgba(0,0,0,.30);
  overflow:visible;
  transform:rotate(var(--sr,0deg)) translateZ(0);
  transition:transform .4s cubic-bezier(.4,0,.2,1), box-shadow .4s cubic-bezier(.4,0,.2,1);
  will-change:transform;
}
.cp-v2 #attachmentList.sp-stack .sp-stack-card img,
.cp-v2 #attachmentList.sp-stack .sp-stack-card video{
  position:absolute; inset:0;
  width:100%; height:100%;
  object-fit:cover; border-radius:1px; background:#2d2f35;
}
.cp-v2 #attachmentList.sp-stack .sp-stack-card .sp-file-ic{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  color:#9fb4c4;
}
.cp-v2 #attachmentList.sp-stack .sp-stack-card .sp-play{
  position:absolute; left:50%; top:50%; transform:translate(-50%,-50%);
  width:22px; height:22px; border-radius:50%;
  background:rgba(0,0,0,.55);
}
.cp-v2 #attachmentList.sp-stack .sp-stack-card .sp-play::after{
  content:""; position:absolute; left:50%; top:50%; transform:translate(-40%,-50%);
  border-left:9px solid #fff; border-top:5px solid transparent; border-bottom:5px solid transparent;
}

/* ---------- hover：横向扇形展开（首张在最左，逐张 +54px） ---------- */
.cp-v2 #attachmentList.sp-stack:hover .sp-stack-card:not(:hover){
  transform:translateX(calc(var(--p,0) * 54px)) rotate(var(--hr,0deg)) scale(1) translateZ(0);
  z-index:calc(5 + var(--p,0));
}
.cp-v2 #attachmentList.sp-stack:hover .sp-stack-card:hover{
  transform:translateX(calc(var(--p,0) * 54px)) translateY(-12px) rotate(var(--hr,0deg)) scale(1.22) translateZ(0);
  z-index:1000;
  box-shadow:0 14px 26px rgba(0,0,0,.5);
}

/* ---------- 删除 X：20px 深色小圆，悬停卡才出现，hover 变红 ---------- */
.cp-v2 #attachmentList.sp-stack .sp-stack-card .sp-x{
  display:none;
  position:absolute; top:-7px; right:-7px;
  width:20px; height:20px; padding:0;
  border-radius:50%;
  background:#23262d; border:1px solid #41474c;
  color:rgba(255,255,255,.92);
  font-size:12px; line-height:1; font-weight:400;
  place-items:center; cursor:pointer;
  box-shadow:0 2px 6px rgba(0,0,0,.4);
  z-index:1001;
}
.cp-v2 #attachmentList.sp-stack .sp-stack-card:hover .sp-x{ display:grid; }
.cp-v2 #attachmentList.sp-stack .sp-stack-card .sp-x:hover{
  background:rgba(239,68,68,.85); border-color:rgba(239,68,68,.9); color:#fff; transform:scale(1.1);
}

/* ---------- 文件名气泡（卡片上方，名 + 大小，仅悬停卡显示） ---------- */
.cp-v2 #attachmentList.sp-stack .sp-stack-card .sp-name{
  display:none;
  position:absolute; left:50%; bottom:calc(100% + 10px);
  transform:translateX(-50%);
  flex-direction:column; align-items:center; gap:1px;
  background:rgba(40,42,48,.97);
  border:1px dashed rgba(140,149,159,.42);
  border-radius:8px;
  padding:5px 10px;
  white-space:nowrap; pointer-events:none;
  z-index:1002;
  box-shadow:0 6px 18px rgba(0,0,0,.45);
}
.cp-v2 #attachmentList.sp-stack .sp-stack-card .sp-name::after{
  content:""; position:absolute; top:100%; left:50%; transform:translateX(-50%);
  border:5px solid transparent; border-top-color:rgba(40,42,48,.97);
}
.cp-v2 #attachmentList.sp-stack .sp-stack-card:hover .sp-name{ display:flex; }
.cp-v2 #attachmentList.sp-stack .sp-stack-card .spn-name{
  max-width:180px; overflow:hidden; text-overflow:ellipsis;
  font-size:11px; color:#e6ebf0;
}
.cp-v2 #attachmentList.sp-stack .sp-stack-card .spn-size{ font-size:9.5px; color:#9aa4ad; }

/* ---------- 空槽：倾斜虚线斜卡（+ / 附件 / 0/N） ---------- */
.cp-v2 .cp-refs{ position:relative; }
.cp-v2 .cp-refs:not(.has-items) .cp-frame-add{
  width:64px !important; height:80px !important;
  border-radius:3px !important;
  background:#2d2f35 !important;
  border:1px dashed rgba(98,105,113,.6) !important;
  color:#626971;
  transform:rotate(-8deg);
  transition:transform .3s ease, border-color .2s, color .2s;
}
.cp-v2 .cp-refs:not(.has-items) .cp-frame-add:hover{
  transform:rotate(-8deg) scale(1.08);
  border-color:rgba(140,149,159,.9) !important; color:#9aa4ad;
}
.cp-v2 .cp-refs:not(.has-items) .cp-frame-add .cp-plus-icon{
  font-size:23px; font-weight:300; line-height:1; color:#8a929b;
}
.cp-v2 .cp-refs:not(.has-items) .cp-frame-add em{
  display:block; font-style:normal; font-size:11px; line-height:1.15; color:#626971;
}
.cp-v2 .cp-refs:not(.has-items) .cp-frame-add .cp-frame-count{
  display:block; font-size:9px; line-height:1.1; color:rgba(98,105,113,.85);
}

/* ---------- 有附件后：加号收成 32px 小圆，叠在牌堆右下角 ---------- */
.cp-v2 .cp-refs.has-items .cp-frame-add[data-frame-role="附件"],
.cp-v2 .cp-refs.has-items .cp-frame-add[data-frame-role="参考图"]{
  position:absolute; left:46px; top:60px;
  width:32px !important; height:32px !important; min-width:0; padding:0;
  border-radius:50% !important;
  border:none !important;
  background:#31343c;
  box-shadow:0 2px 8px rgba(0,0,0,.35);
  transform:rotate(0deg);
  z-index:120;
  display:flex; align-items:center; justify-content:center;
  transition:left .4s cubic-bezier(.4,0,.2,1), top .4s cubic-bezier(.4,0,.2,1),
             width .4s cubic-bezier(.4,0,.2,1), height .4s cubic-bezier(.4,0,.2,1),
             border-radius .4s cubic-bezier(.4,0,.2,1), transform .4s cubic-bezier(.4,0,.2,1), background .2s;
}
.cp-v2 .cp-refs.has-items .cp-frame-add[data-frame-role="附件"] .cp-plus-icon,
.cp-v2 .cp-refs.has-items .cp-frame-add[data-frame-role="参考图"] .cp-plus-icon{
  font-size:18px; font-weight:300; color:#fff; line-height:1;
}
.cp-v2 .cp-refs.has-items .cp-frame-add[data-frame-role="附件"] em,
.cp-v2 .cp-refs.has-items .cp-frame-add[data-frame-role="参考图"] em,
.cp-v2 .cp-refs.has-items .cp-frame-add[data-frame-role="附件"] .cp-frame-count,
.cp-v2 .cp-refs.has-items .cp-frame-add[data-frame-role="参考图"] .cp-frame-count{ display:none; }

/* hover 牌堆：加号展开回完整虚线卡，移到扇形最右 */
.cp-v2 .cp-refs.has-items:hover .cp-frame-add[data-frame-role="附件"],
.cp-v2 .cp-refs.has-items:hover .cp-frame-add[data-frame-role="参考图"]{
  left:calc(76px + 54px * (var(--span,1) - 1));
  top:0;
  width:64px !important; height:80px !important; min-width:0 !important; min-height:0 !important;
  border-radius:3px !important;
  background:#2d2f35;
  border:1px dashed rgba(98,105,113,.6) !important;
  transform:rotate(8deg) scale(1);
  box-shadow:0 4px 12px rgba(0,0,0,.3);
}
.cp-v2 .cp-refs.has-items:hover .cp-frame-add[data-frame-role="附件"] .cp-plus-icon,
.cp-v2 .cp-refs.has-items:hover .cp-frame-add[data-frame-role="参考图"] .cp-plus-icon{
  font-size:22px; color:#8a929b;
}
.cp-v2 .cp-refs.has-items:hover .cp-frame-add[data-frame-role="附件"] em,
.cp-v2 .cp-refs.has-items:hover .cp-frame-add[data-frame-role="参考图"] em{
  display:block; font-style:normal; font-size:11px; line-height:1.15; color:#626971;
}
.cp-v2 .cp-refs.has-items:hover .cp-frame-add[data-frame-role="附件"] .cp-frame-count,
.cp-v2 .cp-refs.has-items:hover .cp-frame-add[data-frame-role="参考图"] .cp-frame-count{
  display:block; font-size:9px; line-height:1.1; color:rgba(98,105,113,.85);
}

/* ---------- ID 级铁律：加号小圆 / 展开卡定位（压过所有历史 class 规则） ---------- */
/* 通用：所有空槽/媒体槽/填充卡统一 64×80（ID 级压过一切 class !important；圆形/展开态在后面更高优先级覆盖） */
.cp-v2 #cpRefs .cp-frame-add{
  width:64px !important; height:80px !important;
  min-width:0 !important; min-height:0 !important;
  box-sizing:border-box !important;
}
/* 空槽统一 64×80（与牌堆卡完全一致，杜绝大小不一） */
.cp-v2 #cpRefs:not(.has-items) .cp-frame-add{
  width:64px !important; height:80px !important;
  min-width:0 !important; min-height:0 !important;
  box-sizing:border-box !important;
}
.cp-v2 #cpRefs .cp-frame-add.filled,
.cp-v2 #cpRefs .cp-fstack-add{
  box-sizing:border-box !important;
}
.cp-v2 #cpRefs.has-items .cp-frame-add[data-frame-role="附件"],
.cp-v2 #cpRefs.has-items .cp-frame-add[data-frame-role="参考图"]{
  position:absolute !important;
  left:46px !important; top:60px !important;
  width:32px !important; height:32px !important;
  min-width:0 !important; min-height:0 !important;
  border-radius:50% !important;
}
.cp-v2 #cpRefs.has-items:hover .cp-frame-add[data-frame-role="附件"],
.cp-v2 #cpRefs.has-items:hover .cp-frame-add[data-frame-role="参考图"]{
  left:calc(76px + 54px * (var(--span,1) - 1)) !important;
  top:0 !important;
  width:64px !important; height:80px !important;
  min-width:0 !important; min-height:0 !important;
  border-radius:3px !important;
}

/* ---------- 视频/图片槽位填充卡：同族白边斜卡 ---------- */
.cp-v2 .cp-refs .cp-frame-add.filled{
  width:64px !important; height:80px !important;
  border:2px solid #fff !important; border-radius:3px !important;
  background:#2d2f35; box-shadow:0 4px 12px rgba(0,0,0,.3);
  overflow:hidden; padding:0;
  transition:transform .4s cubic-bezier(.4,0,.2,1), box-shadow .4s cubic-bezier(.4,0,.2,1);
}
.cp-v2 .cp-refs .cp-frame-add.filled:hover{
  transform:translateY(-6px) scale(1.06);
  box-shadow:0 12px 24px rgba(0,0,0,.5); z-index:60;
}
.cp-v2 .cp-refs .cp-frame-add.filled .cp-frame-x{
  position:absolute; top:-7px; right:-7px;
  width:20px; height:20px; line-height:1;
  background:#23262d; border:1px solid #41474c; color:#fff; font-size:12px;
  border-radius:50%; display:none; place-items:center; cursor:pointer; z-index:70;
}
.cp-v2 .cp-refs .cp-frame-add.filled:hover .cp-frame-x{ display:grid; }
.cp-v2 .cp-refs .cp-frame-add.filled .cp-frame-x:hover{ background:rgba(239,68,68,.85); border-color:rgba(239,68,68,.9); }

/* 视频多文件媒体槽（参考图/参考视频/参考音频）空槽统一为虚线斜卡 */
.cp-v2 .cp-fstack-add{
  width:64px !important; height:80px !important; border-radius:3px !important;
  background:#2d2f35 !important; border:1px dashed rgba(98,105,113,.6) !important;
  color:#626971; transform:rotate(-8deg);
  transition:transform .3s, border-color .2s, color .2s;
}
.cp-v2 .cp-fstack-add:hover{ transform:rotate(-8deg) scale(1.08); border-color:rgba(140,149,159,.9)!important; color:#9aa4ad; }

/* ---------- 底部功能钮：暗底 + 彩色渐变描边胶囊（1:1 参考站） ---------- */
.cp-v2 .composer-bottom .mode-buttons{ gap:7px; align-items:center; }
.cp-v2 .composer-bottom .mode-buttons button{
  height:31px; padding:0 11px;
  border-radius:6.3px;
  border:1px solid transparent;
  background:linear-gradient(#292b33,#292b33) padding-box,
             linear-gradient(135deg,rgba(99,102,241,.55),rgba(168,85,247,.45)) border-box;
  color:#f5fbff; font-size:13px; font-weight:400;
  display:inline-flex; align-items:center; gap:6px;
  transition:filter .2s, transform .15s;
}
.cp-v2 .composer-bottom .mode-buttons button:hover{ filter:brightness(1.12); }
.cp-v2 .composer-bottom .mode-buttons button svg{ width:15px; height:15px; }
.cp-v2 .composer-bottom .mode-buttons button .mb-caret{ margin-left:-2px; }
/* 综合最优：实心底 + 紫色菱形图标（无渐变描边） */
.cp-v2 .composer-bottom .mode-buttons button[data-mode-panel="best"]{
  background:#292b33; border:1px solid rgba(255,255,255,.06);
}
.cp-v2 .composer-bottom .mode-buttons button[data-mode-panel="best"] svg{ color:#ab47bc; }
/* 高级设置：青 → 紫 渐变描边，青色图标 */
.cp-v2 .composer-bottom .mode-buttons button[data-mode-panel="advanced"]{
  background:linear-gradient(#292b33,#292b33) padding-box,
             linear-gradient(135deg,rgba(6,182,212,.65),rgba(139,92,246,.65)) border-box;
}
.cp-v2 .composer-bottom .mode-buttons button[data-mode-panel="advanced"] svg{ color:rgba(6,182,212,.95); }
/* 长期记忆：紫色渐变描边，紫色图标 */
.cp-v2 .composer-bottom .mode-buttons button[data-mode-panel="memory"]{
  background:linear-gradient(#292b33,#292b33) padding-box,
             linear-gradient(135deg,rgba(139,92,246,.6),rgba(167,139,250,.5)) border-box;
}
.cp-v2 .composer-bottom .mode-buttons button[data-mode-panel="memory"] svg{ color:rgba(139,92,246,.9); }
/* 技能广场：靛 → 品红 渐变描边，靛色图标 */
.cp-v2 .composer-bottom .mode-buttons button[data-mode-panel="role"]{
  background:linear-gradient(#292b33,#292b33) padding-box,
             linear-gradient(135deg,rgba(99,102,241,.6),rgba(168,85,247,.5)) border-box;
}
.cp-v2 .composer-bottom .mode-buttons button[data-mode-panel="role"] svg{ color:rgba(129,140,248,.95); }

/* ---------- 移动端：扇形改为竖向轻微展开，避免横向溢出 ---------- */
@media (max-width:640px){
  .cp-v2 #attachmentList.sp-stack:hover .sp-stack-card:not(:hover){
    transform:translateX(calc(var(--p,0) * 40px)) rotate(var(--hr,0deg)) scale(1);
  }
  .cp-v2 #attachmentList.sp-stack:hover .sp-stack-card:hover{
    transform:translateX(calc(var(--p,0) * 40px)) translateY(-10px) rotate(var(--hr,0deg)) scale(1.14);
  }
  .cp-v2 .cp-refs.has-items:hover .cp-frame-add[data-frame-role="附件"],
  .cp-v2 .cp-refs.has-items:hover .cp-frame-add[data-frame-role="参考图"]{
    left:calc(72px + 40px * (var(--span,1) - 1));
  }
}

/* @V55-HISTORY-RAIL 恢复参考站竖排对话历史条：仅当前模型/智能体有历史(.has)时显示，贴侧栏右外缘；无历史/灵感视图/窄屏隐藏 */
#sbHistoryRail,.sb-history-rail{display:none!important;}
#sbHistoryRail.has,.sb-history-rail.has{display:flex!important;}
@media (max-width:991px){#sbHistoryRail.has,.sb-history-rail.has{display:none!important;}}

/* v53: 团队/普通智能体开聊后收起落地英雄区，避免与消息流重叠 */
#agentWorkspace.aw-in-chat{display:none!important;}

/* v53: 会员徽章回归后端等级色（tech-fx 曾把所有徽章强制金色），按 --lv 着色 */
.ws-v2 .sp-vip-badge[class*="lv-"]{
  color:color-mix(in srgb,var(--lv) 72%,#fff)!important;
  background:linear-gradient(160deg,color-mix(in srgb,var(--lv) 26%,#151926),color-mix(in srgb,var(--lv) 9%,#0d0d12))!important;
  border:1px solid color-mix(in srgb,var(--lv) 60%,transparent)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.10),0 2px 12px color-mix(in srgb,var(--lv) 30%,transparent)!important;
}
.ws-v2 .sp-vip-badge.lv-7{
  color:#ecd9ff!important;
  background:linear-gradient(160deg,rgba(199,155,255,.30),rgba(199,155,255,.12))!important;
  border-color:rgba(199,155,255,.7)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 0 16px rgba(199,155,255,.5)!important;
}

/* v53 移动端安全：智能多帧工作台/引擎弹窗在窄屏不溢出、可点 */
@media (max-width:860px){
  .re-wb-head{flex-wrap:wrap;gap:8px;}
  .re-wb-tabs{margin-left:0;width:100%;justify-content:center;gap:6px;}
  .re-wb-tab{padding:5px 10px;font-size:11px;}
  .re-flow{padding:10px;gap:6px;}
  .re-flow-step{font-size:12px;}
  .re-flow-arrow{display:none;}
  .re-mm-modal{padding:20px 16px 18px;border-radius:16px;width:min(560px,94vw);}
  .re-mm-sel{width:100%;box-sizing:border-box;}
  .re-card{margin:0 2px;min-height:auto;}
  .re-title{font-size:22px;}
}

/* @V55-INSP-RAIL 灵感纯浏览视图不显示对话历史竖轨 */
body:has(.ws-main.in-insp-view) #sbHistoryRail,body:has(.ws-main.in-insp-view) .sb-history-rail{display:none!important;}
/* @V95-INSP-NOCP 灵感广场为纯浏览视图：彻底隐藏底部作曲器/输入框（参考站灵感广场无输入框），并隐藏智能体浮动工具条 */
body:has(.ws-main.in-insp-view) #wsComposer,
body:has(.ws-main.in-insp-view) .ws-composer,
body:has(.ws-main.in-insp-view) .s2-floating-bar,
body:has(.ws-main.in-insp-view) .s2ff-bar{display:none!important;}
/* 灵感视图主区不再为底部作曲器预留空间，瀑布流铺满整个高度 */
body:has(.ws-main.in-insp-view) #inspGallery{flex:1 1 auto!important;min-height:0!important;}


/* @V56-HISTORY-RAIL-ANCHOR 1:1对标参考站 .celan-root/.celan-rail：零宽锚点贴侧栏右缘，竖条向右伸入主区，不再压侧栏内容 */
.ws-v2 #sbHistoryAnchor{position:relative!important;flex:0 0 0!important;width:0!important;max-width:0!important;align-self:stretch!important;height:auto!important;z-index:40;pointer-events:none;background:none!important;border:0!important;padding:0!important;margin:0!important;}
.ws-v2 #sbHistoryAnchor #sbHistoryRail{position:absolute!important;left:0!important;right:auto!important;top:50%!important;bottom:auto!important;transform:translateY(-50%)!important;margin:0!important;pointer-events:auto;width:40px;min-width:40px;min-height:128px;padding:10px 0;border-radius:0 14px 14px 0!important;flex-direction:column;align-items:center;justify-content:center;gap:7px;background:rgba(20,22,30,.92)!important;border:1px solid rgba(255,255,255,.08)!important;border-left:0!important;box-shadow:8px 4px 24px -10px rgba(0,0,0,.65)!important;z-index:40!important;}
.ws-v2 #sbHistoryAnchor #sbHistoryRail .hr-txt{writing-mode:vertical-rl;text-orientation:upright;}
.ws-v2 #sbHistoryAnchor #sbHistoryRail:hover{transform:translateY(-50%) translateX(2px)!important;background:rgba(32,34,46,.97)!important;}
.ws-v2 #sbHistoryAnchor #sbHistoryRail .hr-count{position:static!important;transform:none!important;margin:2px 0 0;}
@media (max-width:991px){.ws-v2 #sbHistoryAnchor{display:none!important;}}

/* ===== 历史会话：每条悬浮单删按钮（v13） ===== */
.history-list .duihua-item{ position:relative; }
.history-list .duihua-item .item-del{
  position:absolute; top:50%; right:8px; transform:translateY(-50%) scale(.85);
  width:26px; height:26px; border:none; border-radius:8px;
  display:flex; align-items:center; justify-content:center;
  color:#ff7a8a; background:rgba(255,90,110,.14);
  opacity:0; pointer-events:none; transition:opacity .16s ease, transform .16s ease, background .16s ease;
  z-index:3; cursor:pointer; padding:0;
}
.history-list .duihua-item .item-del svg{ width:15px; height:15px; }
.history-list .duihua-item:hover .item-del{ opacity:1; pointer-events:auto; transform:translateY(-50%) scale(1); }
.history-list .duihua-item .item-del:hover{ background:rgba(255,90,110,.32); color:#fff; }
.history-list .duihua-item:hover .item-content{ padding-right:30px; }

/* ===== 悬浮输入框 Dock：模型与智能体统一（v14），外层透明、内容从其下方滚过、不遮挡 ===== */
.ws-v2 .ws-composer.cp-v2{
  background: transparent !important;
  border-top: 0 !important;
  padding: 16px 28px 20px !important;
  position: relative;
}
.ws-v2 .ws-composer.cp-v2::before{
  content:""; position:absolute; left:0; right:0; top:-72px; height:72px; pointer-events:none;
  background: linear-gradient(to top, rgba(8,9,14,.55), rgba(8,9,14,0));
}
.ws-v2 .ws-composer.cp-v2 .cp-layout{ max-width:1020px; }
.ws-v2 .ws-composer.cp-v2 .composer-box{
  background: rgba(22,23,30,.62) !important;
  border:1px solid rgba(255,255,255,.09) !important;
  border-radius:22px !important;
  -webkit-backdrop-filter: blur(22px) saturate(150%);
  backdrop-filter: blur(22px) saturate(150%);
  box-shadow: 0 18px 50px rgba(0,0,0,.52), inset 0 1px 0 rgba(255,255,255,.05) !important;
}
.ws-v2 .ws-composer.cp-v2 .composer-box:focus-within{
  border-color: rgba(34,211,238,.42) !important;
  box-shadow: 0 20px 56px rgba(0,0,0,.58), 0 0 0 3px rgba(34,211,238,.08), inset 0 1px 0 rgba(255,255,255,.06) !important;
}
.ws-v2 .ws-composer.cp-v2.cp-expanded .composer-box{ background: rgba(18,19,25,.7) !important; }
.ws-v2 .ws-chat{ scroll-padding-bottom: 24px; }
/* 浅色主题：浅色半透明悬浮 Dock */
html[data-theme="light"] .ws-v2 .ws-composer.cp-v2::before{ background: linear-gradient(to top, rgba(244,246,251,.6), rgba(244,246,251,0)); }
html[data-theme="light"] .ws-v2 .ws-composer.cp-v2 .composer-box{
  background: rgba(255,255,255,.72) !important;
  border-color: rgba(20,30,60,.1) !important;
  box-shadow: 0 18px 48px rgba(30,40,80,.14), inset 0 1px 0 rgba(255,255,255,.7) !important;
}
/* 窄屏：收窄留白，保证输入区不溢出、不遮挡 */
@media (max-width:860px){
  .ws-v2 .ws-composer.cp-v2{ padding:10px 12px calc(12px + env(safe-area-inset-bottom,0px)) !important; }
  .ws-v2 .ws-composer.cp-v2 .composer-box{ border-radius:18px !important; }
  .ws-v2 .ws-composer.cp-v2::before{ top:-48px; height:48px; }
}

/* ===== v15 去底座：输入卡真正悬浮于连续星空，不要输入框下面的整块底 ===== */
/* 移除 v14 的深色渐隐遮罩（它正是“底”的来源之一） */
.ws-v2 .ws-composer.cp-v2::before{ content:none !important; }
@media (min-width:861px){
  /* 收窄悬浮卡并居中，两侧留出能看见星空的间隙（覆盖 req13 的近全宽） */
  .ws-v2 .ws-composer.cp-v2 .cp-layout,
  .ws-v2 .ws-composer.cp-v2 .cp-masters{
    max-width: min(1000px, calc(100% - 48px)) !important;
    margin-left:auto !important; margin-right:auto !important;
  }
}
/* 智能体星空页：在输入区后面补一层连续辉光，底部不再是死黑平面 */
.ws-main.ag-fx-on .ws-composer.cp-v2::before{
  content:"" !important; position:absolute !important; inset:0 !important; z-index:0 !important;
  pointer-events:none !important;
  background:
    radial-gradient(860px 380px at 50% 120%, rgba(124,108,255,.16), rgba(124,108,255,0) 62%),
    radial-gradient(620px 320px at 10% 110%, rgba(56,189,248,.10), rgba(56,189,248,0) 60%),
    radial-gradient(620px 320px at 90% 110%, rgba(168,85,247,.12), rgba(168,85,247,0) 60%);
}
.ws-main.ag-fx-on .ws-composer.cp-v2 .cp-layout,
.ws-main.ag-fx-on .ws-composer.cp-v2 .cp-masters{ position:relative; z-index:1; }
/* 悬浮卡与视口底边保持清晰间距 */
.ws-v2 .ws-composer.cp-v2{ padding-bottom:22px !important; }
@media (max-width:860px){
  .ws-main.ag-fx-on .ws-composer.cp-v2::before{ inset:-10px 0 0 0 !important; }
}

/* ===== v16 输入区后方延续智能体星空（主题色 --aw-rgb 感知），彻底去平底/接缝 ===== */
.ws-main.ag-fx-on .ws-composer.cp-v2::before{
  content:"" !important; position:absolute !important; inset:0 !important; z-index:0 !important;
  pointer-events:none !important;
  background:
    radial-gradient(780px 380px at 50% 118%, rgba(var(--aw-rgb,139,92,255),.16), rgba(var(--aw-rgb,139,92,255),0) 62%),
    radial-gradient(600px 340px at 0% 112%, rgba(99,102,241,.13), rgba(99,102,241,0) 60%),
    radial-gradient(600px 340px at 100% 112%, rgba(var(--aw-rgb,139,92,255),.12), rgba(var(--aw-rgb,139,92,255),0) 60%),
    radial-gradient(820px 300px at 50% -12%, rgba(var(--aw-rgb,139,92,255),.08), rgba(var(--aw-rgb,139,92,255),0) 62%) !important;
}
.ws-main.ag-fx-on .ws-composer.cp-v2::after{
  content:"" !important; position:absolute !important; inset:0 !important; z-index:0 !important;
  pointer-events:none !important;
  background-image:
    linear-gradient(rgba(var(--aw-rgb,139,92,255),.045) 1px, rgba(0,0,0,0) 1px),
    linear-gradient(90deg, rgba(var(--aw-rgb,139,92,255),.045) 1px, rgba(0,0,0,0) 1px) !important;
  background-size:60px 60px,60px 60px !important;
}
.ws-main.ag-fx-on .ws-composer.cp-v2 .cp-layout,
.ws-main.ag-fx-on .ws-composer.cp-v2 .cp-masters{ position:relative; z-index:1; }
@media (max-width:860px){
  .ws-main.ag-fx-on .ws-composer.cp-v2::after{ background-size:42px 42px,42px 42px !important; }
}

/* ===== v17 去掉重复网格（.ag-grid 已全高铺，重复叠加造成接缝横线），仅保留辉光延续 ===== */
.ws-main.ag-fx-on .ws-composer.cp-v2::after{ content:none !important; }
.ws-main.ag-fx-on .ws-composer.cp-v2{ border-top:0 !important; box-shadow:none !important; }

/* ===== v18 S2/cosmos 系：辉光补在满幅层 #agGlobalFx 上（不做输入区 bounded 矩形），无平底无接缝 ===== */
.ws-v2 .ws-main.ag-fx-on:has(#agentWorkspace.s2-cosmos-on) > #agGlobalFx.ag-bgfx-global{
  background:linear-gradient(rgb(6,8,12) 0%,rgb(12,15,22) 50%,rgb(8,10,16) 100%) !important;
}
.ws-v2 .ws-main.ag-fx-on:has(#agentWorkspace.s2-theme-pink) > #agGlobalFx.ag-bgfx-global{
  background:
    radial-gradient(1420px 920px at 80% -10%, rgba(255,94,168,.17), rgba(0,0,0,0) 60%),
    radial-gradient(1240px 940px at 0% 104%, rgba(192,132,252,.17), rgba(0,0,0,0) 60%),
    radial-gradient(1080px 780px at 50% 114%, rgba(255,94,168,.15), rgba(0,0,0,0) 62%),
    radial-gradient(1000px 760px at 102% 102%, rgba(251,113,133,.10), rgba(0,0,0,0) 62%),
    linear-gradient(180deg,#0d0810 0%,#0b070c 52%,#0e0812 100%) !important;
}
/* cosmos 系输入区完全透明，不叠加 bounded 辉光/网格（满幅层已连续） */
.ws-v2 .ws-main.ag-fx-on:has(#agentWorkspace.s2-cosmos-on) .ws-composer.cp-v2::before,
.ws-v2 .ws-main.ag-fx-on:has(#agentWorkspace.s2-cosmos-on) .ws-composer.cp-v2::after,
.ws-v2 .ws-main.ag-fx-on:has(#agentWorkspace.s2-theme-pink) .ws-composer.cp-v2::before,
.ws-v2 .ws-main.ag-fx-on:has(#agentWorkspace.s2-theme-pink) .ws-composer.cp-v2::after{ content:none !important; }

/* ===== v19 平滑 cosmos 系输入区上沿过渡，消除残余亮暗分界 ===== */
.ws-v2 .ws-main.ag-fx-on:has(#agentWorkspace.s2-cosmos-on) > #agGlobalFx.ag-bgfx-global{
  background:linear-gradient(rgb(6,8,12) 0%,rgb(12,15,22) 50%,rgb(8,10,16) 100%) !important;
}

/* ===== v20 普通智能体（非s2）：辉光/网格统一到满幅层，去除输入区 bounded 矩形硬边与平底 ===== */
.ws-main.ag-fx-on:not(:has(#agentWorkspace.s2-full)):not(:has(#agentWorkspace.s2-cosmos-on)):not(:has(#agentWorkspace.s2-theme-pink)) > #agGlobalFx.ag-bgfx-global::after{
  content:"" !important; position:absolute !important; left:0; right:0; bottom:0; height:780px;
  z-index:0; pointer-events:none;
  background:
    radial-gradient(1180px 580px at 50% 122%, rgba(var(--aw-rgb,139,92,255),.17), rgba(var(--aw-rgb,139,92,255),0) 62%),
    radial-gradient(780px 480px at 0% 116%, rgba(var(--aw-rgb,139,92,255),.12), rgba(var(--aw-rgb,139,92,255),0) 60%),
    radial-gradient(780px 480px at 100% 116%, rgba(var(--aw-rgb,139,92,255),.12), rgba(var(--aw-rgb,139,92,255),0) 60%);
}
.ws-main.ag-fx-on:not(:has(#agentWorkspace.s2-full)):not(:has(#agentWorkspace.s2-cosmos-on)):not(:has(#agentWorkspace.s2-theme-pink)) > #agGlobalFx.ag-bgfx-global .ag-grid{
  -webkit-mask-image:none !important; mask-image:none !important;
}
/* 所有 ag-fx-on 输入区不再使用 bounded 伪元素，辉光统一由满幅层承载，杜绝矩形硬边 */
.ws-main.ag-fx-on .ws-composer.cp-v2::before,
.ws-main.ag-fx-on .ws-composer.cp-v2::after{ content:none !important; }

/* ===== v21 全局悬浮输入框（模型页+智能体页）：透明无底、收窄居中；折叠后高度归零只留悬浮圆钮 ===== */
/* 1) 所有 cp-v2 外层透明，去掉模型页写死的 #0a0a0c 整条深底与顶边/阴影 */
.ws-v2 .ws-composer.cp-v2{
  background:transparent !important;
  border-top:none !important;
  box-shadow:none !important;
}
/* 2) 全局收窄居中浮卡（不再近全宽像 dock），左右留白 */
@media (min-width:861px){
  .ws-v2 .ws-composer.cp-v2 .cp-layout,
  .ws-v2 .ws-composer.cp-v2 .cp-masters{
    max-width:min(1000px,calc(100% - 48px)) !important;
    margin-left:auto !important; margin-right:auto !important;
  }
}
/* 3) 折叠态：不再保留输入框布局高度（消除整条空底座），仅悬浮键盘圆钮（圆钮挂在 ws-main 上不受影响） */
#wsComposer.input-collapsed{
  transform:none !important;
  height:0 !important; min-height:0 !important; max-height:0 !important;
  padding:0 !important; margin:0 !important; border:0 !important;
  opacity:0 !important; visibility:hidden !important; pointer-events:none !important;
  overflow:visible !important;
}
#wsComposer.input-collapsed .cp-layout,
#wsComposer.input-collapsed .cp-masters{ display:none !important; }
/* 4) 折叠后对话区下延，内容可滚到圆钮上方，不被悬浮圆钮压住 */
.ws-main:has(#wsComposer.input-collapsed) .ws-chat{ padding-bottom:88px !important; }

/* ============================================================
   sp-v51 v22 - composer 1:1 with reference (compact floating card)
   ============================================================ */
/* card skin: reference rgba(27,28,33,.95) + blur(10.5) + r18.9, no shadow */
.ws-v2 .ws-composer.cp-v2 .composer-box{
  background:rgba(27,28,33,.95)!important;
  -webkit-backdrop-filter:blur(10.5px)!important; backdrop-filter:blur(10.5px)!important;
  border:.67px solid rgb(30,31,37)!important;
  border-radius:18.9px!important; box-shadow:none!important;
  position:relative!important; padding:12px 14px 46px!important;
}
/* outer composer fully transparent, no base band */
.ws-v2 .ws-composer.cp-v2{
  background:transparent!important; border-top:none!important; box-shadow:none!important;
  padding:8px 16px 16px!important;
}
@media (min-width:861px){
  .ws-v2 .ws-composer.cp-v2 .cp-layout{max-width:min(1180px,calc(100% - 40px))!important;margin:0 auto!important;}
}
@media (max-width:860px){
  .ws-v2 .ws-composer.cp-v2{padding:8px 10px 12px!important;}
}
/* single bottom row: params chips pinned to box bottom */
.ws-v2 .ws-composer.cp-v2 .composer-params{
  position:absolute!important; left:10px; right:10px; bottom:8px;
  min-height:34px; margin:0!important; padding:2px 118px 0 14px!important;
  background:transparent!important;
}
.ws-v2 .ws-composer.cp-v2.cat-chat .composer-params,
.ws-v2 .ws-composer.cp-v2.cat-agent .composer-params{padding-left:54px!important;}
/* send row merges into the same bottom row, right aligned */
.ws-v2 .ws-composer.cp-v2 .composer-bottom{
  position:absolute!important; right:12px; bottom:7px; left:auto!important;
  height:38px; margin:0!important; padding:0!important;
  display:flex; align-items:center; gap:8px; background:transparent!important; z-index:8;
}
.ws-v2 .ws-composer.cp-v2 .composer-bottom .mode-buttons{display:none!important;}
.ws-v2 .ws-composer.cp-v2 .cp-enter-hint{display:none!important;}
.ws-v2 .ws-composer.cp-v2 .composer-box textarea{
  min-height:44px!important; padding-right:14px!important; padding-top:2px!important; padding-bottom:2px!important;
}
/* CHAT / AGENT: drop the tall 82px empty upload deck; only show when real files exist */
.ws-v2 .ws-composer.cp-v2.cat-chat .cp-refs,
.ws-v2 .ws-composer.cp-v2.cat-agent .cp-refs{display:none!important;}
.ws-v2 .ws-composer.cp-v2.cat-chat .cp-refs:has(.sp-stack-card),
.ws-v2 .ws-composer.cp-v2.cat-chat .cp-refs:has(.cp-frame-add.filled),
.ws-v2 .ws-composer.cp-v2.cat-chat .cp-refs:has(.ua-thumb),
.ws-v2 .ws-composer.cp-v2.cat-chat .cp-refs:has(.ua-file),
.ws-v2 .ws-composer.cp-v2.cat-agent .cp-refs:has(.sp-stack-card),
.ws-v2 .ws-composer.cp-v2.cat-agent .cp-refs:has(.cp-frame-add.filled),
.ws-v2 .ws-composer.cp-v2.cat-agent .cp-refs:has(.ua-thumb),
.ws-v2 .ws-composer.cp-v2.cat-agent .cp-refs:has(.ua-file){display:flex!important;}
/* inline attach + relocated into the bottom row (chat / agent only) */
.ws-v2 .ws-composer.cp-v2.cat-chat .composer-toolbar,
.ws-v2 .ws-composer.cp-v2.cat-agent .composer-toolbar{
  display:block!important; position:absolute!important; left:12px; bottom:9px;
  height:0; overflow:visible; z-index:9; margin:0; padding:0;
}
.ws-v2 .ws-composer.cp-v2.cat-chat #uploadBtn,
.ws-v2 .ws-composer.cp-v2.cat-agent #uploadBtn{
  display:inline-grid!important; place-items:center; width:32px; height:32px; padding:0!important;
  border-radius:50%!important; border:1px solid rgba(255,255,255,.12)!important;
  background:rgba(255,255,255,.06)!important; color:#c7cede!important; position:relative; overflow:hidden;
}
.ws-v2 .ws-composer.cp-v2.cat-chat #uploadBtn svg,
.ws-v2 .ws-composer.cp-v2.cat-agent #uploadBtn svg{display:none;}
.ws-v2 .ws-composer.cp-v2.cat-chat #uploadBtn::after,
.ws-v2 .ws-composer.cp-v2.cat-agent #uploadBtn::after{content:"+";font-size:21px;font-weight:300;line-height:1;color:#dfe4ee;}
.ws-v2 .ws-composer.cp-v2.cat-chat #uploadBtn b,
.ws-v2 .ws-composer.cp-v2.cat-agent #uploadBtn b,
.ws-v2 .ws-composer.cp-v2.cat-chat #stackBtn,
.ws-v2 .ws-composer.cp-v2.cat-agent #stackBtn,
.ws-v2 .ws-composer.cp-v2.cat-chat #agMaterialBtn,
.ws-v2 .ws-composer.cp-v2.cat-agent #agMaterialBtn{display:none!important;}
/* agent workspace: size to content and let the shared thread scroll (forms hidden behind composer) */
#chatThread.ws-chat{overflow-y:auto!important; overflow-x:hidden!important; -webkit-overflow-scrolling:touch; scrollbar-gutter:stable;}
#chatThread.ws-chat > #agentWorkspace.agent-ws{flex:0 0 auto!important; min-height:auto!important; overflow:visible!important;}
/* collapse FAB aligned to reference: 50px keyboard circle */
.input-collapse-fab{width:50px!important; height:50px!important; bottom:18px!important;}
/* light theme card */
html[data-theme="light"] .ws-v2 .ws-composer.cp-v2 .composer-box{
  background:rgba(255,255,255,.92)!important; border-color:#e2e6f0!important;
  -webkit-backdrop-filter:blur(10.5px)!important; backdrop-filter:blur(10.5px)!important;
}
html[data-theme="light"] .ws-v2 .ws-composer.cp-v2.cat-chat #uploadBtn,
html[data-theme="light"] .ws-v2 .ws-composer.cp-v2.cat-agent #uploadBtn{background:#eef2f9!important;border-color:#d7deea!important;}
html[data-theme="light"] .ws-v2 .ws-composer.cp-v2.cat-chat #uploadBtn::after,
html[data-theme="light"] .ws-v2 .ws-composer.cp-v2.cat-agent #uploadBtn::after{color:#334155;}

/* ============================================================
   sp-v51 v23 - composer 1:1 fixes (empty deck hide specificity, inline attach alignment)
   ============================================================ */
.ws-v2 .ws-composer.cp-v2.cat-chat .cp-refs:not(:has(.sp-stack-card)):not(:has(.cp-frame-add.filled)):not(:has(.ua-thumb)):not(:has(.ua-file)):not(:has(video)):not(:has(img.att)),
.ws-v2 .ws-composer.cp-v2.cat-agent .cp-refs:not(:has(.sp-stack-card)):not(:has(.cp-frame-add.filled)):not(:has(.ua-thumb)):not(:has(.ua-file)):not(:has(video)):not(:has(img.att)){
  display:none!important;
}
/* inline attach + button: anchor a 32px bar on the params row (chat / agent) */
.ws-v2 .ws-composer.cp-v2.cat-chat .composer-toolbar,
.ws-v2 .ws-composer.cp-v2.cat-agent .composer-toolbar{
  display:flex!important; align-items:center; position:absolute!important;
  left:14px; bottom:8px; height:32px; width:32px; overflow:visible; z-index:9; margin:0; padding:0;
}
.ws-v2 .ws-composer.cp-v2.cat-chat #uploadBtn,
.ws-v2 .ws-composer.cp-v2.cat-agent #uploadBtn{
  width:32px!important; height:32px!important; margin:0;
}
/* when files ARE attached, deck becomes a compact row above textarea */
.ws-v2 .ws-composer.cp-v2.cat-chat .cp-refs:has(.sp-stack-card),
.ws-v2 .ws-composer.cp-v2.cat-agent .cp-refs:has(.sp-stack-card){
  margin:0 0 8px!important; max-height:96px; overflow:hidden;
}

/* ============================================================
   sp-v51 v24 - S2 engine landing gate: no composer until a project exists (1:1 reference)
   ============================================================ */
#wsComposer.s2-landing-gated{display:block!important;}
/* reference S2 landing keeps the docked composer visible; project auto-created on first send */

/* ============================================================
   sp-v51 v25 - restore in-flow bottom row (kill chips/textarea overlap)
   + restore the ORIGINAL tilted attach deck ("+附件") for chat/agent,
     remove the experimental circular inline "+" upload button.
   Keeps the v22 floating transparent card skin / 1180 width / collapse.
   ============================================================ */
/* card padding: bottom row now occupies real flow height */
.ws-v2 .ws-composer.cp-v2 .composer-box{ padding:12px 14px 12px !important; }
/* params chips: back in normal flow BELOW the textarea -> can never overlap it */
.ws-v2 .ws-composer.cp-v2 .composer-params{
  position:static !important; left:auto !important; right:auto !important; bottom:auto !important;
  display:flex !important; align-items:center; flex-wrap:wrap; gap:8px;
  width:auto !important; min-height:40px; margin:8px 0 0 !important;
  padding:0 118px 0 14px !important; background:transparent !important;
}
/* send button floats at the right of the in-flow params row */
.ws-v2 .ws-composer.cp-v2 .composer-bottom{
  position:absolute !important; right:14px; bottom:10px; left:auto !important;
  height:40px; margin:0 !important; padding:0 !important;
  display:flex; align-items:center; gap:8px; background:transparent !important; z-index:8;
}
.ws-v2 .ws-composer.cp-v2 .composer-box textarea{ min-height:56px !important; }

/* restore ORIGINAL attach UX: hide toolbar/uploadBtn, show the tilted deck tile */
.ws-v2 .ws-composer.cp-v2.cat-chat .composer-toolbar,
.ws-v2 .ws-composer.cp-v2.cat-agent .composer-toolbar{ display:none !important; }
#wsComposer.cat-chat #uploadBtn,
#wsComposer.cat-agent #uploadBtn{ display:none !important; }
#wsComposer.cat-chat .cp-refs,
#wsComposer.cat-agent .cp-refs{
  display:flex !important; margin:0 0 8px !important; max-height:none !important; overflow:visible !important;
}
/* deck keeps its natural tilted size, no forced compact clipping */
#wsComposer.cat-chat .cp-refs:has(.sp-stack-card),
#wsComposer.cat-agent .cp-refs:has(.sp-stack-card){ max-height:none !important; overflow:visible !important; }

/* ===== 智能多帧：分段生成进度（1:1 连贯长视频） ===== */
.mf-run{border:1px solid rgba(34,211,238,.22);border-radius:14px;padding:12px 14px;margin:4px 0;
  background:linear-gradient(160deg,rgba(34,211,238,.08),rgba(255,255,255,.02));}
.mf-run-head{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.mfr-title{font-weight:700;font-size:14px;color:#22d3ee;letter-spacing:.3px;}
.mfr-segcount{font-size:12px;color:rgba(148,163,184,.95);}
.mf-run-stage{margin-top:8px;font-size:12.5px;color:rgba(226,232,240,.92);display:flex;align-items:center;gap:7px;}
.mf-run-stage:empty{display:none;}
.mf-run-stage::before{content:"";width:12px;height:12px;border-radius:50%;flex:none;
  border:2px solid rgba(34,211,238,.3);border-top-color:#22d3ee;animation:mfrspin .8s linear infinite;}
.mf-run-segs{margin-top:10px;display:flex;flex-direction:column;gap:6px;}
.mfr-seg{display:grid;grid-template-columns:22px 56px 1fr;align-items:center;gap:8px;font-size:12.5px;
  padding:6px 8px;border-radius:10px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.05);}
.mfr-idx{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:700;background:rgba(148,163,184,.18);color:rgba(226,232,240,.9);}
.mfr-state{font-size:11.5px;font-weight:600;display:inline-flex;align-items:center;gap:5px;color:rgba(148,163,184,.95);}
.mfr-text{color:rgba(226,232,240,.85);line-height:1.45;word-break:break-word;}
.mfr-seg.is-working{border-color:rgba(34,211,238,.4);background:rgba(34,211,238,.07);}
.mfr-seg.is-working .mfr-state{color:#22d3ee;}
.mfr-seg.is-working .mfr-state::before{content:"";width:10px;height:10px;border-radius:50%;
  border:2px solid rgba(34,211,238,.3);border-top-color:#22d3ee;animation:mfrspin .8s linear infinite;}
.mfr-seg.is-working .mfr-idx{background:rgba(34,211,238,.25);color:#a5f3fc;}
.mfr-seg.is-done{border-color:rgba(52,211,153,.32);background:rgba(52,211,153,.06);}
.mfr-seg.is-done .mfr-state{color:#34d399;}
.mfr-seg.is-done .mfr-idx{background:rgba(52,211,153,.22);color:#a7f3d0;}
.mfr-seg.is-fail{border-color:rgba(248,113,113,.35);background:rgba(248,113,113,.06);}
.mfr-seg.is-fail .mfr-state{color:#f87171;}
.mfr-seg.is-fail .mfr-idx{background:rgba(248,113,113,.2);color:#fecaca;}
.mf-run-final{margin-top:12px;}
.mfr-final-label{font-size:12.5px;font-weight:600;color:rgba(226,232,240,.92);margin-bottom:8px;}
.mfr-video{width:100%;border-radius:12px;background:#000;border:1px solid rgba(255,255,255,.08);display:block;}
.mfr-download{display:inline-flex;align-items:center;margin-top:8px;font-size:12.5px;font-weight:600;
  color:#22d3ee;text-decoration:none;padding:6px 12px;border-radius:999px;border:1px solid rgba(34,211,238,.35);
  background:rgba(34,211,238,.08);transition:.18s;}
.mfr-download:hover{background:rgba(34,211,238,.18);}
@keyframes mfrspin{to{transform:rotate(360deg);}}
/* 浅色主题适配 */
html.light .mf-run,body.light-theme .mf-run{background:linear-gradient(160deg,rgba(8,145,178,.08),rgba(0,0,0,.02));border-color:rgba(8,145,178,.25);}
html.light .mfr-text,body.light-theme .mfr-text{color:rgba(30,41,59,.85);}
html.light .mfr-seg,body.light-theme .mfr-seg{background:rgba(15,23,42,.03);border-color:rgba(15,23,42,.08);}
html.light .mfr-final-label,body.light-theme .mfr-final-label{color:rgba(30,41,59,.9);}

/* ================= 多模型协作 · 并行回答卡 ================= */
.mm-run{width:100%;display:flex;flex-direction:column;gap:12px;}
.mm-run-head{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.mm-run-head .mmr-title{font-size:15px;font-weight:700;color:#fde68a;letter-spacing:.3px;}
.mm-run-head .mmr-hint{font-size:12px;color:#94a3b8;}
.mm-cards{display:flex;gap:12px;overflow-x:auto;padding-bottom:6px;scroll-snap-type:x proximity;}
.mm-cards::-webkit-scrollbar{height:8px;}
.mm-cards::-webkit-scrollbar-thumb{background:rgba(251,191,36,.35);border-radius:8px;}
.mm-card{flex:1 1 0;min-width:280px;max-width:460px;scroll-snap-align:start;border-radius:14px;display:flex;flex-direction:column;overflow:hidden;
  background:linear-gradient(180deg,rgba(30,41,59,.72),rgba(15,23,42,.78));border:1px solid rgba(148,163,184,.18);
  box-shadow:0 8px 26px rgba(2,6,23,.35);transition:border-color .25s,box-shadow .25s;}
.mm-card.is-thinking{border-color:rgba(251,191,36,.4);box-shadow:0 0 0 1px rgba(251,191,36,.12),0 8px 26px rgba(2,6,23,.3);}
.mm-card.is-done{border-color:rgba(34,197,94,.32);}
.mm-card.is-fail{border-color:rgba(239,68,68,.34);}
.mmc-head{display:flex;align-items:center;gap:9px;padding:11px 12px;border-bottom:1px solid rgba(148,163,184,.14);background:rgba(2,6,23,.28);}
.mmc-ava{width:28px;height:28px;border-radius:50%;flex:0 0 28px;display:flex;align-items:center;justify-content:center;overflow:hidden;
  background:radial-gradient(circle at 35% 30%,rgba(251,191,36,.25),rgba(15,23,42,.6));border:1px solid rgba(251,191,36,.28);}
.mmc-ava img{width:19px;height:19px;object-fit:contain;}
.mmc-ava span{font-size:15px;line-height:1;}
.mmc-name{font-size:13px;font-weight:700;color:#e2e8f0;flex:1 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mmc-tag{font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;flex:0 0 auto;color:#fbbf24;background:rgba(251,191,36,.14);}
.mmc-tag.ok{color:#4ade80;background:rgba(34,197,94,.14);}
.mmc-tag.fail{color:#f87171;background:rgba(239,68,68,.14);}
.mmc-body{padding:12px 13px;font-size:13.5px;line-height:1.7;color:#cbd5e1;max-height:420px;overflow-y:auto;word-break:break-word;}
.mmc-body p{margin:0 0 8px;}
.mmc-body p:last-child{margin-bottom:0;}
.mmc-body pre{background:rgba(2,6,23,.6);border:1px solid rgba(148,163,184,.16);border-radius:8px;padding:9px;overflow:auto;font-size:12px;}
.mmc-body code{font-family:Consolas,Menlo,monospace;}
.mmc-body ul,.mmc-body ol{margin:0 0 8px;padding-left:20px;}
.mmc-err{color:#fca5a5;font-size:12.5px;line-height:1.6;}
.mmc-dots{display:inline-flex;gap:5px;align-items:center;padding:4px 0;}
.mmc-dots i{width:7px;height:7px;border-radius:50%;background:#fbbf24;opacity:.5;animation:mmBlink 1.2s infinite ease-in-out both;}
.mmc-dots i:nth-child(2){animation-delay:.18s;}
.mmc-dots i:nth-child(3){animation-delay:.36s;}
@keyframes mmBlink{0%,80%,100%{opacity:.25;transform:translateY(0);}40%{opacity:1;transform:translateY(-2px);}}
.mm-sum-box{border-radius:14px;border:1px solid rgba(251,191,36,.3);background:linear-gradient(180deg,rgba(60,45,10,.5),rgba(20,16,8,.6));padding:0;overflow:hidden;}
.mm-sum-slot{display:none;}
.mms-head{display:flex;align-items:center;gap:9px;padding:11px 12px;border-bottom:1px solid rgba(251,191,36,.18);background:rgba(2,6,23,.25);}
.mms-ava{width:28px;height:28px;border-radius:50%;flex:0 0 28px;display:flex;align-items:center;justify-content:center;overflow:hidden;background:rgba(251,191,36,.16);border:1px solid rgba(251,191,36,.3);}
.mms-ava img{width:19px;height:19px;object-fit:contain;}
.mms-head b{font-size:13px;color:#fde68a;flex:1 1 auto;}
.mms-tag{font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;color:#fbbf24;background:rgba(251,191,36,.14);}
.mms-tag.ok{color:#4ade80;background:rgba(34,197,94,.14);}
.mms-tag.fail{color:#f87171;background:rgba(239,68,68,.14);}
.mms-body{padding:12px 13px;font-size:13.5px;line-height:1.75;color:#e2e8f0;word-break:break-word;}
.mms-body p{margin:0 0 8px;}
.mms-body p:last-child{margin-bottom:0;}
@media (max-width:760px){
  .mm-card{min-width:78vw;max-width:none;}
}


/* ================= 多模型配置弹层 1:1（竖排可删行 + 金色虚线总结 + 嵌套选择器） ================= */
.re-mm-modal .selected-list{display:flex;flex-direction:column;gap:8px;}
.re-mm-modal .selected-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:11px;
  background:rgba(255,255,255,.035);border:1px solid rgba(148,163,184,.16);transition:border-color .18s,background .18s;}
.re-mm-modal .selected-item:hover{border-color:rgba(34,211,238,.35);background:rgba(34,211,238,.06);}
.re-mm-modal .item-index{flex:0 0 22px;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;
  font-size:11.5px;font-weight:800;color:#04222a;background:linear-gradient(135deg,#67e8f9,#22d3ee);box-shadow:0 2px 8px -2px rgba(34,211,238,.6);}
.re-mm-modal .item-avatar{flex:0 0 28px;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;overflow:hidden;
  background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.12),rgba(15,23,42,.5));border:1px solid rgba(148,163,184,.22);}
.re-mm-modal .item-avatar img{width:18px;height:18px;object-fit:contain;}
.re-mm-modal .item-name{flex:1 1 auto;font-size:13.5px;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.re-mm-modal .remove-btn{flex:0 0 24px;width:24px;height:24px;border-radius:50%;border:none;cursor:pointer;padding:0;
  display:grid;place-items:center;font-size:14px;line-height:1;color:#fecaca;background:rgba(239,68,68,.16);
  opacity:.75;transition:opacity .16s,background .16s,color .16s;}
.re-mm-modal .remove-btn:hover{opacity:1;color:#fff;background:rgba(239,68,68,.5);}
.re-mm-modal .sum-item .item-avatar{border-color:rgba(251,191,36,.4);background:rgba(251,191,36,.12);}
.re-mm-modal .re-mm-add{width:100%;margin-top:9px;height:40px;border-radius:11px;cursor:pointer;font-size:13px;font-weight:600;
  color:#9fdfe8;background:transparent;border:1px dashed rgba(34,211,238,.45);transition:background .16s,border-color .16s;}
.re-mm-modal .re-mm-add:hover{background:rgba(34,211,238,.08);border-color:rgba(34,211,238,.7);}
.re-mm-modal .re-mm-sumadd{width:100%;height:44px;border-radius:11px;cursor:pointer;font-size:13.5px;font-weight:700;
  color:#fcd34d;background:rgba(251,191,36,.06);border:1px dashed rgba(251,191,36,.55);transition:background .16s,border-color .16s;}
.re-mm-modal .re-mm-sumadd:hover{background:rgba(251,191,36,.13);border-color:rgba(251,191,36,.85);}
.re-mm-modal .re-mm-empty{padding:14px;text-align:center;color:#7c8aa0;font-size:12.5px;}
/* 确认钮改青色 */
.re-mm-ok{color:#04222a !important;background:linear-gradient(135deg,#67e8f9,#06b6d4) !important;box-shadow:0 12px 30px -12px #06b6d4 !important;}
/* 嵌套选择器 */
.re-mm-picker{position:fixed;inset:0;z-index:9100;display:none;align-items:center;justify-content:center;
  background:rgba(4,8,16,.5);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);}
.re-mm-picker.show{display:flex;animation:reFade .18s;}
.re-mm-picker-box{width:min(440px,92vw);max-height:72vh;display:flex;flex-direction:column;overflow:hidden;border-radius:16px;
  background:linear-gradient(165deg,#141d31,#0d1424);border:1px solid rgba(120,160,220,.24);box-shadow:0 40px 90px -30px #000;}
.re-mm-picker-h{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid rgba(148,163,184,.16);}
.re-mm-picker-h b{font-size:15px;color:#eaf2ff;}
.re-mm-picker-x{width:30px;height:30px;border-radius:9px;border:none;cursor:pointer;color:#9fb0c8;background:rgba(255,255,255,.05);font-size:17px;}
.re-mm-picker-list{overflow-y:auto;padding:10px 12px;display:flex;flex-direction:column;gap:6px;}
.re-mm-picker-item{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:11px;cursor:pointer;text-align:left;
  background:rgba(255,255,255,.03);border:1px solid rgba(148,163,184,.14);transition:background .15s,border-color .15s;}
.re-mm-picker-item:hover{background:rgba(34,211,238,.09);border-color:rgba(34,211,238,.4);}
.re-mm-picker-item .picker-ava{flex:0 0 30px;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;overflow:hidden;
  background:rgba(15,23,42,.5);border:1px solid rgba(148,163,184,.2);}
.re-mm-picker-item .picker-ava img{width:19px;height:19px;object-fit:contain;}
.re-mm-picker-item .picker-name{flex:1 1 auto;font-size:13.5px;color:#e2e8f0;}
.re-mm-picker-item .picker-go{flex:0 0 auto;font-size:18px;color:#5b6b85;}



/* ===== 非对话类模型 SSE 阶段状态（图/视频/语音生成进度） ===== */
.cb-stage-live{margin:8px 0;padding:9px 13px;border:1px solid rgba(0,202,224,.30);border-radius:11px;
  background:linear-gradient(120deg,rgba(0,202,224,.10),rgba(0,202,224,.03));color:#aef0f6;
  font-size:13px;line-height:1.5;display:flex;align-items:center;gap:9px;max-width:560px}
.cb-stage-live::before{content:"";flex:0 0 auto;width:9px;height:9px;border-radius:50%;background:#00cae0;
  box-shadow:0 0 12px #00cae0;animation:cbstagepulse 1.1s ease-in-out infinite}
@keyframes cbstagepulse{0%,100%{opacity:.45;transform:scale(.8)}50%{opacity:1;transform:scale(1.18)}}
