/* Equal clipboard cells and equal touch targets in the two bottom action rows. */
.composer .composerClipboard{display:grid!important;grid-template-columns:repeat(6,minmax(0,1fr))!important;gap:5px!important;padding:7px 0!important;align-items:stretch!important}
.composer .composerClipboard>button,.composer .composerClipboard #latest{position:static!important;display:flex!important;align-items:center!important;justify-content:center!important;min-width:0!important;width:100%!important;height:36px!important;min-height:36px!important;max-height:36px!important;padding:4px 2px!important;margin:0!important;border:1px solid var(--line)!important;border-radius:9px!important;background:var(--soft)!important;box-shadow:0 1px 2px #10271b06!important;font-size:11px!important;line-height:1.2!important;white-space:nowrap!important;flex:none!important}
.composer .composerClipboard #latest{color:var(--accent)!important;font-size:10px!important}
.composer .composerActions{display:grid!important;grid-template-columns:36px minmax(0,1fr) 36px 36px 36px!important;align-items:center!important;gap:6px!important;min-width:0;padding-top:9px!important}
.composer .composerActions>.grow,.composer .composerActions>#draftCopy{display:none!important}
.composer .composerActions>button{box-sizing:border-box!important;display:flex!important;align-items:center!important;justify-content:center!important;width:36px!important;height:36px!important;min-height:36px!important;min-width:36px!important;margin:0!important;padding:5px!important;border:1px solid var(--line)!important;border-radius:10px!important;background:var(--soft)!important}
#app .composer .composerActions>#send{box-sizing:border-box!important;width:36px!important;min-width:36px!important;height:36px!important;min-height:36px!important;max-width:36px!important;max-height:36px!important;color:var(--bg)!important;background:var(--ink)!important;border-color:var(--ink)!important;border-radius:10px!important}
.composerModelGroup{display:grid;grid-template-columns:minmax(0,1fr) 48px;align-items:stretch;min-width:0;height:36px;border:1px solid var(--line);border-radius:10px;background:var(--soft);overflow:hidden}
.composerModelGroup #modelChip{display:block!important;min-width:0!important;max-width:none!important;width:100%!important;height:34px!important;min-height:34px!important;margin:0!important;padding:5px 7px!important;border:0!important;border-radius:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;background:transparent!important;font-size:11px!important;text-align:left}
.composerModelGroup #composerMode{display:flex;align-items:center;justify-content:center;min-width:0;height:34px;margin:0;padding:4px;border:0;border-left:1px solid var(--line);border-radius:0;background:transparent;font-size:11px;font-weight:650;color:var(--accent)}
.composerModelGroup #composerMode:disabled{opacity:.6;cursor:default;color:var(--muted)}.composerModelGroup #composerMode[data-mode=deep]:not(:disabled){background:var(--accent-soft)}
.composerModeOption{display:flex;flex-direction:column;gap:5px;width:100%;margin:8px 0;padding:14px;border:1px solid var(--line);border-radius:14px;text-align:left;background:var(--soft)}.composerModeOption.selected{border-color:var(--accent);background:var(--accent-soft)}.composerModeOption small{font-size:12px;font-weight:400;color:var(--muted)}
.taskControlBar .needsAction{position:relative;border-color:var(--accent)!important;background:var(--accent-soft)!important;color:var(--accent)!important;font-weight:650;animation:taskActionNudge 1.8s ease-in-out infinite}
@keyframes taskActionNudge{0%,100%{box-shadow:0 0 0 0 transparent;transform:translateY(0)}50%{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent);transform:translateY(-1px)}}
@media(prefers-reduced-motion:reduce){.taskControlBar .needsAction{animation:none!important}}
@media(min-width:700px){.composer .composerClipboard>button,.composer .composerClipboard #latest{font-size:12px!important}.composerModelGroup #modelChip{font-size:12px!important}.composerModelGroup{grid-template-columns:minmax(0,1fr) 62px}}

/* UX polish 2026-10-30：可回滚，原文件备份在 backups/ux-20261030/ */
/* 1. 修复：.taskControlBar 的 display:grid!important 覆盖了 hidden 属性，已完成任务仍显示“启动/释放/暂停/停止/继续”。 */
.taskControlBar[hidden],.taskControlNote[hidden]{display:none!important}
/* 2. 可读性：9–10px 的说明文字统一不小于 11px，并跟随“文字大小”设置。 */
#referenceLimitNote,.referenceLimitNote,.footnote,.taskTimingPanel span,.taskTimingPanel .compactFactCaption,.outputParameterBlock span,.outputParameterBlock .compactFactCaption,.taskState span,#modelTop small,.taskListCard small,.taskStatus{font-size:calc(11px * var(--text-scale,1))!important}
/* 3. 触控：结果与任务操作按钮最小高度 34px、字号 12px，减少误触。 */
.taskActionGrid>button,.outputActionGrid>button,.taskControlBar>button{min-height:34px!important;font-size:calc(12px * var(--text-scale,1))!important}
/* 4. 任务中心：失败状态与失败原因。 */
.taskStatus[data-state=error]{background:#fdecea;color:#b42318}

.taskCardError{display:block;margin-top:4px;color:#b42318;font-size:calc(12px * var(--text-scale,1));line-height:1.45;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal}
body.theme-dark .taskStatus[data-state=error]{background:#3a1f1c;color:#ffb4a8}
body.theme-dark .taskCardError{color:#ffb4a8}

/* Both action rows share the same outer edges; the jump is an inline cell. */
.composer .composerClipboard,.composer .composerActions{box-sizing:border-box!important;width:100%!important;margin:0!important;border:0!important;padding-left:0!important;padding-right:0!important;background:transparent!important;border-radius:0!important;align-self:stretch!important}
.composer .composerClipboard>button,.composer .composerClipboard #latest{box-sizing:border-box!important;transform:none!important;left:auto!important;bottom:auto!important;gap:2px!important;overflow:hidden!important;font-size:calc(11px * var(--text-scale,1))!important}
.composer .composerClipboard #latest{font-size:calc(10px * var(--text-scale,1))!important;letter-spacing:0!important;gap:1px!important}
.composerJumpArrow{flex:none;line-height:1!important}
.taskStatus[data-state=queued]{background:#fff3d6!important;color:#8a5300!important}
.taskStatus[data-state=running],.taskStatus[data-state=processing]{background:#e7efff!important;color:#2459a6!important}
.taskStatus[data-state=done]{background:#e4f5eb!important;color:#17683d!important}
.taskStatus[data-state=paused]{background:#f0eaff!important;color:#6a3fa0!important}
.taskStatus[data-state=cancelled]{background:var(--soft)!important;color:var(--muted)!important}
body.theme-dark .taskStatus[data-state=queued]{background:#423018!important;color:#ffd28b!important}
body.theme-dark .taskStatus[data-state=running],body.theme-dark .taskStatus[data-state=processing]{background:#1d304e!important;color:#a9c9ff!important}
body.theme-dark .taskStatus[data-state=done]{background:#163b2a!important;color:#9de1ba!important}
body.theme-dark .taskStatus[data-state=paused]{background:#342546!important;color:#d4b8ff!important}
/* Vertical swipes over media and short nested text continue into the library. */
.assetLibraryCard,.assetLibraryCard .libraryPreview,.assetLibraryCard .audioPlayer,.assetLibraryCard .videoPlayer,.assetLibraryCard video,.assetLibraryCard .audioSeek{touch-action:pan-y!important}
.assetLibraryCard .libraryPromptText{overscroll-behavior-y:auto!important}

.composer .promptSurface{padding-left:0!important;padding-right:0!important}
.composer .composerClipboard{grid-template-columns:repeat(5,minmax(0,1fr)) minmax(0,1.2fr)!important}
