/* ==========================================================================
   agent-dock.css — 全局 AI Agent 右侧栏（复古海报风）
   · fixed 右侧覆盖层：可拖宽、可收起；展开时页面让位左移（--ad-reserve）
   · 底部输入区：上拉调高；引用芯片在上 → 按钮行 → 输入框最下
   · 顶栏 ✦ 打开 Skills 技能管理面板
   ========================================================================== */

:root {
    --ad-w: 380px;
    --ad-reserve: 0px;
    --ad-stroke: #141414;
    --ad-stroke-soft: #826a5c;
    --ad-paper: #faf6ec;
    --ad-card: #f3ecdd;
    --ad-ink: #141414;
    --ad-ink-dim: #6b5c4a;
    --ad-accent: #8c0327;
    --ad-shadow: rgba(20, 20, 20, .88);
}

/* English header labels must fit the existing 280px minimum width. */
#adDock[data-ad-lang="en"]:not(.ad-collapsed) > .ad-head {
    flex-wrap: wrap;
    overflow: visible;
}
#adDock[data-ad-lang="en"]:not(.ad-collapsed) > .ad-head > .ad-head-title {
    flex-basis: 100%;
}
#adDock[data-ad-lang="en"] .ad-canvas-bar { flex-wrap: wrap; }
#adDock[data-ad-lang="en"] .ad-cv-hint { min-width: 0; flex-basis: 100%; white-space: normal; overflow-wrap: anywhere; }
#adDock[data-ad-lang="en"] .ad-picker-head { flex-wrap: wrap; }
#adDock[data-ad-lang="en"] .ad-model-note { white-space: normal; overflow-wrap: anywhere; }
html.studio-theme-dark,
html.theme-dark,
body.studio-theme-dark,
body.theme-dark {
    --ad-stroke: #8a6b45;
    --ad-stroke-soft: #52402a;
    --ad-paper: #221d18;
    --ad-card: #2a241e;
    --ad-ink: #e9e2d6;
    --ad-ink-dim: #b3a893;
    --ad-accent: #ff8f00;
    --ad-shadow: rgba(0, 0, 0, .82);
}

/* ---------------- 页面让位：侧栏展开时内容左移，不被遮盖 ---------------- */
html.ad-open body {
    width: calc((100vw - var(--ad-reserve, 0px)) / var(--studio-ui-scale, 1)) !important;
}
/* 硬编码 100vw 的全屏容器：canvas / smart-canvas 画布壳 */
html.ad-open .shell,
html.ad-open .chat-shell,
html.ad-open .workspace,
html.ad-open .app-shell {
    width: calc(100vw - var(--ad-reserve, 0px)) !important;
    max-width: calc(100vw - var(--ad-reserve, 0px)) !important;
}

/* ---------------- 侧栏本体 ---------------- */
#adDock {
    position: fixed;
    top: 0;
    right: 0;
    height: 100vh;
    width: var(--ad-w);
    z-index: 2147483000;
    display: flex;
    flex-direction: column;
    background: var(--ad-paper);
    border-left: 2px solid var(--ad-stroke);
    box-shadow: -4px 0 0 var(--ad-shadow);
    font-family: 'Inter', 'PingFang SC', 'Microsoft YaHei', sans-serif;
    color: var(--ad-ink);
}
#adDock.ad-collapsed {
    width: 46px;
    box-shadow: -3px 0 0 var(--ad-shadow);
}
#adDock.ad-collapsed .ad-body,
#adDock.ad-collapsed .ad-foot,
#adDock.ad-collapsed .ad-head-title,
#adDock.ad-collapsed .ad-models,
#adDock.ad-collapsed .ad-price-bar,
#adDock.ad-collapsed .ad-canvas-bar,
#adDock.ad-collapsed .ad-conv-bar,
#adDock.ad-collapsed .ad-skills-btn,
#adDock.ad-collapsed .ad-conv-new,
#adDock.ad-collapsed .ad-conv-history-btn { display: none !important; }#adDock.ad-collapsed .ad-head { flex-direction: column; gap: 8px; padding: 10px 4px; }
#adDock.ad-collapsed .ad-rail-label { display: flex !important; }
/* 收起状态下的灰色占位提示（2026-09-18 第 23 批 Item 7）：
   竖排小字，绝对定位吸附在收起栏下方空白处（第 24 批修正定位）。 */
#adDock .ad-rail-hint {
    display: none;
    position: absolute;
    left: 50%;
    bottom: 22px;
    transform: translateX(-50%);
    writing-mode: vertical-rl;
    font-size: 11px;
    letter-spacing: .18em;
    color: var(--ad-ink);
    opacity: .38;
    user-select: none;
    pointer-events: none;
    white-space: nowrap;
    max-height: 60vh;
    overflow: hidden;
}
#adDock.ad-collapsed .ad-rail-hint { display: block; }

