/* ═══════════════════════════════════════════════════════════════════
   chat-light.css — 方案 A 浅色 Claude 风设计 token
   spec: docs/superpowers/specs/2026-05-27-chat-light-redesign-design.md v1.3
   ═══════════════════════════════════════════════════════════════════ */

/* ── §4.1 背景与边框（中性） ── */
:root {
  --bg: #ffffff;
  --bg-soft: oklch(.985 .004 95);
  --bg-sunk: oklch(.975 .004 95);
  --bg-hover: oklch(.965 .005 95);
  --line: oklch(.92 .004 250);
  --line-soft: oklch(.95 .004 250);

  /* ── §4.1 文字色阶 ── */
  --text: oklch(.22 .015 250);
  --text-2: oklch(.46 .012 250);
  --text-3: oklch(.62 .01 250);
  --text-4: oklch(.76 .008 250);
  --text-on-accent: #ffffff;

  /* ── §4.1 主色：深林绿（accent） ── */
  --accent: oklch(.42 .07 162);
  --accent-hover: oklch(.36 .08 162);
  --accent-ink: oklch(.32 .08 162);
  --accent-soft: oklch(.96 .02 162);
  --accent-line: oklch(.88 .04 162);

  /* ── §4.1 语义色 ── */
  --ok: oklch(.5 .1 150);
  --ok-soft: oklch(.96 .04 150);
  --warn: oklch(.62 .12 70);
  --warn-soft: oklch(.96 .05 70);
  --err: oklch(.55 .16 25);
  --err-soft: oklch(.96 .04 25);

  /* ── §4.1 用户气泡 ── */
  --user-bubble: oklch(.965 .006 95);

  /* ── §4.2 字体 ── */
  --sans: Inter, system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", "Source Han Sans CN";
  --mono: JetBrains Mono, ui-monospace, SFMono-Regular, Menlo;
  --fw-regular: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --fw-bold: 700;
  --fs-title: 16px;
  --fs-body: 14px;
  --fs-chat: 15px;
  --fs-sm: 13px;
  --fs-xs: 12px;
  --fs-empty: 22px;

  /* ── 专注外壳布局 ── */
  --rail-sidebar: 260px;
  --rail-progress: 240px;
  --rail-progress-compact: 232px;
  --topbar-h: 56px;
  --thread-max: 820px;

  /* ── §4.3 圆角 ── */
  --radius-sm: 4px;
  --radius: 8px;
  --radius-md: 10px;
  --radius-lg: 14px;

  /* ── §4.3 阴影 ── */
  --shadow-card: 0 1px 0 oklch(.94 .005 250), 0 1px 2px oklch(.92 .005 250 / .4);
  --shadow-float: 0 4px 14px oklch(.85 .01 250 / .18);
  --shadow-focus: 0 4px 18px oklch(.78 .015 250 / .24);

  /* ── §4.3 间距阶梯（8 档） ── */
  --sp-1: 4px;
  --sp-2: 6px;
  --sp-3: 8px;
  --sp-4: 12px;
  --sp-5: 14px;
  --sp-6: 18px;
  --sp-7: 24px;
  --sp-8: 36px;

  /* ── §7 缓动曲线（严格 spec 字面值，禁手工换算）── */
  --ease-out: cubic-bezier(.2, .7, .1, 1);
  --ease-in: cubic-bezier(.4, .0, 1, 1);
  --ease-linear: linear;

  /* ── §7 动效时长（命名贴合 spec 用途，5 档与 spec L1062-1066 一一对应）── */
  --dur-hover: 120ms;       /* hover 反馈（按钮、chip、icon-btn）*/
  --dur-collapse: 200ms;    /* 折叠 / 展开（ToolCall 展开、chevron 旋转）*/
  --dur-slide: 280ms;       /* 滑入（drawer、composer focus border）*/
  --dur-typing: 1400ms;     /* typing dots 一轮 */
  --dur-shimmer: 2200ms;    /* shimmer 一轮（in_progress 标题）*/
}

/* ── Dark 反向块：把上面 token 映射回 chat.html 原有深色变量值 ──
   用途：Phase 1 上线期一键回退，切换 data-theme="dark" 恢复原深色样式
   原 chat.html :root 深色值来源：L11-23
   ── */
