/* 知视工作台 · 统一设计令牌与交互打磨。最后加载，只做增量覆盖，不改变既有布局。 */
:root{
  --surface:#fff;--surface-2:#fafaf8;--surface-3:#eef1eb;--soft-2:#fff9df;
  --text-quiet:#5c6158;
  --radius-sm:6px;--radius-md:10px;--radius-lg:16px;
  --shadow-1:0 1px 2px rgba(23,23,23,.06),0 1px 1px rgba(23,23,23,.04);
  --shadow-2:0 10px 30px rgba(23,23,23,.12),0 2px 6px rgba(23,23,23,.06);
  --ok:#2f7d4f;--warn:#a86a00;--bad:#b3392f;
  --tint-bad:#fbebe8;--tint-warn:#fff2e8;--tint-ok:#e8f0e8;--tint-info:#eaf0f8;--on-brand:#171717;
  --ease:cubic-bezier(.2,.7,.2,1);
}
html[data-theme=dark]{
  color-scheme:dark;
  --ink:#ededea;--muted:#a9a9a2;--text-quiet:#b4b4ad;--paper:#141416;--side:#1b1b1e;--line:#33333a;
  --green:#f0cf45;--soft:#2c2813;--soft-2:#26230f;--red:#ff8f85;
  --surface:#1b1b1f;--surface-2:#212126;--surface-3:#2a2a31;
  --shadow-1:0 1px 2px rgba(0,0,0,.4);--shadow-2:0 12px 32px rgba(0,0,0,.55);
  --ok:#6fcf97;--warn:#f2c14e;--bad:#ff8f85;
  --tint-bad:#3b2220;--tint-warn:#3a2c1b;--tint-ok:#1f2e24;--tint-info:#1f2937;
}

/* ---------- 基础 ---------- */
html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
::selection{background:#f7c91666}
*{scrollbar-width:thin;scrollbar-color:#b9bbb2 transparent}
html[data-theme=dark] *{scrollbar-color:#4a4a52 transparent}
:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-radius:4px}
html[data-theme=dark] :focus-visible{outline-color:#f7c916}
button,.kind-card,.recent-row,.task-item,.overview-row{transition:background-color .15s var(--ease),border-color .15s var(--ease),box-shadow .2s var(--ease),transform .12s var(--ease),color .15s}
button:active:not(:disabled){transform:translateY(1px)}
button:disabled{cursor:not-allowed}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* ---------- 可读性：小字与低对比 ---------- */
.breadcrumb,.icon-button{color:var(--text-quiet)}
.icon-button:hover{color:var(--ink)}
.connection{min-height:32px;font-size:12px}
.connection .chevron{font-size:12px}
.fine{font-size:12px}
.quiet{min-height:28px}
button.quiet,a.quiet{padding-inline:10px}

/* ---------- 卡片与列表的悬停反馈 ---------- */
.kind-card:hover,.recent-row:hover{box-shadow:var(--shadow-1)}
.kind-card:hover{transform:translateY(-1px)}
.kind-card:active{transform:none}
dialog{box-shadow:var(--shadow-2)}
dialog[open]{animation:dialog-in .18s var(--ease)}
dialog::backdrop{background:rgba(20,20,22,.38);backdrop-filter:blur(2px)}
@keyframes dialog-in{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}
.toast{animation:toast-in .2s var(--ease)}
@keyframes toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* ---------- 首页总览 ---------- */
.home-overview{display:grid;gap:14px;margin:0 0 26px}
.channel-strip{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:10px 14px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-2);font-size:13px}
.channel-title{font-weight:600;color:var(--ink);margin-right:4px}
.channel-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;background:var(--surface);border:1px solid var(--line);color:var(--ink);font-size:12px}
.channel-dot{width:8px;height:8px;border-radius:50%;background:var(--ok);display:inline-block}
.channel-chip.down{border-color:var(--bad)}
.channel-chip.down .channel-dot{background:var(--bad)}
.channel-load{margin-left:auto;color:var(--text-quiet);font-size:12px}
.overview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}
.overview-card{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);padding:6px 6px 8px;box-shadow:var(--shadow-1)}
.overview-card.attention{border-color:color-mix(in srgb,var(--bad) 45%,var(--line))}
.overview-head{display:flex;align-items:center;gap:8px;padding:10px 12px 6px}
.overview-head h3{margin:0;font-size:14px}
.overview-count{min-width:22px;padding:1px 7px;border-radius:999px;background:var(--soft);color:var(--ink);font-size:12px;text-align:center}
.overview-card.attention .overview-count{background:color-mix(in srgb,var(--bad) 18%,transparent);color:var(--bad)}
.overview-row{display:flex;align-items:center;gap:12px;width:100%;padding:9px 12px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--ink);text-align:left;cursor:pointer;min-height:48px}
.overview-row:hover{background:var(--surface-2)}
.overview-icon{flex:0 0 28px;height:28px;display:grid;place-items:center;border-radius:8px;background:var(--soft);font-size:14px}
.overview-main{flex:1;min-width:0;display:grid;gap:2px}
.overview-main strong{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.overview-main small{font-size:12px;color:var(--text-quiet);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.overview-go{font-size:12px;color:var(--text-quiet)}
.overview-row:hover .overview-go{color:var(--ink)}

/* ---------- 失败引导 ---------- */
.run-feedback .run-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px}
.run-feedback .run-actions .quiet{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink)}
.run-feedback .run-actions .quiet:hover{background:var(--surface-2)}
.run-raw{flex-basis:100%;font-size:12px;color:var(--text-quiet)}
.run-raw summary{cursor:pointer;width:max-content}
.run-raw pre{margin:6px 0 0;padding:8px 10px;white-space:pre-wrap;word-break:break-word;max-height:140px;overflow:auto;border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--line);font-size:12px;color:var(--ink)}
.reading-conversation .run-feedback.failed,.reading-conversation .run-feedback.interrupted,.reading-conversation .run-feedback.cancelled{max-height:none;padding:10px 14px}
.reading-conversation .run-feedback.failed strong,.reading-conversation .run-feedback.interrupted strong{font-size:14px}
.reading-conversation .run-feedback.failed>span,.reading-conversation .run-feedback.interrupted>span,.reading-conversation .run-feedback.cancelled>span{font-size:13px;-webkit-line-clamp:unset;overflow:visible}