/* 拖宽把手：顶部边界上的方形橙色按钮，只有按住它才能拖宽 */
#adDock .ad-resize-grip {
    position: absolute;
    top: 10px;
    left: -13px;
    width: 26px;
    height: 26px;
    /* 2026-09-18 第 21 批 Item 9：把手必须永远在最顶层——
       资产/技能弹层（z-index:9）会盖住它一半，导致拖不动。提到 99。 */
    z-index: 99;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 2px solid var(--ad-stroke);
    border-radius: 7px;
    background: var(--ad-accent);
    color: var(--ad-paper);
    font-size: 13px;
    font-weight: 900;
    line-height: 1;
    cursor: ew-resize;
    box-shadow: 2px 2px 0 var(--ad-shadow);
    user-select: none;
}
html.studio-theme-dark #adDock .ad-resize-grip,
body.studio-theme-dark #adDock .ad-resize-grip { color: #131616; }
#adDock .ad-resize-grip:hover { transform: translate(-1px, -1px); }
#adDock.ad-dragging .ad-resize-grip {
    transform: translate(-1px, -1px);
    box-shadow: 3px 3px 0 var(--ad-shadow);
}
#adDock.ad-collapsed .ad-resize-grip { display: none; }

/* 头部（左内缩让开边界上的拖宽把手，标题不被遮挡）
   2026-09-18 第 24 批 Item 1：顶栏挤了 4 颗按钮（新增对话/历史对话/skill/收起），
   gap 收窄到 6px、按钮 padding 收到 7px，保证侧栏拉到最小宽 280px 时也排得下。 */
#adDock .ad-head {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 10px 12px 10px 28px;
    border-bottom: 2px solid var(--ad-stroke-soft);
    flex: 0 0 auto;
    overflow: hidden;
}
#adDock .ad-head-title {
    font-family: Georgia, 'Songti SC', 'SimSun', serif;
    font-weight: 700;
    font-size: 15px;
    letter-spacing: .06em;
    flex: 1 1 auto;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
#adDock .ad-rail-label {
    display: none;
    writing-mode: vertical-rl;
    font-family: Georgia, serif;
    font-weight: 700;
    font-size: 13px;
    letter-spacing: .2em;
    margin: 4px auto;
    cursor: pointer;
}
#adDock .ad-collapse {
    width: 26px;
    height: 26px;
    flex: 0 0 auto;
    border: 2px solid var(--ad-stroke-soft);
    border-radius: 8px;
    background: var(--ad-card);
    color: var(--ad-ink);
    font-weight: 900;
    cursor: pointer;
    box-shadow: 2px 2px 0 var(--ad-shadow);
}
#adDock .ad-collapse:hover { transform: translate(-1px, -1px); }
#adDock .ad-collapse:active { transform: translate(1px, 1px); box-shadow: none; }
#adDock .ad-skills-btn { font-size: 11px; }
/* 顶栏文字按钮：skill / 新增对话 / 历史对话。
   高度仍取 .ad-collapse 的 26px（与右侧收起按钮严格等高），宽度放开容下中文；
   2026-09-18 第 24 批 Item 1：新增对话/历史对话就在 skill 左侧，名字写全。 */
#adDock .ad-collapse.ad-skills-btn,
#adDock .ad-collapse.ad-skill-add,
#adDock .ad-collapse.ad-conv-new,
#adDock .ad-collapse.ad-conv-history-btn{
    width: auto; min-width: 26px; padding: 0 7px;
    font-size: 11px; font-weight: 800; letter-spacing: 0;
    white-space: nowrap; line-height: 1;
}

/* 模型行：中转站 + 文本模型 */
#adDock .ad-models {
    display: flex;
    gap: 6px;
    padding: 8px 12px;
    border-bottom: 2px solid var(--ad-stroke-soft);
    flex: 0 0 auto;
}
#adDock .ad-models select {
    flex: 1 1 0;
    min-width: 0;
    height: 30px;
    border: 2px solid var(--ad-stroke-soft);
    border-radius: 8px;
    background: var(--ad-card);
    color: var(--ad-ink);
    font-size: 12px;
    font-weight: 700;
    padding: 0 6px;
    cursor: pointer;
}
#adDock .ad-models select:focus { outline: 2px solid var(--ad-accent); }
/* 画布模式开关 */
#adDock .ad-canvas-toggle {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    height: 30px;
    padding: 0 8px;
    border: 2px solid var(--ad-stroke-soft);
    border-radius: 8px;
    background: var(--ad-card);
    font-size: 12px;
    font-weight: 800;
    cursor: pointer;
    user-select: none;
}
#adDock .ad-canvas-toggle:has(input:checked) {
    background: var(--ad-accent);
    color: var(--ad-paper);
    border-color: var(--ad-stroke);
}
html.studio-theme-dark #adDock .ad-canvas-toggle:has(input:checked),
body.studio-theme-dark #adDock .ad-canvas-toggle:has(input:checked) { color: #131616; }
/* 画布开关文案随状态切换（启用 Agent / 关闭 Agent），不换行 */
#adDock .ad-canvas-toggle { white-space: nowrap; }
#adDock .ad-canvas-toggle input { display: none; }