:root[data-theme="dark"] {
  /* 背景 */
  --bg: #0a0d0f;
  --bg-soft: #111518;
  --bg-sunk: #181c20;
  --bg-hover: #1e2328;

  /* 边框 */
  --line: #252a30;
  --line-soft: #3a424a;

  /* 文字 */
  --text: #e6edf3;
  --text-2: #c9d1d9;
  --text-3: #8b949e;
  --text-4: #5a6370;
  --text-on-accent: #ffffff;

  /* 主色：深林绿（原深色 accent）
     注：dark 模式下 hover 与 ink 故意同映射到 chat.html L14 的 --accent-dim (#238636)，
     语义都是"比 accent 略暗的辅助绿"。非笔误 */
  --accent: #3fb950;
  --accent-hover: #238636;
  --accent-ink: #238636;
  --accent-soft: rgba(63, 185, 80, 0.15);
  --accent-line: rgba(63, 185, 80, 0.4);

  /* 语义色（映射原深色 warn=amber / err=red / ok=water） */
  --ok: #5eead4;
  --ok-soft: rgba(94, 234, 212, 0.1);
  --warn: #d29922;
  --warn-soft: rgba(210, 153, 34, 0.1);
  --err: #f85149;
  --err-soft: rgba(248, 81, 73, 0.1);

  /* 用户气泡（深色下用 bg-surface 系） */
  --user-bubble: #181c20;

  /* 字体不变 */
  --sans: Inter, system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", "Source Han Sans CN";
  --mono: JetBrains Mono, ui-monospace, SFMono-Regular, Menlo;

  /* 圆角不变 */
  --radius-sm: 4px;
  --radius: 8px;
  --radius-md: 10px;
  --radius-lg: 14px;

  /* 阴影（深色下加强） */
  --shadow-card: 0 1px 0 rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3);
  --shadow-float: 0 4px 14px rgba(0, 0, 0, 0.4);

  /* 间距不变 */
  --sp-1: 4px;
  --sp-2: 6px;
  --sp-3: 8px;
  --sp-4: 12px;
  --sp-5: 14px;
  --sp-6: 18px;
  --sp-7: 24px;
  --sp-8: 36px;

  /* 缓动不变 */
  --ease-out: cubic-bezier(.2, .7, .1, 1);
  --ease-in: cubic-bezier(.4, .0, 1, 1);
  --ease-linear: linear;

  /* 时长不变 */
  --dur-hover: 120ms;
  --dur-collapse: 200ms;
  --dur-slide: 280ms;
  --dur-typing: 1400ms;
  --dur-shimmer: 2200ms;
}

/* ── §09 可访问性：全局 focus-visible 轮廓 ── */
:focus-visible {
  outline: 2px solid var(--accent-line);
  outline-offset: 2px;
}