/* ---------- 命令面板 ---------- */
.palette-trigger{display:inline-flex;align-items:center;gap:10px;margin-left:auto;margin-right:12px;padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--text-quiet);font-size:13px;cursor:pointer}
.palette-trigger:hover{color:var(--ink);border-color:var(--text-quiet)}
.palette-trigger kbd{font:inherit;font-size:12px;padding:1px 6px;border-radius:5px;background:var(--surface-3);color:var(--text-quiet)}
.palette-overlay{position:fixed;inset:0;z-index:1000;display:flex;justify-content:center;align-items:flex-start;padding-top:12vh;background:rgba(20,20,22,.4);backdrop-filter:blur(2px)}
.palette{width:min(640px,92vw);max-height:68vh;display:flex;flex-direction:column;border-radius:var(--radius-lg);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-2);border:1px solid var(--line);overflow:hidden;animation:dialog-in .16s var(--ease)}
.palette input{border:0;border-bottom:1px solid var(--line);border-radius:0;padding:18px 20px;font-size:16px;background:transparent;color:var(--ink);outline:none}
.palette input:focus-visible{outline:none;box-shadow:inset 0 -2px 0 var(--brand)}
.palette-list{overflow:auto;padding:8px}
.palette-group{padding:10px 12px 4px;font-size:12px;color:var(--text-quiet)}
.palette-item{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:10px 12px;border-radius:var(--radius-sm);cursor:pointer}
.palette-item.active{background:var(--soft)}
.palette-label{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.palette-item small{font-size:12px;color:var(--text-quiet);white-space:nowrap}
.palette-empty{padding:28px;text-align:center;color:var(--text-quiet);margin:0}
.palette-foot{padding:8px 16px;border-top:1px solid var(--line);font-size:12px;color:var(--text-quiet);background:var(--surface-2)}

/* ---------- 设置：外观与空间 ---------- */
.segmented{display:inline-flex;padding:3px;border-radius:var(--radius-md);background:var(--surface-3);gap:2px}
.segmented button{border:0;background:transparent;padding:6px 16px;border-radius:8px;color:var(--text-quiet);font-size:13px;cursor:pointer}
.segmented button[aria-checked=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1);font-weight:600}
.storage-list{display:grid;gap:6px}
.storage-list h4{margin:12px 0 2px;font-size:13px}
.storage-row{display:grid;grid-template-columns:minmax(120px,1.2fr) 2fr 72px;align-items:center;gap:12px;padding:8px 10px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--ink);text-align:left;cursor:pointer;font-size:13px}
.storage-row:hover{background:var(--surface-2)}
.storage-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.storage-bar{height:6px;border-radius:999px;background:var(--surface-3);overflow:hidden}
.storage-bar i{display:block;height:100%;background:var(--brand);border-radius:999px}
.storage-size{text-align:right;color:var(--text-quiet);font-variant-numeric:tabular-nums}
.storage-member{margin:0;font-size:13px;color:var(--text-quiet)}

/* ---------- 加载骨架 ---------- */
.skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--surface-3) 25%,var(--surface-2) 50%,var(--surface-3) 75%);background-size:200% 100%;animation:shimmer 1.2s linear infinite}
@keyframes shimmer{to{background-position:-200% 0}}