/* ---------------- 文本模型：两行式下拉（2026-09-18 第 21 批 Item 5）---------------- */
#adDock .ad-chat-model-box { flex: 1 1 0; min-width: 0; position: relative; }
#adDock .ad-chat-model-btn {
    width: 100%;
    height: 30px;
    border: 2px solid var(--ad-stroke-soft);
    border-radius: 8px;
    background: var(--ad-card);
    color: var(--ad-ink);
    font-size: 12px;
    font-weight: 700;
    padding: 0 8px;
    cursor: pointer;
    text-align: left;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
#adDock .ad-chat-model-btn:hover { border-color: var(--ad-accent); }
#adDock .ad-chat-model-price,
#adDock .ad-model-price {
    font-size: 10.5px;
    font-weight: 500;
    line-height: 1.5;
    color: var(--ad-ink-dim, var(--ad-ink));
    white-space: normal;
    overflow-wrap: anywhere;
    letter-spacing: 0;
}
#adDock .ad-chat-model-price { margin-top: 4px; }
#adDock .ad-chat-model-price[hidden] { display: none; }
#adDock .ad-model-option:has(.ad-model-price) { flex-wrap: wrap; row-gap: 4px; }
#adDock .ad-model-option:has(.ad-model-price) .ad-model-name { order: 1; flex-basis: 100%; }
#adDock .ad-model-price { order: 2; flex: 1 1 100%; min-width: 0; }
#adDock .ad-chat-model-pop {
    display: none;
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    width: max-content;
    min-width: 0;
    max-width: min(440px, calc(var(--ad-w) - 28px), calc(100vw - 60px));
    z-index: 20;
    max-height: 300px;
    overflow-y: auto;
    overflow-x: hidden;
    background: var(--ad-paper);
    border: 2px solid var(--ad-stroke);
    border-radius: 10px;
    box-shadow: 4px 4px 0 var(--ad-shadow);
    padding: 4px;
    scrollbar-width: thin;
}
#adDock .ad-chat-model-pop.ad-open { display: block; }
#adDock .ad-chat-model-pop:has(.ad-model-price) {
    width: max-content;
}
/* ---------------- 文本模型两级弹窗（2026-09-18 第 24 批 Item 2 重做）----------------
   第一级 = 类目（图标 + 类目名 + 该级模型数），第二级 = 类目下模型名 + 能力标签。 */
#adDock .ad-mpop-head {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 2px 2px 6px;
    border-bottom: 1px solid var(--ad-stroke-soft);
    margin-bottom: 4px;
}
#adDock .ad-mpop-title { font-size: 10.5px; font-weight: 800; opacity: .6; letter-spacing: .06em; }
#adDock .ad-mpop-back {
    width: 22px; height: 22px; flex: 0 0 auto;
    display: flex; align-items: center; justify-content: center;
    border: 1px solid var(--ad-stroke-soft);
    border-radius: 7px;
    background: var(--ad-card);
    color: var(--ad-ink);
    font-size: 14px; font-weight: 900; line-height: 1;
    cursor: pointer;
}
#adDock .ad-mpop-back:hover { border-color: var(--ad-accent); }
#adDock .ad-mpop-cat {
    display: inline-flex; align-items: center; gap: 5px;
    font-size: 11px; font-weight: 800;
}
#adDock .ad-mpop-cat svg { width: 14px; height: 14px; }
#adDock .ad-mpop-cat i { font-style: normal; }
#adDock .ad-mpop-body { display: flex; flex-direction: column; gap: 2px; }
#adDock .ad-mpop-empty { padding: 12px 10px; font-size: 12px; opacity: .6; }

/* 第一级·类目行 */
#adDock .ad-cat-option {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 8px 9px;
    border: 2px solid transparent;
    border-radius: 9px;
    background: transparent;
    color: var(--ad-ink);
    cursor: pointer;
    text-align: left;
}
#adDock .ad-cat-option:hover { background: var(--ad-card); }
#adDock .ad-cat-option.ad-on { border-color: var(--ad-accent); background: var(--ad-card); }
#adDock .ad-cat-icon {
    flex: 0 0 auto;
    width: 30px; height: 30px;
    display: flex; align-items: center; justify-content: center;
    border: 2px solid var(--ad-stroke-soft);
    border-radius: 9px;
    background: var(--ad-card);
}
#adDock .ad-cat-icon svg { width: 16px; height: 16px; }
#adDock .ad-cat-name { flex: 0 0 auto; font-size: 12.5px; font-weight: 800; }
#adDock .ad-cat-meta {
    flex: 1 1 auto; min-width: 0;
    font-size: 10px; font-weight: 700; opacity: .55;
    text-align: right;
    margin-left: 12px;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