/* 企业编制工作区：单一资料表，业务数据由服务端 read model 决定。 */
.enterprise-search{display:block;padding:0 var(--sp-3) var(--sp-2)}
.enterprise-search input{width:100%;height:32px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);padding:0 var(--sp-3);font:inherit;font-size:var(--fs-xs)}
#enterprise-task-tree{flex:1;overflow:auto;padding:0 var(--sp-2) var(--sp-3)}
.enterprise-node{margin-bottom:var(--sp-1)}.enterprise-row{display:grid;grid-template-columns:24px minmax(0,1fr) 28px;align-items:center;min-height:34px}.enterprise-toggle,.enterprise-add,.enterprise-task,.table-link{border:0;background:transparent;color:var(--text-2);cursor:pointer}.enterprise-toggle,.enterprise-add{display:grid;place-items:center;width:28px;height:28px;border-radius:var(--radius-sm)}.enterprise-toggle:hover,.enterprise-add:hover,.enterprise-task:hover{background:var(--bg-hover);color:var(--text)}.enterprise-name{font-size:13.5px;font-weight:var(--fw-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.enterprise-tasks{padding-left:24px}.enterprise-task{width:100%;min-height:32px;display:grid;grid-template-columns:6px minmax(0,1fr) auto;align-items:center;gap:var(--sp-2);padding:0 var(--sp-2);border-radius:var(--radius-sm);font-size:12.5px;text-align:left}.enterprise-task[aria-current="true"]{background:var(--accent-soft);color:var(--accent-ink);font-weight:var(--fw-medium)}.enterprise-task small,.enterprise-empty{font-size:10px;color:var(--text-3)}.enterprise-empty{margin:var(--sp-1) var(--sp-2)}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--text-3);flex:0 0 6px}.status-active,.status-active.status-dot,.status-active .status-dot,.status-materials{background:var(--accent)}.status-parsing,.status-carryover_committing{background:var(--warn)}.status-failed{background:var(--err)}.status-completed{background:var(--ok)}
#new-workspace-btn{margin:10px 10px 8px;padding:7px 10px;border:1px solid var(--line);border-radius:var(--radius);background:transparent;color:var(--text);font:inherit;font-size:var(--fs-body);font-weight:var(--fw-medium);min-height:36px;cursor:pointer;width:calc(100% - 20px);text-align:left}.btn-left{display:inline-flex;align-items:center;gap:var(--sp-2)}#new-workspace-btn:hover{background:var(--bg-hover)}
#compilation-workspace{--workspace-gutter:max(24px,calc((100% - 1280px)/2));--workspace-top:36px;flex:1;min-height:0;overflow:hidden;background:var(--bg)}
/* 资料独立滚动，操作条作为同级 flex 子项占位，避免 sticky 底部留白露出表格。 */
#compilation-workspace:not([hidden]){display:flex;flex-direction:column}
.material-workbench-scroll{flex:1;min-height:0;min-width:0;overflow-x:hidden;overflow-y:auto;padding:var(--workspace-top) var(--workspace-gutter) var(--sp-6)}
.workbench-heading{margin-bottom:24px}.workbench-heading h1{font-size:22px;line-height:1.25;color:var(--text);font-weight:var(--fw-semibold)}.workbench-heading p{margin-top:6px;color:var(--text-2);font-size:var(--fs-body)}.material-dropzone{min-height:96px;border:1px dashed var(--line);border-radius:var(--radius);display:flex;align-items:center;justify-content:space-between;gap:var(--sp-5);padding:var(--sp-5) var(--sp-6);margin-bottom:var(--sp-6);cursor:pointer}.material-dropzone:hover,.material-dropzone:focus-visible{border-color:var(--accent-line);background:var(--bg-hover)}.material-dropzone strong,.material-dropzone small{display:block}.material-dropzone strong{font-size:var(--fs-body);font-weight:var(--fw-medium);color:var(--text)}.material-dropzone small{margin-top:var(--sp-1);font-size:var(--fs-xs);color:var(--text-3)}.material-dropzone.is-compact{min-height:60px}.material-dropzone button,.material-action-bar button,.workspace-drawer form>button{border:1px solid var(--accent);border-radius:var(--radius-sm);background:var(--accent);color:var(--text-on-accent);padding:7px 10px;font:inherit;font-size:var(--fs-xs);font-weight:var(--fw-medium);cursor:pointer}.material-action-bar button:disabled{opacity:.48;cursor:not-allowed}.material-filters{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-4)}.material-filters button{border:1px solid var(--line);border-radius:var(--radius-sm);background:transparent;color:var(--text-2);padding:4px 8px;font:inherit;font-size:var(--fs-xs);cursor:pointer}.material-filters button:hover{background:var(--bg-hover);color:var(--text)}.material-table-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius)}.material-table{width:100%;min-width:800px;border-collapse:collapse;font-size:var(--fs-xs);table-layout:fixed}.material-table th,.material-table td{padding:10px var(--sp-4);text-align:left;vertical-align:middle;border-bottom:1px solid var(--line-soft)}.material-table th:nth-child(1){width:34%}.material-table th:nth-child(3){width:132px}.material-table th:nth-child(4){width:192px}.material-table th{font-weight:var(--fw-semibold);color:var(--text-2);background:var(--bg-soft)}.material-table td{height:56px;color:var(--text-2)}.material-table td strong,.material-table td small{display:block}.material-table td strong{color:var(--text);font-weight:var(--fw-medium)}.material-table td small,.material-file small{margin-top:var(--sp-1);font-size:10px;color:var(--text-3)}.material-file+.material-file{margin-top:var(--sp-2)}.material-action-bar{position:static;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);padding:var(--sp-4) var(--workspace-gutter);background:var(--bg);font-size:var(--fs-xs);color:var(--text-2)}.workspace-drawer{position:fixed;z-index:30;inset:0 0 0 auto;width:min(420px,100vw);background:var(--bg);border-left:1px solid var(--line);box-shadow:var(--shadow-float);padding:var(--sp-7)}.workspace-drawer form{display:grid;gap:var(--sp-4)}.workspace-drawer header{display:flex;justify-content:space-between;align-items:center}.workspace-drawer h2{font-size:18px;color:var(--text)}.workspace-drawer label{display:grid;gap:var(--sp-1);font-size:var(--fs-xs);color:var(--text-2)}.workspace-drawer input,.workspace-drawer select{height:34px;border:1px solid var(--line);border-radius:var(--radius-sm);padding:0 var(--sp-2);font:inherit;background:var(--bg);color:var(--text)}.workspace-drawer fieldset{border:1px solid var(--line);padding:var(--sp-3);display:grid;gap:var(--sp-2)}
.compilation-summary{width:100%;max-width:var(--thread-max);font-size:13px;line-height:1.6;color:var(--text-2)}
.compilation-summary>p{margin:6px 0}.summary-failed{color:var(--err)}
/* 本批摘要采用逐表清单；展开只查看内容，右侧按钮才进入填报。 */
.intake-batch-overview{padding:8px 0 18px;container-type:inline-size}
.ibs-header{padding-bottom:18px}.ibs-eyebrow{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--text-3);margin-bottom:8px}
.ibs-dot{width:6px;height:6px;flex:none;border-radius:50%;background:var(--accent)}.ibs-dot.is-error{background:var(--err)}
.ibs-header h3{margin:0;color:var(--text);font-size:18px;font-weight:600;line-height:1.4}.ibs-header p{margin:6px 0 0;color:var(--text-2)}
.ibs-stats{display:flex;flex-wrap:wrap;gap:18px;margin-top:14px}.ibs-stats>span{display:flex;align-items:baseline;gap:6px;color:var(--text-2);font-size:12px}.ibs-stats strong{font-family:var(--mono);font-size:13px;font-weight:600;color:var(--text)}
.ibs-failures{padding:18px 0;border-top:1px solid var(--line)}
.intake-batch-overview h4{display:flex;align-items:center;gap:8px;margin:0;color:var(--text);font-size:13px;font-weight:600}
.ibs-failures ul{list-style:none;padding:0;margin:8px 0}.ibs-failures li{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:8px 0}.ibs-failures li>div{min-width:0}.ibs-failures li strong{font-size:12.5px;font-weight:500;color:var(--text);overflow-wrap:anywhere}.ibs-failures li p{margin:2px 0 0;font-size:12px;color:var(--text-3)}
.intake-batch-overview .ibs-note{margin:10px 0 0;font-size:11.5px;line-height:1.7;color:var(--text-3)}
.ibs-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0;min-height:48px;border-top:1px solid var(--line);cursor:pointer;list-style:none}.ibs-section-head::-webkit-details-marker{display:none}.ibs-section-head:hover h4{color:var(--accent-ink)}.ibs-section-hint{display:flex;align-items:center;gap:10px;font-size:11.5px;color:var(--text-3)}.ibs-section-hint>svg{width:13px;height:13px;flex:none;transform:rotate(90deg)}.ibs-sheets[open]>.ibs-section-head .ibs-section-hint>svg{transform:rotate(270deg)}.ibs-sheets:not([open])>.ibs-section-head .ibs-when-open,.ibs-sheets[open]>.ibs-section-head .ibs-when-closed{display:none}
.ibs-sheet{display:flex;align-items:flex-start;gap:14px;border-bottom:1px solid var(--line-soft)}.ibs-sheet details{flex:1;min-width:0}.ibs-sheet summary{display:flex;align-items:center;gap:12px;cursor:pointer;list-style:none;padding:12px 0;min-height:56px}.ibs-sheet summary::-webkit-details-marker{display:none}
.ibs-sheet-code{width:28px;flex:none;font-family:var(--mono);font-size:11px;color:var(--text-3)}.ibs-sheet-copy{flex:1;min-width:0}.ibs-sheet-copy>strong{display:block;font-weight:500;font-size:13px;color:var(--text)}.ibs-sheet-copy>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;color:var(--text-3);margin-top:2px}
.ibs-sheet summary>svg{width:13px;height:13px;flex:none;color:var(--text-3);transform:rotate(90deg)}.ibs-sheet details[open] summary>svg{transform:rotate(270deg)}
.ibs-sheet summary:hover .ibs-sheet-copy>strong{color:var(--accent-ink)}
.ibs-sheet-detail{padding:0 0 14px 40px}.ibs-sheet-detail dl{margin:0;display:grid;gap:12px}.ibs-sheet-detail dt{font-size:11px;color:var(--text-3);margin-bottom:3px}.ibs-sheet-detail dd{margin:0;line-height:1.75;font-size:12px;overflow-wrap:anywhere}
.intake-batch-overview .ibs-action,.intake-batch-overview .ibs-primary{display:inline-flex;align-items:center;justify-content:center;gap:6px;flex:none;min-height:32px;padding:4px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text-2);background:var(--bg);font-size:12px;font-weight:500;text-decoration:none;white-space:nowrap}
.ibs-action svg,.ibs-primary svg{width:13px;height:13px;flex:none}.ibs-sheet>.ibs-action{margin-top:15px}.intake-batch-overview .ibs-action:hover{background:var(--bg-hover);border-color:var(--accent-line);color:var(--accent-ink)}
.ibs-footer{display:flex;align-items:center;justify-content:space-between;gap:18px;padding-top:18px;margin-top:6px}.ibs-footer strong{color:var(--text);font-size:12px;font-weight:500}.ibs-footer p{margin:3px 0 0;font-size:12px}.intake-batch-overview .ibs-primary{background:var(--accent);border-color:var(--accent);color:var(--text-on-accent);min-height:36px;padding:6px 12px}.intake-batch-overview .ibs-primary:hover{background:var(--accent-hover)}
.ibs-section-head:focus-visible,.ibs-sheet summary:focus-visible,.ibs-action:focus-visible,.ibs-primary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
/* S2补充事实沿用表单字号，检测依据独占一行，避免标签挤压。 */
.intake-waste-fields{border:0;border-top:1px solid var(--line);padding:14px 0 0;margin:18px 0 0;min-width:0}.intake-waste-fields legend{padding:0 8px 0 0;font-size:12px;font-weight:600;color:var(--text)}
.intake-field-help{font-size:11px!important;line-height:1.65;color:var(--text-3);margin:0 0 12px}.intake-field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.intake-field-grid>label{min-width:0;display:flex;flex-direction:column;gap:6px}.intake-field-grid>label>span{font-size:11.5px;color:var(--text-2)}.intake-field-grid small{font-size:10.5px;color:var(--text-3);margin-left:4px}.intake-field-grid .ep-input{width:100%;min-height:34px;margin:0}.intake-measurements{margin-top:14px}
.intake-evidence{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:14px 0}.intake-evidence-label{font-size:11.5px;color:var(--text-2)}.intake-evidence-upload{position:relative;display:inline-flex;align-items:center;gap:6px;overflow:hidden;min-height:32px;border:1px solid var(--line);border-radius:var(--radius-sm);padding:5px 10px;background:var(--bg);font-size:12px;color:var(--text-2);cursor:pointer}.intake-evidence-upload svg{width:14px;height:14px}.intake-evidence-upload input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}.intake-evidence-upload:hover{background:var(--bg-hover);border-color:var(--accent-line)}.intake-evidence-upload:focus-within{outline:2px solid var(--accent);outline-offset:2px}.intake-evidence>small{font-size:10.5px;line-height:1.6;color:var(--text-3)}.intake-evidence ul{list-style:none;padding:0;margin:0;font-size:11px;overflow-wrap:anywhere}
@container(max-width:500px){.ibs-sheet{gap:8px}.ibs-sheet summary{gap:8px}.ibs-sheet-detail{padding-left:0}.ibs-section-head{align-items:flex-start;flex-direction:column;gap:2px}.ibs-failures li{align-items:flex-start;gap:8px}.ibs-failures li>div{flex:1}.ibs-failures .ibs-action{font-size:11px;padding:4px 6px}.ibs-footer{align-items:flex-start;flex-direction:column;gap:12px}}
@media(max-width:767px){.ibs-action,.ibs-primary,.intake-evidence-upload{min-height:44px!important}.ibs-sheet>.ibs-action{margin-top:9px}}
.summary-failed-files{margin:var(--sp-2) 0 0;padding-left:18px;color:var(--err)}.summary-failed-files span{display:block;color:var(--text-2)}.classification-confirm,.requirement-declaration{display:flex;align-items:center;gap:var(--sp-1);margin-top:var(--sp-2);font-size:10px}.classification-confirm select,.requirement-declaration select{max-width:116px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font:inherit}.classification-confirm button,.requirement-declaration button{border:0;background:transparent;color:var(--accent-ink);font:inherit;cursor:pointer}.carryover-box{margin-top:var(--sp-4);border:1px solid var(--line);border-radius:var(--radius);padding:var(--sp-4);display:grid;gap:var(--sp-2);font-size:var(--fs-xs);color:var(--text-2)}.carryover-box strong{color:var(--text);font-size:var(--fs-sm)}.carryover-box label{display:flex;gap:var(--sp-2);align-items:flex-start}
/* 操作列预留控件宽度；56px 为单行资料的基准高度，多文件/长说明仍自然撑开。 */
.requirement-declaration{display:flex;flex-wrap:nowrap;align-items:center;gap:var(--sp-2);margin:0;font-size:var(--fs-xs)}
.requirement-declaration select{flex:1;min-width:0;max-width:none;height:32px;padding:0 var(--sp-2)}
.requirement-declaration button{flex:0 0 auto;min-width:44px;height:32px;padding:0 var(--sp-2);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg);color:var(--text-2);white-space:nowrap}
.requirement-declaration select:hover,.requirement-declaration button:hover{border-color:var(--accent-line)}
.requirement-declaration button:hover{background:var(--bg-hover);color:var(--text)}
.classification-confirm{flex-wrap:wrap}
.material-file>span{overflow-wrap:anywhere}
.material-table td>.status-dot{margin-right:var(--sp-1)}
.material-filters button[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-ink)}
.workspace-drawer{overflow-y:auto}
.workspace-drawer input[type="checkbox"]{width:16px;height:16px}
/* 企业行整体可点击；图标与名称共享同一收合按钮，子项使用原生 hidden。 */
.enterprise-row{grid-template-columns:minmax(0,1fr) 28px;gap:var(--sp-1)}
.enterprise-toggle{display:flex;gap:var(--sp-2);width:100%;min-width:0;height:auto;min-height:36px;padding:6px 4px;text-align:left;font:inherit}
.enterprise-toggle .enterprise-name{min-width:0;flex:1}
.enterprise-folder{display:flex;flex:0 0 auto;color:var(--text-2)}
.enterprise-folder svg{width:16px;height:16px}
.enterprise-tasks[hidden]{display:none}
.enterprise-task>span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 统一操作层级：主操作实色、次操作细边框、关闭为低强调图标。 */
.workspace-button,.workspace-icon-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:36px;padding:8px 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);color:var(--text);font:inherit;font-size:var(--fs-sm);font-weight:var(--fw-medium);line-height:1.25;cursor:pointer;white-space:nowrap;transition:background 120ms ease-out,border-color 120ms ease-out}
.workspace-button:hover,.workspace-icon-button:hover{background:var(--bg-hover);border-color:var(--line-strong,var(--line))}
.workspace-button-primary{background:var(--accent);border-color:var(--accent);color:var(--text-on-accent)}
.workspace-button-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}
.workspace-button-secondary{background:var(--bg);color:var(--text)}
.workspace-button-quiet,.workspace-icon-button{border-color:transparent;background:transparent;color:var(--text-2)}
.workspace-icon-button{width:36px;flex:0 0 36px;padding:8px}
.workspace-button:disabled{opacity:.5;cursor:not-allowed}
.workspace-button[hidden],.workspace-icon-button[hidden]{display:none}
/* 顶栏工作面板：图标 disclosure + 三条原生按钮，不建立复合菜单协议。 */
.work-panel-anchor{position:relative;flex:0 0 auto;min-width:32px}
#topbar-work-panel-trigger{position:relative;width:32px;height:32px;min-width:32px;min-height:32px;padding:0;border-radius:8px;flex:0 0 32px}
.work-panel-trigger-icon{display:block;flex:0 0 auto}
.work-panel-status-dot{position:absolute;right:5px;bottom:5px;width:6px;height:6px;border:1px solid var(--bg);border-radius:50%;background:var(--text-3)}
#topbar-work-panel-trigger[data-tone="unknown"] .work-panel-status-dot{background:var(--text-4)}
#topbar-work-panel-trigger[data-tone="running"] .work-panel-status-dot{background:var(--accent)}
#topbar-work-panel-trigger[data-tone="review"] .work-panel-status-dot,
#topbar-work-panel-trigger[data-tone="warn"] .work-panel-status-dot{background:var(--warn)}
#topbar-work-panel-trigger[data-tone="error"] .work-panel-status-dot{background:var(--err)}
#topbar-work-panel-trigger[data-tone="success"] .work-panel-status-dot{background:var(--ok)}
.work-panel-tooltip{position:absolute;z-index:91;top:calc(100% + 6px);right:0;width:max-content;max-width:min(300px,calc(100vw - 24px));padding:6px 8px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg);box-shadow:var(--shadow-menu);color:var(--text-2);font-size:var(--fs-xs);line-height:1.4;white-space:normal;overflow-wrap:anywhere;visibility:hidden;pointer-events:none}
#topbar-work-panel-trigger[aria-expanded="false"]:hover~.work-panel-tooltip,
#topbar-work-panel-trigger[aria-expanded="false"]:focus-visible~.work-panel-tooltip{visibility:visible}
.work-panel-popover{position:absolute;z-index:90;top:calc(100% + 6px);right:0;width:min(300px,calc(100vw - 24px));border:1px solid var(--line);border-radius:var(--radius-md);background:var(--bg);box-shadow:var(--shadow-menu);overflow:hidden}
.work-panel-popover[hidden]{display:none}
.work-panel-row{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:44px;padding:7px 10px;border:0;border-bottom:1px solid var(--line-soft);border-radius:0;background:var(--bg);color:var(--text);font:inherit;text-align:left;cursor:pointer}
.work-panel-row:last-of-type{border-bottom:0}
.work-panel-row:hover:not(:disabled){background:var(--bg-hover)}
.work-panel-row.active{background:var(--bg-hover);color:var(--text)}
.work-panel-row:focus-visible,#topbar-work-panel-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.work-panel-row:disabled,.work-panel-row[aria-disabled="true"]{color:var(--text-3)}
.work-panel-row:disabled{cursor:not-allowed;opacity:.58}
.work-panel-row[aria-disabled="true"]{cursor:pointer}
.work-panel-row-icon{display:flex;flex:0 0 16px;color:var(--text-3)}
.work-panel-row-icon .btn-ico{width:16px;height:16px}
.work-panel-row-copy{display:grid;flex:1;min-width:0;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:var(--sp-3)}
.work-panel-row-copy strong{font-size:var(--fs-sm);font-weight:var(--fw-medium);line-height:1.35;white-space:nowrap}
.work-panel-row-copy>span{color:var(--text-3);font-size:var(--fs-xs);line-height:1.45;text-align:right;white-space:normal;overflow-wrap:anywhere}
.work-panel-row[data-tone="error"] .work-panel-row-copy>span{color:var(--err)}
.work-panel-row[data-tone="running"] .work-panel-row-copy>span,
.work-panel-row[data-tone="review"] .work-panel-row-copy>span,
.work-panel-row[data-tone="warn"] .work-panel-row-copy>span{color:var(--warn)}
@media (hover:none),(pointer:coarse){#topbar-work-panel-trigger{width:44px;height:44px;min-width:44px;min-height:44px;flex-basis:44px}.work-panel-anchor{min-width:44px}}
.workbench-heading{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:var(--sp-4)}
.workbench-heading h1,.workbench-heading p{grid-column:1}
.workbench-heading #return-to-conversation{grid-column:2;grid-row:1/3;align-self:start}
.workspace-drawer{z-index:45}
.workspace-drawer header{margin-bottom:var(--sp-3)}
.workspace-drawer fieldset label{display:flex;align-items:center;gap:var(--sp-2);min-height:32px}
.workspace-drawer fieldset input{margin:0;flex:0 0 16px;accent-color:var(--accent)}
.workspace-drawer form>p{font-size:var(--fs-xs);color:var(--text-2);line-height:1.6}
.workspace-creator-actions{display:flex;justify-content:flex-end;gap:var(--sp-2);padding-top:var(--sp-5);border-top:1px solid var(--line)}
.carryover-box{padding:var(--sp-5);gap:var(--sp-4)}
.carryover-heading p{margin-top:var(--sp-1);line-height:1.6}
.carryover-materials{display:grid;gap:var(--sp-2)}
.carryover-box label{line-height:1.6;overflow-wrap:anywhere}
.carryover-box input[type="checkbox"]{width:16px;height:16px;flex:0 0 16px;margin:2px 0 0;accent-color:var(--accent)}
.carryover-confirmations{display:grid;gap:var(--sp-2);padding-top:var(--sp-3);border-top:1px solid var(--line-soft)}
.carryover-actions{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4)}
.carryover-actions .workspace-button{flex:0 0 auto}
.material-action-bar{border-top:1px solid var(--line-soft);margin-top:0}
.material-action-bar>span{display:flex;align-items:center;gap:var(--sp-2);min-width:0}
/* 任务行仅在交互时显示更多操作；危险动作放入二次确认，避免顶栏误触。 */
.enterprise-task-row{display:flex;align-items:center;border-radius:var(--radius-sm);gap:2px}
.enterprise-task-row:hover,.enterprise-task-row:focus-within{background:var(--bg-hover)}
.enterprise-task-row .enterprise-task{min-width:0;flex:1}
.task-more{display:grid;place-items:center;width:28px;height:28px;flex:0 0 28px;padding:0;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-2);cursor:pointer;opacity:0;transition:opacity 120ms ease-out}
.task-more svg{width:16px;height:16px;stroke-width:3}
.enterprise-task-row:hover .task-more,.enterprise-task-row:focus-within .task-more,.task-more[aria-expanded="true"]{opacity:1}
.task-more:hover{background:var(--bg-sunk);color:var(--text)}
.task-context-card{position:fixed;z-index:80;margin:0;padding:var(--sp-4);border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);box-shadow:var(--shadow-menu);color:var(--text);font-size:var(--fs-xs);line-height:1.5;max-height:calc(100vh - 16px);overflow:auto}
.task-context-card[hidden]{display:none}
.task-context-card header{display:grid;gap:var(--sp-1);margin-bottom:var(--sp-3)}
.task-context-card header strong{font-size:var(--fs-sm);font-weight:var(--fw-medium)}
.task-context-card header span{color:var(--text-3);overflow-wrap:anywhere}
.task-context-card dl{display:grid;gap:var(--sp-2);margin:0}
.task-context-card dl>div{display:grid;grid-template-columns:64px minmax(0,1fr);gap:var(--sp-3)}
.task-context-card dt{color:var(--text-3)}
.task-context-card dd{margin:0;color:var(--text-2);overflow-wrap:anywhere}
.task-context-actions{margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--line-soft)}
.task-context-actions p{margin:0;color:var(--text-2)}
.task-context-actions button{min-height:36px;border:0;border-radius:var(--radius-sm);padding:6px 10px;background:transparent;color:var(--text-2);font:inherit;cursor:pointer}
.task-context-actions button:hover{background:var(--bg-hover)}
.task-context-actions [data-close-task]{width:100%;text-align:left;color:var(--err)}
.task-close-confirm{display:flex;justify-content:flex-end;gap:var(--sp-2);margin-top:var(--sp-3)}
.task-close-confirm [data-confirm-close]{border:1px solid var(--line);color:var(--err)}
.task-close-confirm button:disabled{opacity:.5;cursor:not-allowed}
@media (hover:none),(pointer:coarse){.task-more{opacity:1}}
@media (max-width:1023px){#compilation-workspace{--workspace-top:24px;--workspace-gutter:24px}.workspace-drawer{width:min(420px,100vw)}}
@media (max-width:767px){#compilation-workspace{--workspace-gutter:14px}.material-dropzone{align-items:flex-start;flex-direction:column}.material-action-bar{padding-bottom:calc(var(--sp-4) + env(safe-area-inset-bottom))}}
@media (max-width:767px){
  .workbench-heading{grid-template-columns:minmax(0,1fr)}
  .workbench-heading #return-to-conversation{grid-column:1;grid-row:1;justify-self:start;margin-bottom:var(--sp-4)}
  .workbench-heading h1{grid-row:2;font-size:20px}.workbench-heading p{grid-row:3}
  .workspace-button,.workspace-icon-button,.enterprise-toggle,.enterprise-add,.enterprise-task{min-height:44px}
  .material-dropzone button,.material-action-bar button,.material-filters button,.requirement-declaration select,.requirement-declaration button,.classification-confirm select,.classification-confirm button{min-height:44px}
  .work-panel-row{min-height:44px}
  .task-more{opacity:1;height:44px;width:44px;flex-basis:44px}
  .task-context-actions button{min-height:44px}
  .carryover-actions,.material-action-bar{align-items:stretch;flex-direction:column}
  .carryover-box,.material-action-bar{font-size:14px}
  .workspace-drawer{width:100%;padding:var(--sp-5)}
  .workspace-drawer label,.workspace-drawer form>p,.workspace-button{font-size:14px}
}

/* ── §09 可访问性：动效偏好 ── */
@media (prefers-reduced-motion: reduce) {
  * {
    animation: none !important;
    transition: none !important;
  }
  /* typing dots 改静态（三点并排不动） */
  .typing span {
    opacity: 0.6 !important;
    transform: none !important;
  }
  /* shimmer / pulse 动画改静态 */
  .tc-dot.running,
  .s-dot.warn {
    opacity: 0.8 !important;
  }
}

/* ── Chat 专注外壳基础接线（响应式 drawer 与焦点循环由后续任务补齐） ── */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

body #sidebar { width: var(--rail-sidebar); }
body #sidebar.is-collapsed { display: none; }
body #progress-panel { width: var(--rail-progress); }
#sidebar-brand .brand-wordmark,
#topbar-title {
  font-size: var(--fs-title);
  font-weight: var(--fw-semibold);
}
#new-chat-btn,
.sidebar-nav-row {
  min-height: 36px;
  border: 0;
  border-radius: var(--radius);
  font-size: var(--fs-body);
}
.history-item { height: 36px; }
.history-item .hi-name { font-size: 13.5px; }
.history-item .hi-date { font-size: var(--fs-xs); }
body #chat-header { min-height: var(--topbar-h); }
body #messages { gap: 18px; }
body .msg.agent { max-width: 820px; }
body .msg.agent .bubble,
body .msg.user .bubble { font-size: var(--fs-chat); }
body #input-area textarea { font-size: var(--fs-body); }
body #empty-state {
  justify-content: flex-start;
  padding-top: min(22vh, 180px);
}
body #empty-state h2 { font-size: var(--fs-empty); }
body #empty-state p { font-size: var(--fs-body); }
#empty-state .icon svg {
  width: 48px;
  height: 48px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* ── Chat 五段响应式抽屉：一个遮罩、一个活动层，不动画布局属性 ── */