/* ---------- 深色主题：品牌色侧栏保持辨识，其余面积使用中性深色 ---------- */
html[data-theme=dark] body{background:var(--paper);color:var(--ink)}
html[data-theme=dark] .workspace>.sidebar{background:var(--side);border-right:1px solid var(--line)}
html[data-theme=dark] .sidebar,html[data-theme=dark] .sidebar *{color:var(--ink)}
html[data-theme=dark] .sidebar small,html[data-theme=dark] .sidebar .muted{color:var(--muted)}
html[data-theme=dark] .sidebar .new-task{background:var(--brand);color:#171717}
html[data-theme=dark] .sidebar .new-task *{color:#171717}
html[data-theme=dark] .primary{background:var(--brand);color:#171717;border-color:var(--brand)}
html[data-theme=dark] input,html[data-theme=dark] textarea,html[data-theme=dark] select{background:var(--surface-2);color:var(--ink);border-color:var(--line)}
html[data-theme=dark] dialog{background:var(--surface);color:var(--ink);border:1px solid var(--line)}
html[data-theme=dark] img{filter:brightness(.92)}

/* 品牌黄底上的文字始终使用深色，不随主题翻转 */
html[data-theme=dark] :is(.primary,.auth-story,.auth-story *,.image-compare-count,.new-task,.new-task *,.brand-yellow,.brand-yellow *){color:var(--on-brand)}

/* 窗口适配：不再强制 1180px 最小宽度；窄屏下右侧文件栏变窄，主区优先 */
body{min-width:960px}
@media(max-width:1179px){
  .files-panel{width:230px}
  .welcome{padding-left:36px;padding-right:36px}
  .overview-grid{grid-template-columns:1fr}
  .palette-trigger{padding:6px 10px}
}

/* ---------- 执行进度步骤 ---------- */
.run-steps{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:8px 0 0;padding:0;font-size:12px}
.run-steps li{display:flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;border:1px solid var(--line);color:var(--text-quiet);background:var(--surface)}
.run-steps li::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--line)}
.run-steps li.done{color:var(--ink)}
.run-steps li.done::before{background:var(--ok)}
.run-steps li.current{color:var(--ink);border-color:var(--brand);background:var(--soft);font-weight:600}
.run-steps li.current::before{background:var(--brand);animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{50%{opacity:.35}}
.reading-conversation .run-feedback.running,.reading-conversation .run-feedback.queued{max-height:none}
.skeleton-row{height:44px;margin:6px 0}

/* ---------- 置顶图标：悬停/聚焦时出现，已置顶则常显 ---------- */
.task-pin-trigger{flex:0 0 26px;width:26px;height:32px;padding:0;display:grid;place-items:center;border:0;border-radius:5px;background:transparent;color:var(--ink);opacity:0;cursor:pointer}
.task-pin-trigger svg{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.task-pin-trigger.on{opacity:1}
.task-pin-trigger.on svg{fill:currentColor}
.task-action-row:hover .task-pin-trigger,.task-action-row:focus-within .task-pin-trigger{opacity:.75}
.task-pin-trigger:hover,.task-pin-trigger:focus-visible{opacity:1;background:#ffffff88}
html[data-theme=dark] .task-pin-trigger:hover{background:#ffffff1a}

/* ---------- 首页：可忽略的提醒 ---------- */
.overview-item{display:flex;align-items:center;gap:4px}
.overview-item .overview-row{flex:1;min-width:0}
.overview-dismiss{flex:0 0 auto;padding:4px 10px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-quiet);font-size:12px;cursor:pointer}
.overview-dismiss:hover{background:var(--surface-2);color:var(--ink)}
dialog#rename-dialog{max-width:420px}
#rename-dialog label{display:grid;gap:8px;margin:16px 0 4px;font-size:13px}
#rename-dialog input{padding:10px 12px;font-size:15px}
#rename-dialog .dialog-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}

/* ---------- 任务目录：筛选与排序 ---------- */
.directory-controls{align-items:center;flex-wrap:wrap;gap:10px}
.directory-controls input{min-width:220px}
.directory-controls select{max-width:160px}
.directory-count{margin-left:auto;font-size:13px;color:var(--text-quiet)}
.tab-count{font-size:12px;opacity:.7;font-variant-numeric:tabular-nums}

/* ---------- 失败卡片里的主操作 ---------- */
.run-feedback .run-actions .primary-ish{border:1px solid var(--brand);border-radius:var(--radius-sm);background:var(--brand);color:#171717;padding:4px 12px;min-height:28px;cursor:pointer;font-weight:600}
.run-feedback .run-actions .primary-ish:hover{filter:brightness(.96)}
.run-steps li.progress{margin-left:auto;border-style:dashed;color:var(--ink)}
.run-steps li.progress::before{display:none}