#adDock .ad-cat-arrow { flex: 0 0 auto; font-size: 14px; font-weight: 900; opacity: .5; }

/* 第二级·模型行：名称 + 能力标签 */
#adDock .ad-model-option {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 9px;
    border: 2px solid transparent;
    border-radius: 9px;
    background: transparent;
    color: var(--ad-ink);
    cursor: pointer;
    text-align: left;
}
#adDock .ad-model-option:hover { background: var(--ad-card); }
#adDock .ad-model-option.ad-on { border-color: var(--ad-accent); background: var(--ad-card); }
#adDock .ad-model-name {
    flex: 1 1 auto; min-width: 0;
    font-size: 12.5px; font-weight: 800; line-height: 1.35;
    white-space: normal; word-break: break-word;
}
#adDock .ad-model-tag {
    flex: 0 0 auto;
    font-size: 10px;
    font-weight: 800;
    line-height: 1;
    padding: 3px 7px;
    border-radius: 999px;
    border: 1px solid var(--ad-stroke-soft);
    background: var(--ad-card);
    color: var(--ad-ink);
    opacity: .85;
}
#adDock .ad-model-tag.plain { opacity: .5; }
/* 模型备注（第 28 批 2026-09-19）：模型名下方的圆角矩形解释说明。
   弹窗模型行原为单行 flex（名称 + 标签），有备注时改为两行：第一行名称+标签，第二行备注占满。 */
#adDock .ad-model-note {
    flex: 1 0 100%;
    order: 3;
    box-sizing: border-box;
    padding: 4px 8px;
    border-radius: 8px;
    font-size: 10.5px;
    font-weight: 500;
    line-height: 1.5;
    color: var(--ad-ink-dim, var(--ad-ink));
    opacity: .85;
    background: var(--ad-card);
    border: 1px solid var(--ad-stroke-soft);
    white-space: normal;
    word-break: break-all;
}
#adDock .ad-model-option:has(.ad-model-note) { flex-wrap: wrap; row-gap: 4px; }
#adDock .ad-model-option:has(.ad-model-note) .ad-model-name { flex: 1 1 auto; order: 1; }
#adDock .ad-model-option:has(.ad-model-note) .ad-model-tag { order: 2; }

/* ---------------- 当前模型价格条（2026-09-18 第 21 批 Item 4）---------------- */
#adDock .ad-price-bar {
    padding: 4px 12px 6px;
    border-bottom: 2px solid var(--ad-stroke-soft);
    font-size: 11px;
    font-weight: 700;
    opacity: .85;
    flex: 0 0 auto;
}
#adDock .ad-price-num { color: var(--ad-accent); font-weight: 900; }

/* 按钮内联 SVG（引用软件内文件等图标）尺寸 */
#adDock .ad-btn .ad-svg { width: 17px; height: 17px; }
#adDock .ad-empty-icon .ad-svg { width: 13px; height: 13px; vertical-align: -2px; }

/* 画布工具条：撤销 / 重做（仅在画布模式打开时出现）
   2026-09-18 第 21 批 Item 3：上下留白、按钮垂直居中；右侧说明两行右对齐。 */
#adDock .ad-canvas-bar {
    display: none;
    align-items: center;
    gap: 6px;
    padding: 8px 12px;
    border-bottom: 2px solid var(--ad-stroke-soft);
    flex: 0 0 auto;
}
#adDock.ad-canvas-on .ad-canvas-bar { display: flex; }
#adDock.ad-collapsed .ad-canvas-bar { display: none !important; }
#adDock .ad-cv-btn {
    height: 28px;
    padding: 0 10px;
    border: 2px solid var(--ad-stroke-soft);
    border-radius: 8px;
    background: var(--ad-card);
    color: var(--ad-ink);
    font-size: 12px;
    font-weight: 800;
    cursor: pointer;
    white-space: nowrap;
    box-shadow: 2px 2px 0 var(--ad-shadow);
}
#adDock .ad-cv-btn:hover { transform: translate(-1px, -1px); }
#adDock .ad-cv-btn:active { transform: translate(1px, 1px); box-shadow: none; }
#adDock .ad-cv-btn[disabled] { opacity: .45; cursor: wait; transform: none; }
#adDock .ad-cv-hint {
    margin-left: auto;
    font-size: 10.5px;
    line-height: 1.5;
    opacity: .65;
    text-align: right;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* 执行结果气泡里的"撤回本轮" */