#shell-scrim {
  position: fixed;
  inset: 0;
  z-index: 35;
  border: 0;
  background: oklch(.22 .015 250 / .16);
}
#shell-scrim[hidden] { display: none; }
body[data-active-overlay="left"] #sidebar,
body[data-active-overlay="progress"] #progress-panel,
body[data-active-overlay="edit"] #edit-panel,
body[data-active-overlay="report"] #report-panel {
  z-index: 40;
  box-shadow: var(--shadow-float);
}

/* desktop：左栏与进度栏内联，字段编辑为右侧覆盖 drawer。 */
@media (min-width: 1280px) and (max-width: 1759px) {
  body[data-active-overlay="edit"] #edit-panel {
    position: fixed;
    inset: 0 0 0 auto;
    width: min(var(--edit-panel-width, 420px), calc(100vw - 24px));
    max-width: calc(100vw - 24px);
  }
}

/* compact：左栏覆盖，232px 进度栏固定，字段编辑覆盖。 */
@media (min-width: 1024px) and (max-width: 1279px) {
  body[data-active-overlay="left"] #sidebar {
    position: fixed;
    inset: 0 auto 0 0;
  }
  body #progress-panel { width: var(--rail-progress-compact); }
  body[data-active-overlay="edit"] #edit-panel {
    position: fixed;
    inset: 0 0 0 auto;
    width: min(var(--edit-panel-width, 420px), calc(100vw - 24px));
    max-width: calc(100vw - 24px);
  }
}