#adDock .ad-undo-row { margin-top: 8px; }
#adDock .ad-undo-round {
    width: 100%;
    height: 30px;
    border: 2px dashed var(--ad-stroke-soft);
    border-radius: 8px;
    background: transparent;
    color: var(--ad-ink);
    font-size: 12px;
    font-weight: 800;
    cursor: pointer;
}
#adDock .ad-undo-round:hover { border-style: solid; background: var(--ad-accent); color: var(--ad-paper); }
html.studio-theme-dark #adDock .ad-undo-round:hover,
body.studio-theme-dark #adDock .ad-undo-round:hover { color: #131616; }
#adDock .ad-undo-round[disabled] { opacity: .6; cursor: default; border-style: solid; }
#adDock .ad-undo-round[disabled]:hover { background: transparent; color: var(--ad-ink); }

/* 消息区 */
#adDock .ad-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 12px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    scrollbar-width: thin;
}
#adDock .ad-msg {
    max-width: 92%;
    padding: 9px 11px;
    border: 2px solid var(--ad-stroke-soft);
    border-radius: 10px;
    font-size: 13px;
    line-height: 1.6;
    white-space: pre-wrap;
    word-break: break-word;
    background: var(--ad-card);
    box-shadow: 2px 2px 0 var(--ad-shadow);
}
#adDock .ad-msg.ad-user {
    align-self: flex-end;
    background: var(--ad-stroke);
    color: var(--ad-paper);
}
html.studio-theme-dark #adDock .ad-msg.ad-user,
body.studio-theme-dark #adDock .ad-msg.ad-user {
    background: #3d2c14;
    color: #f5ead6;
}
#adDock .ad-msg.ad-assistant { align-self: flex-start; }
#adDock .ad-msg.ad-error {
    align-self: flex-start;
    border-color: #d40014;
    color: #d40014;
    background: var(--ad-card);
}
#adDock .ad-msg .ad-tag {
    display: inline-block;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--ad-accent);
    margin-bottom: 4px;
}
#adDock .ad-imgs { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
#adDock .ad-imgs img {
    max-width: 100%;
    max-height: 220px;
    border: 2px solid var(--ad-stroke-soft);
    border-radius: 8px;
    cursor: zoom-in;
}
#adDock .ad-refs { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
#adDock .ad-refs span {
    font-size: 11px;
    border: 1px solid var(--ad-stroke-soft);
    border-radius: 6px;
    padding: 1px 6px;
    opacity: .8;
}
#adDock .ad-empty {
    margin: auto;
    text-align: center;
    font-size: 12px;
    opacity: .6;
    line-height: 2;
}

/* ---------------- 底部输入区：可上拉，输入框在最下 ---------------- */
#adDock .ad-foot {
    flex: 0 0 auto;
    border-top: 2px solid var(--ad-stroke-soft);
    padding: 6px 12px 10px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-height: 120px;
    position: relative;
}
#adDock .ad-foot-resizer {
    position: absolute;
    top: -4px;
    left: 0;
    width: 100%;
    height: 9px;
    cursor: ns-resize;
    z-index: 4;
}
#adDock .ad-foot-resizer:hover { background: var(--ad-accent); opacity: .45; }
/* 引用芯片：一行横排大图卡片（2026-09-18 第 21 批 Item 8）。
   旧的「3 行网格 + 左小图右文件名」缩略图只有 34px 看不清；
   改成图上文下的卡片（参考资产选择面板的布局），一行横向滚动。 */
#adDock .ad-pending {
    display: flex;
    flex-direction: row;
    gap: 8px;
    order: 1;
    overflow-x: auto;
    overflow-y: hidden;
    max-height: 132px;
    scrollbar-width: thin;
    padding-bottom: 2px;
}
#adDock .ad-pending:empty { display: none; }
/* 有引用文件时，输入区保底高度，按钮/输入框不被挤出 */
#adDock .ad-foot:has(.ad-chip) { min-height: 250px; }
#adDock .ad-chip {
    position: relative;
    flex: 0 0 auto;
    width: 104px;
    display: flex;
    flex-direction: column;
    gap: 3px;
    border: 2px solid var(--ad-stroke-soft);
    border-radius: 8px;
    background: var(--ad-card);
    padding: 3px;
}
#adDock .ad-chip-thumb { width: 100%; height: 66px; border-radius: 5px; overflow: hidden; background: #000; }
#adDock .ad-chip img,
#adDock .ad-chip video {
    width: 100%;
    height: 66px;
    object-fit: cover;
    display: block;
}
#adDock .ad-chip-icon {
    width: 100%;
    height: 66px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--ad-paper);
    font-size: 20px;
}
#adDock .ad-chip b {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 10px;
    font-weight: 700;
    padding: 0 2px 1px;
}
#adDock .ad-chip i {
    position: absolute;
    right: 5px;
    top: 5px;
    width: 17px;
    height: 17px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: rgba(15, 18, 24, .66);
    font-style: normal;
    cursor: pointer;
    font-weight: 900;
    color: #fff;
    line-height: 1;
}
#adDock .ad-chip i:hover { background: #d40014; }
/* 序号徽章（2026-09-18 第 21 批 Item 9）：左上角悬浮圆标，与输入框 @N 对应 */
#adDock .ad-chip-num {
    position: absolute;
    left: 4px;
    top: 4px;
    min-width: 17px;
    height: 17px;
    padding: 0 4px;
    border-radius: 999px;
    background: var(--ad-accent);
    color: #fff;
    font-size: 10px;
    font-weight: 900;
    line-height: 17px;
    text-align: center;
    box-shadow: 0 2px 6px rgba(0,0,0,.35);
    z-index: 2;
}
html.studio-theme-dark #adDock .ad-chip-num,
body.studio-theme-dark #adDock .ad-chip-num { color: #131616; }
/* @提及选择弹层（输入 @ 时出现） */
#adDock .ad-at-mention {
    position: absolute;
    left: 12px;
    right: 12px;
    bottom: calc(100% + 4px);
    z-index: 30;
    max-height: 180px;
    overflow-y: auto;
    background: var(--ad-paper);
    border: 2px solid var(--ad-stroke);
    border-radius: 10px;
    box-shadow: 4px 4px 0 var(--ad-shadow);
    padding: 4px;
    scrollbar-width: thin;
}
#adDock .ad-at-mention button {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 8px;
    border: 0;
    border-radius: 7px;
    background: transparent;
    color: var(--ad-ink);
    cursor: pointer;
    font-size: 11.5px;
    font-weight: 700;
    text-align: left;
}
#adDock .ad-at-mention button:hover { background: var(--ad-card); }
#adDock .ad-at-mention img { width: 30px; height: 30px; object-fit: cover; border-radius: 5px; flex: 0 0 auto; }
#adDock .ad-at-mention .ad-at-icon {
    width: 30px; height: 30px; display: flex; align-items: center; justify-content: center;
    background: var(--ad-card); border-radius: 5px; flex: 0 0 auto;
}
#adDock .ad-at-mention b { flex: 0 0 auto; color: var(--ad-accent); }
#adDock .ad-at-mention span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* 用户消息气泡里 @N 高亮 */
#adDock .ad-msg b.ad-at-ref { color: var(--ad-accent); }
#adDock .ad-refs span b { color: inherit; }
/* 空状态图标与文字行内对齐（2026-09-18 第 21 批 Item 8） */
#adDock .ad-empty-icon { display: inline-flex; align-items: center; vertical-align: -3px; margin: 0 1px; }
#adDock .ad-empty-icon .ad-svg { width: 14px; height: 14px; }
#adDock .ad-btn-row {
    order: 2;
    display: flex;
    gap: 6px;
    justify-content: flex-start;
    align-items: center;
}
#adDock .ad-input {
    order: 3;
    flex: 1 1 auto;
    min-height: 54px;
    width: 100%;
    resize: none;
    border: 2px solid var(--ad-stroke-soft);
    border-radius: 10px;
    background: var(--ad-card);
    color: var(--ad-ink);
    font-size: 13px;
    line-height: 1.55;
    padding: 9px 10px;
    font-family: inherit;
}
/* 引用/面板/提及弹层里的图片一律禁用原生拖拽（2026-09-18 第 22 批 Item 1）：
   原生图片拖拽期间 dragover 以约 60 次/秒打进画布全局处理器（elementFromPoint +
   全量遍历 .minimax-smart-node 节点求包围盒），节点一多页面立刻冻死。
   侧栏里没有「拖图片去别处」的场景，全部禁掉毫无副作用。 */
#adDock img,
#adDock video {
    -webkit-user-drag: none;
    user-select: none;
}

#adDock .ad-input:focus { outline: 2px solid var(--ad-accent); }
/* 富文本输入（contenteditable）适配 */
#adDock .ad-input { overflow-y: auto; }
#adDock .ad-input:empty::before {
    content: attr(data-placeholder);
    color: var(--ad-ink);
    opacity: .42;
    pointer-events: none;
}
/* @N 标签：蓝框胶囊，整体插入/整体删除（contenteditable=false） */
#adDock .ad-at-token {
    display: inline-block;
    padding: 1px 7px;
    margin: 0 1px;
    border: 2px solid var(--ad-accent);
    border-radius: 999px;
    background: color-mix(in srgb, var(--ad-accent) 14%, transparent);
    color: var(--ad-accent);
    font-size: 11.5px;
    font-weight: 900;
    line-height: 1.4;
    vertical-align: baseline;
    user-select: all;
}
#adDock .ad-at-mention button.ad-active { background: var(--ad-card); border-color: var(--ad-accent); }
#adDock .ad-at-mention button { border: 2px solid transparent; }