/* tablet：左栏与全部右栏均为覆盖 drawer。 */
@media (min-width: 768px) and (max-width: 1023px) {
  body[data-active-overlay="left"] #sidebar {
    position: fixed;
    inset: 0 auto 0 0;
  }
  body[data-active-overlay="progress"] #progress-panel,
  body[data-active-overlay="edit"] #edit-panel {
    position: fixed;
    inset: 0 0 0 auto;
    width: min(100%, 420px);
    min-width: 0;
    max-width: 100%;
  }
  /* 报告需要章树和预览并列，不能沿用单列表单的420px宽度。 */
  body[data-active-overlay="report"] #report-panel {
    position: fixed;
    inset: 0 0 0 auto;
    width: 100%;
    min-width: 0;
    max-width: 100%;
  }
}

/* mobile：所有抽屉全宽，触摸控制不小于 44px。 */
@media (max-width: 767px) {
  body[data-active-overlay="left"] #sidebar,
  body[data-active-overlay="progress"] #progress-panel,
  body[data-active-overlay="edit"] #edit-panel,
  body[data-active-overlay="report"] #report-panel {
    position: fixed;
    inset: 0;
    width: 100%;
    min-width: 0;
    max-width: 100%;
  }
  #sidebar-toggle,
  #sidebar-collapse-btn,
  #topbar-work-panel-trigger,
  #topbar-progress-btn,
  #topbar-report-btn {
    min-width: 44px;
    min-height: 44px;
  }
}

@media (prefers-reduced-motion: reduce) {
  #sidebar,
  .side-panel {
    transition: none !important;
  }
}