/* 历史对话面板（2026-09-18 第 21 批 Item 8） */
#adDock .ad-conv-panel {
    position: absolute;
    inset: 0;
    z-index: 9;
    background: var(--ad-paper);
    display: none;
    flex-direction: column;
}
#adDock .ad-conv-panel.ad-open { display: flex; }
#adDock .ad-conv-list {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 10px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
#adDock .ad-conv-item {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding: 8px 34px 8px 10px;   /* 右侧留出删除按钮的位置 */
    border: 2px solid var(--ad-stroke-soft);
    border-radius: 10px;
    background: var(--ad-card);
    color: var(--ad-ink);
    cursor: pointer;
    text-align: left;
}
#adDock .ad-conv-item:hover { border-color: var(--ad-accent); }
#adDock .ad-conv-preview { font-size: 12px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#adDock .ad-conv-when { font-size: 10.5px; opacity: .55; }
/* 历史对话删除按钮（2026-09-19 第 29 批）：每条右上角，悬停变红 */
#adDock .ad-conv-del {
    position: absolute;
    top: 5px;
    right: 5px;
    width: 22px;
    height: 22px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 1px solid transparent;
    border-radius: 7px;
    background: transparent;
    color: var(--ad-ink-dim, var(--ad-ink));
    font-size: 14px;
    font-weight: 700;
    line-height: 1;
    opacity: .45;
    cursor: pointer;
    transition: opacity .15s ease, background .15s ease, color .15s ease, border-color .15s ease;
}
#adDock .ad-conv-item:hover .ad-conv-del { opacity: .8; }
#adDock .ad-conv-del:hover {
    opacity: 1;
    color: #fff;
    background: #d1453b;
    border-color: #d1453b;
}
#adDock .ad-btn {
    flex: 0 0 auto;
    width: 38px;
    height: 38px;
    border: 2px solid var(--ad-stroke-soft);
    border-radius: 10px;
    background: var(--ad-card);
    color: var(--ad-ink);
    font-size: 15px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 2px 2px 0 var(--ad-shadow);
}
#adDock .ad-btn:hover { transform: translate(-1px, -1px); }
#adDock .ad-btn:active { transform: translate(1px, 1px); box-shadow: none; }
#adDock .ad-btn.ad-send {
    margin-left: auto;
    background: var(--ad-accent);
    border-color: var(--ad-stroke);
    color: var(--ad-paper);
    font-weight: 900;
}
#adDock .ad-stop-icon {
    width: 14px;
    height: 14px;
    flex: 0 0 14px;
    border-radius: 2px;
    background: currentColor;
}
html.studio-theme-dark #adDock .ad-btn.ad-send,
body.studio-theme-dark #adDock .ad-btn.ad-send { color: #131616; }
#adDock .ad-btn[disabled] { opacity: .45; cursor: wait; }

/* ---------------- 资产 / 技能 弹层 ---------------- */
#adDock .ad-picker,
#adDock .ad-skills {
    position: absolute;
    inset: 0;
    z-index: 9;
    background: var(--ad-paper);
    display: none;
    flex-direction: column;
}
#adDock .ad-picker.ad-open,
#adDock .ad-skills.ad-open { display: flex; }
#adDock .ad-picker-head {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 12px;
    border-bottom: 2px solid var(--ad-stroke-soft);
    flex: 0 0 auto;
}
#adDock .ad-picker-head .ad-head-title { flex: 1 1 auto; }
#adDock .ad-picker-tabs { display: flex; gap: 6px; flex: 1 1 auto; }
#adDock .ad-picker-tabs button {
    border: 2px solid var(--ad-stroke-soft);
    border-radius: 8px;
    background: var(--ad-card);
    color: var(--ad-ink);
    font-size: 12px;
    font-weight: 800;
    padding: 4px 10px;
    cursor: pointer;
}
#adDock .ad-picker-tabs button.ad-on {
    background: var(--ad-accent);
    color: var(--ad-paper);
    border-color: var(--ad-stroke);
}
html.studio-theme-dark #adDock .ad-picker-tabs button.ad-on,
body.studio-theme-dark #adDock .ad-picker-tabs button.ad-on { color: #131616; }
#adDock .ad-picker-grid {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 10px;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(96px, 1fr));
    gap: 8px;
    align-content: start;
}
#adDock .ad-picker-grid button {
    border: 2px solid var(--ad-stroke-soft);
    border-radius: 8px;
    background: var(--ad-card);
    padding: 4px;
    cursor: pointer;
    display: flex;
    flex-direction: column;
    gap: 4px;
    align-items: center;
}
#adDock .ad-picker-grid button:hover { border-color: var(--ad-accent); }
#adDock .ad-picker-grid img {
    width: 100%;
    height: 72px;
    object-fit: cover;
    border-radius: 5px;
}
#adDock .ad-picker-grid .ad-pk-icon {
    width: 100%;
    height: 72px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 26px;
}
#adDock .ad-picker-grid span {
    font-size: 10px;
    width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-align: center;
}

/* 技能卡片 */
#adDock .ad-skill-list {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 10px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
#adDock .ad-skill-card {
    border: 2px solid var(--ad-stroke-soft);
    border-radius: 10px;
    background: var(--ad-card);
    padding: 8px;
    box-shadow: 2px 2px 0 var(--ad-shadow);
    display: flex;
    flex-direction: column;
    gap: 6px;
}
#adDock .ad-skill-card.ad-on { border-color: var(--ad-accent); }
#adDock .ad-skill-row { display: flex; align-items: center; gap: 6px; }
#adDock .ad-skill-name {
    flex: 1 1 auto;
    min-width: 0;
    height: 28px;
    border: 2px solid var(--ad-stroke-soft);
    border-radius: 8px;
    background: var(--ad-paper);
    color: var(--ad-ink);
    font-size: 12px;
    font-weight: 800;
    padding: 0 8px;
}
#adDock .ad-skill-toggle {
    flex: 0 0 auto;
    height: 28px;
    padding: 0 10px;
    border: 2px solid var(--ad-stroke-soft);
    border-radius: 8px;
    background: var(--ad-paper);
    color: var(--ad-ink);
    font-size: 12px;
    font-weight: 900;
    cursor: pointer;
}
#adDock .ad-skill-card.ad-on .ad-skill-toggle {
    background: var(--ad-accent);
    color: var(--ad-paper);
    border-color: var(--ad-stroke);
}
html.studio-theme-dark #adDock .ad-skill-card.ad-on .ad-skill-toggle,
body.studio-theme-dark #adDock .ad-skill-card.ad-on .ad-skill-toggle { color: #131616; }
#adDock .ad-skill-del {
    flex: 0 0 auto;
    width: 28px;
    height: 28px;
    border: 2px solid #d40014;
    border-radius: 8px;
    background: transparent;
    color: #d40014;
    font-weight: 900;
    cursor: pointer;
}
#adDock .ad-skill-text {
    min-height: 64px;
    resize: vertical;
    border: 2px solid var(--ad-stroke-soft);
    border-radius: 8px;
    background: var(--ad-paper);
    color: var(--ad-ink);
    font-size: 12px;
    line-height: 1.55;
    padding: 6px 8px;
    font-family: inherit;
}

/* 图片放大 */
#adDock .ad-lightbox {
    position: fixed;
    inset: 0;
    z-index: 2147483001;
    background: rgba(10, 8, 6, .82);
    display: none;
    align-items: center;
    justify-content: center;
    cursor: zoom-out;
}
#adDock .ad-lightbox.ad-open { display: flex; }
#adDock .ad-lightbox img {
    max-width: 92vw;
    max-height: 92vh;
    border: 3px solid var(--ad-stroke-soft);
    border-radius: 10px;
    box-shadow: 6px 6px 0 var(--ad-shadow);
}

/* ---------------- 方形品牌 LOGO（index.html 顶栏） ---------------- */
.logo-ring.logo-square {
    width: auto !important;
    height: 30px !important;
    min-width: 30px;
    border-radius: 8px !important;
    padding: 0 8px !important;
    background: #141414 !important;
    border: 2px solid var(--ad-accent) !important;
    box-shadow: 2px 2px 0 var(--ad-shadow);
}
.logo-ring.logo-square .logo-text {
    font-family: Georgia, 'Songti SC', 'SimSun', serif;
    font-weight: 700;
    font-size: 12px;
    letter-spacing: .04em;
    color: var(--ad-accent);
    white-space: nowrap;
}
.logo-ring.logo-square:hover,
.logo-ring.logo-square:focus-visible,
.sidebar:hover .logo-ring.logo-square {
    transform: none !important;
    border-radius: 8px !important;
}
.logo-ring.logo-square:active,
.sidebar:hover .logo-ring.logo-square:active { transform: none !important; }

/* 窄屏兜底 */
@media (max-width: 640px) {
    #adDock { --ad-w: 88vw; }
}

/* kirin: 拖拽调宽时禁止 iframe 抢焦点（2026-10-20） */
body.ad-resizing iframe{pointer-events:none !important;}
body.ad-resizing{-webkit-user-select:none;user-select:none;}
