:root { --ink: #242229; --muted: #74717a; --paper: #f8f7f3; --card: #fff; --line: #e8e4db; --accent: #da4b38; --accent-dark: #b93d2e; --sand: #f2ebdc; --shadow: 0 12px 36px rgba(47, 37, 21, .08); font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif; color: var(--ink); background: var(--paper); }
* { box-sizing: border-box; } body { margin: 0; min-width: 320px; } button, input, textarea, select { font: inherit; } button { cursor: pointer; border: 0; } button:disabled { opacity: .65; cursor: wait; }
.auth-shell { min-height: 100vh; padding: 6vw; display: grid; place-items: center; background: radial-gradient(circle at 15% 15%, #f8d5ba, transparent 35%), radial-gradient(circle at 85% 80%, #dbe7d8, transparent 35%), var(--paper); }
.auth-card { width: min(590px, 100%); padding: clamp(32px, 7vw, 72px); border: 1px solid rgba(255,255,255,.65); border-radius: 30px; background: rgba(255,255,255,.8); box-shadow: var(--shadow); } .auth-card h1 { margin: 8px 0 16px; font-size: clamp(30px, 5vw, 52px); letter-spacing: -.05em; } .auth-card p { color: var(--muted); line-height: 1.7; }
.eyebrow { margin: 0; color: var(--accent); font-size: var(--workbench-type-meta); font-weight: 800; letter-spacing: .14em; } .primary, .secondary, .text, .button-link { display: inline-flex; align-items: center; justify-content: center; min-height: 42px; border-radius: 10px; padding: 0 17px; font-weight: 750; text-decoration: none; } .primary { color: #fff; background: var(--accent); } .primary:hover { background: var(--accent-dark); } .secondary { color: var(--ink); background: var(--sand); } .text { color: var(--muted); background: transparent; } .full { width: 100%; }
.topbar { min-height: 86px; display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 16px clamp(20px, 4vw, 64px); background: rgba(248,247,243,.92); border-bottom: 1px solid var(--line); } .topbar h1 { margin: 3px 0 0; font-size: var(--workbench-type-page-title); letter-spacing: -.04em; } .user-menu { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: var(--workbench-type-body); }
.layout { display: grid; grid-template-columns: 270px minmax(0, 1fr); min-height: calc(100vh - 86px); } .sidebar { padding: 24px 16px; border-right: 1px solid var(--line); background: #f2efe8; } .section-title { margin: 28px 10px 10px; color: var(--muted); font-size: var(--workbench-type-support); font-weight: 750; } .session-list { display: grid; gap: 6px; } .session-item { display: grid; gap: 5px; width: 100%; padding: 11px; text-align: left; color: var(--ink); background: transparent; border-radius: 10px; } .session-item:hover, .session-item.active { background: #fff; box-shadow: 0 2px 12px rgba(39,28,12,.05); } .session-item strong { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: var(--workbench-type-body); } .session-item span { color: var(--muted); font-size: var(--workbench-type-support); }
.workspace { width: min(1040px, 100%); padding: clamp(24px, 5vw, 64px); margin: 0 auto; } .empty { max-width: 520px; margin: 10vh auto; } .empty h2, .page-head h2 { margin: 4px 0 8px; letter-spacing: -.045em; font-size: clamp(26px, 4vw, 39px); } .empty p, .page-head p { color: var(--muted); line-height: 1.7; } .page-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; margin-bottom: 24px; } .pill { flex: none; padding: 7px 10px; border-radius: 999px; color: #9e3328; background: #f9e0d9; font-size: var(--workbench-type-support); font-weight: 750; }
.workflow-progress { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; padding: 0; margin: 0 0 14px; list-style: none; } .workflow-progress li { min-width: 0; padding: 0; color: var(--muted); border: 1px solid var(--line); border-radius: 12px; background: #f2efe8; font-size: var(--workbench-type-support); } .progress-step { display: flex; align-items: center; gap: 9px; width: 100%; min-height: 49px; padding: 11px 12px; color: inherit; text-align: left; border-radius: 11px; background: transparent; } .progress-step:hover, .workflow-progress li.viewing .progress-step { background: rgba(255,255,255,.6); } .workflow-progress li span { display: grid; place-items: center; flex: none; width: 23px; height: 23px; border-radius: 50%; color: var(--muted); background: #fff; font-size: var(--workbench-type-meta); font-weight: 800; } .workflow-progress li strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .workflow-progress li.active { color: #8d3026; border-color: #e7b2a7; background: #fff4ef; } .workflow-progress li.active span { color: #fff; background: var(--accent); } .workflow-progress li.done { color: #28613d; border-color: #cfe1d3; background: #f0f7f1; } .workflow-progress li.done span { color: #fff; background: #4b9162; }
.current-step-hint { margin: 0 0 18px; padding: 14px 16px; border: 1px solid #eadfc9; border-radius: 13px; background: #fffdf8; } .current-step-hint strong { color: #8d3026; } .current-step-hint p { margin: 5px 0 4px; color: var(--ink); font-size: var(--workbench-type-support); line-height: 1.65; } .current-step-hint small { color: var(--muted); }
.task-form, .revision { display: grid; gap: 18px; max-width: 780px; padding: clamp(20px, 3vw, 32px); border: 1px solid var(--line); border-radius: 18px; background: var(--card); box-shadow: var(--shadow); } label { display: grid; gap: 8px; font-weight: 700; } input, textarea, select { width: 100%; padding: 11px 12px; color: var(--ink); border: 1px solid #d8d3c8; border-radius: 9px; background: #fffefc; } textarea { line-height: 1.65; resize: vertical; } small { color: var(--muted); font-size: var(--workbench-type-support); font-weight: 500; line-height: 1.55; }
.knowledge-note { margin: 0 0 22px; padding: 14px 16px; border-left: 3px solid #d79a3e; color: #64583e; background: #fff9e9; font-size: var(--workbench-type-support); line-height: 1.65; } .output-card, .confirmation, .revision { margin-bottom: 24px; } .output-card, .confirmation { padding: clamp(20px, 3vw, 32px); border: 1px solid var(--line); border-radius: 18px; background: var(--card); box-shadow: var(--shadow); } .output-title { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; } h3 { margin: 0 0 14px; font-size: var(--workbench-type-section-title); } .output-title span { color: var(--muted); font-size: var(--workbench-type-support); } .output { overflow: auto; max-height: 680px; padding: 18px; color: #38353d; border-radius: 10px; background: #f7f6f3; font: var(--workbench-type-support)/1.65 ui-monospace, SFMono-Regular, Menlo, monospace; white-space: pre-wrap; }
.deliverable { display: grid; gap: 14px; color: #3f3a35; line-height: 1.75; } .deliverable h4 { margin: 0; font-size: var(--workbench-type-section-title); } .deliverable p { margin: 0; } .note-deliverable { gap: 18px; } .cover-copy { padding: 10px 13px; color: #9e3328; background: #fff3ed; border-radius: 8px; font-weight: 800; } .note-copy, .spec-copy { white-space: normal; line-height: 1.9; } .hashtags { color: #a74837; font-weight: 700; } .cta-box { padding: 14px 16px; border-left: 3px solid #d79a3e; background: #fff9e9; } .cta-box p { margin-top: 6px; } .deliverable details { padding: 13px 15px; border: 1px solid var(--line); border-radius: 10px; background: #fbfaf7; } .deliverable summary { cursor: pointer; font-weight: 800; } .spec-copy { margin-top: 12px; } .fact-list { display: grid; gap: 9px; padding-left: 20px; margin: 0; } .fact-list span { color: var(--muted); font-size: var(--workbench-type-support); } .fact-list a { color: #9e3328; }
.direction-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 14px 0 18px; } .direction-card { display: grid; gap: 8px; min-height: 168px; padding: 16px; border: 1px solid var(--line); border-radius: 12px; font-size: var(--workbench-type-support); font-weight: 500; } .direction-card:has(input:checked) { border-color: var(--accent); background: #fff6f2; box-shadow: inset 0 0 0 1px var(--accent); } .direction-card input { width: auto; } .direction-card strong { font-weight: 800; } .direction-card span { color: var(--muted); line-height: 1.55; } .direction-card b { color: var(--ink); font-weight: 750; } .confirmation p { color: var(--muted); line-height: 1.65; }
.step-navigation { margin-bottom: 24px; padding: 18px 20px; border: 1px dashed #d6cdbd; border-radius: 16px; background: #fffdf8; } .step-navigation h3 { margin-bottom: 6px; } .step-navigation p { margin: 0 0 13px; color: var(--muted); font-size: var(--workbench-type-support); line-height: 1.6; } .step-navigation-actions { display: flex; flex-wrap: wrap; gap: 9px; } .step-navigation-actions .secondary { min-height: 36px; padding: 0 12px; font-size: var(--workbench-type-support); }
.view-controls { margin-bottom: 24px; padding: 18px 20px; border: 1px solid #cddce8; border-radius: 16px; background: #f4f8fb; } .view-controls h3 { margin-bottom: 6px; } .view-controls p { margin: 0 0 13px; color: var(--muted); font-size: var(--workbench-type-support); line-height: 1.65; }
.stage-version-current { display: grid; gap: 8px; } .version-caption { color: var(--muted); font-size: var(--workbench-type-support); font-weight: 750; } .version-history { display: grid; gap: 10px; margin-top: 24px; padding-top: 18px; border-top: 1px solid var(--line); } .version-history h4 { margin: 0; } .history-note { margin: 0; color: var(--muted); font-size: var(--workbench-type-support); line-height: 1.6; } .history-entry { padding: 12px 14px; border: 1px solid #e3ddd1; border-radius: 11px; background: #fbfaf7; } .history-entry[open] { background: #fff; } .history-entry summary { cursor: pointer; font-weight: 800; } .history-entry > .deliverable { margin-top: 14px; } .history-direction-grid { grid-template-columns: 1fr; }
.backup-combinations { display: grid; gap: 10px; margin-top: 12px; } .backup-combinations > div { padding: 11px 13px; border-radius: 9px; background: #f7f4ed; } .backup-combinations p { margin-top: 5px; }
.image-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 16px; margin-top: 16px; } .generated-image { margin: 0; padding: 10px; border: 1px solid var(--line); border-radius: 14px; background: var(--paper); } .image-preview-trigger { display: block; width: 100%; padding: 0; border-radius: 9px; background: transparent; } .image-preview-trigger:focus-visible { outline: 3px solid #d79a3e; outline-offset: 3px; } .generated-image img { display: block; width: 100%; aspect-ratio: 3 / 4; object-fit: cover; border-radius: 9px; background: #eef0ed; transition: filter .15s ease, transform .15s ease; } .image-preview-trigger:hover img { filter: brightness(.92); transform: scale(1.01); } .generated-image figcaption { margin-top: 8px; color: var(--muted); font-size: var(--workbench-type-support); } .generated-image .text { display: inline-flex; min-height: 30px; margin-top: 4px; padding: 0; font-size: var(--workbench-type-support); } .image-help { color: var(--muted); font-size: var(--workbench-type-support); } .model-badge { display: inline-block; width: fit-content; padding: 6px 10px; border-radius: 999px; color: #245d3a; background: #edf4ef; font-size: var(--workbench-type-support); }
.muted { margin: 12px 10px; color: var(--muted); font-size: var(--workbench-type-support); } .toast { position: fixed; right: 20px; bottom: 20px; z-index: 10; max-width: min(450px, calc(100vw - 40px)); padding: 13px 16px; color: #fff; border-radius: 10px; background: #4a4540; box-shadow: var(--shadow); font-size: var(--workbench-type-body); line-height: 1.5; } .toast.error { background: #9c3a2c; }
@media (max-width: 760px) { .topbar { padding: 15px 18px; } .user-menu span { display: none; } .layout { display: block; } .sidebar { border-right: 0; border-bottom: 1px solid var(--line); } .session-list { display: flex; overflow-x: auto; } .session-item { flex: 0 0 190px; } .direction-grid { grid-template-columns: 1fr; } .workflow-progress { grid-template-columns: 1fr; gap: 6px; } .workflow-progress li { padding: 8px 10px; } .workspace { padding: 24px 18px 42px; } }

/* Workbench shell and multi-module surfaces */
.brand-button { display: flex; align-items: center; gap: 12px; padding: 0; color: var(--ink); text-align: left; background: transparent; }
.brand-button h1 { margin: 3px 0 0; }
.brand-mark { display: grid; place-items: center; width: 38px; height: 38px; color: var(--wb-text); border-radius: 12px; background: var(--accent); font-size: var(--workbench-type-page-title); }
.module-nav { display: grid; gap: 4px; margin-top: 26px; }
.module-nav-item { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 42px; padding: 0 11px; color: var(--ink); text-align: left; border-radius: 10px; background: transparent; }
.module-nav-item:hover, .module-nav-item.active { color: var(--wb-text); background: var(--wb-selected); box-shadow: none; }
.module-nav-item small { margin-left: auto; padding: 3px 6px; color: var(--wb-text); border-radius: 999px; background: var(--wb-selected); font-size: var(--workbench-type-meta); }
.nav-icon { display: grid; place-items: center; width: 22px; color: var(--accent); font-weight: 800; }
.page-actions, .version-toolbar, .detail-heading, .section-heading { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.page-actions { flex: none; align-items: flex-start; }
.danger-text { color: var(--wb-text); }
.small-action { min-height: 28px; padding: 0 4px; color: var(--wb-text); font-size: var(--workbench-type-support); }
.small { min-height: 34px; padding: 0 12px; font-size: var(--workbench-type-support); }
.home-hero { display: grid; grid-template-columns: minmax(0, 1fr) 240px; gap: 28px; align-items: end; padding: clamp(26px, 5vw, 54px); border-radius: 24px; background: var(--wb-selected); box-shadow: none; }
.home-hero h2 { max-width: 700px; margin: 8px 0 14px; letter-spacing: -.055em; font-size: clamp(30px, 5vw, 56px); line-height: 1.06; }
.home-hero p:not(.eyebrow) { max-width: 680px; color: var(--muted); line-height: 1.8; }
.hero-actions { display: grid; gap: 9px; }
.dashboard-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 22px 0 36px; }
.metric-card { display: grid; gap: 7px; padding: 19px; border: 1px solid var(--line); border-radius: 15px; background: var(--wb-selected); }
.metric-card span, .metric-card small { color: var(--muted); font-size: var(--workbench-type-support); }
.metric-card strong { font-size: var(--workbench-type-page-title); letter-spacing: -.04em; }
.home-section { margin-top: 32px; }
.section-heading { margin-bottom: 13px; }
.section-heading h3 { margin: 0; }
.task-cards, .case-grid, .module-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.task-card, .case-card, .module-card { display: grid; gap: 8px; min-height: 125px; padding: 17px; color: var(--ink); text-align: left; border: 1px solid var(--line); border-radius: 15px; background: var(--wb-selected); transition: transform .15s ease, box-shadow .15s ease; }
.task-card:hover, .case-card:hover, .module-card:hover { transform: translateY(-2px); box-shadow: none; }
.task-card.wide { min-height: 150px; }
.task-card p, .case-card p, .module-card p { margin: 0; color: var(--muted); line-height: 1.6; }
.task-card small, .case-card small, .module-card small { color: var(--muted); font-size: var(--workbench-type-support); }
.task-status, .case-card > span { width: fit-content; padding: 4px 8px; color: var(--wb-text); border-radius: 999px; background: var(--wb-selected); font-size: var(--workbench-type-meta); font-weight: 750; }
.module-card { min-height: 185px; }
.module-card-icon { display: grid; place-items: center; width: 36px; height: 36px; color: var(--wb-text); border-radius: 12px; background: var(--accent); font-size: var(--workbench-type-page-title); }
.module-card.is-disabled { opacity: .65; }
.module-intro { display: flex; flex-wrap: wrap; gap: 10px 22px; margin-bottom: 30px; padding: 15px 17px; color: var(--wb-text); border-left: 3px solid transparent; background: var(--wb-selected); font-size: var(--workbench-type-support); }
.task-list-page { margin-top: 24px; }
.module-panel, .archive-panel { margin-bottom: 24px; padding: clamp(20px, 3vw, 32px); border: 1px solid var(--line); border-radius: 18px; background: var(--wb-selected); box-shadow: none; }
.archive-panel { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: 25px; background: var(--wb-selected); }
.archive-panel h3 { margin: 0 0 8px; }
.archive-panel p { color: var(--muted); line-height: 1.65; }
.trash-list { display: grid; gap: 9px; }
.trash-item { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 15px; border: 1px solid transparent; border-radius: 12px; background: var(--wb-selected); }
.trash-item p, .trash-item small { margin: 5px 0 0; color: var(--muted); font-size: var(--workbench-type-support); }
.trash-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px; flex: none; }
.case-detail { display: grid; gap: 18px; }
.case-detail > .text { justify-self: start; padding: 0; }
.case-meta { display: flex; flex-wrap: wrap; gap: 8px 18px; padding: 12px 0; color: var(--muted); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); font-size: var(--workbench-type-support); }
.placeholder-page { display: grid; place-items: center; min-height: 60vh; padding: 40px; text-align: center; }
.placeholder-page h2 { margin: 10px 0; font-size: clamp(30px, 5vw, 48px); }
.placeholder-page p:not(.eyebrow) { max-width: 520px; color: var(--muted); line-height: 1.8; }
.placeholder-icon { display: grid; place-items: center; width: 76px; height: 76px; color: var(--wb-text); border-radius: 24px; background: var(--accent); font-size: var(--workbench-type-page-title); }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.image-module-layout, .chat-layout { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 18px; align-items: start; }
.job-list, .conversation-list { display: grid; gap: 8px; padding: 17px; border: 1px solid var(--line); border-radius: 16px; background: var(--wb-selected); }
.job-item, .conversation-item { display: grid; gap: 5px; padding: 12px; color: var(--ink); text-align: left; border-radius: 10px; background: transparent; }
.job-item:hover, .job-item.active, .conversation-item:hover, .conversation-item.active { background: var(--wb-selected); box-shadow: none; }
.job-item small, .conversation-item small { overflow: hidden; color: var(--muted); font-size: var(--workbench-type-meta); text-overflow: ellipsis; white-space: nowrap; }
.image-job-main, .chat-main { min-width: 0; }
.image-job-detail { min-height: 420px; }
.image-job-detail > textarea { margin-top: 18px; }
.chat-main { display: grid; gap: 15px; }
.chat-header { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 16px 18px; border: 1px solid var(--line); border-radius: 15px; background: var(--wb-selected); }
.chat-header div { display: grid; gap: 5px; }
.chat-header small { color: var(--muted); line-height: 1.5; }
.workbench-message-list { display: grid; gap: 12px; min-height: 280px; max-height: 560px; overflow: auto; padding: 20px; border: 1px solid var(--line); border-radius: 15px; background: var(--wb-selected); }
.workbench-message { max-width: 82%; padding: 12px 15px; border-radius: 14px; }
.workbench-message.user { justify-self: end; background: var(--wb-selected); }
.workbench-message.assistant { justify-self: start; background: var(--wb-selected); border: 1px solid var(--line); }
.workbench-message span { color: var(--muted); font-size: var(--workbench-type-meta); font-weight: 800; }
.workbench-message p { margin: 6px 0 0; line-height: 1.75; }
.chat-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; }
.chat-form textarea { min-height: 72px; }
.evolution-panel { display: grid; gap: 10px; padding: 18px; border: 1px solid transparent; border-radius: 15px; background: var(--wb-selected); }
.evolution-item { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; padding: 13px; border: 1px solid var(--line); border-radius: 11px; background: var(--wb-selected); }
.evolution-item p { margin: 6px 0; color: var(--muted); line-height: 1.6; }
.evolution-item small { color: var(--muted); font-size: var(--workbench-type-meta); }
.evolution-item.accepted { border-color: transparent; background: var(--wb-selected); }
.evolution-item.rejected { opacity: .65; }
.inner-empty { margin: 8vh auto; text-align: center; }
@media (max-width: 820px) { .home-hero, .archive-panel { grid-template-columns: 1fr; } .task-cards, .case-grid, .module-cards, .dashboard-grid { grid-template-columns: 1fr; } .image-module-layout, .chat-layout { grid-template-columns: 1fr; } .job-list, .conversation-list { display: flex; overflow-x: auto; } .job-item, .conversation-item { min-width: 190px; } }
@media (max-width: 900px) { .project-workspace-grid { grid-template-columns: 1fr; } }

/* Kling-inspired workbench visual system: dark canvas, lime actions, clear modules. */
:root {
  --ink: var(--wb-text);
  --muted: var(--wb-text-secondary);
  --paper: var(--wb-bg);
  --card: var(--wb-bg);
  --card-raised: var(--wb-selected);
  --line: transparent;
  --accent: var(--wb-accent);
  --accent-dark: var(--wb-accent);
  --accent-soft: var(--wb-accent);
  --sand: var(--wb-selected);
  --danger: var(--wb-error);
  --shadow: none;
  color-scheme: dark;
}

html { background: var(--paper); }
body { color: var(--ink); background: var(--wb-selected); }
button, input, textarea, select { color: inherit; }
button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, a:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.auth-shell { background: var(--wb-selected); }
.auth-card { border: 1px solid var(--line); background: var(--wb-selected); box-shadow: none; }
.auth-card h1 { color: var(--ink); }
.auth-card p, .auth-card .eyebrow { color: var(--muted); }
.eyebrow { color: var(--accent); letter-spacing: .16em; }
.topbar { position: sticky; top: 0; z-index: 8; min-height: 74px; padding: 12px 30px; background: var(--wb-selected); border-bottom: 1px solid var(--line); backdrop-filter: blur(18px); }
.brand-button { color: var(--ink); }
.brand-button h1 { font-size: var(--workbench-type-page-title); }
.brand-mark { width: 38px; height: 38px; color: var(--wb-text); border-radius: 50%; background: var(--accent); box-shadow: none; }
.user-menu { color: var(--muted); }
.user-menu .text { color: var(--muted); }
.user-menu .text:hover { color: var(--accent); }
.layout { grid-template-columns: 220px minmax(0, 1fr); min-height: calc(100vh - 74px); }
.sidebar { position: sticky; top: 74px; height: calc(100vh - 74px); overflow: auto; padding: 20px 13px 26px; background: var(--wb-selected); border-right: 1px solid var(--line); }
.sidebar > .primary { margin-bottom: 17px; }
.primary { min-height: 44px; color: var(--wb-text); background: var(--accent); border: 1px solid var(--accent); border-radius: 9px; box-shadow: none; }
.primary:hover { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; box-shadow: none; }
.secondary { min-height: 42px; color: var(--ink); background: var(--sand); border: 1px solid var(--line); border-radius: 9px; }
.secondary:hover { color: var(--accent); background: var(--accent-soft); border-color: transparent; }
.text { color: var(--muted); }
.text:hover { color: var(--accent); }
.module-nav { gap: 5px; margin-top: 3px; }
.module-nav-item { min-height: 44px; padding: 0 11px; color: var(--muted); border: 1px solid transparent; border-radius: 9px; }
.module-nav-item:hover { color: var(--ink); background: var(--wb-selected); }
.module-nav-item.active { color: var(--accent); background: var(--wb-selected); border-color: transparent; box-shadow: none; }
.module-nav-item small { color: var(--wb-text); background: var(--accent); }
.nav-icon { color: var(--accent); }
.section-title { margin: 29px 10px 10px; color: var(--wb-text); letter-spacing: .08em; text-transform: uppercase; }
.session-list { gap: 5px; }
.session-item { padding: 11px 10px; color: var(--muted); border: 1px solid transparent; }
.session-item strong { color: var(--ink); font-size: var(--workbench-type-support); }
.session-item span { color: var(--wb-text); }
.session-item:hover, .session-item.active { color: var(--ink); background: var(--card); border-color: var(--line); box-shadow: none; }
.workspace { width: min(1240px, 100%); padding: clamp(28px, 4vw, 54px) clamp(22px, 4vw, 58px) 80px; }
.page-head { margin-bottom: 28px; }
.page-head h2, .empty h2 { color: var(--ink); }
.page-head p:not(.eyebrow), .empty p { color: var(--muted); }
.pill { color: var(--accent); background: var(--accent-soft); border: 1px solid transparent; }
.danger-text { color: var(--danger); }
.danger-text:hover { color: var(--wb-text); }

.home-hero { position: relative; overflow: hidden; grid-template-columns: minmax(0, 1.2fr) minmax(245px, .8fr); gap: 34px; padding: clamp(30px, 5vw, 58px); background: var(--wb-selected); border: 1px solid transparent; border-radius: 15px; box-shadow: none; }
.home-hero::after { position: absolute; right: 7%; bottom: -58px; width: 220px; height: 220px; content: ''; border: 1px solid transparent; border-radius: 50%; box-shadow: none; }
.home-hero > * { position: relative; z-index: 1; }
.home-hero h2 { color: var(--wb-text); font-size: clamp(31px, 5vw, 58px); line-height: 1.08; }
.home-hero p:not(.eyebrow) { color: var(--wb-text); }
.hero-actions { align-content: end; }
.hero-actions .primary { min-height: 50px; font-size: var(--workbench-type-body); }
.hero-actions .secondary { min-height: 44px; text-align: left; justify-content: flex-start; padding-left: 17px; }
.dashboard-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 13px; margin: 22px 0 38px; }
.metric-card { padding: 20px; background: var(--card); border: 1px solid var(--line); border-radius: 12px; }
.metric-card span, .metric-card small { color: var(--muted); }
.metric-card strong { color: var(--accent); font-size: var(--workbench-type-page-title); }
.home-section { margin-top: 36px; }
.section-heading h3, h3 { color: var(--ink); }
.section-heading .muted, .muted { color: var(--muted); }
.task-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 13px; }
.task-card, .case-card, .module-card { min-height: 142px; padding: 18px; color: var(--ink); background: var(--card); border: 1px solid var(--line); border-radius: 12px; }
.task-card:hover, .case-card:hover, .module-card:hover { background: var(--card-raised); border-color: transparent; box-shadow: none; }
.task-card p, .case-card p, .module-card p { color: var(--muted); }
.task-card small, .case-card small, .module-card small { color: var(--wb-text); }
.task-status, .case-card > span { color: var(--accent); background: var(--accent-soft); border: 1px solid transparent; }
.module-cards { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 11px; }
.module-card { min-height: 184px; align-content: start; }
.module-card:first-child { background: var(--wb-selected); border-color: transparent; }
.module-card-icon { color: var(--wb-text); background: var(--accent); border-radius: 10px; }
.module-card.is-disabled { opacity: .54; }
.module-card.is-disabled:hover { opacity: .76; }

.module-intro, .knowledge-note { color: var(--wb-text); background: var(--wb-selected); border-left-color: var(--accent); border-top: 1px solid transparent; border-right: 1px solid transparent; border-bottom: 1px solid transparent; border-radius: 0 9px 9px 0; }
.task-form, .revision, .output-card, .confirmation, .module-panel, .archive-panel { color: var(--ink); background: var(--card); border-color: var(--line); box-shadow: none; }
label { color: var(--ink); }
input, textarea, select { color: var(--ink); background: var(--wb-selected); border-color: transparent; border-radius: 8px; }
input::placeholder, textarea::placeholder { color: var(--wb-text); }
input:focus, textarea:focus, select:focus { border-color: var(--accent); box-shadow: none; }
small { color: var(--muted); }
.workflow-progress { gap: 9px; }
.workflow-progress li { color: var(--muted); background: var(--card); border-color: var(--line); }
.progress-step:hover, .workflow-progress li.viewing .progress-step { background: var(--wb-selected); }
.workflow-progress li span { color: var(--muted); background: var(--wb-selected); }
.workflow-progress li.active { color: var(--accent); background: var(--wb-selected); border-color: transparent; }
.workflow-progress li.active span, .workflow-progress li.done span { color: var(--wb-text); background: var(--accent); }
.workflow-progress li.done { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; }
.current-step-hint, .view-controls, .step-navigation, .evolution-panel { color: var(--ink); background: var(--wb-selected); border-color: transparent; }
.current-step-hint strong { color: var(--accent); }
.current-step-hint p, .view-controls p, .step-navigation p { color: var(--wb-text); }
.output-title span, .version-caption { color: var(--muted); }
.output { color: var(--wb-text); background: var(--wb-selected); border: 1px solid var(--line); }
.deliverable { color: var(--wb-text); }
.cover-copy { color: var(--wb-text); background: var(--accent); }
.hashtags { color: var(--accent); }
.cta-box { background: var(--wb-selected); border-left-color: var(--accent); }
.deliverable details, .history-entry { background: var(--wb-selected); border-color: var(--line); }
.history-entry[open] { background: var(--wb-selected); }
.backup-combinations > div { background: var(--wb-selected); }
.direction-card { background: var(--wb-selected); border-color: var(--line); }
.direction-card:has(input:checked) { background: var(--wb-selected); border-color: var(--accent); box-shadow: none; }
.direction-card span { color: var(--muted); }
.direction-card b { color: var(--ink); }
.version-history { border-top-color: var(--line); }
.archive-panel { background: var(--wb-selected); }
.archive-panel p { color: var(--muted); }
.trash-item { background: var(--wb-selected); border-color: transparent; }
.job-list, .conversation-list { background: var(--wb-selected); border-color: var(--line); }
.job-item, .conversation-item { color: var(--ink); }
.job-item:hover, .job-item.active, .conversation-item:hover, .conversation-item.active { background: var(--accent-soft); box-shadow: none; }
.job-item small, .conversation-item small { color: var(--muted); }
.chat-header { background: var(--card); border-color: var(--line); }
.chat-header small { color: var(--muted); }
.workbench-message-list { background: var(--wb-selected); border-color: var(--line); }
.workbench-message.user { color: var(--wb-text); background: var(--accent); }
.workbench-message.assistant { background: var(--wb-selected); border-color: var(--line); }
.workbench-message span { color: var(--wb-text); }
.evolution-item { background: var(--wb-selected); border-color: var(--line); }
.evolution-item p { color: var(--muted); }
.image-job-detail { background: var(--card); }
.generated-image { background: var(--wb-selected); border-color: var(--line); }
.generated-image figcaption, .image-help { color: var(--muted); }
.model-badge { color: var(--accent); background: var(--accent-soft); border: 1px solid transparent; }
.custom-ratio-panel { display: grid; grid-template-columns: minmax(0, 1fr) minmax(260px, .75fr); align-items: center; gap: 18px; padding: 15px 16px; background: var(--wb-selected); border: 1px solid transparent; border-radius: 10px; }
.custom-ratio-panel[hidden] { display: none; }
.custom-ratio-panel strong { display: block; margin-bottom: 4px; color: var(--accent); }
.custom-ratio-panel small { display: block; }
.custom-ratio-fields { display: grid; grid-template-columns: 1fr auto 1fr; align-items: end; gap: 9px; }
.custom-ratio-fields > span { padding-bottom: 11px; color: var(--accent); font-size: var(--workbench-type-page-title); font-weight: 800; }
.placeholder-page { min-height: 60vh; border: 1px dashed transparent; border-radius: 15px; background: var(--wb-selected); }
.placeholder-page h2 { color: var(--ink); }
.placeholder-page p:not(.eyebrow) { color: var(--muted); }
.placeholder-icon { color: var(--wb-text); background: var(--accent); box-shadow: none; }
.image-lightbox { background: var(--wb-selected); }
.lightbox-close { color: var(--accent); border-color: transparent; }
.toast { color: var(--wb-text); background: var(--accent); box-shadow: none; }
.toast.error { color: var(--wb-text); background: var(--wb-selected); }

@media (max-width: 1100px) {
  .module-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .task-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .topbar { min-height: 68px; padding: 11px 16px; }
  .layout { display: block; }
  .sidebar { position: static; height: auto; padding: 10px 12px 12px; border-right: 0; border-bottom: 1px solid var(--line); }
  .sidebar > .primary { width: auto; min-width: 170px; }
  .module-nav { display: flex; overflow-x: auto; gap: 6px; padding-bottom: 2px; }
  .module-nav-item { flex: 0 0 auto; min-height: 38px; padding: 0 10px; }
  .module-nav-item span:nth-child(2) { font-size: var(--workbench-type-support); }
  .session-list, .section-title { display: none; }
  .workspace { padding: 26px 16px 56px; }
  .home-hero { padding: 27px 22px; }
  .dashboard-grid, .task-cards, .module-cards { grid-template-columns: 1fr; }
  .module-cards { gap: 9px; }
  .module-card { min-height: 112px; }
  .custom-ratio-panel { grid-template-columns: 1fr; }
  .page-head { display: grid; }
  .page-actions { justify-content: space-between; }
}

/* v0.80: every submitted turn exposes one persistent, shared status. Toasts
   remain optional feedback; they are no longer the only acknowledgement. */
body:has(.layout) .layout .workbench-message-status {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  margin-top: 8px;
  color: var(--workbench-result-status) !important;
  font-size: var(--workbench-type-support) !important;
  line-height: 1.45;
  overflow-wrap: anywhere;
}
body:has(.layout) .layout .workbench-message-status::before {
  content: '';
  flex: 0 0 6px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
}
body:has(.layout) .layout .workbench-message-status.is-submitting,
body:has(.layout) .layout .workbench-message-status.is-accepted,
body:has(.layout) .layout .workbench-message-status.is-running {
  color: var(--workbench-result-status-running) !important;
}
body:has(.layout) .layout .workbench-message-status.is-running::before {
  box-shadow: none;
}
body:has(.layout) .layout .workbench-message-status.is-failed {
  color: var(--wb-text);
}
body:has(.layout) .layout .workbench-message-status.is-completed {
  color: var(--workbench-result-meta) !important;
}
/* v1.10: 管理后台按业务、AI 能力与运行审计分组；不再复用旧提示词编辑器。 */
body:has(.layout) .layout .admin-workbench {
  display: grid;
  grid-template-columns: var(--workbench-admin-nav-width) minmax(0, 1fr);
  gap: var(--workbench-admin-content-gap);
  align-items: start;
}
body:has(.layout) .layout .admin-navigation {
  position: sticky;
  top: var(--workbench-space-3);
  display: grid;
  gap: var(--workbench-space-4);
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}
body:has(.layout) .layout .admin-nav-group {
  display: grid;
  gap: var(--workbench-space-1);
  padding-bottom: var(--workbench-space-4);
  border-bottom: 1px solid var(--workbench-color-border);
}
body:has(.layout) .layout .admin-nav-group:last-child {
  padding-bottom: 0;
  border-bottom: 0;
}
body:has(.layout) .layout .admin-nav-group h3 {
  margin: 0 0 var(--workbench-space-1);
  padding: 0;
  color: var(--workbench-color-text);
  font-size: var(--workbench-type-body);
  font-weight: 600;
  line-height: 1.45;
}
body:has(.layout) .layout .admin-nav-item {
  width: 100%;
  min-height: var(--workbench-admin-row-height);
  padding: 0 10px;
  border: 0;
  border-radius: var(--workbench-radius-sm);
  background: transparent;
  color: var(--workbench-color-text-secondary);
  font: inherit;
  font-size: var(--workbench-type-body);
  line-height: 1.45;
  text-align: left;
  cursor: pointer;
}
body:has(.layout) .layout .admin-nav-item:hover { background: var(--workbench-color-surface-hover); color: var(--workbench-color-text); }
body:has(.layout) .layout .admin-nav-item.active { background: var(--workbench-color-accent-surface); color: var(--workbench-color-text); font-weight: 600; }
body:has(.layout) .layout .admin-content { min-width: 0; }
body:has(.layout) .layout .admin-capability-layout {
  display: grid;
  grid-template-columns: minmax(220px, .7fr) minmax(0, 1.5fr);
  gap: var(--workbench-space-3);
  align-items: start;
}
body:has(.layout) .layout .admin-capability-list {
  display: grid;
  gap: var(--workbench-space-2);
  max-height: 70vh;
  overflow: auto;
  padding-right: 2px;
}
body:has(.layout) .layout .admin-capability-row {
  display: grid;
  gap: 3px;
  width: 100%;
  min-height: var(--workbench-admin-row-height);
  padding: var(--workbench-space-2) var(--workbench-space-3);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-control);
  background: var(--workbench-color-surface);
  color: var(--workbench-color-text);
  text-align: left;
  cursor: pointer;
}
body:has(.layout) .layout .admin-capability-row:hover { border-color: transparent; }
body:has(.layout) .layout .admin-capability-row.is-active { border-color: transparent; background: var(--wb-selected); }
body:has(.layout) .layout .admin-capability-row strong { font-size: var(--workbench-type-body); line-height: 1.45; }
body:has(.layout) .layout .admin-capability-row span,
body:has(.layout) .layout .admin-capability-row small { color: var(--workbench-color-text-muted); font-size: var(--workbench-type-meta); line-height: 1.45; }
body:has(.layout) .layout .admin-capability-detail {
  min-width: 0;
  padding: var(--workbench-space-4);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-panel);
  background: var(--workbench-color-surface);
}
body:has(.layout) .layout .admin-capability-detail-head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--workbench-space-2); }
body:has(.layout) .layout .admin-capability-detail-head h3 { margin: 0; font-size: var(--workbench-type-section-title); line-height: 1.45; }
body:has(.layout) .layout .admin-capability-detail-head p,
body:has(.layout) .layout .admin-capability-meta dt,
body:has(.layout) .layout .admin-capability-meta dd { font-size: var(--workbench-type-support); line-height: 1.6; }
body:has(.layout) .layout .admin-capability-detail-head p { margin: 4px 0 0; color: var(--workbench-color-text-secondary); }
body:has(.layout) .layout .admin-capability-meta { display: grid; gap: var(--workbench-space-2); margin: var(--workbench-space-3) 0; }
body:has(.layout) .layout .admin-capability-meta div { display: grid; grid-template-columns: 88px minmax(0,1fr); gap: var(--workbench-space-2); }
body:has(.layout) .layout .admin-capability-meta dt { color: var(--workbench-color-text-muted); }
body:has(.layout) .layout .admin-capability-meta dd { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; color: var(--workbench-color-text); }
body:has(.layout) .layout .admin-capability-content { border-top: 1px solid var(--workbench-color-border); }
body:has(.layout) .layout .admin-capability-content summary { padding: var(--workbench-space-2) 0; color: var(--workbench-color-text); font-size: var(--workbench-type-support); font-weight: 600; cursor: pointer; }
body:has(.layout) .layout .admin-capability-content pre { max-height: 58vh; margin: 0; overflow: auto; white-space: pre-wrap; color: var(--workbench-color-text-secondary); font-family: inherit; font-size: var(--workbench-type-support); line-height: 1.7; }
body:has(.layout) .layout .admin-runtime-protocol-detail .admin-capability-content pre {
  max-height: 62vh;
  white-space: pre-wrap;
  overflow: auto;
}

@media (max-width: 980px) {
  body:has(.layout) .layout .admin-workbench { grid-template-columns: 1fr; }
  body:has(.layout) .layout .admin-navigation { position: static; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--workbench-space-2); }
  body:has(.layout) .layout .admin-capability-layout { grid-template-columns: 1fr; }
  body:has(.layout) .layout .admin-capability-list { max-height: none; }
}
@media (max-width: 640px) {
  body:has(.layout) .layout .admin-navigation { grid-template-columns: 1fr; }
  body:has(.layout) .layout .admin-capability-detail-head,
  body:has(.layout) .layout .admin-protocol-row { display: grid; }
  body:has(.layout) .layout .admin-capability-meta div { grid-template-columns: 1fr; gap: 2px; }
}

/* v0.89: 行业能力包与技能配置共用 Obsidian 同步入口，移动端保持操作可见。 */
body:has(.layout) .layout .admin-capability-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: var(--workbench-space-2);
  min-width: 0;
}
@media (max-width: 640px) {
  body:has(.layout) .layout .admin-section > .section-heading:has(.admin-capability-actions) {
    align-items: flex-start;
    flex-wrap: wrap;
  }
  body:has(.layout) .layout .admin-capability-actions {
    width: 100%;
    justify-content: space-between;
  }
}

/* v0.88: 题材预检与生产流只增加必要的阅读结构，生成中的卡片始终只有一张。 */
.production-flow {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 12px 0 14px;
  padding: 0;
  overflow-x: auto;
  list-style: none;
  scrollbar-width: thin;
}
.production-flow-step {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  gap: 5px;
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-font-size-xs);
  white-space: nowrap;
}
.production-flow-step:not(:last-child)::after { content: '›'; margin-left: 1px; color: var(--workbench-color-border-strong); }
.production-flow-step > span {
  display: inline-grid;
  width: 18px;
  height: 18px;
  place-items: center;
  border: 1px solid var(--workbench-color-border);
  border-radius: 50%;
  font-size: var(--workbench-type-meta);
}
.production-flow-step.is-active { color: var(--workbench-color-text); }
.production-flow-step.is-active > span { border-color: var(--workbench-color-accent); color: var(--workbench-color-accent-soft); }
.production-flow-step.is-done { color: var(--workbench-color-text-secondary); }
.production-flow-step.is-done > span { border-color: transparent; background: var(--wb-selected); color: var(--workbench-color-accent-soft); }
.production-stream-card {
  display: grid;
  gap: 8px;
  padding: 12px 14px;
  border: 1px solid transparent;
  border-radius: var(--workbench-radius-md);
  background: var(--wb-selected);
}
.production-stream-card.is-history { border-color: var(--workbench-color-border); background: transparent; }
.production-stream-card-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.production-stream-card-head > div { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.production-stream-card-head strong { color: var(--workbench-color-text); font-size: var(--workbench-font-size-sm); }
.production-stream-card-head time { color: var(--workbench-color-text-muted); font-size: var(--workbench-font-size-xs); }
.production-stream-card details > summary { color: var(--workbench-color-text-secondary); font-size: var(--workbench-font-size-sm); cursor: pointer; }
.production-stream-card-body { max-height: 520px; overflow: auto; padding-top: 8px; border-top: 1px solid var(--workbench-color-border); }
.production-stream-card-body h2 { margin: 12px 0 5px; font-size: var(--workbench-font-size-body); }
.production-stream-card-body p, .production-stream-card-body li { color: var(--workbench-color-text-secondary); font-size: var(--workbench-font-size-sm); line-height: 1.62; }
.topic-preflight-deliverable { display: grid; gap: 12px; }
.topic-preflight-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.topic-preflight-heading h3 { margin: 3px 0 0; font-size: var(--workbench-font-size-section); }
.topic-preflight-value, .topic-preflight-assessment, .topic-preflight-gaps { display: grid; gap: 5px; padding-top: 10px; border-top: 1px solid var(--workbench-color-border); }
.topic-preflight-value > span, .topic-preflight-assessment > span, .topic-preflight-gaps > span { color: var(--workbench-color-text-muted); font-size: var(--workbench-font-size-xs); }
.topic-preflight-value p, .topic-preflight-assessment p { margin: 0; color: var(--workbench-color-text); font-size: var(--workbench-font-size-sm); line-height: 1.65; }
.topic-preflight-gaps ul { margin: 0; padding-left: 18px; color: var(--workbench-color-text-secondary); font-size: var(--workbench-font-size-sm); line-height: 1.6; }
.topic-preflight-next { margin: 0; color: var(--workbench-color-text-secondary); font-size: var(--workbench-font-size-sm); }
@media (max-width: 760px) {
  .production-flow { margin-top: 10px; }
  .production-stream-card { padding: 11px 12px; }
  .production-stream-card-body { max-height: 420px; }
}

/* v0.53: 四个任务型模块共用列表页任务栏与空状态。 */
.module-list-taskbar {
  min-height: var(--module-taskbar-height);
  height: var(--module-taskbar-height);
  margin-bottom: var(--module-edge-gap);
}
.module-list-taskbar .production-header-actions { margin-left: auto; }
.module-list-stage {
  min-width: 0;
  padding: 0 var(--module-edge-gap) var(--module-edge-gap);
}
.module-list-stage .task-list-heading {
  align-items: center;
  margin: 0 0 12px;
}
.module-list-stage .task-list-heading h2 { margin: 0; font-size: var(--workbench-type-section-title); }
.module-list-stage .task-cards { align-items: stretch; }
.module-list-stage .task-card.wide {
  min-height: 132px;
  align-content: start;
  gap: 7px;
  padding: 16px;
  text-align: left;
}
.module-list-stage .task-card.wide > strong { font-size: var(--workbench-type-body); }
.module-list-stage .task-card.wide > p {
  display: -webkit-box;
  overflow: hidden;
  margin: 0;
  color: var(--wb-text);
  line-height: 1.55;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.module-list-stage .task-card.wide > small { color: var(--wb-text); }
.module-empty-state {
  display: grid;
  justify-items: center;
  gap: 9px;
  min-height: 210px;
  padding: 44px 24px;
  border: 1px solid var(--line);
  border-radius: 16px;
  color: var(--wb-text);
  background: var(--wb-selected);
  text-align: center;
}
.module-empty-state strong { color: var(--wb-text); font-size: var(--workbench-type-page-title); }
.module-empty-state span { color: var(--wb-text); font-size: var(--workbench-type-support); }
.conversation-task-cards { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }

/* 列表页没有底部输入区，允许列表内容正常使用中间列滚动。 */
body.chat-page-body .workspace:has(.module-list-taskbar),
body.notes-workbench-page .workspace:has(.module-list-taskbar) {
  display: block;
  height: auto;
  min-height: 100vh;
  overflow: visible;
}
body.chat-page-body .workspace:has(.module-list-taskbar) .module-list-stage,
body.notes-workbench-page .workspace:has(.module-list-taskbar) .module-list-stage {
  overflow: visible;
}

@media (max-width: 760px) {
  .module-list-taskbar {
    height: auto;
    min-height: 52px;
  }
  .module-list-taskbar .production-title-view > strong { max-width: 58vw; }
  .module-list-stage { padding-right: 0; padding-left: 0; }
  .conversation-task-cards { grid-template-columns: 1fr; }
}

/* v0.3 interaction surfaces and confirmed company-green palette. */
:root {
  --accent: var(--wb-accent);
  --accent-dark: var(--wb-accent);
  --accent-soft: var(--wb-accent);
  --accent-pale: var(--wb-accent);
}
.primary { color: var(--wb-text); background: var(--wb-accent); }
.primary:hover { background: var(--wb-selected); }
.brand-mark, .module-card-icon, .placeholder-icon { color: var(--wb-text); background: var(--wb-accent); }
.module-nav-item:hover, .module-nav-item.active { color: var(--wb-accent); border-color: transparent; }
.nav-icon, .eyebrow, .hashtags, .current-step-hint strong, .small-action { color: var(--wb-accent); }
.home-hero { background: var(--wb-selected); border-color: transparent; }
.home-hero h2, .home-hero p:not(.eyebrow) { color: var(--ink); }
.metric-card strong { color: var(--wb-accent); }
.task-card:hover, .case-card:hover, .module-card:hover { border-color: transparent; }
.task-status, .case-card > span, .reference-chip, .case-number { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; }
.module-intro { color: var(--wb-accent); border-left-color: var(--wb-accent); background: var(--wb-selected); }
.workflow-progress { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.workflow-progress li.active { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; }
.workflow-progress li.active span, .workflow-progress li.done span { color: var(--wb-text); background: var(--wb-accent); }
.workflow-progress li.done { color: var(--wb-accent); background: var(--wb-selected); border-color: transparent; }
.progress-step:hover, .workflow-progress li.viewing .progress-step { background: var(--wb-selected); }
.knowledge-note { color: var(--wb-accent); border-left-color: var(--wb-accent); background: var(--wb-selected); }
.cta-box { background: var(--wb-selected); border-left-color: var(--wb-accent); }
.cover-copy { color: var(--wb-text); background: var(--wb-accent); }
.direction-card:has(input:checked) { background: var(--wb-selected); border-color: transparent; box-shadow: none; }
.model-badge { color: var(--wb-accent); background: var(--wb-selected); border-color: transparent; }
.toast { color: var(--wb-text); background: var(--wb-accent); }
.toast.error { color: var(--wb-text); background: var(--wb-selected); }
.note-workflow-layout { display: grid; grid-template-columns: minmax(0, 1fr) 230px; gap: 22px; align-items: start; }
.note-history { min-width: 0; }
.note-stage-rail { position: sticky; top: 100px; display: grid; gap: 12px; padding: 17px; border: 1px solid var(--line); border-radius: 16px; background: var(--wb-selected); }
.note-stage-rail h3 { margin: 0; }
.note-stage-rail .workflow-progress { display: grid; grid-template-columns: 1fr; gap: 7px; margin: 0; }
.note-stage-rail .current-step-hint { margin: 0; padding: 12px; }
.note-stage-rail .current-step-hint small { display: block; }
.note-stage-rail .step-navigation { margin: 0; padding: 13px; }
.note-history-card { margin-bottom: 20px; padding: 19px; border: 1px solid var(--line); border-radius: 18px; background: var(--wb-selected); }
.note-history-card.active { border-color: transparent; box-shadow: none; }
.note-history-card.compact { background: var(--wb-selected); }
.note-card-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 14px; }
.note-card-heading h3 { margin: 4px 0 5px; }
.note-card-heading p { margin: 0; color: var(--muted); font-size: var(--workbench-type-support); }
.note-index { color: var(--wb-text); font-size: var(--workbench-type-meta); font-weight: 800; letter-spacing: .1em; }
.note-history-card .output-card { margin: 0 0 15px; padding: 18px; }
.reference-chip { display: inline-flex; width: fit-content; margin: 0 0 14px; padding: 6px 10px; border: 1px solid transparent; border-radius: 999px; font-size: var(--workbench-type-support); }
.task-toolbar { display: flex; align-items: center; gap: 14px; margin: 0 0 20px; color: var(--muted); font-size: var(--workbench-type-support); }
.stage-action-row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 14px; }
.stage-action-row .primary { margin-left: auto; }
.revision-collapsible { margin-top: 10px; border: 1px solid var(--line); border-radius: 14px; background: var(--wb-selected); }
.revision-collapsible summary { padding: 13px 16px; color: var(--wb-accent); cursor: pointer; font-weight: 800; }
.revision-collapsible .revision { margin: 0; padding: 16px; border: 0; box-shadow: none; background: transparent; }
.new-note-panel, .case-create-panel { display: grid; grid-template-columns: minmax(0, .72fr) minmax(0, 1.28fr); gap: 22px; margin-bottom: 20px; padding: 20px; border: 1px solid transparent; border-radius: 17px; background: var(--wb-selected); }
.new-note-panel h3, .case-create-panel h3 { margin: 5px 0; }
.new-note-panel p, .case-create-panel p { color: var(--muted); line-height: 1.65; }
.inline-form, .case-form { display: grid; gap: 14px; }
.reference-input { display: grid; gap: 12px; padding: 15px; border: 1px solid var(--line); border-radius: 14px; background: var(--wb-selected); }
.reference-input > div:first-child { display: grid; gap: 4px; }
.reference-preview { min-height: 34px; margin: 0; }
.reference-preview-card { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 11px; border: 1px solid transparent; border-radius: 10px; background: var(--wb-selected); }
.reference-preview-card > div:first-child { display: grid; gap: 3px; }
.reference-thumbs, .case-upload-preview { display: flex; flex-wrap: wrap; gap: 6px; }
.reference-thumbs img, .case-upload-preview img { width: 42px; height: 52px; object-fit: cover; border-radius: 6px; border: 1px solid var(--line); }
.reference-error { color: var(--wb-text); }
.case-library-layout { display: grid; grid-template-columns: 210px minmax(0, 1fr); gap: 18px; align-items: start; }
.project-knowledge-select { display: grid; gap: 6px; min-width: 190px; color: var(--muted); font-size: var(--workbench-type-support); }
.project-knowledge-select select { min-width: 190px; }
.project-industry-select { display: inline-flex; align-items: center; gap: 8px; margin-left: auto; color: var(--muted); font-size: var(--workbench-type-support); }
.project-industry-select select { min-width: 160px; }
.project-knowledge-meta { display: flex; flex-wrap: wrap; gap: 9px; margin: 0 0 18px; color: var(--muted); font-size: var(--workbench-type-support); }
.project-knowledge-meta span { padding: 7px 10px; border: 1px solid transparent; border-radius: 999px; background: var(--wb-selected); }
.project-knowledge-list { display: grid; gap: 12px; }
.project-prompts-panel { display: grid; gap: 14px; }
.project-prompt-form { display: grid; gap: 10px; padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--wb-selected); }
.project-prompt-form label { display: grid; gap: 6px; }
.project-prompt-form-actions { display: flex; justify-content: flex-end; gap: 8px; }
.project-prompt-list { display: grid; gap: 8px; }
.project-prompt-item { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--wb-selected); }
.project-prompt-copy { display: grid; gap: 5px; min-width: 0; }
.project-prompt-copy strong { overflow-wrap: anywhere; word-break: break-word; }
.project-prompt-copy p { display: -webkit-box; overflow: hidden; margin: 0; color: var(--muted); line-height: 1.55; white-space: normal; overflow-wrap: anywhere; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.project-prompt-copy small { color: var(--muted); font-size: var(--workbench-type-meta); }
.project-prompt-actions { display: flex; flex: none; align-items: center; gap: 10px; }
.project-knowledge-file { overflow: hidden; border: 1px solid var(--line); border-radius: 15px; background: var(--wb-selected); }
.project-knowledge-file summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 16px 18px; color: var(--ink); cursor: pointer; list-style: none; }
.project-knowledge-file summary::-webkit-details-marker { display: none; }
.project-knowledge-file summary:hover { background: var(--wb-selected); }
.project-knowledge-file summary span:first-child { display: grid; gap: 5px; min-width: 0; }
.project-knowledge-file summary small { overflow: hidden; color: var(--muted); font-size: var(--workbench-type-meta); text-overflow: ellipsis; white-space: nowrap; }
.project-knowledge-summary-actions { display: flex; flex: none; align-items: center; gap: 8px; }
.project-knowledge-toggle { flex: none; color: var(--wb-text); font-size: var(--workbench-type-support); }
.project-knowledge-file[open] .project-knowledge-toggle { color: var(--muted); }
.project-knowledge-file pre { max-height: 620px; margin: 0; overflow: auto; padding: 18px; border-top: 1px solid var(--line); color: var(--wb-text); background: var(--wb-selected); font: var(--workbench-type-support)/1.72 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; white-space: pre-wrap; word-break: break-word; }
.project-quick-actions { display: flex; flex-wrap: wrap; gap: 9px; margin: -6px 0 18px; }
.project-workspace-grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(260px, .65fr); gap: 18px; align-items: start; }
.project-instructions-panel textarea { min-height: 150px; }
.project-upload-label { position: relative; overflow: hidden; cursor: pointer; }
.project-upload-label input { position: absolute; inset: 0; width: 100%; height: 100%; cursor: pointer; opacity: 0; }
.project-knowledge-file-body { border-top: 1px solid var(--line); }
.project-knowledge-file-body pre { border-top: 0; }
.project-file-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 10px 18px; border-top: 1px solid var(--line); }
.project-file-actions small { margin-right: auto; }
.project-image-asset { display: grid; grid-template-columns: minmax(104px, 148px) minmax(0, 1fr); gap: 14px; align-items: center; padding: 12px; }
.project-image-asset-preview { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 104px; padding: 8px; border: 1px solid var(--line); border-radius: 11px; background: var(--wb-selected); cursor: zoom-in; }
.project-image-asset-preview:hover, .project-image-asset-preview:focus-visible { border-color: transparent; box-shadow: none; outline: 0; }
.project-image-asset-preview img { display: block; width: 100%; max-height: 126px; object-fit: contain; }
.project-image-asset-content { display: grid; gap: 5px; min-width: 0; }
.project-image-asset-content > small { color: var(--muted); font-size: var(--workbench-type-meta); line-height: 1.45; }
.project-image-asset-heading { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; min-width: 0; }
.project-image-asset-heading strong { min-width: 0; overflow-wrap: anywhere; word-break: break-word; }
.project-image-asset .project-file-actions { margin: 3px -12px -12px; padding: 9px 12px; }
.project-related-panel { display: grid; gap: 16px; }
.project-related-group { display: grid; gap: 7px; }
.project-related-group .section-heading { margin: 0; }
.project-related-group h3 { margin: 0; font-size: var(--workbench-type-body); }
.project-related-item { display: grid; gap: 3px; width: 100%; padding: 10px 11px; color: var(--ink); text-align: left; border: 1px solid var(--line); border-radius: 9px; background: var(--wb-selected); }
.project-related-item:hover { border-color: transparent; }
.project-related-item small { color: var(--muted); }
.project-knowledge-pending { margin-top: 18px; }
.case-group-sidebar { position: sticky; top: 100px; display: grid; gap: 6px; padding: 15px; border: 1px solid var(--line); border-radius: 16px; background: var(--wb-selected); }
.case-group-item { display: flex; justify-content: space-between; gap: 10px; padding: 11px 10px; color: var(--ink); text-align: left; border-radius: 9px; background: transparent; }
.case-group-item:hover, .case-group-item.active { color: var(--wb-accent); background: var(--wb-selected); }
.case-group-item small { color: var(--muted); }
.case-library-main { min-width: 0; }
.case-search { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 9px; margin-bottom: 18px; }
.case-list { display: grid; gap: 10px; }
.case-row { display: grid; grid-template-columns: minmax(0, 1fr) 210px auto; align-items: center; gap: 16px; padding: 15px; border: 1px solid var(--line); border-radius: 14px; background: var(--wb-selected); }
.case-row:hover { border-color: transparent; background: var(--wb-selected); }
.case-row-main { min-width: 0; }
.case-row-main h3 { margin: 6px 0; font-size: var(--workbench-type-body); }
.case-row-main p { display: -webkit-box; overflow: hidden; margin: 0 0 7px; color: var(--muted); line-height: 1.65; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.case-row-main small, .case-row-main a { display: block; color: var(--muted); font-size: var(--workbench-type-meta); }
.case-row-main a { margin-top: 5px; color: var(--wb-text); }
.case-row-images { display: flex; gap: 6px; }
.case-row-thumb { width: 42px; height: 58px; padding: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 6px; background: var(--wb-selected); }
.case-row-thumb img { width: 100%; height: 100%; object-fit: cover; }
.group-create-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 10px; margin-bottom: 16px; padding: 15px; border: 1px solid var(--line); border-radius: 14px; background: var(--wb-selected); }
.case-detail-body, .case-detail-gallery { padding-top: 14px; border-top: 1px solid var(--line); }
.case-detail-body h4, .case-detail-gallery h4 { margin: 0 0 10px; }
.case-detail-image { margin: 0; }
.case-detail-image img { display: block; width: 100%; max-height: 540px; object-fit: contain; border-radius: 10px; background: var(--wb-selected); }
.case-image-field { display: grid; gap: 8px; }
.field-label { font-weight: 800; }
.upload-help { max-width: 340px; }
.case-upload-zone { position: relative; display: grid; justify-items: center; gap: 7px; padding: 26px 18px; border: 1px dashed transparent; border-radius: 14px; color: var(--muted); text-align: center; background: var(--wb-selected); cursor: pointer; transition: border-color .16s ease, background .16s ease, transform .16s ease; }
.case-upload-zone:hover, .case-upload-zone:focus-visible, .case-upload-zone.drag-over { border-color: transparent; background: var(--wb-selected); outline: none; }
.case-upload-zone.drag-over { transform: translateY(-1px); }
.case-upload-zone strong { color: var(--ink); font-size: var(--workbench-type-body); }
.case-upload-zone span { font-size: var(--workbench-type-support); }
.case-upload-zone small { color: var(--muted); font-size: var(--workbench-type-meta); }
.case-upload-input { position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0; pointer-events: none; }
.case-upload-preview { min-height: 30px; align-items: flex-start; }
.case-upload-item { position: relative; display: grid; grid-template-rows: 150px auto auto; gap: 5px; width: 118px; margin: 0; padding: 7px; border: 1px solid var(--line); border-radius: 10px; background: var(--wb-selected); }
.case-upload-item img { width: 100%; height: 150px; object-fit: cover; border-radius: 6px; background: var(--wb-selected); }
.case-upload-item figcaption { overflow: hidden; color: var(--muted); font-size: var(--workbench-type-meta); text-overflow: ellipsis; white-space: nowrap; }
.case-upload-remove { justify-self: start; padding: 0; color: var(--wb-text); font-size: var(--workbench-type-meta); background: transparent; }
.case-upload-remove:hover { color: var(--wb-text); }
.image-job-detail .image-grid { align-items: start; grid-template-columns: repeat(auto-fit, minmax(min(230px, 100%), 1fr)); }
.image-job-detail .generated-image img { width: 100%; height: auto; max-height: min(58vh, 620px); aspect-ratio: auto; object-fit: contain; }
.image-job-detail .image-preview-trigger { max-height: min(58vh, 620px); overflow: hidden; }
@media (max-width: 900px) { .note-workflow-layout, .case-library-layout { grid-template-columns: 1fr; } .note-stage-rail, .case-group-sidebar, .case-meta-panel { position: static; } .note-stage-rail .workflow-progress { grid-template-columns: repeat(2, minmax(0, 1fr)); } .case-row { grid-template-columns: minmax(0, 1fr) auto; } .case-row-images { grid-column: 1 / -1; } .case-detail-layout { grid-template-columns: 1fr; } }
@media (max-width: 650px) { .new-note-panel, .case-create-panel { grid-template-columns: 1fr; } .note-stage-rail .workflow-progress { grid-template-columns: 1fr; } .stage-action-row .primary { margin-left: 0; } .case-row { grid-template-columns: 1fr; } .case-row > .secondary { justify-self: start; } .group-create-form { grid-template-columns: 1fr; } .case-note-post { padding: 14px; } .case-note-content-layout { grid-template-columns: 1fr; } .case-note-copy-panel { padding-left: 0; border-left: 0; } .case-note-copy-panel h1 { font-size: var(--workbench-type-page-title); } .case-note-gallery-head { align-items: flex-start; flex-direction: column; gap: 4px; } .case-note-gallery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Skill / case center additions: reuse the existing flat panel language. */
.skills-page { display: grid; gap: 14px; }
.skills-page-intro { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--wb-selected); }
.skills-page-intro span { color: var(--muted); font-size: var(--workbench-type-support); }
.skill-card { display: grid; gap: 14px; padding: 18px; border: 1px solid var(--line); border-radius: 14px; background: var(--card); }
.skill-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.skill-card-head h3 { margin: 4px 0; }
.skill-card-head p { margin: 0; color: var(--muted); line-height: 1.6; }
.skill-card-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 9px 14px; color: var(--muted); font-size: var(--workbench-type-support); }
.skill-card-meta strong { color: var(--ink); }
.skill-card-actions { display: flex; justify-content: flex-end; padding-top: 2px; border-top: 1px solid var(--line); }
.skill-toggle { display: inline-flex; align-items: center; gap: 8px; color: var(--muted); font-size: var(--workbench-type-support); white-space: nowrap; cursor: default; }
.skill-toggle input { position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0; pointer-events: none; }
.skill-toggle-track { position: relative; width: 34px; height: 20px; border-radius: 999px; background: var(--wb-selected); transition: background .18s ease; }
.skill-toggle-track::after { content: ''; position: absolute; top: 3px; left: 3px; width: 14px; height: 14px; border-radius: 50%; background: var(--wb-selected); transition: transform .18s ease; }
.skill-toggle input:checked + .skill-toggle-track { background: var(--wb-accent); }
.skill-toggle input:checked + .skill-toggle-track::after { transform: translateX(14px); }
.skill-detail-page { display: grid; gap: 14px; }
.skill-detail-source, .skill-detail-meta { display: grid; gap: 8px; padding: 16px; border: 1px solid var(--line); border-radius: 14px; background: var(--card); }
.skill-detail-source p { margin: 0; color: var(--muted); line-height: 1.6; }
.skill-detail-source code { overflow: auto; padding: 10px 12px; color: var(--muted); border-radius: 8px; background: var(--page); white-space: pre-wrap; word-break: break-word; }
.skill-detail-meta { display: flex; flex-wrap: wrap; gap: 9px 18px; color: var(--muted); font-size: var(--workbench-type-support); }
.skill-detail-meta strong { color: var(--ink); }
.skill-detail-content pre { max-height: none; }
.skill-content-details { border-top: 1px solid var(--line); padding-top: 12px; }
.skill-content-details summary { cursor: pointer; color: var(--ink); font-weight: 700; }
.skill-content-details pre { max-height: 360px; overflow: auto; margin: 12px 0; padding: 13px; color: var(--muted); white-space: pre-wrap; line-height: 1.6; border: 1px solid var(--line); border-radius: 9px; background: var(--page); }
.skill-version-list { display: grid; gap: 7px; }
.skill-version-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 0; border-top: 1px solid var(--line); }
.skill-version-row small { display: block; margin-top: 3px; color: var(--muted); }
.skill-version-form { display: grid; gap: 11px; padding-top: 13px; border-top: 1px solid var(--line); }
.skill-form-grid, .case-form-two-columns, .metric-input-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.case-form-three-columns { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.skill-version-form textarea { min-height: 170px; font-family: inherit; line-height: 1.6; }
.case-type-filter-bar, .case-create-type-tabs { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 14px; }
.case-type-filter, .case-create-type-tabs button { padding: 8px 12px; color: var(--muted); border: 1px solid var(--line); border-radius: 999px; background: transparent; cursor: pointer; }
.case-type-filter:hover, .case-type-filter.active, .case-create-type-tabs button:hover, .case-create-type-tabs button.active { color: var(--ink); border-color: transparent; background: var(--wb-selected); }
.case-type-label { display: inline-block; margin-left: 8px; color: var(--wb-text); font-size: var(--workbench-type-support); }
.case-metric-fields { display: grid; gap: 10px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line); }
.case-metric-fields > div { display: grid; gap: 8px; }
.case-metric-fields > [hidden] { display: none; }
.case-metric-fields strong { font-size: var(--workbench-type-support); }
.case-metric-fields label { font-size: var(--workbench-type-support); }
.dictionary-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 18px; }
.dictionary-section { display: grid; align-content: start; gap: 11px; padding: 16px; border: 1px solid var(--line); border-radius: 14px; background: var(--card); }
.dictionary-create-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
.dictionary-list { display: grid; gap: 7px; }
.dictionary-row { display: grid; grid-template-columns: minmax(0, 1fr) auto 72px auto; align-items: center; gap: 7px; }
.dictionary-row input { min-width: 0; }
.dictionary-order { text-align: center; }
.dictionary-enabled { display: flex; align-items: center; gap: 4px; color: var(--muted); font-size: var(--workbench-type-support); white-space: nowrap; }
@media (max-width: 700px) { .skills-page-intro, .skill-card-head, .page-head .page-actions { align-items: flex-start; flex-direction: column; } .skill-form-grid, .case-form-two-columns, .case-form-three-columns, .metric-input-grid, .dictionary-grid { grid-template-columns: 1fr; } .dictionary-row { grid-template-columns: minmax(0, 1fr) auto; } .dictionary-order { width: 72px; } }
.knowledge-note { display: none; }
.task-brief { max-width: 760px; display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.progress-step > div { display: grid; gap: 2px; min-width: 0; }
.workflow-progress li small { overflow: hidden; color: var(--muted); font-size: var(--workbench-type-meta); font-weight: 500; text-overflow: ellipsis; white-space: nowrap; }
.workflow-progress li.active small, .workflow-progress li.done small { color: inherit; opacity: .78; }
.current-step-hint, .view-controls, .step-navigation { display: grid; gap: 6px; }
.step-kicker, .result-kicker, .result-label { color: var(--wb-accent); font-size: var(--workbench-type-meta); font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.current-step-hint strong { font-size: var(--workbench-type-body); }
.current-step-hint p, .view-controls p, .step-navigation p { margin: 0; }
.next-action { display: grid; gap: 7px; }
.next-action h3 { margin: 0; }
.next-action > p { margin: 0; }
.next-action .direction-result { margin-top: 6px; }
.case-group-list { display: grid; gap: 5px; }
.case-group-row { display: grid; gap: 3px; padding: 3px; border: 1px solid transparent; border-radius: 10px; }
.case-group-row.dragging { opacity: .55; }
.case-group-row.drag-over { border-color: transparent; background: var(--wb-selected); }
.case-group-row.unfiled { padding: 0; }
.case-group-row .case-group-item { min-width: 0; }
.case-group-item > span { display: flex; align-items: center; gap: 6px; min-width: 0; }
.drag-handle { color: var(--wb-text); font-style: normal; font-size: var(--workbench-type-support); letter-spacing: -4px; cursor: grab; }
.case-group-actions { display: flex; gap: 8px; padding: 0 9px 4px 30px; }
.case-group-edit { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 5px; align-items: center; padding: 5px; border: 1px solid transparent; border-radius: 9px; background: var(--wb-selected); }
.case-group-edit input { min-width: 0; padding: 7px 8px; }
.case-group-detail-panel { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 16px; padding: 16px 18px; border: 1px solid transparent; border-radius: 14px; background: var(--wb-selected); }
.case-group-detail-panel > div:first-child { min-width: 0; }
.case-group-detail-panel h3 { margin: 4px 0 5px; font-size: var(--workbench-type-page-title); }
.case-group-detail-panel p { margin: 0; color: var(--muted); font-size: var(--workbench-type-body); line-height: 1.6; }
.case-group-detail-panel.system-group { border-style: dashed; }
.case-group-detail-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px; flex: none; }
.case-group-detail-panel .case-group-edit { display: grid; grid-template-columns: minmax(0, 1fr) auto; width: min(100%, 520px); margin: 0; padding: 0; border: 0; background: transparent; }
@media (max-width: 650px) {
  .case-group-detail-panel { display: grid; align-items: start; }
  .case-group-detail-actions { justify-content: flex-start; }
  .case-group-detail-panel .case-group-edit { width: 100%; }
}

/* v1.7: route changes acknowledge the click immediately while data loads. */
.module-loading-state {
  display: grid;
  place-items: center;
  align-content: center;
  gap: 8px;
  min-height: clamp(180px, 34vh, 300px);
  padding: 24px;
  color: var(--wb-text);
  text-align: center;
}
.module-loading-state strong {
  color: var(--wb-text);
  font-size: var(--workbench-type-section-title, 16px);
  line-height: 1.4;
}
.module-loading-state > span:last-child {
  color: var(--wb-text);
  font-size: var(--workbench-type-support, 12px);
}
.module-loading-indicator {
  width: 18px;
  height: 18px;
  border: 2px solid transparent;
  border-top-color: var(--wb-accent);
  border-radius: 50%;
  animation: workbenchRouteSpin .72s linear infinite;
}
@keyframes workbenchRouteSpin { to { transform: rotate(360deg); } }
.direction-result { display: grid; gap: 12px; }
.result-intro { display: grid; gap: 4px; padding: 13px 15px; border: 1px solid transparent; border-radius: 12px; background: var(--wb-selected); }
.result-intro h4 { margin: 0; font-size: var(--workbench-type-section-title); }
.result-intro p { margin: 0; color: var(--muted); line-height: 1.55; }
.direction-card { gap: 11px; }
.direction-card-title { display: flex; align-items: baseline; gap: 8px; }
.direction-card-title > span { flex: none; color: var(--wb-accent); font-size: var(--workbench-type-meta); font-weight: 850; }
.direction-card-title strong { font-size: var(--workbench-type-body); }
.direction-select { display: flex; align-items: center; gap: 7px; color: var(--wb-text); font-size: var(--workbench-type-support); font-weight: 800; cursor: pointer; }
.direction-select input { margin: 0; accent-color: var(--wb-accent); }
.direction-field { display: grid; gap: 4px; padding: 9px 10px; border: 1px solid transparent; border-radius: 9px; background: var(--wb-selected); }
.direction-field > span { color: var(--wb-accent); font-size: var(--workbench-type-meta); font-weight: 850; }
.direction-field p { margin: 0; color: var(--muted); font-size: var(--workbench-type-support); line-height: 1.55; }
.supporting-info { margin-top: 12px; padding-top: 11px; border-top: 1px solid var(--line); }
.supporting-info summary { color: var(--wb-accent); cursor: pointer; font-size: var(--workbench-type-support); font-weight: 800; }
.note-deliverable { display: grid; gap: 16px; }
.note-bundle { display: grid; gap: 24px; }
.bundle-copy, .bundle-visual { display: grid; gap: 12px; padding: 16px; border: 1px solid transparent; border-radius: 14px; background: var(--wb-selected); }
.bundle-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding-bottom: 9px; border-bottom: 1px solid var(--line); }
.bundle-heading strong { color: var(--wb-accent); font-size: var(--workbench-type-body); }
.visual-copy-handoff { display: grid; gap: 5px; padding: 10px 12px; border-left: 3px solid transparent; background: var(--wb-selected); }
.visual-copy-handoff p { margin: 0; color: var(--muted); }
.result-block { display: grid; gap: 7px; margin: 0; padding: 0 0 15px; border-bottom: 1px solid var(--line); }
.result-block h4 { margin: 0; font-size: var(--workbench-type-page-title); line-height: 1.45; }
.result-block .cover-copy { width: fit-content; margin: 0; }
.result-block .note-copy { margin: 0; }
.visual-brief { padding-bottom: 0; border-bottom: 0; }
.visual-brief summary { display: flex; align-items: center; justify-content: space-between; cursor: pointer; list-style: none; }
.visual-brief summary::-webkit-details-marker { display: none; }
.visual-brief summary::after { content: '展开'; color: var(--muted); font-size: var(--workbench-type-meta); }
.visual-brief[open] summary::after { content: '收起'; }
.visual-brief .spec-copy { margin-top: 10px; }
.revision-collapsible summary { color: var(--wb-accent); }
@media (max-width: 650px) { .workflow-progress li small { display: none; } .direction-field p { font-size: var(--workbench-type-support); } }

/* High-priority workflow status: running work must be visible at a glance. */
.status-badge { display: inline-flex; align-items: center; gap: 7px; width: fit-content; min-height: 27px; padding: 4px 9px; color: var(--muted); border: 1px solid var(--line); border-radius: 999px; background: var(--wb-selected); font-size: var(--workbench-type-meta); font-weight: 850; line-height: 1.2; white-space: nowrap; }
.status-badge > span:not(.status-dot) { min-width: 0; }
.status-badge small { margin-left: 1px; color: inherit; font-size: var(--workbench-type-meta); font-weight: 650; opacity: .78; }
.status-dot { display: inline-block; flex: none; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.status-running { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); box-shadow: none; }
.status-running .status-dot { background: var(--wb-accent); box-shadow: none; animation: workflowStatusPulse 1.5s ease-in-out infinite; }
.status-failed { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.status-completed { color: var(--wb-accent); border-color: transparent; background: var(--wb-selected); }
.status-waiting { color: var(--muted); background: var(--wb-selected); }
.session-item-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; }
.session-item .status-badge { min-height: 20px; padding: 2px 6px; font-size: var(--workbench-type-meta); }
.session-item .status-badge small { display: none; }
.task-status-wrap { display: block; }
.task-status-wrap .status-badge { min-height: 29px; }
.note-card-side { display: grid; justify-items: end; gap: 8px; }
.note-card-side .status-badge { max-width: 100%; }
.page-live-status { display: flex; justify-content: flex-end; }
.detail-status-line { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.detail-status-line .eyebrow { margin: 0; }
.image-job-not-ready { display: grid; gap: 10px; }
.image-job-not-ready p { margin: 0; }
.job-item.is-running { border-color: transparent; background: var(--wb-selected); box-shadow: none; }
.job-item-status { display: block; }
.job-item-status .status-badge { min-height: 23px; padding: 3px 7px; font-size: var(--workbench-type-meta); }
@keyframes workflowStatusPulse { 0%, 100% { opacity: .72; transform: scale(.9); } 50% { opacity: 1; transform: scale(1.12); } }
@media (prefers-reduced-motion: reduce) { .status-running .status-dot { animation: none; } }

/* Direction results are the main decision surface: keep one result set and make it easy to read. */
.direction-result .result-intro { gap: 7px; padding: 16px 18px; }
.direction-result .result-intro h4 { font-size: var(--workbench-type-page-title); line-height: 1.4; }
.direction-result .result-intro p { font-size: var(--workbench-type-body); line-height: 1.7; }
.direction-grid { grid-template-columns: 1fr; gap: 16px; }
.direction-card { min-height: 0; padding: 20px; gap: 14px; font-size: var(--workbench-type-body); }
.direction-card-title { gap: 10px; }
.direction-card-title > span { font-size: var(--workbench-type-support); }
.direction-card-title strong { font-size: var(--workbench-type-page-title); line-height: 1.45; }
.direction-select { gap: 9px; font-size: var(--workbench-type-body); }
.direction-select input { width: 17px; height: 17px; }
.direction-field { gap: 6px; padding: 13px 14px; }
.direction-field > span { font-size: var(--workbench-type-support); }
.direction-field p { font-size: var(--workbench-type-body); line-height: 1.75; }
.direction-confirmation { margin-top: 14px; }
.direction-confirmation p { font-size: var(--workbench-type-body); line-height: 1.7; }

@media (max-width: 650px) {
  .direction-result .result-intro h4 { font-size: var(--workbench-type-page-title); }
  .direction-card { padding: 17px; }
  .direction-card-title strong { font-size: var(--workbench-type-section-title); }
  .direction-field p { font-size: var(--workbench-type-body); line-height: 1.7; }
}

.task-title-block { display: grid; gap: 8px; min-width: 0; }
.task-title-view { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; }
.task-title-view h2 { margin: 0; }
.task-title-view .text { padding: 3px 0; color: var(--wb-text); font-size: var(--workbench-type-support); }
.task-title-edit { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.task-title-edit input { min-width: min(420px, 70vw); font-size: var(--workbench-type-page-title); font-weight: 750; }
.task-title-edit .small-action { min-height: 34px; padding: 7px 12px; }
@media (max-width: 650px) { .task-title-edit input { min-width: min(100%, 420px); width: 100%; } }

/* Keep the home page quiet after removing the explanatory hero copy. */
.eyebrow { letter-spacing: .04em; text-transform: none; }
.module-nav { margin-top: 0; }
.home-hero { grid-template-columns: minmax(0, 1fr) auto; align-items: center; min-height: 190px; }
.home-hero h2 { max-width: none; margin-bottom: 0; }
.home-hero-content { display: grid; gap: 7px; min-width: 0; }
.home-hero-content p:not(.eyebrow) { max-width: 560px; margin: 4px 0 0; font-size: var(--workbench-type-body); line-height: 1.7; }
.home-hero-note { display: grid; gap: 7px; align-self: center; width: min(320px, 100%); padding: 17px 18px; border: 1px solid transparent; border-radius: 14px; background: var(--wb-selected); }
.home-hero-note span { color: var(--wb-text); font-size: var(--workbench-type-support); font-weight: 800; }
.home-hero-note strong { color: var(--ink); font-size: var(--workbench-type-section-title); line-height: 1.45; }
.home-hero-note p { margin: 0; color: var(--muted); font-size: var(--workbench-type-support); line-height: 1.65; }
.identity-warning { padding: 5px 8px; border: 1px solid transparent; border-radius: 999px; color: var(--wb-text); font-size: var(--workbench-type-support); }
@media (max-width: 760px) { .home-hero-note { width: 100%; } }

/* One note is one continuous page: every production stage stays open. */
.single-note-workflow { display: grid; gap: 20px; }
.note-stage-card { scroll-margin-top: 24px; overflow: hidden; border: 1px solid var(--line); border-radius: 18px; background: var(--wb-selected); box-shadow: none; }
.note-stage-card.is-located { border-color: transparent; box-shadow: none; }
.stage-card-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 20px 22px 17px; border-bottom: 1px solid var(--line); }
.stage-card-heading { display: flex; align-items: flex-start; gap: 12px; min-width: 0; }
.stage-card-number { display: grid; place-items: center; flex: none; width: 34px; height: 34px; color: var(--wb-text); border-radius: 10px; background: var(--wb-accent); font-size: var(--workbench-type-support); font-weight: 900; }
.stage-card-kicker { display: block; color: var(--wb-accent); font-size: var(--workbench-type-support); font-weight: 850; letter-spacing: .04em; }
.stage-card-heading h3 { margin: 5px 0 0; color: var(--ink); font-size: var(--workbench-type-page-title); line-height: 1.35; }
.stage-card-meta { display: grid; justify-items: end; gap: 7px; flex: none; }
.stage-version-badge { color: var(--muted); font-size: var(--workbench-type-support); font-weight: 750; }
.stage-card-body { padding: 22px; }
.stage-card-actions { padding: 16px 22px 20px; border-top: 1px solid var(--line); background: var(--wb-selected); }
.stage-action-buttons, .stage-action-row { display: flex; flex-wrap: wrap; gap: 9px; }
.stage-action-button { min-width: 132px; }
.stage-revision-panel { display: grid; gap: 10px; margin-top: 14px; padding-top: 14px; border-top: 1px dashed transparent; }
.stage-revision-panel[hidden] { display: none; }
.stage-revision-panel textarea { min-height: 92px; }
.stage-empty { padding: 18px; border: 1px dashed transparent; border-radius: 12px; background: var(--wb-selected); }
.stage-empty strong { color: var(--wb-accent); font-size: var(--workbench-type-body); }
.stage-empty p { margin: 7px 0 0; color: var(--muted); line-height: 1.7; }
.history-entry-heading { margin-bottom: 12px; color: var(--wb-accent); font-size: var(--workbench-type-support); font-weight: 850; }
.history-entry > .deliverable { margin-top: 0; }
.note-stage-card .direction-result { margin-top: 0; }
.note-stage-card .direction-result .result-intro h4 { font-size: var(--workbench-type-page-title); }
.note-stage-card .direction-field p, .note-stage-card .note-copy, .note-stage-card .spec-copy { font-size: var(--workbench-type-body); }
@media (max-width: 760px) {
  .home-hero { grid-template-columns: 1fr; align-items: stretch; }
  .home-hero .hero-actions { min-width: 0; }
  .stage-card-header { display: grid; }
  .stage-card-meta { justify-items: start; }
  .stage-action-button { width: 100%; }
}

/* Keep the production page readable: one body size, one heading size, and only
   small deliberate differences for labels and status metadata. */
.note-workflow-layout, .single-note-workflow, .stage-card-body, .stage-card-actions,
.direction-result, .note-deliverable, .visual-spec-summary, .bilibili-module-layout,
.bilibili-job-main, .bilibili-job-detail { font-size: var(--workbench-type-body); }
.note-stage-card .stage-card-heading h3, .note-stage-card .direction-result .result-intro h4,
.note-deliverable .result-block h4, .bilibili-job-detail h3 { font-size: var(--workbench-type-page-title); line-height: 1.5; }
.stage-card-kicker, .stage-version-badge, .result-label, .result-kicker, .step-kicker,
.direction-field > span, .history-entry-heading, .bilibili-facts span { font-size: var(--workbench-type-support); }
.direction-card-title strong { font-size: var(--workbench-type-section-title); line-height: 1.5; }
.direction-card-title > span, .direction-select, .direction-field p, .note-stage-card .note-copy,
.note-stage-card .spec-copy, .result-intro p, .direction-confirmation p, .stage-empty p,
.current-step-hint p, .view-controls p, .step-navigation p, .confirmation p, .history-note,
.bilibili-job-detail p, .bilibili-form-panel .form-help { font-size: var(--workbench-type-body); line-height: 1.75; }
.direction-field { padding: 12px 14px; }
.status-badge, .status-badge small, .pill, .job-item-status .status-badge, .workflow-progress li small,
.session-item .status-badge { font-size: var(--workbench-type-support); }
.status-badge { min-height: 29px; }
.status-badge small { font-size: var(--workbench-type-support); }
.stage-action-button, .stage-card-actions button, .confirmation button, .step-navigation-actions button { font-size: var(--workbench-type-body); }
.visual-spec-fingerprint { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.visual-spec-fingerprint span { padding: 5px 9px; color: var(--wb-accent); border: 1px solid transparent; border-radius: 999px; background: var(--wb-selected); font-size: var(--workbench-type-support); }
.visual-spec-pages { display: grid; gap: 8px; margin-top: 12px; }
.visual-spec-page { display: grid; gap: 5px; padding: 11px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--wb-selected); }
.visual-spec-page > div { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; }
.visual-spec-page strong { font-size: var(--workbench-type-body); }
.visual-spec-page span, .visual-spec-page small { color: var(--muted); font-size: var(--workbench-type-support); }
.visual-spec-page p { margin: 0; color: var(--muted); font-size: var(--workbench-type-body); line-height: 1.65; }
.bilibili-module-layout { display: grid; grid-template-columns: 235px minmax(0, 1fr); gap: 18px; align-items: start; }
.bilibili-job-main { min-width: 0; }
.bilibili-form-panel, .bilibili-job-detail { min-height: 300px; }
.bilibili-result, .bilibili-start-card { display: grid; gap: 14px; padding: 18px; border: 1px solid transparent; border-radius: 14px; background: var(--wb-selected); }
.bilibili-result p, .bilibili-start-card p { margin: 0; }
.bilibili-facts { display: flex; flex-wrap: wrap; gap: 8px; }
.bilibili-facts span { padding: 6px 9px; color: var(--muted); border: 1px solid var(--line); border-radius: 8px; background: var(--wb-selected); }
@media (max-width: 900px) { .bilibili-module-layout { grid-template-columns: 1fr; } }

/* Admin module: dense enough for daily management, with the important numbers and actions kept visible. */
.admin-page-head { margin-bottom: 16px; }
.admin-pill { color: var(--wb-text); background: var(--wb-selected); }
.admin-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; padding-bottom: 10px; border-bottom: 1px solid var(--line); }
.admin-tab { min-height: 39px; padding: 0 15px; color: var(--muted); border: 1px solid transparent; border-radius: 9px; background: transparent; font-weight: 750; }
.admin-tab:hover, .admin-tab.active { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.admin-section { display: grid; gap: 18px; }
.admin-section-help { margin: 6px 0 0; color: var(--muted); font-size: var(--workbench-type-body); line-height: 1.65; }
.admin-range { flex: none; color: var(--muted); font-size: var(--workbench-type-support); }
.admin-filter-panel { display: grid; grid-template-columns: repeat(4, minmax(130px, 1fr)) auto; align-items: end; gap: 10px; padding: 14px; border: 1px solid var(--line); border-radius: 14px; background: var(--card); }
.admin-filter-panel label { gap: 6px; font-size: var(--workbench-type-support); }
.admin-filter-panel .primary { min-height: 40px; }
.admin-summary-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.admin-summary-card { display: grid; gap: 6px; padding: 18px; border: 1px solid var(--line); border-radius: 14px; background: var(--card); }
.admin-summary-card span, .admin-summary-card small { color: var(--muted); font-size: var(--workbench-type-support); }
.admin-summary-card strong { color: var(--ink); font-size: var(--workbench-type-page-title); letter-spacing: -.04em; }
.admin-summary-card.is-accent { border-color: transparent; background: var(--wb-selected); }
.admin-summary-card.is-accent strong, .accent-number { color: var(--wb-accent); }
.admin-summary-card.is-danger { border-color: transparent; }
.admin-summary-card.is-danger strong { color: var(--danger); }
.admin-note { padding: 13px 15px; color: var(--wb-text); border-left: 3px solid transparent; background: var(--wb-selected); font-size: var(--workbench-type-body); line-height: 1.65; }
.admin-table-section { display: grid; gap: 10px; }
.admin-table-section .section-heading { margin-bottom: 0; }
.admin-table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 14px; background: var(--card); }
.admin-table { width: 100%; min-width: 700px; border-collapse: collapse; font-size: var(--workbench-type-body); }
.admin-table th, .admin-table td { padding: 12px 14px; text-align: left; vertical-align: top; border-bottom: 1px solid var(--line); }
.admin-table th { color: var(--muted); background: var(--wb-selected); font-size: var(--workbench-type-support); font-weight: 750; white-space: nowrap; }
.admin-table tbody tr:last-child td { border-bottom: 0; }
.admin-table td strong, .admin-table td small { display: block; }
.admin-table td small { margin-top: 3px; color: var(--muted); font-size: var(--workbench-type-support); }
.admin-table select { min-width: 112px; padding: 8px 9px; font-size: var(--workbench-type-support); }
.admin-empty-cell { padding: 26px !important; color: var(--muted); text-align: center !important; }
.admin-project-heading { margin-top: 12px; }
.admin-project-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.admin-project-card { display: grid; gap: 12px; padding: 17px; border: 1px solid var(--line); border-radius: 15px; background: var(--card); }
.admin-project-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.admin-project-card h4 { margin: 0 0 4px; color: var(--ink); font-size: var(--workbench-type-section-title); }
.admin-project-card-head small { color: var(--muted); font-size: var(--workbench-type-support); }
.admin-project-card-head select { width: auto; min-width: 145px; padding: 8px 9px; font-size: var(--workbench-type-support); }
.admin-project-help { margin: 0; color: var(--muted); font-size: var(--workbench-type-support); line-height: 1.6; }
.admin-member-list { display: grid; gap: 7px; max-height: 260px; overflow: auto; padding-top: 4px; }
.admin-member-option { display: flex; grid-template-columns: auto 1fr; grid-template-rows: auto auto; align-items: start; gap: 1px 9px; padding: 8px 9px; border: 1px solid var(--line); border-radius: 9px; background: var(--wb-selected); font-weight: 500; }
.admin-member-option:has(input:checked) { border-color: transparent; background: var(--wb-selected); }
.admin-member-option input { width: 16px; height: 16px; margin-top: 2px; accent-color: var(--wb-accent); }
.admin-member-option span { display: grid; gap: 2px; }
.admin-member-option strong { font-size: var(--workbench-type-support); }
.admin-member-option small { color: var(--muted); font-size: var(--workbench-type-support); }
.admin-log-table { min-width: 760px; }
.admin-event-label { color: var(--wb-text); font-weight: 700; }
.admin-log-table code { color: var(--wb-text); font-size: var(--workbench-type-support); }
.admin-log-table details { max-width: 420px; }
.admin-log-table summary { cursor: pointer; color: var(--wb-accent); font-size: var(--workbench-type-support); }
.admin-log-table pre { max-width: 420px; overflow: auto; margin: 8px 0 0; padding: 9px; color: var(--muted); border-radius: 8px; background: var(--wb-selected); font: var(--workbench-type-support)/1.55 ui-monospace, SFMono-Regular, Menlo, monospace; white-space: pre-wrap; }
.case-review-list { display: grid; gap: 14px; }
.case-review-card { display: grid; gap: 14px; padding: 17px; border: 1px solid var(--line); border-radius: 15px; background: var(--card); }
.case-review-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.case-review-card h3 { margin: 5px 0 4px; font-size: var(--workbench-type-section-title); }
.case-review-card-head p { margin: 0; color: var(--muted); font-size: var(--workbench-type-support); }
.case-review-status-pending { color: var(--wb-text); background: var(--wb-selected); }
.case-review-status-needs_revision { color: var(--wb-text); background: var(--wb-selected); }
.case-review-body { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 16px; }
.case-review-media { display: flex; gap: 7px; min-height: 92px; align-items: center; padding: 8px; border: 1px solid var(--line); border-radius: 11px; background: var(--wb-selected); }
.case-review-media img { width: 54px; height: 76px; border-radius: 6px; object-fit: cover; }
.case-review-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; align-content: start; }
.case-review-fields > div { display: grid; gap: 4px; min-width: 0; }
.case-review-fields span { color: var(--muted); font-size: var(--workbench-type-meta); }
.case-review-fields strong { overflow: hidden; font-size: var(--workbench-type-support); text-overflow: ellipsis; white-space: nowrap; }
.case-review-copy { padding: 10px 12px; border: 1px solid var(--line); border-radius: 9px; background: var(--wb-selected); }
.case-review-copy summary { cursor: pointer; color: var(--wb-accent); font-size: var(--workbench-type-support); }
.case-review-copy p { margin: 9px 0 0; max-height: 220px; overflow: auto; color: var(--muted); font-size: var(--workbench-type-support); line-height: 1.65; }
.case-review-note { margin: 0; padding: 9px 11px; color: var(--wb-text); border-left: 3px solid transparent; background: var(--wb-selected); font-size: var(--workbench-type-support); line-height: 1.55; }
.case-review-actions { display: flex; justify-content: flex-end; gap: 8px; }
.case-review-empty { padding: 42px; color: var(--muted); border: 1px dashed var(--line); border-radius: 15px; text-align: center; }
@media (max-width: 900px) { .admin-filter-panel { grid-template-columns: repeat(2, minmax(130px, 1fr)); } .admin-filter-panel .primary { width: 100%; } .admin-project-grid { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .admin-filter-panel, .admin-summary-grid { grid-template-columns: 1fr; } .admin-page-head { display: grid; } .admin-project-card-head { display: grid; } .admin-project-card-head select { width: 100%; } }
@media (max-width: 700px) { .case-review-body { grid-template-columns: 1fr; } .case-review-media { min-height: 76px; } .case-review-actions { justify-content: stretch; } .case-review-actions button { flex: 1; } }

.task-center-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 16px; padding: 10px; border: 1px solid var(--line); border-radius: 12px; background: var(--card); }
.task-filter-tabs { display: flex; flex-wrap: wrap; gap: 7px; }
.task-filter-tabs .active { color: var(--wb-text); background: var(--accent); border-color: var(--accent); }
.task-center-list { display: grid; gap: 10px; }
.task-center-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; padding: 18px; border: 1px solid var(--line); border-radius: 13px; background: var(--card); }
.task-center-row.is-running { border-color: transparent; box-shadow: none; }
.task-center-row.is-failed { border-color: transparent; }
.task-center-main { flex: 1 1 auto; min-width: 0; display: grid; gap: 6px; }
.task-center-title { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; }
.task-center-main p, .task-center-main small { margin: 0; color: var(--muted); line-height: 1.55; }
.task-center-main small { font-size: var(--workbench-type-support); }
.task-center-meta,
.task-card-open > small {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--workbench-space-1) var(--workbench-space-3);
  min-width: 0;
}
.task-center-meta > span:first-child,
.task-card-meta-line > span:first-child {
  min-width: 0;
}
.task-card-meta-line {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--workbench-space-1) var(--workbench-space-3);
  min-width: 0;
}
.image-task-heading-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--workbench-space-1) var(--workbench-space-3);
  min-width: 0;
}
.image-task-heading-meta > span:not(.image-project-meta) {
  min-width: 0;
}
.image-project-meta,
.task-project-meta {
  display: inline-flex;
  align-items: center;
  flex: 0 1 auto;
  min-width: 0;
  max-width: min(100%, 280px);
  overflow: hidden;
  color: var(--muted);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.image-project-meta.is-bound,
.task-project-meta.is-bound { color: var(--accent); }
.image-project-meta.is-unavailable,
.task-project-meta.is-unavailable { color: var(--danger); }
.task-snapshot-line { color: var(--wb-text); }
.task-error { padding: 8px 10px; color: var(--wb-text); border-left: 3px solid var(--danger); background: var(--wb-selected); }
.task-center-actions { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: flex-end; gap: 8px; min-width: 145px; }
.task-call-count { color: var(--muted); font-size: var(--workbench-type-support); white-space: nowrap; }
.admin-backup-actions { display: flex; align-items: center; flex-wrap: wrap; justify-content: flex-end; gap: 10px; }
.admin-backup-list { display: grid; gap: 10px; }
.admin-backup-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--card); }
.admin-backup-row > div { display: grid; gap: 5px; min-width: 0; }
.font-package-create { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: end; gap: 12px; margin: 0 0 16px; padding: 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--card); }
.font-package-create label { gap: 6px; font-size: var(--workbench-type-support); }
.font-package-create input[type="file"] { padding: 8px; font-size: var(--workbench-type-support); }
.font-package-list { display: grid; gap: 8px; }
.font-package-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--card); }
.font-package-row > div:first-child { display: grid; gap: 4px; min-width: 0; }
.font-package-title, .font-package-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.font-package-row p, .font-package-row small { margin: 0; color: var(--muted); }
@media (max-width: 900px) { .font-package-create { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 650px) { .font-package-create { grid-template-columns: 1fr; } .font-package-row { align-items: flex-start; flex-direction: column; } }
.admin-backup-row p, .admin-backup-row small { margin: 0; color: var(--muted); line-height: 1.5; }
.conversation-source-panel { display: grid; gap: 10px; padding: 15px 17px; border: 1px solid var(--line); border-radius: 13px; background: var(--card); }
.conversation-source-panel .section-heading { margin-bottom: 0; }
.conversation-source-actions { display: flex; gap: 8px; }
.conversation-source-actions select { flex: 1; min-width: 0; }
.conversation-source-list { display: grid; gap: 6px; }
.conversation-source-item { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 10px; border-radius: 8px; background: var(--accent-soft); }
@media (max-width: 650px) { .task-center-row, .admin-backup-row { display: grid; } .task-center-actions { justify-content: flex-start; align-items: center; } .conversation-source-actions { display: grid; } }

/* v0.5 frosted glass surfaces
   Keep the functional layer translucent and the reading layer calm. The
   workflow stays exactly the same; this block only changes presentation. */
:root {
  --paper: var(--wb-bg);
  --card: var(--wb-bg);
  --card-raised: var(--wb-selected);
  --line: transparent;
  --accent: var(--wb-accent);
  --accent-dark: var(--wb-accent);
  --accent-soft: var(--wb-accent);
  --accent-pale: var(--wb-accent);
  --sand: var(--wb-selected);
  --shadow: none;
  --glass-strong: var(--wb-selected);
  --glass-regular: var(--wb-selected);
  --glass-clear: var(--wb-selected);
  --glass-border: transparent;
  --glass-highlight: var(--wb-selected);
  --accent-rgb: 185, 223, 191;
}

html { background: var(--paper); }
body { background: var(--wb-selected); }

.topbar, .sidebar, .note-stage-rail, .case-group-sidebar, .job-list, .conversation-list {
  background: var(--glass-strong);
  border-color: var(--glass-border);
  -webkit-backdrop-filter: blur(22px) saturate(125%);
  backdrop-filter: blur(22px) saturate(125%);
}
.topbar { background: var(--wb-selected); box-shadow: none; }
.sidebar { background: var(--wb-selected); }

.primary, .secondary, .module-nav-item, .task-card, .case-card, .module-card,
.metric-card, .module-panel, .archive-panel, .output-card, .confirmation,
.task-form, .revision, .chat-header, .workbench-message-list, .evolution-panel,
.admin-filter-panel, .admin-summary-card, .admin-table-wrap, .admin-project-card,
.admin-backup-row, .task-center-toolbar, .task-center-row, .conversation-source-panel {
  border-color: var(--glass-border);
  -webkit-backdrop-filter: blur(18px) saturate(118%);
  backdrop-filter: blur(18px) saturate(118%);
}
.primary, .secondary { transition: transform .16s ease, border-color .16s ease, background .16s ease, box-shadow .16s ease; }
.primary {
  color: var(--wb-text);
  background: var(--wb-selected);
  border-color: transparent;
  box-shadow: none;
}
.primary:hover { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; box-shadow: none; transform: translateY(-1px); }
.primary:active, .secondary:active { transform: translateY(0) scale(.98); }
.secondary {
  color: var(--ink);
  background: var(--wb-selected);
  border-color: transparent;
  box-shadow: none;
}
.secondary:hover { color: var(--accent-pale); background: var(--wb-selected); border-color: transparent; box-shadow: none; transform: translateY(-1px); }
.text:hover { color: var(--accent-pale); }

.brand-mark, .module-card-icon, .placeholder-icon, .stage-card-number {
  color: var(--wb-text);
  background: var(--wb-selected);
  box-shadow: none;
}
.nav-icon, .eyebrow, .hashtags, .current-step-hint strong, .small-action,
.step-kicker, .result-kicker, .result-label, .stage-card-kicker, .history-entry-heading,
.accent-number { color: var(--accent); }
.module-nav-item { background: transparent; }
.module-nav-item:hover,
.module-nav-item.active { color: var(--workbench-color-accent); background: var(--workbench-color-surface-hover); background-image: none; border-color: transparent; box-shadow: none; }
.module-nav-item small { color: var(--wb-text); background: var(--accent); }

.home-hero { background: var(--wb-selected); border-color: var(--glass-border); box-shadow: none; -webkit-backdrop-filter: blur(24px) saturate(125%); backdrop-filter: blur(24px) saturate(125%); }
.home-hero h2 { word-break: keep-all; overflow-wrap: normal; }
.home-hero-note, .module-intro, .knowledge-note, .bilibili-result, .bilibili-start-card,
.new-note-panel, .case-create-panel, .custom-ratio-panel, .admin-note {
  background: var(--wb-selected);
  border-color: transparent;
  -webkit-backdrop-filter: blur(18px) saturate(120%);
  backdrop-filter: blur(18px) saturate(120%);
}
.home-hero-note strong, .home-hero-note span { color: var(--accent-pale); }
.task-card, .case-card, .module-card, .metric-card { background: var(--wb-selected); box-shadow: none; }
.task-card:hover, .case-card:hover, .module-card:hover { background: var(--wb-selected); border-color: transparent; box-shadow: none; }
.module-card:first-child { background: var(--wb-selected); border-color: transparent; }
.metric-card strong { color: var(--accent); }
.task-status, .case-card > span, .reference-chip, .case-number, .model-badge { color: var(--accent-pale); background: var(--wb-selected); border-color: transparent; }

input, textarea, select { background: var(--wb-selected); border-color: transparent; }
input:focus, textarea:focus, select:focus { border-color: transparent; box-shadow: none; }
.workflow-progress li, .current-step-hint, .view-controls, .step-navigation, .evolution-panel { background: var(--wb-selected); border-color: var(--glass-border); }
.workflow-progress li.active { color: var(--accent-pale); background: var(--wb-selected); border-color: transparent; }
.workflow-progress li.done { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; }
.workflow-progress li.active span, .workflow-progress li.done span { color: var(--wb-text); background: var(--wb-selected); }
.progress-step:hover, .workflow-progress li.viewing .progress-step { background: var(--wb-selected); }
.knowledge-note, .module-intro { color: var(--wb-text); border-left-color: var(--accent); }
.cta-box { background: var(--wb-selected); border-left-color: var(--accent); }
.cover-copy { color: var(--wb-text); background: var(--wb-selected); }
.direction-card, .note-history-card, .note-stage-card, .generated-image, .case-row, .visual-spec-page { background: var(--wb-selected); border-color: var(--glass-border); box-shadow: none; }
.direction-card:hover, .case-row:hover { background: var(--wb-selected); border-color: transparent; }
.direction-card:has(input:checked) { background: var(--wb-selected); border-color: transparent; box-shadow: none; }
.direction-select, .direction-card-title > span { color: var(--accent); }
.direction-field { background: var(--wb-selected); border-color: transparent; }
.stage-card-number { width: 36px; height: 36px; }
.note-stage-card { background: var(--wb-selected); border-color: var(--glass-border); box-shadow: none; }
.note-stage-card.is-located { border-color: transparent; box-shadow: none; }
.stage-card-actions { background: var(--wb-selected); border-top-color: var(--glass-border); }
.stage-empty { background: var(--wb-selected); border-color: transparent; }
.stage-empty strong { color: var(--accent); }
.stage-revision-panel { border-top-color: var(--wb-accent); }
.status-running { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); box-shadow: none; }
.status-running .status-dot { background: var(--accent); box-shadow: none; }
.status-completed { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.job-item.is-running { border-color: transparent; background: var(--wb-selected); box-shadow: none; }

/* Final note images: consistent cards in the workflow, original proportions in the lightbox. */
.stage-card-images .image-grid { grid-template-columns: repeat(auto-fill, minmax(148px, 1fr)); gap: 14px; align-items: start; }
.stage-card-images .generated-image { min-width: 0; padding: 9px; background: var(--wb-selected); border-color: transparent; }
.stage-card-images .generated-image img { width: 100%; height: 210px; aspect-ratio: 3 / 4; object-fit: cover; border-radius: 8px; background: var(--wb-selected); }
.stage-card-images .image-preview-trigger { overflow: hidden; cursor: zoom-in; }
.stage-card-images .image-preview-trigger:hover img { filter: brightness(1.08); transform: scale(1.025); }
.stage-card-images .generated-image figcaption { min-height: 2.8em; overflow: hidden; line-height: 1.4; }/* Image operations stay attached to the current result instead of replacing it. */ .image-asset-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }

.image-asset-actions { margin-top: 6px; }





/* The rename form must remain closed until the user explicitly chooses rename. */
.task-title-edit[hidden], .task-title-view[hidden] { display: none !important; }
.task-title-edit input { background: var(--wb-selected); }

/* Avoid a one-character hero heading when the viewport is too narrow for the side card. */
@media (max-width: 980px) {
  .home-hero { grid-template-columns: 1fr; gap: 20px; }
  .home-hero-note { width: min(100%, 420px); }
}
@media (max-width: 650px) {
  .stage-card-images .image-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .stage-card-images .generated-image img { height: 180px; }
}
@media (prefers-reduced-motion: reduce) {
  .primary, .secondary, .task-card, .case-card, .module-card { transition: none; }
}

/* v0.6 compatibility cleanup: navigation no longer inherits glass, gradients or tinted surfaces. */
.module-nav { display: grid; gap: var(--workbench-module-nav-section-gap, 8px); margin-top: 0; }
.module-nav-group {
  display: grid;
  gap: var(--workbench-module-nav-group-gap, 2px);
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  background-image: none;
  box-shadow: none;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
.module-nav-operations { border: 0; background: transparent; }
.module-nav-group-label {
  padding: 0 8px;
  color: var(--workbench-color-accent);
  font-size: var(--workbench-type-section-title);
  font-weight: 650;
  letter-spacing: 0;
}
.module-nav-item { border-color: transparent; background: transparent; background-image: none; box-shadow: none; }
.module-nav-item:hover,
.module-nav-item.active {
  background: var(--workbench-color-surface-hover);
  background-image: none;
  border-color: transparent;
  box-shadow: none;
}
.module-nav-item .nav-icon { text-shadow: none; }
.section-title { margin-top: 22px; padding: 15px 10px 7px; border-top: 0; color: var(--workbench-color-accent); }

@media (max-width: 760px) {
  .module-nav { display: flex; gap: 9px; overflow-x: auto; padding: 1px 0 3px; }
  .module-nav-group { display: flex; flex: 0 0 auto; align-items: center; gap: 5px; padding: 6px; }
  .module-nav-group-label { display: none; }
  .module-nav-item { flex: 0 0 auto; }
  .section-title { margin-top: 12px; padding-top: 11px; }
}

/* v0.7: quieter left navigation. Keep the grouping, remove the bright gradients. */
.sidebar {
  top: 0;
  padding-top: 9px;
  background: var(--wb-selected);
  box-shadow: none;
}
.sidebar::before { background: none; opacity: 0; }
.module-nav-group {
  background: var(--wb-selected);
  box-shadow: none;
}
.module-nav-group::before { background: none; opacity: 0; }
.module-nav-operations {
  background: var(--wb-selected);
  border-color: transparent;
}
.module-nav-item:hover,
.module-nav-item.active { background: var(--workbench-color-surface-hover); background-image: none; box-shadow: none; }

@media (max-width: 760px) {
  .sidebar { padding-top: 8px; }
}

/* v0.8: one interaction language across the workbench. */
:root {
  --control-height: 40px;
  --control-height-small: 34px;
  --control-radius: 10px;
  --control-radius-small: 9px;
  --control-border: transparent;
  --control-hover: var(--wb-bg);
}

button, a { -webkit-tap-highlight-color: transparent; }
button:not(:disabled), a.button-link, summary, [role="button"] { cursor: pointer; }
button:focus-visible, a:focus-visible, summary:focus-visible, [role="button"]:focus-visible {
  outline: 2px solid var(--wb-accent);
  outline-offset: 3px;
}

.primary, .secondary, .button-link {
  min-height: var(--control-height);
  padding: 0 15px;
  border-radius: var(--control-radius);
  font-size: var(--workbench-type-support);
  font-weight: 750;
  line-height: 1.2;
}
.primary {
  background: var(--wb-selected);
  border-color: transparent;
  box-shadow: none;
}
.primary:hover {
  background: var(--wb-selected);
  border-color: transparent;
  box-shadow: none;
}
.secondary {
  background: var(--wb-selected);
  border-color: var(--control-border);
  box-shadow: none;
}
.secondary:hover { background: var(--control-hover); border-color: transparent; }
.text {
  min-height: var(--control-height-small);
  padding: 0 9px;
  border-radius: var(--control-radius-small);
  font-size: var(--workbench-type-support);
  font-weight: 700;
}
.text:hover { background: var(--wb-selected); }
.danger-text:hover { color: var(--wb-text); background: var(--wb-selected); }
.primary.small, .secondary.small, .text.small, .small-action { min-height: var(--control-height-small); padding: 0 12px; font-size: var(--workbench-type-support); border-radius: var(--control-radius-small); }
.primary.small-action { color: var(--wb-text); }
.secondary.small-action { color: var(--ink); }

/* Navigation, tabs and stage controls use the same compact control frame. */
.module-nav-item, .admin-tab, .task-filter-tabs button, .progress-step,
.stage-action-button, .case-group-item, .session-item, .job-item, .conversation-item,
.case-row-thumb, .image-preview-trigger, .case-upload-zone {
  border-radius: var(--control-radius-small);
  transition: background .16s ease, border-color .16s ease, box-shadow .16s ease, transform .16s ease;
}
.admin-tab, .task-filter-tabs button {
  min-height: var(--control-height-small);
  padding: 0 13px;
  color: var(--muted);
  border: 1px solid transparent;
  background: var(--wb-selected);
  font-size: var(--workbench-type-support);
  font-weight: 750;
}
.admin-tab:hover, .task-filter-tabs button:hover { color: var(--accent-pale); background: var(--wb-selected); border-color: var(--control-border); }
.admin-tab.active, .task-filter-tabs button.active {
  color: var(--accent-pale);
  background: var(--wb-selected);
  border-color: transparent;
  box-shadow: none;
}
.progress-step { min-height: 42px; }
.stage-action-button { min-width: 124px; min-height: var(--control-height); }
.case-group-item, .session-item, .job-item, .conversation-item { border: 1px solid transparent; }
.case-group-item:hover, .session-item:hover, .job-item:hover, .conversation-item:hover,
.case-group-item.active, .session-item.active, .job-item.active, .conversation-item.active {
  border-color: transparent;
  background: var(--wb-selected);
  box-shadow: none;
}
.case-row-thumb { border-color: var(--control-border); background: var(--wb-selected); }
.case-row-thumb:hover, .image-preview-trigger:hover { border-color: transparent; box-shadow: none; transform: translateY(-1px); }
.case-upload-zone:hover, .case-upload-zone:focus-visible { transform: translateY(-1px); }

/* Clickable cards remain larger, but use the same hover and press feedback. */
.task-card, .case-card, .module-card { cursor: pointer; }
.module-card:first-child { background: var(--wb-selected); border-color: var(--glass-border); }
.task-card:hover, .case-card:hover, .module-card:hover { transform: translateY(-1px); }
.task-card:active, .case-card:active, .module-card:active,
.module-nav-item:active, .admin-tab:active, .task-filter-tabs button:active,
.stage-action-button:active, .case-group-item:active, .session-item:active,
.job-item:active, .conversation-item:active, .case-row-thumb:active { transform: scale(.985); }

details > summary { min-height: 34px; padding: 7px 0; border-radius: var(--control-radius-small); }
details > summary:hover { color: var(--accent-pale); }

@media (prefers-reduced-motion: reduce) {
  .module-nav-item, .admin-tab, .task-filter-tabs button, .progress-step,
  .stage-action-button, .case-group-item, .session-item, .job-item,
  .conversation-item, .case-row-thumb, .image-preview-trigger, .case-upload-zone { transition: none; }
}

/* v0.9: make action boundaries and passive copy unmistakable. */
.text {
  color: var(--accent-pale);
  border: 1px solid transparent;
  text-decoration: underline;
  text-decoration-color: var(--wb-accent);
  text-decoration-thickness: 1px;
  text-underline-offset: 4px;
}
.text:hover {
  color: var(--wb-text);
  text-decoration-color: var(--wb-text);
  background: var(--wb-selected);
}
.danger-text { color: var(--wb-text); text-decoration-color: var(--wb-text); }
.danger-text:hover { color: var(--wb-text); text-decoration-color: var(--wb-text); }
a:not(.button-link) { color: var(--accent-pale); text-decoration: underline; text-decoration-color: var(--wb-accent); text-underline-offset: 3px; }
a:not(.button-link):hover { color: var(--wb-text); text-decoration-color: var(--wb-text); }

/* A whole card is an entry point: add an unmistakable affordance without
   turning the card into another primary button. */
.task-card, .case-card, .session-item { position: relative; padding-right: 42px; }
.task-card::after, .case-card::after, .session-item::after {
  position: absolute;
  top: 50%;
  right: 15px;
  content: '›';
  color: var(--wb-text);
  font-size: var(--workbench-type-page-title);
  font-weight: 400;
  line-height: 1;
  transform: translateY(-50%);
  transition: color .16s ease, transform .16s ease;
}
.task-card:hover::after, .case-card:hover::after, .session-item:hover::after,
.task-card:focus-visible::after, .case-card:focus-visible::after, .session-item:focus-visible::after {
  color: var(--accent-pale);
  transform: translate(3px, -50%);
}
.module-card small:last-child { color: var(--accent-pale); font-weight: 750; text-decoration: underline; text-decoration-color: var(--wb-accent); text-underline-offset: 4px; }
.module-card:hover small:last-child { text-decoration-color: var(--wb-text); }

/* 案例列表行只展示摘要；只有明确点击“查看完整案例”才进入详情。 */
.case-row { cursor: default; }
.case-row-main { cursor: default; }

/* 案例详情按“笔记内容 / 案例管理信息”分区，减少元信息对正文阅读的干扰。 */
.case-detail-layout { display: grid; grid-template-columns: minmax(0, 1fr) 230px; gap: 18px; align-items: start; }
.case-note-post { min-width: 0; padding: 18px; border: 1px solid var(--line); border-radius: 16px; background: var(--wb-selected); }
.case-note-post-head { margin-bottom: 14px; }
.case-note-post-head .eyebrow { margin-bottom: 6px; }
.case-note-content-layout { display: grid; grid-template-columns: minmax(190px, .9fr) minmax(0, 1.1fr); gap: 18px; align-items: start; }
.case-note-copy-panel { min-width: 0; padding-left: 18px; border-left: 1px solid var(--line); }
.case-note-copy-panel h1 { margin: 0; font-size: var(--workbench-type-page-title); line-height: 1.35; letter-spacing: -.015em; }
.case-note-body { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); }
.case-note-body .note-copy { color: var(--ink); font-size: var(--workbench-type-body); line-height: 1.85; white-space: normal; }
.case-note-gallery { min-width: 0; }
.case-note-gallery-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.case-note-gallery-head h3 { margin: 0; font-size: var(--workbench-type-body); }
.case-note-gallery-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 10px; }
.case-note-gallery-grid .case-detail-image { min-width: 0; }
.case-note-gallery-grid .case-detail-image img { aspect-ratio: 3 / 4; max-height: 360px; object-fit: contain; }
.case-detail-image figcaption { overflow: hidden; margin-top: 5px; color: var(--muted); font-size: var(--workbench-type-meta); text-overflow: ellipsis; white-space: nowrap; }
.case-meta-panel { position: sticky; top: 100px; display: grid; gap: 14px; padding: 15px; border: 1px solid var(--line); border-radius: 16px; background: var(--wb-selected); }
.case-meta-title { padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.case-meta-title .eyebrow { margin-bottom: 5px; }
.case-meta-title h3 { margin: 0; font-size: var(--workbench-type-section-title); }
.case-meta-list { display: grid; gap: 10px; margin: 0; }
.case-meta-item { display: grid; gap: 3px; padding-bottom: 10px; border-bottom: 1px solid var(--line); }
.case-meta-item:last-child { padding-bottom: 0; border-bottom: 0; }
.case-meta-item dt { color: var(--muted); font-size: var(--workbench-type-meta); }
.case-meta-item dd { min-width: 0; margin: 0; color: var(--ink); font-size: var(--workbench-type-support); line-height: 1.5; overflow-wrap: anywhere; }
.case-meta-link { color: var(--accent-pale); }
.case-meta-group-value { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.case-meta-group-form { display: grid; gap: 7px; }
.case-meta-group-form select { width: 100%; padding: 7px 8px; font-size: var(--workbench-type-support); }
.case-meta-group-actions { display: flex; flex-wrap: wrap; gap: 6px; }

/* Status and labels describe a state; they must not look like controls. */
.status-badge, .pill, .task-status, .case-number, .model-badge, .reference-chip { cursor: default; }
.muted, .page-head p:not(.eyebrow), .module-card p, .task-card p, .task-card small,
.case-card p, .case-card small, .admin-section-help, .admin-range, .image-help { cursor: default; }

/* A visible control frame for image zoom and disclosure controls. */
.image-preview-trigger { position: relative; border: 1px solid transparent; }
.image-preview-trigger::after {
  position: absolute;
  right: 8px;
  bottom: 8px;
  padding: 3px 6px;
  content: '放大';
  color: var(--wb-text-secondary);
  border: 1px solid transparent;
  border-radius: 999px;
  background: var(--wb-selected);
  font-size: var(--workbench-type-meta);
  line-height: 1.2;
  opacity: 0;
  transform: translateY(3px);
  transition: opacity .16s ease, transform .16s ease;
  pointer-events: none;
}
.image-preview-trigger:hover::after, .image-preview-trigger:focus-visible::after { opacity: 1; transform: translateY(0); }
details > summary { color: var(--accent-pale); border: 1px solid transparent; }
details > summary:hover { padding-right: 8px; background: var(--wb-selected); border-color: transparent; }

/* Disabled actions describe a state; they are not available choices. */
button:disabled {
  opacity: .38;
  cursor: not-allowed;
  filter: saturate(.55);
  transform: none !important;
  box-shadow: none;
}
button:disabled:hover {
  background: var(--wb-selected);
  border-color: var(--control-border);
}

@media (prefers-reduced-motion: reduce) {
  .task-card::after, .case-card::after, .session-item::after, .image-preview-trigger::after { transition: none; }
}

/* Keep task actions together with the task title, instead of separating
   rename and delete across opposite sides of the page header. */
.task-title-actions, .conversation-title-actions, .chat-header-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}
.task-title-view .task-title-actions { margin-left: 2px; }
.task-title-actions .text, .conversation-title-actions .text { padding: 3px 7px; }

/* Conversation title controls use the same interaction language as note
   tasks: title first, then the compact action group. */
.conversation-title-block { display: grid; gap: 8px; min-width: 0; }
.conversation-title-view { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; }
.conversation-title-view > strong { overflow: hidden; max-width: min(46vw, 520px); text-overflow: ellipsis; white-space: nowrap; font-size: var(--workbench-type-section-title); }
.conversation-title-edit { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.conversation-title-edit input { min-width: min(360px, 62vw); background: var(--wb-selected); }
.conversation-title-edit[hidden], .conversation-title-view[hidden] { display: none !important; }
.chat-header-copy { display: grid !important; gap: 6px !important; min-width: 0; }
.chat-header-actions { justify-content: flex-end; flex: none; }
.action-help { color: var(--muted); font-size: var(--workbench-type-support); white-space: nowrap; }

@media (max-width: 650px) {
  .conversation-title-view > strong { max-width: 72vw; }
  .chat-header { align-items: flex-start; flex-direction: column; }
  .chat-header-actions { justify-content: flex-start; }
  .action-help { white-space: normal; }
}

/* v1 light green sci-fi workspace
   Keep the information architecture intact while moving the visual weight
   from the dark canvas to a calm, high-contrast glass workspace. */
:root {
  --ink: var(--wb-text);
  --ink-strong: var(--wb-text);
  --muted: var(--wb-text-secondary);
  --paper: var(--wb-bg);
  --paper-deep: var(--wb-bg);
  --card: var(--wb-bg);
  --card-raised: var(--wb-selected);
  --card-soft: var(--wb-selected);
  --line: transparent;
  --accent: var(--wb-accent);
  --accent-dark: var(--wb-accent);
  --accent-soft: var(--wb-accent);
  --accent-pale: var(--wb-accent);
  --sand: var(--wb-selected);
  --danger: var(--wb-error);
  --shadow: none;
  --glass-border: transparent;
  --glass-shadow: none;
  color-scheme: light;
}

html { background: var(--paper); }
body {
  min-height: 100vh;
  color: var(--ink);
  background:
    var(--wb-selected);
}
body::before {
  position: fixed;
  inset: 0;
  z-index: -1;
  content: '';
  pointer-events: none;
  opacity: .34;
  background-image: none;
  background-size: 34px 34px;
  mask-image: none;
}
button, input, textarea, select { color: inherit; }
button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, a:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
}

/* Login surface */
.auth-shell {
  background: var(--wb-selected);
}
.auth-card {
  border: 1px solid var(--glass-border);
  background: var(--wb-selected);
  box-shadow: none;
  -webkit-backdrop-filter: blur(24px) saturate(130%);
  backdrop-filter: blur(24px) saturate(130%);
}
.auth-card h1 { color: var(--ink-strong); }
.auth-card p { color: var(--muted); }
.eyebrow { color: var(--accent-dark); }

/* Floating top navigation inspired by the reference page. */
.topbar {
  position: sticky;
  top: 14px;
  z-index: 20;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  width: min(1200px, calc(100% - 32px));
  min-height: 66px;
  margin: 14px auto 0;
  padding: 8px 10px 8px 16px;
  border: 1px solid transparent;
  border-radius: 999px;
  background: var(--wb-selected);
  box-shadow: none;
  -webkit-backdrop-filter: blur(24px) saturate(135%);
  backdrop-filter: blur(24px) saturate(135%);
  overflow: visible;
}
.topbar::before, .topbar::after { display: none; }
.topbar > * { position: relative; z-index: 1; }
.brand-button { gap: 10px; min-width: max-content; color: var(--ink-strong); }
.brand-button h1 { margin: 2px 0 0; color: var(--ink-strong); font-size: var(--workbench-type-page-title); letter-spacing: -.045em; }
.brand-button .eyebrow { font-size: var(--workbench-type-meta); letter-spacing: .14em; }
.brand-mark {
  width: 38px;
  height: 38px;
  color: var(--wb-text);
  border-radius: 50%;
  background: var(--wb-accent);
  box-shadow: none;
}
.topbar-nav {
  display: flex;
  justify-content: center;
  gap: 3px;
  min-width: 0;
  margin: 0 18px;
  padding: 4px;
  border: 1px solid transparent;
  border-radius: 999px;
  background: var(--wb-selected);
  overflow-x: auto;
  scrollbar-width: none;
}
.topbar-nav::-webkit-scrollbar { display: none; }
.topbar-nav-item {
  flex: 0 0 auto;
  min-height: 36px;
  padding: 0 13px;
  color: var(--muted);
  border: 1px solid transparent;
  border-radius: 999px;
  background: transparent;
  font-size: var(--workbench-type-support);
  font-weight: 800;
  white-space: nowrap;
  transition: color .16s ease, background .16s ease, border-color .16s ease, transform .16s ease;
}
.topbar-nav-item:hover { color: var(--accent-dark); background: var(--wb-selected); border-color: transparent; }
.topbar-nav-item.active {
  color: var(--wb-text);
  background: var(--wb-accent);
  border-color: transparent;
  box-shadow: none;
}
.topbar-nav-item:active { transform: scale(.98); }
.user-menu { gap: 5px; color: var(--muted); font-size: var(--workbench-type-support); white-space: nowrap; }
.topbar .text { min-height: 34px; padding: 0 10px; color: var(--accent-dark); text-decoration: none; }
.topbar .text:hover { color: var(--accent-dark); background: var(--wb-selected); text-decoration: none; }

/* Main chrome and navigation */
.layout { grid-template-columns: 244px minmax(0, 1fr); min-height: calc(100vh - 100px); }
.sidebar {
  position: sticky;
  top: 98px;
  height: calc(100vh - 114px);
  margin: 18px 0 0 18px;
  padding: 14px 12px 22px;
  border: 1px solid transparent;
  border-radius: 24px;
  background: var(--wb-selected);
  box-shadow: none;
  -webkit-backdrop-filter: blur(22px) saturate(125%);
  backdrop-filter: blur(22px) saturate(125%);
}
.sidebar::before, .sidebar::after { display: none; }
.module-nav { gap: 10px; margin-top: 0; }
.module-nav-group {
  gap: 4px;
  padding: 9px;
  border: 1px solid transparent;
  border-radius: 18px;
  background: var(--wb-selected);
  box-shadow: none;
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
}
.module-nav-group::before, .module-nav-group::after { display: none; }
.module-nav-group-label { padding: 0 8px; color: var(--workbench-color-accent); font-size: var(--workbench-type-section-title); font-weight: 650; letter-spacing: 0; }
.module-nav-operations { background: transparent; border-color: transparent; }
.module-nav-item {
  min-height: 42px;
  padding: 0 11px;
  color: var(--muted);
  border: 1px solid transparent;
  border-radius: 10px;
  background: transparent;
  box-shadow: none;
}
.module-nav-item:hover,
.module-nav-item.active { color: var(--workbench-color-accent); background: var(--workbench-color-surface-hover); background-image: none; border-color: transparent; box-shadow: none; }
.module-nav-item small { color: var(--wb-text); background: var(--wb-accent); }
.nav-icon { color: var(--wb-accent); text-shadow: none; }
.section-title { margin: 25px 10px 10px; color: var(--muted); letter-spacing: .08em; }
.session-item { color: var(--muted); border: 1px solid transparent; }
.session-item strong { color: var(--ink); }
.session-item span { color: var(--muted); }
.session-item:hover, .session-item.active { color: var(--ink); background: var(--wb-selected); border-color: transparent; box-shadow: none; }
.workspace { width: min(1240px, calc(100% - 24px)); padding: clamp(26px, 4vw, 54px) clamp(20px, 4vw, 58px) 80px; }
.page-head h2, .empty h2 { color: var(--ink-strong); }
.page-head p:not(.eyebrow), .empty p, .muted { color: var(--muted); }
.pill { color: var(--accent-dark); background: var(--wb-selected); border: 1px solid transparent; }

/* Shared cards and controls */
.primary, .secondary, .button-link {
  min-height: 42px;
  border-radius: 11px;
  font-size: var(--workbench-type-support);
  font-weight: 800;
}
.primary, .brand-mark, .module-card-icon, .placeholder-icon { color: var(--wb-text); background: var(--wb-accent); border-color: transparent; }
.primary { box-shadow: none; }
.primary:hover { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; box-shadow: none; }
.secondary {
  color: var(--ink);
  background: var(--wb-selected);
  border: 1px solid var(--line);
  box-shadow: none;
}
.secondary:hover { color: var(--accent-dark); background: var(--wb-selected); border-color: transparent; }
.text { color: var(--accent-dark); text-decoration-color: var(--wb-text); }
.text:hover { color: var(--accent-dark); background: var(--wb-selected); }
.task-card, .case-card, .module-card, .metric-card,
.task-form, .revision, .output-card, .confirmation, .module-panel, .archive-panel,
.chat-header, .workbench-message-list, .evolution-panel, .admin-filter-panel, .admin-summary-card,
.admin-table-wrap, .admin-project-card, .admin-backup-row, .task-center-toolbar,
.task-center-row, .conversation-source-panel {
  color: var(--ink);
  background: var(--wb-selected);
  border-color: var(--line);
  box-shadow: none;
}
.task-card, .case-card, .module-card { color: var(--ink); }
.task-card p, .case-card p, .module-card p, .task-card small, .case-card small, .module-card small { color: var(--muted); }
.task-card:hover, .case-card:hover, .module-card:hover { background: var(--wb-selected); border-color: transparent; box-shadow: none; }
.module-card:first-child { background: var(--wb-selected); border-color: transparent; }
.metric-card strong { color: var(--wb-accent); }
.task-status, .case-card > span, .reference-chip, .case-number, .model-badge { color: var(--accent-dark); background: var(--wb-selected); border-color: transparent; }
.module-card-icon { box-shadow: none; }
.module-intro, .knowledge-note, .home-hero-note, .bilibili-result, .bilibili-start-card,
.new-note-panel, .case-create-panel, .custom-ratio-panel, .admin-note {
  color: var(--ink);
  background: var(--wb-selected);
  border-color: transparent;
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
}
.module-intro, .knowledge-note { border-left-color: var(--wb-accent); }
.home-hero-note strong, .home-hero-note span { color: var(--accent-dark); }

/* Home hero: wide calm panel with subtle orbital geometry. */
.home-hero {
  grid-template-columns: minmax(0, 1fr) minmax(260px, 320px);
  background: var(--wb-selected);
  border: 1px solid transparent;
  box-shadow: none;
  -webkit-backdrop-filter: blur(22px) saturate(125%);
  backdrop-filter: blur(22px) saturate(125%);
}
.home-hero::after { border-color: transparent; box-shadow: none; }
.home-hero h2 { color: var(--ink-strong); font-size: clamp(30px, 4.2vw, 50px); word-break: normal; overflow-wrap: anywhere; }
.home-hero p:not(.eyebrow) { color: var(--muted); }
.home-hero-note { background: var(--wb-selected); border-color: transparent; }

/* Form and workflow surfaces stay bright enough for long reading sessions. */
label { color: var(--ink); }
input, textarea, select { color: var(--ink); background: var(--wb-selected); border-color: transparent; }
input::placeholder, textarea::placeholder { color: var(--wb-text); }
input:focus, textarea:focus, select:focus { border-color: transparent; box-shadow: none; }
.workflow-progress li, .current-step-hint, .view-controls, .step-navigation, .evolution-panel { color: var(--ink); background: var(--wb-selected); border-color: var(--line); }
.workflow-progress li.active { color: var(--accent-dark); background: var(--wb-selected); border-color: transparent; }
.workflow-progress li.done { color: var(--accent-dark); background: var(--wb-selected); border-color: transparent; }
.workflow-progress li.active span, .workflow-progress li.done span { color: var(--wb-text); background: var(--wb-accent); }
.workflow-progress li span { color: var(--muted); background: var(--wb-selected); }
.current-step-hint strong, .step-kicker, .result-kicker, .result-label, .stage-card-kicker, .history-entry-heading, .accent-number { color: var(--accent-dark); }
.current-step-hint p, .view-controls p, .step-navigation p { color: var(--muted); }
.output { color: var(--wb-text); background: var(--wb-selected); border: 1px solid var(--line); }
.deliverable { color: var(--ink); }
.cover-copy { color: var(--wb-text); background: var(--wb-accent); }
.hashtags { color: var(--accent-dark); }
.cta-box { color: var(--ink); background: var(--wb-selected); border-left-color: var(--wb-accent); }
.deliverable details, .history-entry { color: var(--ink); background: var(--wb-selected); border-color: var(--line); }
.history-entry[open] { background: var(--wb-selected); }
.direction-card, .note-history-card, .note-stage-card, .generated-image, .case-row,
.visual-spec-page, .note-stage-rail, .case-group-sidebar, .job-list, .conversation-list,
.reference-input, .reference-preview-card, .group-create-form, .revision-collapsible{ color: var(--ink); background: var(--wb-selected); border-color: var(--line); box-shadow: none; }
.direction-card:hover, .case-row:hover { background: var(--wb-selected); border-color: transparent; }
.direction-card:has(input:checked) { background: var(--wb-selected); border-color: transparent; box-shadow: none; }
.direction-field { background: var(--wb-selected); border-color: var(--line); }
.note-history-card.active, .note-stage-card.is-located { border-color: transparent; box-shadow: none; }
.note-history-card.compact { background: var(--wb-selected); }
.note-stage-card { box-shadow: none; }
.stage-card-actions { background: var(--wb-selected); border-top-color: var(--line); }
.stage-empty { background: var(--wb-selected); border-color: transparent; }
.stage-empty strong { color: var(--accent-dark); }

/* Status system: use green for activity and one restrained red for failure. */
.status-badge { color: var(--muted); background: var(--wb-selected); border-color: var(--line); }
.status-running { color: var(--accent-dark); border-color: transparent; background: var(--wb-selected); box-shadow: none; }
.status-running .status-dot { background: var(--wb-accent); box-shadow: none; }
.status-completed { color: var(--accent-dark); border-color: transparent; background: var(--wb-selected); }
.status-failed { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.job-item.is-running { border-color: transparent; background: var(--wb-selected); box-shadow: none; }
.task-center-row.is-running { border-color: transparent; box-shadow: none; }
.task-error { color: var(--wb-text); border-left-color: var(--danger); background: var(--wb-selected); }
.task-snapshot-line { color: var(--accent-dark) !important; }
.toast { color: var(--wb-text); background: var(--wb-selected); }
.toast.error { color: var(--wb-text); background: var(--danger); }

/* Small screens keep the pill navigation usable without compressing content. */
@media (max-width: 1050px) {
  .topbar-nav { margin: 0 10px; }
  .topbar-nav-item { padding: 0 10px; }
  .user-menu > span:first-child { display: none; }
}
@media (max-width: 820px) {
  .topbar { grid-template-columns: auto auto; width: calc(100% - 24px); margin-top: 10px; padding: 8px 10px; border-radius: 22px; }
  .topbar-nav { grid-column: 1 / -1; grid-row: 2; justify-content: flex-start; margin: 8px 0 0; }
  .layout { display: block; min-height: auto; }
  .sidebar { position: relative; top: auto; width: calc(100% - 24px); height: auto; margin: 12px; }
  .workspace { width: 100%; padding: 24px 18px 50px; }
}
@media (max-width: 560px) {
  .brand-button h1 { font-size: var(--workbench-type-section-title); }
  .brand-mark { width: 34px; height: 34px; }
  .user-menu .text { padding: 0 7px; }
  .topbar-nav-item { padding: 0 9px; font-size: var(--workbench-type-meta); }
}

/* v1.1 correction: keep the header simple; move the reference treatment to the sidebar. */
.topbar {
  position: sticky;
  top: 0;
  display: flex;
  min-height: 86px;
  width: auto;
  margin: 0;
  padding: 16px clamp(20px, 4vw, 64px);
  border: 0;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  background: var(--wb-selected);
  box-shadow: none;
}
.layout { min-height: calc(100vh - 86px); }
.sidebar {
  top: 90px;
  height: calc(100vh - 106px);
  margin: 16px 0 0 16px;
  border-radius: 24px;
}
.module-nav-group {
  border-radius: 22px;
  background: var(--wb-selected);
}
.module-nav-item {
  border-radius: 999px;
}
.module-nav-item.active {
  box-shadow: none;
}
@media (max-width: 820px) {
  .topbar { min-height: 74px; padding: 12px 18px; }
  .layout { min-height: auto; }
  .sidebar { top: auto; height: auto; margin: 12px; }
}

/* v1.2 black canvas, restrained accent, and readable type hierarchy. */
:root {
  --ink: var(--wb-text);
  --ink-strong: var(--wb-text);
  --muted: var(--wb-text-secondary);
  --muted-strong: var(--wb-text-secondary);
  --paper: var(--wb-bg);
  --card: var(--wb-bg);
  --card-raised: var(--wb-selected);
  --line: transparent;
  --accent: var(--wb-accent);
  --accent-dark: var(--wb-accent);
  --accent-soft: var(--wb-accent);
  --accent-pale: var(--wb-accent);
  --sand: var(--wb-selected);
  --danger: var(--wb-error);
  --shadow: none;
  --glass-border: transparent;
  color-scheme: dark;
}

html, body { background: var(--wb-selected); color: var(--ink); }
body { background-image: none !important; }
body::before { display: none !important; }
button, input, textarea, select { color: var(--ink); }
button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, a:focus-visible { outline-color: var(--wb-accent); }

/* Keep the header quiet so the sidebar is the only navigation surface. */
.topbar {
  position: sticky;
  top: 0;
  display: flex;
  min-height: 86px;
  width: auto;
  margin: 0;
  padding: 16px clamp(20px, 4vw, 64px);
  border: 0;
  border-bottom: 1px solid transparent;
  border-radius: 0;
  background: var(--wb-selected);
  box-shadow: none;
  -webkit-backdrop-filter: blur(24px) saturate(120%);
  backdrop-filter: blur(24px) saturate(120%);
}
.topbar::before, .topbar::after { display: none !important; }
.brand-button, .brand-button h1 { color: var(--ink-strong); }
.brand-button .eyebrow { color: var(--wb-accent); }
.brand-mark { color: var(--wb-text); background: var(--wb-accent); box-shadow: none; }
.user-menu { color: var(--muted); }
.topbar .text { color: var(--muted-strong); }
.topbar .text:hover { color: var(--wb-text); background: var(--wb-selected); }

/* Real dark frosted glass: translucent surface, visible blur, quiet border. */
.sidebar {
  position: sticky;
  isolation: isolate;
  overflow: hidden;
  background: var(--wb-selected);
  border-color: transparent;
  box-shadow: none;
  -webkit-backdrop-filter: blur(30px) saturate(145%);
  backdrop-filter: blur(30px) saturate(145%);
}
.sidebar::before {
  position: absolute;
  inset: 0;
  z-index: -1;
  display: block;
  content: '';
  pointer-events: none;
  background: var(--wb-selected);
}
.sidebar::after {
  position: absolute;
  top: 0;
  right: 16px;
  left: 16px;
  z-index: -1;
  display: block;
  height: 1px;
  content: '';
  pointer-events: none;
  background: var(--wb-selected);
}
.sidebar > * { position: relative; z-index: 1; }
.module-nav-group {
  background: var(--wb-selected);
  border-color: transparent;
  box-shadow: none;
  -webkit-backdrop-filter: blur(24px) saturate(135%);
  backdrop-filter: blur(24px) saturate(135%);
}
.module-nav-operations { background: transparent; border-color: transparent; }
.module-nav-group-label, .section-title { color: var(--wb-text); }
.module-nav-item { color: var(--wb-text); background: transparent; border-color: transparent; box-shadow: none; }
.module-nav-item:hover,
.module-nav-item.active { color: var(--workbench-color-accent); background: var(--workbench-color-surface-hover); background-image: none; border-color: transparent; box-shadow: none; }
.module-nav-item small { color: var(--wb-text); background: var(--wb-accent); }
.session-item { color: var(--wb-text); }
.session-item strong { color: var(--wb-text); }
.session-item span { color: var(--wb-text); }
.session-item:hover, .session-item.active { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; }

/* One readable text scale across all modules. */
h1, h2, h3, h4, h5, h6, strong, label, summary { color: var(--ink-strong); }
p, small, .muted, .page-head p:not(.eyebrow), .empty p, .module-card p, .task-card p, .case-card p,
.task-card small, .case-card small, .module-card small, .image-help, .admin-section-help, .admin-range,
.output-title span, .version-caption, .history-note, .chat-header small, .task-center-main p, .task-center-main small { color: var(--muted); }
.eyebrow, .step-kicker, .result-kicker, .result-label, .stage-card-kicker, .history-entry-heading, .accent-number { color: var(--wb-accent); }
a:not(.button-link) { color: var(--wb-text); text-decoration-color: var(--wb-text); }
a:not(.button-link):hover { color: var(--wb-text); text-decoration-color: var(--wb-accent); }/* Neutral glass content surfaces; green is reserved for actions and state. */


.home-hero, .task-card, .case-card, .module-card, .metric-card,
.task-form, .revision, .output-card, .confirmation, .module-panel, .archive-panel,
.chat-header, .workbench-message-list, .evolution-panel, .admin-filter-panel, .admin-summary-card,
.admin-table-wrap, .admin-project-card, .admin-backup-row, .task-center-toolbar, .task-center-row,
.conversation-source-panel, .note-history-card, .note-stage-card, .direction-card, .case-row,
.visual-spec-page, .note-stage-rail, .case-group-sidebar, .job-list, .conversation-list,
.reference-input, .reference-preview-card, .group-create-form, .revision-collapsible,
.generated-image {
  color: var(--ink);
  background: var(--wb-selected);
  border-color: var(--line);
  box-shadow: none;
}
.home-hero { background: var(--wb-selected); border-color: transparent; }
.home-hero::after { border-color: transparent; box-shadow: none; }
.home-hero h2 { color: var(--wb-text); }
.home-hero p:not(.eyebrow) { color: var(--muted-strong); }
.home-hero-note, .module-intro, .knowledge-note, .bilibili-result, .bilibili-start-card,
.new-note-panel, .case-create-panel, .custom-ratio-panel, .admin-note { color: var(--ink); background: var(--wb-selected); border-color: transparent; }
.home-hero-note strong, .home-hero-note span { color: var(--wb-text); }
.module-intro, .knowledge-note { border-left-color: var(--wb-accent); }
.task-card:hover, .case-card:hover, .module-card:hover, .direction-card:hover, .case-row:hover { background: var(--wb-selected); border-color: transparent; }
.module-card:first-child { background: var(--wb-selected); border-color: var(--line); }
.metric-card strong { color: var(--wb-text); }
.module-card-icon, .placeholder-icon, .stage-card-number { color: var(--ink-strong); background: var(--wb-selected); border: 1px solid transparent; box-shadow: none; }
.task-status, .case-card > span, .reference-chip, .case-number, .model-badge { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; }

.direction-count-note { margin: 0 0 14px; padding: 10px 12px; color: var(--wb-text); border-left: 3px solid transparent; border-radius: 8px; background: var(--wb-selected); line-height: 1.65; }

input, textarea, select { color: var(--ink-strong); background: var(--wb-selected); border-color: transparent; }
input::placeholder, textarea::placeholder { color: var(--wb-text); opacity: 1; }
input:focus, textarea:focus, select:focus { border-color: transparent; box-shadow: none; }
.workflow-progress li, .current-step-hint, .view-controls, .step-navigation, .evolution-panel { color: var(--ink); background: var(--wb-selected); border-color: var(--line); }
.workflow-progress li.active { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; }
.workflow-progress li.done { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; }
.workflow-progress li.active span, .workflow-progress li.done span { color: var(--wb-text); background: var(--wb-accent); }
.workflow-progress li span { color: var(--muted); background: var(--wb-selected); }
.current-step-hint p, .view-controls p, .step-navigation p, .confirmation p { color: var(--muted-strong); }
.output { color: var(--wb-text); background: var(--wb-selected); border-color: var(--line); }
.deliverable { color: var(--muted-strong); }
.cover-copy { color: var(--wb-text); background: var(--wb-accent); }
.hashtags { color: var(--wb-text); }
.cta-box { color: var(--muted-strong); background: var(--wb-selected); border-left-color: var(--wb-accent); }
.deliverable details, .history-entry { color: var(--ink); background: var(--wb-selected); border-color: var(--line); }
.history-entry[open] { background: var(--wb-selected); }
.direction-card:has(input:checked) { background: var(--wb-selected); border-color: transparent; box-shadow: none; }
.direction-field { color: var(--muted-strong); background: var(--wb-selected); border-color: transparent; }
.stage-card-actions { background: var(--wb-selected); border-top-color: var(--line); }
.stage-empty { background: var(--wb-selected); border-color: transparent; }
.stage-empty strong { color: var(--wb-text); }

.status-badge { color: var(--muted-strong); background: var(--wb-selected); border-color: var(--line); }
.status-running { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.status-running .status-dot { background: var(--wb-accent); box-shadow: none; }
.status-completed { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.status-failed { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.task-error { color: var(--wb-text); border-left-color: var(--danger); background: var(--wb-selected); }
.task-snapshot-line { color: var(--wb-text); }
.toast { color: var(--wb-text); background: var(--wb-selected); }
.toast.error { color: var(--wb-text); background: var(--wb-selected); }

/* Running jobs use a corner count so the navigation label never gets squeezed. */
.module-nav-item.has-running-status {
  animation: navStatusBreath 2.8s ease-in-out infinite;
}
.nav-job-badge[hidden] { display: none !important; }
.nav-job-badge {
  position: absolute;
  top: 50%;
  right: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  min-width: 19px;
  height: 18px;
  padding: 0 5px;
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: 999px;
  background: var(--wb-selected);
  box-shadow: none;
  font-size: var(--workbench-type-meta);
  font-weight: 850;
  line-height: 1;
  pointer-events: none;
  transform: translateY(-50%);
}
.nav-job-badge::before {
  width: 4px;
  height: 4px;
  content: '';
  border-radius: 50%;
  background: var(--wb-accent);
  box-shadow: none;
  animation: navStatusDotPulse 1.8s ease-in-out infinite;
}
.module-nav-item.has-running-status:hover .nav-job-badge,
.module-nav-item.has-running-status:focus-visible .nav-job-badge {
  border-color: transparent;
  background: var(--wb-selected);
}
@keyframes navStatusBreath {
  0%, 100% { box-shadow: none; }
  50% { box-shadow: none; }
}
@keyframes navStatusDotPulse {
  0%, 100% { opacity: .72; transform: scale(.9); }
  50% { opacity: 1; transform: scale(1.18); }
}
@media (prefers-reduced-motion: reduce) {
  .module-nav-item.has-running-status, .nav-job-badge::before { animation: none; }
}

/* Selected navigation uses a full glass background instead of a left rail. */
.module-nav-item.active,
.module-nav-item.active:hover,
.module-nav-item.has-running-status.active {
  color: var(--wb-text);
  background: var(--wb-selected);
  border-color: transparent;
  box-shadow: none;
  animation: none;
}

/* v1.3 neutral canvas, stronger navigation state, and one type hierarchy. */
:root {
  --ink: var(--wb-text);
  --ink-strong: var(--wb-text);
  --muted: var(--wb-text-secondary);
  --muted-strong: var(--wb-text-secondary);
  --card: var(--wb-bg);
  --card-raised: var(--wb-selected);
  --line: transparent;
  --sand: var(--wb-selected);
  --accent-pale: var(--wb-accent);
  --glass-border: transparent;
}

body { color: var(--wb-text); font-size: var(--workbench-type-body); line-height: 1.55; }
button, input, textarea, select { font-size: var(--workbench-type-body); }
h1, h2, h3, h4, h5, h6 { color: var(--wb-text); line-height: 1.3; }
h1 { font-size: var(--workbench-type-page-title); }
h3 { font-size: var(--workbench-type-page-title); }
h4 { font-size: var(--workbench-type-body); }
.page-head h2, .empty h2 { font-size: clamp(28px, 4vw, 36px); line-height: 1.2; }
p:not(.eyebrow):not(.muted) { color: var(--wb-text); }
small, .muted, .page-head p:not(.eyebrow), .empty p, .chat-header small, .image-help { color: var(--wb-text); }

/* Use grayscale for surfaces; green stays reserved for actions and state. */
.sidebar {
  background: var(--wb-selected);
  border-color: transparent;
  box-shadow: none;
}
.sidebar::before { background: var(--wb-selected); }
.module-nav-group { background: transparent; background-image: none; border-color: transparent; box-shadow: none; }
.module-nav-operations { background: transparent; border-color: transparent; }
.module-nav-group-label, .section-title { color: var(--workbench-color-accent); }
.module-nav-item { color: var(--wb-text); font-size: var(--workbench-type-body); }
.module-nav-item:hover { color: var(--workbench-color-accent); background: var(--workbench-color-surface-hover); background-image: none; border-color: transparent; }
.module-nav-item.active,
.module-nav-item.active:hover,
.module-nav-item.has-running-status.active {
  color: var(--wb-text);
  background: var(--wb-selected);
  border-color: transparent;
  box-shadow: none;
  font-weight: 800;
  transform: translateX(2px);
}
.module-nav-item.active > span:first-child { color: var(--wb-text); }
.module-nav-group .module-nav-item.active,
.module-nav-group .module-nav-item.active:hover,
.module-nav-operations .module-nav-item.active,
.module-nav-operations .module-nav-item.has-running-status.active {
  background: var(--wb-selected);
  border-color: transparent;
  box-shadow: none;
}

.home-hero, .task-card, .case-card, .module-card, .metric-card,
.task-form, .revision, .output-card, .confirmation, .module-panel, .archive-panel,
.chat-header, .workbench-message-list, .evolution-panel, .admin-filter-panel, .admin-summary-card,
.admin-table-wrap, .admin-project-card, .admin-backup-row, .task-center-toolbar, .task-center-row,
.conversation-source-panel, .note-history-card, .note-stage-card, .direction-card, .case-row,
.visual-spec-page, .note-stage-rail, .case-group-sidebar, .job-list, .conversation-list,
.reference-input, .reference-preview-card, .group-create-form, .revision-collapsible,
.generated-image {
  background: var(--wb-selected);
  border-color: transparent;
}
.home-hero { background: var(--wb-selected); border-color: transparent; }
.home-hero::after { border-color: transparent; box-shadow: none; }
.home-hero p:not(.eyebrow) { color: var(--wb-text); }

input, textarea, select { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; }
input::placeholder, textarea::placeholder { color: var(--wb-text); }
.secondary { color: var(--wb-text); background: var(--wb-selected); border: 1px solid transparent; }
.secondary:hover { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; }
.text { color: var(--wb-text); }
.text:hover { color: var(--wb-text); background: var(--wb-selected); }

/* Smart conversation: black and neutral gray instead of green chat surfaces. */
.conversation-list, .chat-header, .conversation-source-panel, .evolution-panel { background: var(--wb-selected); }
.workbench-message-list { background: var(--wb-selected); }
.conversation-item:hover, .conversation-item.active { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; box-shadow: none; }
.workbench-message.user, .workbench-message.assistant { color: var(--wb-text); border: 1px solid transparent; }
.workbench-message.user { background: var(--wb-selected); }
.workbench-message.assistant { background: var(--wb-selected); }
.workbench-message span { color: var(--wb-text); font-size: var(--workbench-type-support); }
.workbench-message p { color: var(--wb-text); font-size: var(--workbench-type-body); line-height: 1.75; }
.status-paused { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.status-paused .status-dot { background: var(--wb-selected); }
.task-center-row.is-paused { border-color: transparent; box-shadow: none; }

.image-history-stream { margin-top: 28px; padding-top: 24px; border-top: 1px solid var(--line); }
.image-history-list { display: grid; gap: 0; margin-top: 16px; }
.image-history-entry { position: relative; margin-left: 12px; padding: 0 0 24px 24px; border-left: 2px solid var(--line); }
.image-history-entry::before { content: ''; position: absolute; width: 10px; height: 10px; left: -6px; top: 4px; border-radius: 50%; background: var(--muted); border: 2px solid var(--paper); }
.image-history-entry.is-current { border-left-color: var(--accent); }
.image-history-entry.is-current::before { background: var(--accent); }
.image-history-entry-head { display: flex; justify-content: space-between; gap: 14px; align-items: flex-start; margin-bottom: 10px; }
.image-history-entry-head strong { display: block; font-size: var(--workbench-type-body); }
.image-history-entry-head span:not(.pill) { display: block; margin-top: 4px; color: var(--muted); font-size: var(--workbench-type-support); }
.image-history-entry-body { display: grid; grid-template-columns: minmax(130px, 220px) minmax(0, 1fr); gap: 16px; align-items: start; }
.image-history-preview { display: block; width: 100%; padding: 0; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: var(--paper); cursor: zoom-in; }
.image-history-preview img { display: block; width: 100%; max-height: 260px; object-fit: contain; }
.image-history-details { min-width: 0; color: var(--text); font-size: var(--workbench-type-support); line-height: 1.7; }
.image-history-details p { margin: 0 0 8px; overflow-wrap: anywhere; }
.image-history-details strong { color: var(--muted); }
[data-edit-local-only] small { display: block; margin-top: 6px; color: var(--muted); line-height: 1.6; }

@media (max-width: 700px) {
  .image-history-entry-body { grid-template-columns: 1fr; }
  .image-history-preview { max-width: 260px; }
  .image-history-entry-head { flex-direction: column; gap: 8px; }
}

/* v1.4 centered login with a dark frosted-glass surface. */
.auth-shell {
  min-height: 100vh;
  padding: 24px;
  background: var(--wb-selected);
}
.auth-card {
  width: min(460px, 100%);
  padding: clamp(38px, 7vw, 64px) clamp(28px, 6vw, 52px);
  text-align: center;
  border: 1px solid transparent;
  border-radius: 26px;
  background: var(--wb-selected);
  box-shadow: none;
  -webkit-backdrop-filter: blur(30px) saturate(125%);
  backdrop-filter: blur(30px) saturate(125%);
}
.auth-card h1 {
  margin: 0 0 30px;
  color: var(--wb-text);
  font-size: clamp(28px, 5vw, 42px);
  line-height: 1.2;
  letter-spacing: -.04em;
}
.auth-card #login-actions {
  display: flex;
  justify-content: center;
  width: 100%;
}
.auth-card #login-actions .primary {
  min-width: 220px;
  color: var(--wb-text);
  background: var(--wb-accent);
  box-shadow: none;
}
.auth-card #login-actions .primary:hover { background: var(--wb-selected); }

/* v1.5 open sidebar shell and a scrollable recent-task region. */
.sidebar {
  display: flex;
  flex-direction: column;
  min-height: 0;
  padding: 14px 12px 16px;
  overflow: visible;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
.sidebar::before,
.sidebar::after { display: none !important; }
.sidebar > .module-nav {
  flex: 0 0 auto;
}
.sidebar .section-title {
  flex: 0 0 auto;
  margin: 22px 10px 10px;
  padding: 0;
  border: 0;
}
.sidebar .session-list {
  display: grid;
  flex: 1 1 auto;
  align-content: start;
  min-height: 0;
  gap: 6px;
  padding: 0 4px 14px 0;
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-color: var(--wb-text);
  scrollbar-width: thin;
}
.sidebar .session-list::-webkit-scrollbar { width: 6px; }
.sidebar .session-list::-webkit-scrollbar-track { background: transparent; }
.sidebar .session-list::-webkit-scrollbar-thumb {
  border-radius: 999px;
  background: var(--wb-selected);
}
.sidebar .session-list::-webkit-scrollbar-thumb:hover { background: var(--wb-selected); }

@media (max-width: 760px) {
  .sidebar {
    display: block;
    min-height: auto;
    padding-bottom: 12px;
  }
  .sidebar .session-list,
  .sidebar .section-title { display: none; }
}

.chat-page-head { margin-bottom: 22px; }
.chat-page-head p:not(.eyebrow) { max-width: 720px; }
.chat-create-panel {
  display: grid;
  grid-template-columns: minmax(260px, .85fr) minmax(360px, 1.15fr);
  gap: 28px;
  margin-bottom: 18px;
  padding: 22px;
  border: 1px solid transparent;
  border-radius: 18px;
  background: var(--wb-selected);
  box-shadow: none;
}
.chat-create-copy { align-self: center; }
.chat-create-copy h3 { margin: 5px 0 8px; }
.chat-create-copy p:not(.eyebrow) { margin: 0; color: var(--muted); line-height: 1.7; }
.chat-create-form { display: grid; gap: 13px; }
.chat-create-form label { display: grid; gap: 6px; }
.chat-create-form small { line-height: 1.55; }
.chat-create-actions { display: flex; align-items: center; gap: 8px; }

.chat-layout { grid-template-columns: 260px minmax(0, 1fr); gap: 16px; }
.conversation-list {
  position: sticky;
  top: 98px;
  align-content: start;
  max-height: calc(100vh - 126px);
  overflow-y: auto;
  padding: 12px;
  background: var(--wb-selected);
}
.conversation-list .section-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 2px 4px 6px;
}
.conversation-item { gap: 4px; padding: 11px; }
.conversation-item strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.conversation-item small { color: var(--wb-text); }
.conversation-item > span {
  display: -webkit-box;
  overflow: hidden;
  color: var(--wb-text);
  font-size: var(--workbench-type-support);
  line-height: 1.45;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.chat-main, .chat-thread { min-width: 0; }
.chat-thread { display: grid; gap: 12px; }

.chat-empty {
  display: grid;
  justify-items: center;
  min-height: 420px;
  padding: clamp(44px, 9vw, 90px) 26px;
  text-align: center;
  border: 1px dashed transparent;
  border-radius: 18px;
  background: var(--wb-selected);
}
.chat-empty-icon {
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  margin-bottom: 14px;
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: 15px;
  background: var(--wb-selected);
  font-size: var(--workbench-type-page-title);
}
.chat-empty h3 { margin: 0 0 8px; }
.chat-empty p { max-width: 560px; margin: 0 0 20px; color: var(--muted); line-height: 1.75; }

.chat-header { align-items: flex-start; padding: 15px 17px; background: var(--wb-selected); }
.chat-header-copy { flex: 1; }
.conversation-title-view { gap: 8px; }
.conversation-title-view > strong { max-width: min(42vw, 500px); font-size: var(--workbench-type-page-title); }
.conversation-project-badge {
  padding: 3px 8px;
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: 999px;
  background: var(--wb-selected);
  font-size: var(--workbench-type-meta);
  font-weight: 700;
}
.conversation-summary {
  display: flex;
  gap: 8px;
  margin: 1px 0 0;
  color: var(--wb-text);
  font-size: var(--workbench-type-support);
  line-height: 1.55;
}
.conversation-summary > span {
  flex: none;
  color: var(--wb-text);
  font-weight: 750;
}
.chat-header-actions { align-items: center; }
.chat-more-menu { position: relative; }
.chat-more-menu > summary {
  padding: 7px 10px;
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: 9px;
  background: var(--wb-selected);
  cursor: pointer;
  font-size: var(--workbench-type-support);
  list-style: none;
}
.chat-more-menu > summary::-webkit-details-marker { display: none; }
.chat-more-menu[open] > summary { color: var(--wb-text); border-color: transparent; }
.chat-more-menu > div {
  position: absolute;
  z-index: 8;
  top: calc(100% + 6px);
  right: 0;
  display: grid;
  min-width: 150px;
  padding: 6px;
  border: 1px solid transparent;
  border-radius: 11px;
  background: var(--wb-selected);
  box-shadow: none;
}
.chat-more-menu button { justify-content: flex-start; width: 100%; text-align: left; }

.conversation-context-panel {
  border: 1px solid transparent;
  border-radius: 13px;
  background: var(--wb-selected);
}
.conversation-context-panel > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 11px 14px;
  color: var(--wb-text);
  cursor: pointer;
  font-size: var(--workbench-type-support);
  font-weight: 750;
  list-style-position: inside;
}
.conversation-context-panel > summary:hover { padding-right: 14px; background: var(--wb-selected); }
.conversation-context-summary { color: var(--wb-text); font-size: var(--workbench-type-support); font-weight: 500; }
.conversation-context-body { display: grid; gap: 16px; padding: 4px 14px 14px; border-top: 1px solid transparent; }
.conversation-context-scope, .conversation-source-block { padding-top: 12px; }
.conversation-context-scope p, .conversation-source-block p { margin: 4px 0 0; color: var(--muted); font-size: var(--workbench-type-support); line-height: 1.6; }
.conversation-source-block { display: grid; gap: 10px; }

.workbench-message-list {
  align-content: start;
  min-height: 260px;
  max-height: max(300px, calc(100vh - 455px));
  padding: 17px;
  scroll-behavior: smooth;
  background: var(--wb-selected);
}
.workbench-message { max-width: min(84%, 720px); padding: 11px 14px; }
.workbench-message.user { border-color: transparent; background: var(--wb-selected); }
.workbench-message.assistant { background: var(--wb-selected); }
.workbench-message p { overflow-wrap: anywhere; }
.chat-welcome {
  display: grid;
  align-content: center;
  min-height: 226px;
  padding: 8px;
  text-align: center;
}
.chat-welcome h3 { margin: 4px 0 6px; }
.chat-welcome p:not(.eyebrow) { margin: 0; color: var(--muted); }
.chat-starter-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-top: 20px;
}
.chat-starter-grid button {
  min-height: 66px;
  padding: 10px 12px;
  color: var(--wb-text);
  text-align: left;
  border: 1px solid transparent;
  border-radius: 11px;
  background: var(--wb-selected);
  font-size: var(--workbench-type-support);
  line-height: 1.5;
}
.chat-starter-grid button:hover { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }

.chat-form {
  position: sticky;
  bottom: 10px;
  z-index: 4;
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
  padding: 10px;
  border: 1px solid transparent;
  border-radius: 15px;
  background: var(--wb-selected);
  box-shadow: none;
}
.chat-form textarea {
  min-height: 56px;
  padding: 11px 12px;
  resize: vertical;
  border: 0;
  background: transparent;
}
.chat-form textarea:focus { box-shadow: none; }

.evolution-panel { background: var(--wb-selected); }
.evolution-panel .section-heading p { margin: 5px 0 0; }
.evolution-item { background: var(--wb-selected); }
.evolution-item.accepted { border-color: transparent; background: var(--wb-selected); }

@media (max-width: 980px) {
  .chat-create-panel { grid-template-columns: 1fr; gap: 18px; }
  .chat-layout { grid-template-columns: 220px minmax(0, 1fr); }
  .chat-starter-grid { grid-template-columns: 1fr; }
  .chat-starter-grid button { min-height: 48px; text-align: center; }
}

@media (max-width: 820px) {
  .chat-layout { grid-template-columns: 1fr; }
  .conversation-list {
    position: static;
    display: flex;
    max-height: none;
    overflow-x: auto;
    overflow-y: hidden;
  }
  .conversation-list .section-heading { min-width: 110px; align-content: center; }
  .conversation-item { min-width: 210px; }
  .conversation-title-view > strong { max-width: 68vw; }
  .workbench-message-list { max-height: 52vh; }
}

@media (max-width: 600px) {
  .chat-create-panel { padding: 17px; }
  .chat-header { gap: 12px; }
  .chat-header-actions { width: 100%; justify-content: space-between; }
  .conversation-summary { display: grid; gap: 2px; }
  .conversation-context-panel > summary { align-items: flex-start; flex-direction: column; gap: 3px; }
  .conversation-source-actions { grid-template-columns: 1fr; }
  .workbench-message { max-width: 94%; }
  .chat-form { position: static; }
  .evolution-item { display: grid; }
}

/* v1.10: 图片生产任务列表的更新时间是独立的元数据层级。
   只收敛图片任务的更新时间，不改变任务标题、摘要或其他模块的字号。 */
body:has(.layout) .layout .module-list-stage .image-task-card-meta {
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
  gap: 6px;
  min-width: 0;
  white-space: nowrap;
}

body:has(.layout) .layout .module-list-stage .image-task-card-meta .task-card-meta-primary,
body:has(.layout) .layout .module-list-stage .image-task-card-meta .task-card-meta-ratio,
body:has(.layout) .layout .module-list-stage .image-task-card-meta .task-card-meta-count,
body:has(.layout) .layout .module-list-stage .image-task-card-meta .task-card-meta-project,
body:has(.layout) .layout .module-list-stage .image-task-card-meta .task-card-meta-updated {
  min-width: 0;
  color: var(--wb-text);
  font-size: var(--workbench-type-meta) !important;
  line-height: 1.5;
  white-space: nowrap;
}

body:has(.layout) .layout .module-list-stage .image-task-card-meta .task-card-meta-primary {
  flex: 0 0 auto;
}

body:has(.layout) .layout .module-list-stage .image-task-card-meta .task-card-meta-project {
  flex: 0 1 auto;
  max-width: min(100%, 180px);
  overflow: hidden;
  text-overflow: ellipsis;
}

body:has(.layout) .layout .module-list-stage .image-task-card-meta .task-card-meta-updated {
  flex: 0 0 auto;
}

/* Every message uses the same original-send timestamp without adding another visual card. */
:root {
  --workbench-message-time-size: var(--workbench-type-meta);
  --workbench-message-time-color: var(--workbench-color-text-muted);
  --workbench-message-time-gap: var(--workbench-space-2);
}
.message-timestamp {
  display: flex;
  justify-content: flex-start;
  margin-top: var(--workbench-message-time-gap);
  color: var(--workbench-message-time-color);
  font-size: var(--workbench-message-time-size);
  line-height: 1.4;
}
.message-timestamp time { white-space: nowrap; }
.workbench-message.user .message-timestamp { color: var(--wb-text); }
.workbench-message.is-failed .message-timestamp { color: var(--wb-text); }
.workbench-message.is-user .message-timestamp { color: var(--wb-text); }

/* The composer owns its attachment lane: files never escape below the action row. */
.workbench-composer-attachment-tray {
  display: none;
  align-items: center;
  gap: var(--workbench-space-2);
  min-width: 0;
  max-width: 100%;
  max-height: 44px;
  overflow-x: auto;
  overflow-y: hidden;
  padding-bottom: 2px;
}
.workbench-composer-attachment-tray:not(:empty) { display: flex; }
.workbench-attachment-image,
.workbench-attachment-file {
  position: relative;
  flex: 0 0 auto;
  height: 36px;
  margin: 0;
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-sm);
  background: var(--workbench-color-surface-raised);
}
.workbench-attachment-image { width: 36px; padding: 0; overflow: visible; cursor: zoom-in; }
.workbench-attachment-image-preview {
  display: block;
  width: 100%;
  height: 100%;
  padding: 0;
  overflow: hidden;
  border: 0;
  border-radius: inherit;
  background: transparent;
  cursor: zoom-in;
}
.workbench-attachment-image-preview img { display: block; width: 100%; height: 100%; border-radius: inherit; object-fit: cover; }
.workbench-attachment-file {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 190px;
  padding: 0 9px;
  color: var(--workbench-color-text);
  text-decoration: none;
}
.workbench-attachment-file > span,
.message-attachment-file > span {
  flex: 0 0 auto;
  color: var(--workbench-color-accent-soft);
  font-size: var(--workbench-type-meta);
  font-weight: 800;
}
.workbench-attachment-file > strong { overflow: hidden; font-size: var(--workbench-font-size-sm); text-overflow: ellipsis; white-space: nowrap; }
.workbench-composer-attachment-tray .production-image-remove {
  position: absolute;
  top: -6px;
  right: -6px;
  z-index: 2;
  width: 18px;
  height: 18px;
  min-height: 18px;
  padding: 0;
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: 999px;
  background: var(--wb-selected);
  font-size: var(--workbench-type-support);
  line-height: 16px;
}
.workbench-composer-form:has(.workbench-composer-attachment-tray:not(:empty)) { grid-template-rows: auto auto auto; }
.production-file-input .production-image-preview:not(.workbench-composer-attachment-tray) { display: flex; flex-wrap: wrap; gap: var(--workbench-space-2); }

/* File history uses compact readable chips while image history keeps previews. */
.workbench-message-attachments,
.task-history-attachments,
.image-conversation-attachments {
  display: flex;
  flex-wrap: wrap;
  gap: var(--workbench-space-2);
  margin-top: var(--workbench-space-2);
}
.message-attachment-image {
  display: block;
  width: 72px;
  height: 72px;
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-sm);
  background: var(--workbench-color-surface);
  cursor: zoom-in;
}
.message-attachment-image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.message-attachment-file {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  max-width: min(100%, 260px);
  min-height: 32px;
  padding: 5px 9px;
  color: var(--workbench-color-text);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-sm);
  background: var(--wb-selected);
  text-decoration: none;
}
.message-attachment-file strong { overflow: hidden; font-size: var(--workbench-font-size-sm); text-overflow: ellipsis; white-space: nowrap; }
.workbench-message.user .message-attachment-file { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.workbench-message.user .message-attachment-file > span { color: var(--wb-text); }

/* Existing image/video histories already expose the event timestamp; keep the same global type rule. */
.task-history-event header time,
.workbench-message > header time {
  color: var(--workbench-message-time-color);
  font-size: var(--workbench-message-time-size);
  line-height: 1.4;
}

/* v0.5 production chat and multimodal stage inputs */
.production-conversation { margin: 18px 0 24px; }
.production-conversation .section-heading { align-items: start; }
.workbench-message-list { display: grid; gap: 10px; max-height: 420px; overflow: auto; margin: 14px 0; padding: 4px 0; }
.workbench-message { max-width: min(88%, 760px); padding: 12px 14px; border: 1px solid var(--line); border-radius: 13px; background: var(--paper); }
.workbench-message.is-user { justify-self: end; border-color: transparent; background: var(--wb-selected); }
.workbench-message-role { margin-bottom: 5px; color: var(--muted); font-size: var(--workbench-type-meta); font-weight: 800; }
.workbench-message p { margin: 0; line-height: 1.7; }
.workbench-message-sync { display: inline-block; margin-top: 7px; color: var(--wb-text); }
.production-chat-form { display: grid; gap: 10px; padding-top: 12px; border-top: 1px solid var(--line); }
.production-chat-form > textarea { min-height: 76px; border: 0; background: transparent; box-shadow: none; }
.production-image-input { display: grid; gap: 8px; margin-top: 4px; }
.production-image-drop-zone { display: grid; gap: 3px; padding: 11px 13px; border: 1px dashed transparent; border-radius: 10px; background: var(--wb-selected); cursor: pointer; }
.production-image-drop-zone input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.production-image-drop-zone strong { color: var(--ink); font-size: var(--workbench-type-support); }
.production-image-drop-zone span, .production-image-drop-zone small { color: var(--muted); font-size: var(--workbench-type-meta); font-weight: 500; }
.production-image-drop-zone.is-dragging, .production-image-drop-zone:focus-within { border-color: transparent; background: var(--wb-selected); }
.production-image-preview { display: flex; flex-wrap: wrap; gap: 8px; }
.production-image-preview figure { width: 64px; margin: 0; }
.production-image-preview img { display: block; width: 64px; height: 64px; object-fit: cover; border-radius: 7px; border: 1px solid var(--line); }
.production-image-preview figcaption { overflow: hidden; margin-top: 3px; color: var(--muted); font-size: var(--workbench-type-meta); text-overflow: ellipsis; white-space: nowrap; }
.production-image-operation-fields { align-items: end; }
.stage-revision-panel .production-image-input { margin-top: 2px; }
@media (max-width: 600px) {
  .workbench-message { max-width: 96%; }
}

/* v0.6: production workspace is conversation-led; context and artifacts stay compact. */
.production-context-items {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 18px;
  color: var(--muted);
  font-size: var(--workbench-type-support);
}
.production-context-items span { display: inline-flex; align-items: baseline; gap: 6px; }
.production-context-items strong { color: var(--ink); font-weight: 750; }
.production-context-items em { color: var(--muted); font-style: normal; }
.production-learning-details { border-top: 1px solid transparent; padding-top: 8px; }
.production-learning-details > summary { color: var(--accent-pale); cursor: pointer; font-size: var(--workbench-type-support); font-weight: 700; }
.production-learning-detail-body { display: grid; gap: 9px; padding: 10px 0 2px; color: var(--muted); font-size: var(--workbench-type-support); line-height: 1.55; }
.production-learning-detail-body > p { margin: 0; }
.production-learning-detail-body > small { color: var(--muted); }
.production-learning-case-list { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.production-learning-case-list li { display: grid; gap: 2px; padding: 7px 9px; border-left: 2px solid transparent; background: var(--wb-selected); }
.production-learning-case-list strong { color: var(--ink); font-size: var(--workbench-type-support); font-weight: 700; }
.production-learning-case-list small { color: var(--muted); font-size: var(--workbench-type-meta); }
.production-artifact { margin-top: 14px; padding-top: 16px; border-top: 1px solid var(--line); }
.production-artifact-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 12px; }
.production-artifact-heading h3 { margin: 3px 0 5px; }
.production-artifact-heading p { margin: 0; color: var(--muted); font-size: var(--workbench-type-support); line-height: 1.55; }
.production-artifact-content { min-width: 0; }
.production-artifact .confirmation.next-action { margin: 14px 0 0; padding: 15px 0 0; border-top: 1px solid var(--line); border-radius: 0; background: transparent; box-shadow: none; }
.production-artifact .confirmation.next-action h3 { margin-bottom: 6px; }
.production-artifact .confirmation.next-action p { max-width: 720px; }
@media (max-width: 600px) {
  .production-context-items { display: grid; gap: 5px; }
  .production-artifact-heading { display: grid; gap: 8px; }
  .production-artifact-heading .pill { justify-self: start; }
}

/* v0.8: 案例列表元信息统一置顶，操作按钮垂直居中；录入理由支持详情页就地编辑。 */
.case-row { grid-template-columns: minmax(0, 1fr) 210px 122px; }
.case-row-top { grid-column: 1 / -1; display: grid; grid-template-columns: 1.1fr 1fr 1fr 1.7fr 1.35fr; gap: 10px; min-width: 0; padding-bottom: 11px; border-bottom: 1px solid var(--line); }
.case-row-meta-item { display: grid; min-width: 0; gap: 4px; align-content: start; }
.case-row-meta-item > span { color: var(--muted); font-size: var(--workbench-type-meta); line-height: 1.2; }
.case-row-meta-item > strong { overflow: hidden; color: var(--ink); font-size: var(--workbench-type-support); font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }
.case-row-meta-reason > div { display: flex; flex-wrap: wrap; gap: 4px; min-height: 22px; align-items: center; }
.case-row-meta-reason .pill { padding: 2px 6px; font-size: var(--workbench-type-meta); }
.case-row-main h3 { margin-top: 0; }
.case-row-actions { display: flex; flex-direction: column; align-items: stretch; justify-content: center; gap: 7px; min-width: 0; }
.case-row-actions button { width: 100%; white-space: nowrap; }
.case-meta-editable { display: grid; gap: 7px; }
.case-meta-editable > div { display: flex; flex-wrap: wrap; gap: 5px; }
.case-meta-why-form { display: grid; gap: 8px; }
.case-meta-why-form .case-reason-options { display: grid; gap: 7px; }

@media (max-width: 1100px) {
  .case-row-top { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .case-row-meta-reason { grid-column: span 2; }
}

@media (max-width: 900px) {
  .case-row { grid-template-columns: minmax(0, 1fr) auto; }
  .case-row-images { grid-column: 1 / -1; }
}

@media (max-width: 650px) {
  .case-row { grid-template-columns: 1fr; }
  .case-row-top { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .case-row-meta-reason { grid-column: 1 / -1; }
  .case-row-actions { flex-direction: row; align-items: center; }
  .case-row-actions button { width: auto; }
}

/* v0.10: 案例管理固定在视口，录入理由统一使用横向对齐的复选项。 */
.case-meta-panel {
  position: fixed;
  top: 100px;
  right: 24px;
  z-index: 6;
  width: 230px;
  max-height: calc(100vh - 120px);
  overflow-y: auto;
}
.case-meta-why-value { align-items: center; }
.case-meta-why-value > span { display: flex; flex-wrap: wrap; gap: 5px; min-width: 0; }
.case-meta-why-value > .small-action { flex: none; align-self: center; }
.case-reason-field { display: grid; gap: 8px; margin: 0; padding: 0; border: 0; }
.case-reason-field legend { padding: 0; color: var(--ink-strong); font: inherit; }
.case-reason-options { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.case-reason-options label { display: inline-flex; align-items: center; gap: 7px; min-width: 0; margin: 0; color: var(--ink); font-size: var(--workbench-type-support); font-weight: 650; line-height: 1.45; cursor: pointer; }
.case-reason-options input[type="checkbox"] { flex: none; width: 16px; height: 16px; margin: 0; padding: 0; accent-color: var(--wb-accent); }
.case-meta-why-form .case-reason-options { display: grid; grid-template-columns: 1fr; align-items: stretch; gap: 8px; }

@media (max-width: 900px) {
  .case-meta-panel { position: static; width: auto; max-height: none; overflow: visible; }
}

/* v1.6: one recent-work rail for every module, aligned with the left navigation. */
.layout {
  grid-template-columns: 244px minmax(0, 1fr) 308px;
  align-items: start;
  min-height: calc(100vh - 86px);
}
.sidebar {
  grid-column: 1;
  grid-row: 1;
  width: auto;
  min-width: 0;
  margin: 16px 0 0 16px;
  padding: 14px 12px 16px;
  top: 90px;
  height: calc(100vh - 106px);
}
.workspace {
  grid-column: 2;
  grid-row: 1;
  width: 100%;
  min-width: 0;
  margin: 0;
  padding: clamp(26px, 4vw, 54px) clamp(20px, 3.2vw, 46px) 80px;
}
.recent-work-rail {
  grid-column: 3;
  grid-row: 1;
  position: sticky;
  top: 90px;
  align-self: start;
  min-width: 0;
  height: calc(100vh - 106px);
  margin: 16px 16px 0 0;
  padding: 14px 0 16px;
}
.recent-work-panel {
  display: grid;
  grid-template-rows: auto auto auto minmax(0, 1fr);
  height: 100%;
  min-height: 0;
  padding: 16px 14px 12px;
  overflow: hidden;
  border: 1px solid transparent;
  border-radius: 18px;
  background: var(--wb-selected);
  box-shadow: none;
  -webkit-backdrop-filter: blur(22px) saturate(125%);
  backdrop-filter: blur(22px) saturate(125%);
}
.recent-work-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 0 2px 10px;
  border-bottom: 1px solid transparent;
}
.recent-work-heading h2 { margin: 2px 0 0; font-size: var(--workbench-type-section-title); }
.recent-work-heading .muted { margin: 3px 0 0; color: var(--wb-text); font-size: var(--workbench-type-meta); }
.recent-work-description {
  margin: 10px 2px 12px;
  color: var(--wb-text);
  font-size: var(--workbench-type-meta);
  line-height: 1.5;
}
.recent-work-filters {
  display: flex;
  gap: 5px;
  min-width: 0;
  margin-bottom: 10px;
  padding-bottom: 2px;
  overflow-x: auto;
  scrollbar-width: none;
}
.recent-work-filters::-webkit-scrollbar { display: none; }
.recent-work-filter {
  flex: 0 0 auto;
  min-height: 28px;
  padding: 0 8px;
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: 999px;
  background: var(--wb-selected);
  font-size: var(--workbench-type-meta);
}
.recent-work-filter:hover { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.recent-work-filter.active { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.recent-work-filter-select { width: 100%; min-height: 34px; margin-bottom: 10px; padding: 0 9px; color: var(--wb-text); border: 1px solid transparent; border-radius: 9px; background: var(--wb-selected); font-size: var(--workbench-type-support); }
.recent-work-filter-select:focus { border-color: transparent; outline: 2px solid var(--wb-accent); outline-offset: 1px; }
.recent-work-filter-select option { color: var(--wb-text); background: var(--wb-selected); }
.recent-work-list {
  display: grid;
  align-content: start;
  gap: 6px;
  min-height: 0;
  padding-right: 2px;
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-color: var(--wb-text);
  scrollbar-width: thin;
}
.recent-work-list::-webkit-scrollbar { width: 5px; }
.recent-work-list::-webkit-scrollbar-track { background: transparent; }
.recent-work-list::-webkit-scrollbar-thumb { border-radius: 999px; background: var(--wb-selected); }
.recent-work-item {
  display: grid;
  gap: 5px;
  width: 100%;
  min-width: 0;
  padding: 10px 9px;
  color: var(--wb-text);
  text-align: left;
  border: 1px solid transparent;
  border-radius: 12px;
  background: var(--wb-selected);
  transition: background .15s ease, border-color .15s ease, transform .15s ease;
}
.recent-work-item:hover { transform: translateY(-1px); border-color: transparent; background: var(--wb-selected); }
.recent-work-item.active { border-color: transparent; background: var(--wb-selected); box-shadow: none; }
.recent-work-item-top { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px; min-width: 0; }
.recent-work-item-top small { overflow: hidden; color: var(--wb-accent); font-size: var(--workbench-type-meta); font-weight: 800; text-overflow: ellipsis; white-space: nowrap; }
.recent-work-item-top time { flex: 0 0 auto; color: var(--wb-text); font-size: var(--workbench-type-meta); }
.recent-work-item > strong { display: -webkit-box; overflow: hidden; color: var(--wb-text); font-size: var(--workbench-type-body); font-weight: 750; line-height: 1.4; white-space: normal; overflow-wrap: anywhere; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.recent-work-project { display: block; min-width: 0; overflow: hidden; color: var(--workbench-color-text-secondary); font-size: var(--workbench-type-support); line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; }
.recent-work-status { min-width: 0; }
.recent-work-status .status-badge { max-width: 100%; min-height: 22px; padding: 2px 7px; font-size: var(--workbench-type-support); }
.recent-work-status .status-badge small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.recent-work-empty { margin: 20px 4px; text-align: center; line-height: 1.6; }
.home-recent-guide { margin-top: 0; }
.home-recent-guide p { margin: 0; color: var(--wb-text); line-height: 1.75; }
.chat-layout, .image-module-layout, .bilibili-module-layout { grid-template-columns: minmax(0, 1fr); }
.recent-work-rail[hidden] { display: none !important; }
.layout:not(.has-recent-work) { grid-template-columns: 244px minmax(0, 1fr); }

@media (max-width: 1220px) {
  .layout { grid-template-columns: 224px minmax(0, 1fr) 278px; }
  .workspace { padding-right: 28px; padding-left: 28px; }
}
@media (max-width: 1020px) {
  .layout { grid-template-columns: 220px minmax(0, 1fr); }
  .recent-work-rail {
    grid-column: 2;
    grid-row: 2;
    position: static;
    height: 310px;
    margin: 0 22px 26px 0;
    padding: 0;
  }
}

/* v1.27: 任务卡片状态行防挤压。
   主状态负责识别任务，附加过程说明保留在 title / 详情上下文中，
   卡片操作在可用宽度不足时自然换行，不再与状态文字粘连。 */
body:has(.layout) .layout .module-list-stage .task-card-status-row {
  flex-wrap: wrap;
  align-items: center;
  gap: var(--workbench-space-1) var(--workbench-space-2);
}

body:has(.layout) .layout .module-list-stage .task-card-status-row > .task-status-wrap {
  flex: 1 1 96px;
  min-width: 0;
  overflow: hidden;
}

body:has(.layout) .layout .module-list-stage .task-card-status-row .status-badge {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body:has(.layout) .layout .module-list-stage .task-card-status-row .status-badge small {
  display: none;
}

body:has(.layout) .layout .module-list-stage .task-card-actions {
  flex: 0 0 auto;
  gap: var(--workbench-space-1);
  margin-left: auto;
}

@media (max-width: 380px) {
  body:has(.layout) .layout .module-list-stage .task-card-actions {
    width: 100%;
    justify-content: flex-end;
  }
}

/* v0.92: 智能对话等 AI 文本输出复用笔记生产的 Markdown 令牌。 */
.workbench-markdown {
  color: var(--workbench-color-text);
  font-size: var(--workbench-markdown-body-size);
  line-height: var(--workbench-markdown-line-height);
  overflow-wrap: anywhere;
}

.workbench-markdown > h2,
.workbench-markdown > h3 {
  margin: var(--workbench-markdown-section-gap) 0 10px;
  color: var(--workbench-color-text);
  font-size: var(--workbench-markdown-title-size);
  font-weight: 800;
  line-height: 1.35;
}

.workbench-markdown > h4 {
  margin: 18px 0 8px;
  color: var(--workbench-color-text);
  font-size: var(--workbench-markdown-section-size);
  font-weight: 800;
  line-height: 1.45;
}

/* Keep the section heading unchanged; emphasize only the copy intended for the image. */
.workbench-markdown > .markdown-visual-copy-heading + ul,
.workbench-markdown > .markdown-visual-copy-heading + ol,
.workbench-markdown > .markdown-visual-copy-heading + p,
.note-markdown > .markdown-visual-copy-heading + ul,
.note-markdown > .markdown-visual-copy-heading + ol,
.note-markdown > .markdown-visual-copy-heading + p {
  color: var(--workbench-color-accent);
}

.workbench-markdown > h5 {
  margin: 14px 0 6px;
  color: var(--workbench-color-text);
  font-size: var(--workbench-markdown-subtitle-size);
  font-weight: 780;
  line-height: 1.5;
}

.workbench-markdown > h6 {
  margin: 12px 0 5px;
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-markdown-body-size);
  font-weight: 760;
  line-height: 1.55;
}

.workbench-markdown > p {
  margin: 0 0 var(--workbench-markdown-paragraph-gap);
}

.workbench-markdown > p:last-child { margin-bottom: 0; }

.workbench-markdown > strong,
.workbench-markdown strong {
  color: var(--workbench-color-text);
  font-weight: 780;
}

.workbench-markdown > ul,
.workbench-markdown > ol {
  display: grid;
  gap: 6px;
  margin: 10px 0 16px;
  padding-left: 26px;
}

.workbench-markdown > .markdown-table-wrap,
.note-markdown > .markdown-table-wrap {
  max-width: 100%;
  margin: 12px 0 16px;
  overflow-x: auto;
  border: 1px solid var(--workbench-color-border);
  border-radius: 8px;
}

.workbench-markdown table,
.note-markdown table {
  width: 100%;
  min-width: 460px;
  border-collapse: collapse;
  font-size: inherit;
  line-height: inherit;
}

.workbench-markdown th,
.workbench-markdown td,
.note-markdown th,
.note-markdown td {
  padding: 8px 10px;
  border-bottom: 1px solid var(--workbench-color-border);
  text-align: left;
  vertical-align: top;
}

.workbench-markdown th,
.note-markdown th {
  color: var(--workbench-color-text);
  background: var(--workbench-color-surface-raised);
  font-weight: 780;
}

.workbench-markdown tr:last-child td,
.note-markdown tr:last-child td { border-bottom: 0; }
.workbench-markdown .markdown-table-align-center,
.note-markdown .markdown-table-align-center { text-align: center; }
.workbench-markdown .markdown-table-align-right,
.note-markdown .markdown-table-align-right { text-align: right; }

.workbench-markdown li { padding-left: 3px; }
.workbench-markdown li::marker { color: var(--workbench-color-text-muted); }

.workbench-markdown > blockquote {
  margin: 14px 0 16px;
  padding: 2px 0 2px 14px;
  border-left: 2px solid transparent;
  color: var(--workbench-color-text-secondary);
}

.workbench-markdown > hr {
  margin: var(--workbench-markdown-section-gap) 0;
  border: 0;
  border-top: 1px solid var(--workbench-color-border);
}

.workbench-markdown code {
  padding: 1px 4px;
  color: var(--workbench-color-accent-soft);
  border-radius: 4px;
  background: var(--wb-selected);
  font-size: var(--workbench-type-support);
}

.workbench-markdown a { color: var(--workbench-color-accent-soft); }

@media (max-width: 600px) {
  .workbench-markdown { line-height: 1.72; }
  .workbench-markdown > ul,
  .workbench-markdown > ol { padding-left: 22px; }
}

/* v0.53: 图片工作区沿用全局输入框尺寸；只保留结果区的宽度边界。 */
body:has(.image-workbench) .image-module-layout,
body:has(.image-workbench) .image-job-main {
  width: 100%;
  max-width: none;
  margin-right: 0;
  margin-left: 0;
}
body:has(.image-workbench) .media-output-scroll {
  padding-right: 0;
  padding-left: 0;
}

/* v0.55: 图片工作台三段共享同一条 surface boundary，禁止 flex/grid 默认收缩内容宽度。 */
body:has(.image-workbench) .image-workbench,
body:has(.image-workbench) .image-workbench > .module-taskbar,
body:has(.image-workbench) .image-workbench > .image-module-stage,
body:has(.image-workbench) .image-workbench > .image-task-composer,
body:has(.image-workbench) .image-workbench .media-output-scroll,
body:has(.image-workbench) .image-workbench .image-module-layout,
body:has(.image-workbench) .image-workbench .image-job-main,
body:has(.image-workbench) .image-workbench .image-job-detail {
  width: 100%;
  max-width: none;
  min-width: 0;
  margin-right: 0;
  margin-left: 0;
  align-self: stretch;
  box-sizing: border-box;
}

/* v0.57: 任务列表卡片的状态与操作统一为同一行；卡片主体和任务操作保持独立点击区域。 */
.module-list-stage .task-card.wide {
  display: grid;
  align-content: start;
  gap: 10px;
}
.task-card-status-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-width: 0;
  min-height: 24px;
}
.task-card-status-row > .task-status-wrap {
  min-width: 0;
  flex: 1 1 auto;
}
.task-card-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 2px;
  flex: 0 0 auto;
  margin-left: auto;
}
.task-card-actions .task-card-action {
  padding: 2px 4px;
  color: var(--wb-text);
  font-size: var(--workbench-type-support);
  line-height: 1.3;
  white-space: nowrap;
}
.task-card-actions .task-card-action:hover,
.task-card-actions .task-card-action:focus-visible {
  color: var(--wb-text);
}
.task-card-actions .task-card-action.danger-text {
  color: var(--wb-text);
}
.task-card-actions .task-card-action.danger-text:hover,
.task-card-actions .task-card-action.danger-text:focus-visible {
  color: var(--wb-text);
}
.task-card-open {
  display: grid;
  gap: 7px;
  min-width: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
}
.task-card-open > strong {
  overflow: hidden;
  color: var(--wb-text);
  font-size: var(--workbench-type-body);
  line-height: 1.35;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.task-card-open > p {
  display: -webkit-box;
  overflow: hidden;
  margin: 0;
  color: var(--wb-text);
  line-height: 1.55;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.task-card-open > small {
  overflow: visible;
  color: var(--wb-text);
  text-overflow: clip;
  white-space: nowrap;
  overflow-wrap: normal;
}
.module-list-stage .task-card-meta-line {
  display: block;
  min-width: 0;
  white-space: nowrap;
}
.module-list-stage .task-card-meta-primary {
  display: block;
  min-width: 0;
  color: var(--wb-text);
  font-size: var(--workbench-type-meta) !important;
  line-height: 1.5;
  white-space: nowrap;
}
.task-card-open:hover > strong,
.task-card-open:focus-visible > strong {
  color: var(--wb-text);
}
@media (max-width: 520px) {
  .task-card-status-row { align-items: flex-start; }
  .task-card-actions { gap: 0; }
  .task-card-actions .task-card-action { padding-right: 2px; padding-left: 2px; font-size: var(--workbench-type-meta); }
}

/* v0.55: 图片工作台三段共享同一条 surface boundary，禁止 flex/grid 默认收缩内容宽度。 */
body:has(.image-workbench) .image-workbench,
body:has(.image-workbench) .image-workbench > .module-taskbar,
body:has(.image-workbench) .image-workbench > .image-module-stage,
body:has(.image-workbench) .image-workbench > .image-task-composer,
body:has(.image-workbench) .image-workbench .media-output-scroll,
body:has(.image-workbench) .image-workbench .image-module-layout,
body:has(.image-workbench) .image-workbench .image-job-main,
body:has(.image-workbench) .image-workbench .image-job-detail {
  width: 100%;
  max-width: none;
  min-width: 0;
  margin-right: 0;
  margin-left: 0;
  align-self: stretch;
  box-sizing: border-box;
}

@media (max-width: 760px) {
  .layout { display: block; min-height: auto; }
  .sidebar { width: auto; height: auto; margin: 12px; padding: 10px 8px; }
  .workspace { width: 100%; padding: 24px 18px 42px; }
  .recent-work-rail { width: auto; height: 340px; margin: 0 18px 30px; padding: 0; }
}

/* v1.8: narrow, symmetrical edge rails to give the workspace more room. */
.layout.has-recent-work {
  grid-template-columns: 164px minmax(0, 1fr) 164px;
}
.layout:not(.has-recent-work) {
  grid-template-columns: 164px minmax(0, 1fr);
}
.sidebar {
  margin-left: 0;
  padding-right: 8px;
  padding-left: 8px;
}
.module-nav-item {
  min-width: 0;
  padding-right: 8px;
  padding-left: 8px;
}
.module-nav-item > span:first-child {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.recent-work-rail {
  margin-right: 0;
}

@media (max-width: 1220px) and (min-width: 1021px) {
  .layout.has-recent-work { grid-template-columns: 164px minmax(0, 1fr) 164px; }
  .layout:not(.has-recent-work) { grid-template-columns: 164px minmax(0, 1fr); }
  .workspace { padding-right: 24px; padding-left: 24px; }
}

@media (max-width: 1020px) {
  .layout:not(.has-recent-work), .layout.has-recent-work { grid-template-columns: 164px minmax(0, 1fr); }
  .recent-work-rail { margin-right: 0; }
}

@media (max-width: 760px) {
  .sidebar { margin: 12px; padding-right: 8px; padding-left: 8px; }
  .recent-work-rail { margin-right: 18px; }
}

/* v1.9: smart chat keeps the shared center workspace and right recent-work rail. */
.chat-page-head p:not(.eyebrow) { max-width: 620px; }
.chat-create-panel {
  border-color: transparent;
  background: var(--wb-selected);
  box-shadow: none;
}
.conversation-scope-note {
  margin: 3px 0 0;
  color: var(--wb-text);
  font-size: var(--workbench-type-support);
}
.conversation-summary-block {
  padding-top: 12px;
  border-top: 1px solid transparent;
}
.conversation-summary-block p {
  margin: 5px 0 0;
  color: var(--muted);
  font-size: var(--workbench-type-support);
  line-height: 1.65;
}
.workbench-message.is-failed {
  border-color: transparent;
  background: var(--wb-selected);
}
.workbench-message-status {
  display: block;
  margin-top: 7px;
  color: var(--wb-text);
  font-size: var(--workbench-type-meta);
}
.workbench-message-attachments { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 9px; }
.workbench-message-attachments a { display: block; width: 72px; height: 72px; overflow: hidden; border: 1px solid transparent; border-radius: 8px; }
.workbench-message-attachments img { display: block; width: 100%; height: 100%; object-fit: cover; }
.chat-case-reference { display: block; margin-top: 8px; color: var(--wb-text); font-size: var(--workbench-type-meta); }
.workbench-message .chat-case-reference summary { cursor: pointer; color: var(--workbench-color-text-muted); }
.workbench-message .chat-case-reference p { margin: var(--workbench-space-1) 0 0; color: var(--workbench-color-text-muted); font-size: var(--workbench-font-size-xs); }

/* v1.11: avoid repeating the same section label above its main heading. */
p.eyebrow:has(+ h3) { display: none; }

/* v1.10: keep the center workspace open when image pages have little content. */
.workspace {
  min-height: calc(100vh - 86px);
}
.page-head > div > .eyebrow { display: none; }
.image-module-layout,
.image-job-main {
  width: 100%;
  min-height: 100%;
}
.image-module-layout .task-form,
.image-module-layout .image-job-detail {
  width: 100%;
  max-width: none;
}
@media (max-width: 760px) {
  .workspace,
  .image-module-layout,
  .image-job-main {
    min-height: 0;
  }
}

/* v2.0: note production reads as a vertical version stream. New versions append below. */
.note-stage-card .stage-version-stream {
  display: grid;
  gap: 8px;
  margin-top: 4px;
}
.note-stage-card .stage-version-entry {
  overflow: hidden;
  border: 1px solid transparent;
  border-radius: 10px;
  background: transparent;
}
.note-stage-card .stage-version-entry.is-current {
  border-color: transparent;
  box-shadow: none;
}
.note-stage-card .stage-version-entry.is-current.is-revision {
  border-color: transparent;
  box-shadow: none;
}
.note-stage-card .stage-version-summary {
  display: grid;
  grid-template-columns: auto auto auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
  min-height: 46px;
  padding: 0 13px;
  color: var(--ink);
  cursor: pointer;
  list-style: none;
}
.note-stage-card .stage-version-summary::-webkit-details-marker { display: none; }
.note-stage-card .stage-version-summary:hover { background: var(--wb-selected); }
.note-stage-card .stage-version-title { font-size: var(--workbench-type-support); font-weight: 850; white-space: nowrap; }
.note-stage-card .stage-version-marker,
.note-stage-card .stage-version-current-marker {
  display: inline-flex;
  align-items: center;
  min-height: 21px;
  padding: 0 7px;
  color: var(--muted);
  border: 1px solid transparent;
  border-radius: 999px;
  font-size: var(--workbench-type-meta);
  font-weight: 800;
  white-space: nowrap;
}
.note-stage-card .stage-version-marker.is-revision {
  color: var(--wb-text);
  border-color: transparent;
  background: var(--wb-selected);
}
.note-stage-card .stage-version-current-marker {
  color: var(--wb-text);
  border-color: transparent;
  background: var(--wb-selected);
}
.note-stage-card .stage-version-date {
  justify-self: end;
  overflow: hidden;
  color: var(--muted);
  font-size: var(--workbench-type-meta);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.note-stage-card .stage-version-toggle {
  color: var(--muted);
  font-size: var(--workbench-type-section-title);
  line-height: 1;
  transition: transform .16s ease, color .16s ease;
}
.note-stage-card .stage-version-entry[open] .stage-version-toggle { color: var(--ink); transform: rotate(180deg); }
.note-stage-card .stage-version-content {
  padding: 0 14px 16px;
  border-top: 1px solid transparent;
}
.note-stage-card .stage-version-current-label {
  margin: 12px 0 10px;
  color: var(--wb-text);
  font-size: var(--workbench-type-meta);
  font-weight: 850;
}
.note-stage-card .stage-version-content > .deliverable { margin-top: 12px; }
.note-stage-card .stage-version-content .stage-version-current { display: grid; gap: 8px; }
.note-stage-card .stage-version-content .version-toolbar { display: none; }
.note-stage-card .stage-card-actions { padding-top: 13px; background: transparent; }
.note-stage-card .stage-card-number { color: var(--ink); border-color: transparent; background: var(--wb-selected); box-shadow: none; }
@media (max-width: 600px) {
  .note-stage-card .stage-version-summary { grid-template-columns: auto auto minmax(0, 1fr) auto; gap: 6px; padding: 0 10px; }
  .note-stage-card .stage-version-current-marker { display: none; }
  .note-stage-card .stage-version-content { padding-right: 10px; padding-left: 10px; }
}

/* v3.0: company workbench UI system — quiet black canvas, clear hierarchy, green for action only. */
:root {
  --ink: var(--wb-text);
  --ink-strong: var(--wb-text);
  --muted: var(--wb-text-secondary);
  --paper: var(--wb-bg);
  --paper-deep: var(--wb-bg);
  --card: var(--wb-bg);
  --card-raised: var(--wb-selected);
  --card-soft: var(--wb-selected);
  --line: transparent;
  --accent: var(--wb-accent);
  --accent-dark: var(--wb-accent);
  --accent-soft: var(--wb-accent);
  --accent-pale: var(--wb-accent);
  --sand: var(--wb-selected);
  --danger: var(--wb-error);
  --shadow: none;
  --glass-border: transparent;
  --glass-shadow: none;
  color-scheme: dark;
}

html, body { background: var(--paper); }
body {
  color: var(--ink);
  background: var(--wb-selected);
}
body::before { display: none; }
button, input, textarea, select { font: inherit; }
button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, a:focus-visible {
  outline: 2px solid var(--wb-accent);
  outline-offset: 3px;
}

/* Chrome */
.topbar {
  position: sticky;
  top: 0;
  z-index: 20;
  display: flex;
  min-height: 68px;
  width: auto;
  margin: 0;
  padding: 12px 24px;
  border: 0;
  border-bottom: 1px solid transparent;
  border-radius: 0;
  background: var(--wb-selected);
  box-shadow: none;
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
}
.brand-button { gap: 10px; color: var(--ink); }
.brand-button h1 { color: var(--ink-strong); font-size: var(--workbench-type-section-title); font-weight: 800; }
.brand-button .eyebrow { display: none; }
.brand-mark { width: 34px; height: 34px; color: var(--wb-text); background: var(--wb-accent); box-shadow: none; }
.user-menu { color: var(--muted); }
.topbar .text { color: var(--wb-text); }
.topbar .text:hover { color: var(--wb-text); background: var(--wb-selected); }

/* Three-column shell */
.layout,
.layout.has-recent-work,
.layout:not(.has-recent-work) {
  grid-template-columns: 176px minmax(0, 1fr) 176px;
  align-items: stretch;
  min-height: calc(100vh - 68px);
  background: var(--wb-selected);
}
.layout:not(.has-recent-work) { grid-template-columns: 176px minmax(0, 1fr); }
.sidebar {
  position: sticky;
  top: 68px;
  grid-column: 1;
  grid-row: 1;
  width: auto;
  height: calc(100vh - 68px);
  margin: 0;
  padding: 22px 10px;
  overflow: auto;
  border: 0;
  border-right: 1px solid transparent;
  border-radius: 0;
  background: var(--wb-selected);
  box-shadow: none;
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
}
.module-nav { gap: 18px; }
.module-nav-group {
  gap: 4px;
  padding: 7px 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.module-nav-group-label, .section-title {
  padding: 7px 10px 8px;
  color: var(--wb-text);
  font-size: var(--workbench-type-meta);
  letter-spacing: .12em;
}
.module-nav-item {
  min-height: 40px;
  padding: 0 10px;
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  box-shadow: none;
  font-size: var(--workbench-type-support);
  font-weight: 700;
}
.module-nav-item:hover { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); box-shadow: none; }
.module-nav-item.active,
.module-nav-item.active:hover,
.module-nav-item.has-running-status.active {
  color: var(--wb-text);
  border-color: transparent;
  background: var(--wb-selected);
  box-shadow: none;
}
.module-nav-item.active > span:first-child { color: var(--wb-text); }
.module-nav-item small { color: var(--wb-text); background: var(--wb-accent); }
.nav-icon { display: none; }
.session-list { gap: 3px; }
.session-item { padding: 9px 10px; border-radius: 8px; }
.session-item:hover, .session-item.active { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); box-shadow: none; }
.session-item strong { color: var(--wb-text); font-size: var(--workbench-type-support); }
.session-item span { color: var(--wb-text); font-size: var(--workbench-type-meta); }

.workspace {
  grid-column: 2;
  grid-row: 1;
  width: 100%;
  min-width: 0;
  min-height: calc(100vh - 68px);
  margin: 0;
  padding: 34px clamp(24px, 4vw, 64px) 80px;
  background: var(--wb-selected);
}
.page-head { align-items: end; margin-bottom: 30px; padding-bottom: 20px; border-bottom: 1px solid transparent; }
.page-head h2, .empty h2 { margin-top: 0; color: var(--wb-text); font-size: clamp(28px, 3vw, 40px); letter-spacing: -.04em; }
.page-head p:not(.eyebrow), .empty p { max-width: 700px; color: var(--wb-text); font-size: var(--workbench-type-support); line-height: 1.7; }
.page-head > div > .eyebrow, p.eyebrow:has(+ h3) { display: none; }
.eyebrow { color: var(--wb-accent); }

/* Type and surfaces */
h1, h2, h3, h4, h5, strong { color: var(--wb-text); }
h3 { font-size: var(--workbench-type-section-title); }
.muted, small { color: var(--wb-text); }
.task-card, .case-card, .module-card, .metric-card,
.task-form, .revision, .output-card, .confirmation, .module-panel, .archive-panel,
.chat-header, .workbench-message-list, .evolution-panel, .admin-filter-panel, .admin-summary-card,
.admin-table-wrap, .admin-project-card, .admin-backup-row, .task-center-toolbar,
.task-center-row, .conversation-source-panel {
  color: var(--wb-text);
  background: var(--wb-selected);
  border: 1px solid transparent;
  box-shadow: none;
}
.task-card, .case-card, .module-card { border-radius: 10px; }
.task-card p, .case-card p, .module-card p, .task-card small, .case-card small, .module-card small { color: var(--wb-text); }
.task-card:hover, .case-card:hover, .module-card:hover { background: var(--wb-selected); border-color: transparent; box-shadow: none; }
.module-card:first-child { background: var(--wb-selected); border-color: transparent; }
.module-card-icon { width: 32px; height: 32px; color: var(--wb-text); background: var(--wb-accent); box-shadow: none; }
.module-intro, .knowledge-note, .home-hero-note, .bilibili-result, .bilibili-start-card,
.new-note-panel, .case-create-panel, .custom-ratio-panel, .admin-note {
  color: var(--wb-text);
  background: var(--wb-selected);
  border: 1px solid transparent;
  box-shadow: none;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
.module-intro, .knowledge-note { border-left: 2px solid transparent; }
.home-hero {
  background: var(--wb-selected);
  border: 1px solid transparent;
  border-radius: 12px;
  box-shadow: none;
}
.home-hero::after { display: none; }
.home-hero h2 { color: var(--wb-text); }
.home-hero p:not(.eyebrow), .home-hero-note p { color: var(--wb-text); }
.home-hero-note { background: var(--wb-selected); border-color: transparent; }

/* Controls */
.primary, .secondary, .button-link { min-height: 40px; border-radius: 8px; font-size: var(--workbench-type-support); box-shadow: none; }
.primary, .brand-mark, .placeholder-icon { color: var(--wb-text); background: var(--wb-accent); border-color: transparent; }
.primary:hover { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; box-shadow: none; }
.secondary { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; }
.secondary:hover { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; }
.text { color: var(--wb-text); }
.text:hover { color: var(--wb-text); background: var(--wb-selected); }
label { color: var(--wb-text); }
input, textarea, select {
  color: var(--wb-text);
  border-color: transparent;
  border-radius: 8px;
  background: var(--wb-selected);
}
input::placeholder, textarea::placeholder { color: var(--wb-text); }
input:focus, textarea:focus, select:focus { border-color: transparent; box-shadow: none; }
.form-help, .task-form small, .module-intro span, .knowledge-note { color: var(--wb-text); }
.pill { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }

/* Status and task rail */
.status-badge { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; }
.status-running { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.status-running .status-dot { background: var(--wb-accent); box-shadow: none; }
.status-completed { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.status-failed { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.recent-work-rail {
  grid-column: 3;
  grid-row: 1;
  position: sticky;
  top: 68px;
  height: calc(100vh - 68px);
  margin: 0;
  padding: 22px 10px;
  background: var(--wb-selected);
  border-left: 1px solid transparent;
}
.recent-work-panel { padding: 14px 12px; border: 1px solid transparent; border-radius: 10px; background: var(--wb-selected); box-shadow: none; }
.recent-work-heading { padding-bottom: 12px; border-bottom-color: var(--wb-text); }
.recent-work-heading h2 { color: var(--wb-text); font-size: var(--workbench-type-body); }
.recent-work-heading .muted { color: var(--wb-text); }
.recent-work-filter-select { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.recent-work-filter-select option { color: var(--wb-text); background: var(--wb-selected); }
.recent-work-item { padding: 10px 9px; border-color: transparent; background: var(--wb-selected); }
.recent-work-item:hover { border-color: transparent; background: var(--wb-selected); transform: none; }
.recent-work-item.active { border-color: transparent; background: var(--wb-selected); box-shadow: none; }
.recent-work-item-top small { color: var(--wb-accent); }
.recent-work-item-top time, .recent-work-project { color: var(--wb-text); }
.recent-work-item > strong { color: var(--wb-text); }

/* Reduce decorative green surfaces and keep outputs readable. */
.output { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.deliverable { color: var(--wb-text); }
.cover-copy { color: var(--wb-text); background: var(--wb-accent); }
.cta-box, .direction-field, .stage-empty { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; }
.workflow-progress li, .current-step-hint, .view-controls, .step-navigation, .evolution-panel { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; }
.workflow-progress li.active { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; }
.workflow-progress li.done { color: var(--wb-text); background: var(--wb-selected); border-color: transparent; }
.workflow-progress li span, .workflow-progress li.active span, .workflow-progress li.done span { color: var(--wb-text); background: var(--wb-accent); }
.current-step-hint strong, .step-kicker, .result-kicker, .result-label, .stage-card-kicker, .history-entry-heading, .accent-number { color: var(--wb-text); }

@media (max-width: 1020px) {
  .layout.has-recent-work, .layout:not(.has-recent-work) { grid-template-columns: 164px minmax(0, 1fr); }
  .recent-work-rail { grid-column: 2; grid-row: 2; position: static; width: auto; height: 320px; margin: 0 24px 28px 0; padding: 0; border-top: 1px solid transparent; border-left: 0; }
}
@media (max-width: 760px) {
  .topbar { min-height: 62px; padding: 10px 16px; }
  .layout, .layout.has-recent-work, .layout:not(.has-recent-work) { display: block; min-height: auto; }
  .sidebar { position: relative; top: auto; width: auto; height: auto; padding: 10px 12px; border-right: 0; border-bottom: 1px solid transparent; }
  .module-nav { gap: 8px; }
  .module-nav-group { padding: 2px 0; }
  .module-nav-group-label { display: none; }
  .module-nav-workspace, .module-nav-operations { display: flex; overflow-x: auto; }
  .module-nav-item { flex: 0 0 auto; min-width: 100px; }
  .workspace { min-height: 0; padding: 24px 16px 50px; }
  .page-head { display: grid; gap: 14px; margin-bottom: 22px; }
  .recent-work-rail { width: auto; height: 340px; margin: 0 16px 28px; padding: 0; border-top: 1px solid transparent; }
}

/* v0.11: 案例中心改为全宽案例墙，分组上移为横向导航，卡片成为主视觉。 */
.workspace.case-center-workspace {
  width: min(1480px, 100%);
  padding: clamp(20px, 2.8vw, 42px) clamp(18px, 3vw, 48px) 64px;
}
.case-center-page { display: grid; gap: 18px; min-width: 0; }
.case-center-page-head { align-items: center; margin-bottom: 0; }
.case-center-page-head .page-actions { align-items: center; }
.case-center-count { color: var(--muted); font-size: var(--workbench-type-support); white-space: nowrap; }
.case-center-groups { display: grid; gap: 10px; padding: 14px 16px; border: 1px solid var(--line); border-radius: 16px; background: var(--wb-selected); }
.case-center-groups-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.case-center-groups-head h3 { margin: 4px 0 0; font-size: var(--workbench-type-body); }
.case-center-groups-scroll { display: flex; gap: 7px; overflow-x: auto; padding: 2px 1px 3px; scrollbar-width: thin; }
.case-group-chip-shell { display: flex; flex: 0 0 auto; min-width: 0; border-radius: 999px; }
.case-group-chip-shell.dragging { opacity: .55; }
.case-group-chip-shell.drag-over { outline: 2px solid var(--wb-accent); background: var(--wb-selected); }
.case-group-chip { display: inline-flex; align-items: center; gap: 7px; min-height: 32px; padding: 0 12px; color: var(--muted); border: 1px solid transparent; border-radius: 999px; background: var(--wb-selected); font-size: var(--workbench-type-support); white-space: nowrap; }
.case-group-chip:hover, .case-group-chip.active { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.case-group-chip small { color: inherit; font-size: var(--workbench-type-meta); opacity: .75; }
.case-center-group-area:empty { display: none; }
.case-center-group-area > .case-group-detail-panel { margin: 0; padding: 12px 15px; border-color: var(--line); background: var(--wb-selected); }
.case-center-group-area > .group-create-form { margin: 0; }
.case-center-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 13px; border: 1px solid var(--line); border-radius: 14px; background: var(--wb-selected); }
.case-center-search { display: grid; grid-template-columns: minmax(180px, 1fr) auto; gap: 8px; min-width: min(410px, 100%); margin: 0; }
.case-center-search input { min-height: 36px; padding: 0 11px; }
.case-center-search .secondary { min-height: 36px; }
.case-center-filters { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; }
.case-center-filters select { min-width: 112px; min-height: 36px; padding: 0 9px; font-size: var(--workbench-type-support); }
.case-center-type-tabs { display: flex; flex-wrap: wrap; gap: 7px; }
.case-center-type-tab { min-height: 30px; padding: 0 11px; color: var(--muted); border: 1px solid transparent; border-radius: 8px; background: transparent; font-size: var(--workbench-type-support); }
.case-center-type-tab:hover, .case-center-type-tab.active { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.case-card-grid-v2 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; align-items: stretch; }
.case-card-v2 { position: relative; display: grid; grid-template-rows: auto auto; align-content: start; min-width: 0; min-height: 370px; overflow: hidden; border: 1px solid var(--line); border-radius: 16px; background: var(--wb-selected); box-shadow: none; transition: transform .16s ease, border-color .16s ease, background .16s ease, box-shadow .16s ease; }
.case-card-v2:hover { border-color: transparent; background: var(--wb-selected); box-shadow: none; transform: translateY(-2px); }
.case-card-open { display: grid; grid-template-rows: auto auto auto auto; align-content: start; gap: 10px; width: 100%; min-width: 0; min-height: 0; padding: 8px 13px 13px; color: var(--ink); text-align: left; background: transparent; }
.case-card-open:focus-visible { outline: 2px solid var(--wb-accent); outline-offset: -3px; }
.case-card-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-width: 0; min-height: 30px; padding: 10px 13px 0; }
.case-card-top-actions { display: inline-flex; align-items: center; justify-content: flex-end; gap: 10px; min-width: 0; }
.case-card-number { overflow: hidden; color: var(--muted); font: var(--workbench-type-meta)/1.2 ui-monospace, SFMono-Regular, Menlo, monospace; text-overflow: ellipsis; white-space: nowrap; }
.case-card-media { position: relative; display: grid; place-items: center; min-width: 0; overflow: hidden; border: 1px solid transparent; border-radius: 11px; background: var(--wb-selected); }
.case-card-media img { display: block; width: 100%; height: 100%; object-fit: contain; transition: filter .2s ease; }
.case-card-v2:hover .case-card-media img { filter: brightness(1.05); }
.case-card-media-empty { display: grid; place-items: center; gap: 4px; color: var(--muted); text-align: center; }
.case-card-media-empty span { color: var(--ink); font-size: var(--workbench-type-support); font-weight: 750; }
.case-card-media-empty small { color: var(--muted); font-size: var(--workbench-type-meta); }
.case-card-type { position: absolute; left: 8px; bottom: 8px; padding: 4px 7px; color: var(--wb-text); border: 1px solid transparent; border-radius: 6px; background: var(--wb-selected); font-size: var(--workbench-type-meta); }
.case-card-image-count { position: absolute; right: 8px; bottom: 8px; padding: 4px 7px; color: var(--wb-text); border-radius: 6px; background: var(--wb-selected); font-size: var(--workbench-type-meta); }
.case-card-open h3 { display: -webkit-box; overflow: hidden; min-width: 0; min-height: 42px; margin: 0; color: var(--ink); font-size: var(--workbench-type-body); line-height: 1.45; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.case-card-footer { display: grid; grid-template-columns: .85fr .9fr 1.35fr; gap: 7px; min-width: 0; padding-top: 10px; border-top: 1px solid transparent; }
.case-card-field { display: grid; gap: 4px; min-width: 0; align-content: start; }
.case-card-field em { color: var(--muted); font-size: var(--workbench-type-meta); font-style: normal; line-height: 1.2; }
.case-card-field strong { overflow: hidden; color: var(--ink); font-size: var(--workbench-type-meta); font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.case-card-platform strong { padding-left: 0; border-left: 0; }
.case-card-reasons-head { display: flex; align-items: center; justify-content: space-between; gap: 5px; min-width: 0; }
.case-card-reason-values { display: inline-flex; align-items: center; gap: 3px; min-width: 0; color: var(--ink); font-size: var(--workbench-type-meta); font-variant-numeric: tabular-nums; font-weight: 750; white-space: nowrap; }
.case-card-reason-values i { color: var(--muted); font-style: normal; font-weight: 500; }
.case-card-reason-list { display: flex; flex-wrap: wrap; gap: 4px; min-width: 0; }
.case-card-reason, .case-card-reason-more { overflow: hidden; max-width: 100%; padding: 2px 5px; border: 1px solid currentColor; border-radius: 5px; font-size: var(--workbench-type-meta); line-height: 1.3; text-overflow: ellipsis; white-space: nowrap; }
.case-card-reason-more { color: var(--muted); border-color: transparent; }
.case-card-empty { color: var(--muted); font-size: var(--workbench-type-meta); }
.case-card-delete { flex: none; min-height: 26px; padding: 0 2px; color: var(--muted); border: 0; background: transparent; font-size: var(--workbench-type-meta); line-height: 1; }
.case-card-delete:hover, .case-card-delete:focus-visible { color: var(--wb-text); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; outline: none; }
.case-center-empty { grid-column: 1 / -1; display: grid; place-items: center; min-height: 260px; padding: 36px; border: 1px dashed transparent; border-radius: 16px; color: var(--muted); text-align: center; }
.case-center-empty strong { color: var(--ink); font-size: var(--workbench-type-body); }
.case-center-empty p { margin: 7px 0 0; color: var(--muted); font-size: var(--workbench-type-support); }
.case-submission-panel { display: grid; gap: 10px; padding: 14px 16px; border: 1px solid transparent; border-radius: 14px; background: var(--wb-selected); }
.case-submission-panel > div:first-child { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.case-submission-panel strong { color: var(--ink); font-size: var(--workbench-type-support); }
.case-submission-panel p { margin: 4px 0 0; color: var(--muted); font-size: var(--workbench-type-support); line-height: 1.55; }
.case-submission-list { display: grid; gap: 7px; }
.case-submission-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 10px; border: 1px solid transparent; border-radius: 9px; background: var(--wb-selected); }
.case-submission-row > div { min-width: 0; }
.case-submission-row small { display: block; margin-top: 3px; color: var(--muted); font-size: var(--workbench-type-meta); }
.case-submission-row p { color: var(--wb-text); }
.case-submission-panel.has-revision { border-color: transparent; background: var(--wb-selected); }
.case-submission-panel-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.case-submission-section { display: grid; gap: 7px; }
.case-submission-section > strong { color: var(--muted); font-size: var(--workbench-type-meta); }
.case-detail-review-alert { display: grid; gap: 4px; margin-bottom: 14px; padding: 12px 14px; border-left: 3px solid transparent; border-radius: 10px; background: var(--wb-selected); }
.case-detail-review-alert.is-pending { border-left-color: var(--wb-text); background: var(--wb-selected); }
.case-detail-review-alert strong { color: var(--ink); font-size: var(--workbench-type-support); }
.case-detail-review-alert p { margin: 0; color: var(--muted); font-size: var(--workbench-type-support); line-height: 1.55; white-space: pre-wrap; }
.case-content-section-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 9px; }
.case-content-section-head h3 { margin: 0; font-size: var(--workbench-type-body); }
.case-content-edit-form { display: grid; gap: 8px; }
.case-content-edit-form textarea { min-height: 240px; resize: vertical; }
.case-content-help { color: var(--muted); font-size: var(--workbench-type-meta); line-height: 1.5; }
.case-content-assets-editor { display: grid; gap: 10px; }
.case-content-asset-list { display: grid; gap: 8px; }
.case-content-asset-edit { display: flex; align-items: center; gap: 10px; padding: 8px; border: 1px solid var(--line); border-radius: 10px; background: var(--wb-selected); }
.case-content-asset-edit img { width: 58px; height: 78px; flex: none; border-radius: 6px; object-fit: contain; background: var(--wb-selected); }
.case-content-asset-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; min-width: 0; }
.case-content-asset-actions span { margin-right: auto; color: var(--muted); font-size: var(--workbench-type-meta); }
.case-content-upload { display: inline-flex; align-items: center; justify-content: center; width: fit-content; padding: 8px 11px; border: 1px dashed transparent; border-radius: 8px; color: var(--accent-pale); font-size: var(--workbench-type-support); cursor: pointer; }
.case-content-upload input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }

.case-platform-tone-0 { color: var(--wb-text); }
.case-platform-tone-1 { color: var(--wb-text); }
.case-platform-tone-2 { color: var(--wb-text); }
.case-platform-tone-3 { color: var(--wb-text); }
.case-platform-tone-4 { color: var(--wb-text); }
.case-platform-tone-5 { color: var(--wb-text); }
.case-platform-tone-6 { color: var(--wb-text); }
.case-platform-tone-7 { color: var(--wb-text); }
.case-reason-tone-0 { color: var(--wb-text); background: var(--wb-selected); }
.case-reason-tone-1 { color: var(--wb-text); background: var(--wb-selected); }
.case-reason-tone-2 { color: var(--wb-text); background: var(--wb-selected); }
.case-reason-tone-3 { color: var(--wb-text); background: var(--wb-selected); }
.case-reason-tone-4 { color: var(--wb-text); background: var(--wb-selected); }
.case-reason-tone-5 { color: var(--wb-text); background: var(--wb-selected); }
.case-reason-tone-6 { color: var(--wb-text); background: var(--wb-selected); }
.case-reason-tone-7 { color: var(--wb-text); background: var(--wb-selected); }

@media (max-width: 1240px) {
  .case-card-grid-v2 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 980px) {
  .case-center-toolbar { display: grid; align-items: stretch; }
  .case-center-search { min-width: 0; }
  .case-center-filters { justify-content: flex-start; }
  .case-card-grid-v2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 650px) {
  .workspace.case-center-workspace { padding: 20px 14px 42px; }
  .case-center-page-head .page-actions { display: grid; grid-template-columns: 1fr 1fr; }
  .case-center-count { grid-column: 1 / -1; }
  .case-center-page-head .page-actions .primary, .case-center-page-head .page-actions .secondary { width: 100%; }
  .case-center-search { grid-template-columns: 1fr; }
  .case-center-filters { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .case-center-filters select { width: 100%; }
  .case-card-grid-v2 { grid-template-columns: 1fr; }
  .case-card-v2 { min-height: 0; }
  .case-card-open { grid-template-rows: auto auto auto auto; }
}

/* v0.7: 笔记生产页以产物为视觉核心，收紧留白并把提醒、输入、配图分层。 */
.production-conversation.module-panel {
  gap: 0;
  margin: 10px 0 14px;
  padding: 16px 18px 18px;
}
.production-conversation > .section-heading {
  margin-bottom: 10px;
}
.production-conversation > .section-heading p:not(.eyebrow) {
  margin-top: 5px;
}
.workbench-message-list {
  gap: 7px;
  max-height: 360px;
  margin: 8px 0 12px;
  padding: 0;
}
.production-artifact {
  margin-top: 10px;
  padding-top: 12px;
  border-top-color: var(--wb-text);
}
.production-artifact-heading {
  margin-bottom: 10px;
}
.production-artifact-heading p {
  margin-top: 5px;
}
.production-output-canvas {
  min-width: 0;
  padding: 15px 16px 16px;
  border: 1px solid transparent;
  border-radius: 13px;
  background: var(--wb-selected);
  box-shadow: none;
}
.production-output-canvas .stage-version-entry {
  border-color: transparent;
  background: var(--wb-selected);
}
.production-output-canvas .stage-version-entry.is-current {
  border-color: transparent;
  background: var(--wb-selected);
}
.production-output-canvas .stage-version-content {
  padding: 13px 0 2px;
}
.production-output-canvas .note-bundle {
  gap: 14px;
}
.production-output-canvas .bundle-copy,
.production-output-canvas .bundle-visual {
  gap: 9px;
  padding: 12px;
}
.production-output-canvas .result-block {
  padding-bottom: 11px;
}
.production-output-canvas .result-block:last-child {
  padding-bottom: 0;
}

/* 配图是可查看的结果，但不应横向铺满整个产物框。每张图统一为窄幅卡片。 */
.production-artifact .image-deliverable .image-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 280px));
  justify-content: start;
  width: min(100%, 920px);
  gap: 13px;
  margin: 13px 0 0;
}
.production-artifact .image-deliverable .generated-image {
  width: 280px;
  max-width: 100%;
  padding: 8px;
  border-color: transparent;
  background: var(--wb-selected);
}
.production-artifact .image-deliverable .generated-image img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 440px;
  object-fit: contain;
}
.production-artifact .image-deliverable .generated-image figcaption {
  margin-top: 7px;
  color: var(--muted);
  font-size: var(--workbench-type-meta);
  line-height: 1.4;
}

/* 输入区明确成为可操作的编辑器，并压缩上传说明的占位空间。 */
.production-chat-form {
  gap: 9px;
  margin-top: 14px;
  padding: 12px;
  border: 1px solid transparent;
  border-radius: 13px;
  background: var(--wb-selected);
  box-shadow: none;
}
.production-chat-form > textarea {
  min-height: 102px;
  padding: 12px 13px;
  border: 1px solid transparent;
  border-radius: 10px;
  background: var(--wb-selected);
  box-shadow: none;
  font-size: var(--workbench-type-body);
  line-height: 1.65;
  resize: vertical;
}
.production-chat-form > textarea:focus {
  border-color: transparent;
  box-shadow: none;
}
.production-chat-form .production-image-input {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 7px;
  margin: 0;
}
.production-chat-form .production-image-input > .field-label,
.production-chat-form .production-image-drop-zone span,
.production-chat-form .production-image-drop-zone small {
  display: none;
}
.production-chat-form .production-image-drop-zone {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  min-height: 30px;
  padding: 5px 9px;
  border: 1px solid transparent;
  border-radius: 7px;
  background: var(--wb-selected);
}
.production-chat-form .production-image-drop-zone strong {
  color: var(--wb-text);
  font-size: var(--workbench-type-support);
  font-weight: 650;
}
.production-chat-form .production-image-preview {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0;
}
.production-chat-form .production-image-preview > .muted {
  display: none;
}
.production-bottom-actions {
  display: flex;
  justify-content: center;
  margin: 4px 0 20px;
  padding-top: 12px;
  border-top: 1px solid transparent;
}
.production-bottom-actions .secondary {
  min-width: 150px;
}

@media (max-width: 700px) {
  .production-conversation.module-panel { padding: 14px 12px 16px; }
  .production-output-canvas { padding: 12px; }
  .production-artifact .image-deliverable .image-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
  }
  .production-artifact .image-deliverable .generated-image { width: auto; }
}
@media (max-width: 440px) {
  .production-artifact .image-deliverable .image-grid { grid-template-columns: 1fr; }
}

/* v0.12: 收紧案例中心顶部工具区，补充详情元数据与统一编辑表单。 */
.case-center-page { gap: 10px; }
.case-center-page-head { min-height: 58px; }
.case-center-page-head h2 { margin: 2px 0 3px; font-size: clamp(24px, 3vw, 34px); }
.case-center-page-head p:not(.eyebrow) { margin: 0; line-height: 1.4; }
.case-center-page-head .page-actions { gap: 7px; }
.case-center-page-head .page-actions .primary, .case-center-page-head .page-actions .secondary { min-height: 36px; padding: 0 12px; font-size: var(--workbench-type-support); }
.case-center-groups { gap: 6px; padding: 9px 12px; border-radius: 12px; }
.case-center-groups-head h3 { margin: 2px 0 0; font-size: var(--workbench-type-support); }
.case-center-groups-head .muted { margin: 0; font-size: var(--workbench-type-meta); }
.case-center-groups-scroll { gap: 6px; }
.case-group-chip { min-height: 29px; padding: 0 10px; font-size: var(--workbench-type-meta); }
.case-center-toolbar { display: flex !important; flex-wrap: nowrap; align-items: center; gap: 8px; padding: 8px 10px; border-radius: 11px; }
.case-center-search { flex: 1 1 300px; min-width: 240px; gap: 6px; }
.case-center-search input, .case-center-search .secondary, .case-center-filters select { min-height: 34px; }
.case-center-filters { display: flex !important; flex: 0 1 auto; flex-wrap: nowrap !important; align-items: center; justify-content: flex-end; gap: 6px; }
.case-center-filters select { min-width: 112px; padding: 0 8px; font-size: var(--workbench-type-meta); }
.case-center-type-tabs { gap: 5px; min-height: 28px; }
.case-center-type-tab { min-height: 28px; padding: 0 9px; font-size: var(--workbench-type-meta); }
.case-meta-title { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.case-meta-title h3 { margin-bottom: 0; }
.case-meta-panel { width: 320px; }
.case-meta-edit-form { display: grid; gap: 11px; }
.case-meta-edit-grid { display: grid; gap: 8px; }
.case-meta-edit-form label { gap: 5px; color: var(--muted); font-size: var(--workbench-type-meta); }
.case-meta-edit-form select { min-height: 32px; padding: 6px 8px; font-size: var(--workbench-type-support); }
.case-meta-edit-form .case-reason-field { gap: 7px; }
.case-meta-edit-form .case-reason-options { display: grid; grid-template-columns: 1fr; gap: 6px; }
.case-meta-edit-form .case-reason-options label { display: flex; align-items: center; gap: 7px; color: var(--ink); font-size: var(--workbench-type-support); }
.case-meta-edit-form .case-reason-options input[type="checkbox"] { flex: none; width: 16px; height: 16px; margin: 0; }
.case-meta-metric-fields { display: grid; gap: 9px; padding-top: 8px; border-top: 1px solid var(--line); }
.case-meta-metric-fields > div { display: grid; gap: 6px; }
.case-meta-metric-fields > div[hidden] { display: none; }
.case-meta-metric-fields > div > strong { color: var(--ink); font-size: var(--workbench-type-meta); }
.case-meta-metric-fields .metric-input-grid { gap: 6px; }
.case-meta-metric-fields input { min-height: 30px; padding: 6px 7px; font-size: var(--workbench-type-meta); }
.case-meta-metric-fields label { font-size: var(--workbench-type-meta); }
.case-metric-summary { display: grid; gap: 6px; }
.case-metric-summary-group { display: grid; gap: 2px; }
.case-metric-summary-group strong { color: var(--ink); font-size: var(--workbench-type-meta); }
.case-metric-summary-group span { color: var(--muted); font-size: var(--workbench-type-meta); line-height: 1.45; }

@media (max-width: 900px) {
  .case-center-toolbar { flex-wrap: wrap; }
  .case-center-search { flex-basis: 100%; }
  .case-center-filters { flex: 1 1 100%; justify-content: flex-start; }
  .case-meta-panel { width: auto; }
}

@media (max-width: 650px) {
  .case-center-toolbar { display: grid !important; }
  .case-center-filters { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .case-center-filters select { width: 100%; min-width: 0; }
}

/* v0.14: 笔记产出改为 ChatGPT 式纵向文本流，层级靠文字、间距和分隔线表达。 */
.production-output-note {
  padding: 0 4px 6px;
  border: 0;
  background: transparent;
  box-shadow: none;
}
.production-output-note .stage-version-entry {
  border: 0;
  background: transparent;
  box-shadow: none;
}
.production-output-note .stage-version-entry.is-current {
  border: 0;
  background: transparent;
  box-shadow: none;
}
.production-output-note .stage-version-content {
  padding: 12px 0 4px;
  border-top: 0;
}
.note-output-stream,
.note-publish-document {
  display: block;
  max-width: 820px;
}
.note-publish-document {
  color: var(--ink);
}
.note-output-section {
  display: grid;
  gap: 11px;
}
.note-output-heading {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 8px;
}
.note-output-label {
  color: var(--ink);
  font-size: var(--workbench-type-body);
  font-weight: 850;
}
.note-output-hint {
  color: var(--muted);
  font-size: var(--workbench-type-meta);
}
.note-title-options {
  display: grid;
  gap: 7px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.note-title-option {
  display: grid;
  grid-template-columns: 54px minmax(0, 1fr) auto;
  align-items: baseline;
  gap: 9px;
  min-width: 0;
  padding: 3px 0;
}
.note-title-option strong {
  min-width: 0;
  color: var(--ink);
  font-size: var(--workbench-type-body);
  line-height: 1.55;
  overflow-wrap: anywhere;
}
.note-title-option.is-selected strong { color: var(--wb-text); }
.note-title-index,
.note-title-selected {
  color: var(--muted);
  font-size: var(--workbench-type-meta);
  white-space: nowrap;
}
.note-title-selected { color: var(--wb-text); }
.note-cover-line {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 8px;
  margin: 3px 0 0;
  color: var(--muted);
  font-size: var(--workbench-type-support);
}
.note-cover-line strong {
  color: var(--ink);
  font-size: var(--workbench-type-support);
  line-height: 1.55;
}
.note-output-divider {
  margin: 20px 0;
  border: 0;
  border-top: 1px solid transparent;
}
.note-body-section {
  max-width: 760px;
}
.note-markdown {
  color: var(--ink);
  font-size: var(--workbench-type-body);
  line-height: 1.9;
  overflow-wrap: anywhere;
}
.note-markdown p {
  margin: 0 0 13px;
}
.note-markdown p:last-child { margin-bottom: 0; }
.note-markdown h4,
.note-markdown h5,
.note-markdown h6 {
  margin: 17px 0 7px;
  color: var(--ink);
  font-size: var(--workbench-type-body);
  line-height: 1.5;
}
.note-markdown ul,
.note-markdown ol {
  display: grid;
  gap: 5px;
  margin: 8px 0 14px;
  padding-left: 22px;
}
.note-markdown li { padding-left: 2px; }
.note-markdown blockquote {
  margin: 10px 0 14px;
  padding-left: 12px;
  border-left: 2px solid transparent;
  color: var(--muted);
}
.note-markdown hr {
  margin: 17px 0;
  border: 0;
  border-top: 1px solid transparent;
}
.note-markdown code {
  padding: 1px 4px;
  color: var(--wb-text);
  border-radius: 4px;
  background: var(--wb-selected);
  font-size: var(--workbench-type-support);
}
.note-markdown a { color: var(--wb-text); }
.note-cta,
.note-tags {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 14px;
  padding-left: 10px;
  border-left: 2px solid transparent;
  color: var(--ink);
  font-size: var(--workbench-type-support);
  line-height: 1.6;
}
.note-cta strong,
.note-tags > span:first-child {
  color: var(--muted);
  font-size: var(--workbench-type-meta);
  font-weight: 800;
  white-space: nowrap;
}
.note-cta small { color: var(--muted); }
.note-tags { border-left-color: var(--wb-accent); }
.note-tags > span:last-child { color: var(--wb-text); }
.note-supporting-info,
.visual-plan-checks {
  margin-top: 22px;
  padding-top: 11px;
  border: 0;
  border-top: 1px solid transparent;
  border-radius: 0;
  background: transparent;
}
.note-supporting-info summary,
.visual-plan-checks summary {
  color: var(--muted);
  font-size: var(--workbench-type-meta);
  font-weight: 700;
}
.note-supporting-info > section {
  display: grid;
  gap: 8px;
  margin-top: 14px;
}
.note-supporting-info > section h4 { margin: 0; color: var(--ink); font-size: var(--workbench-type-support); }
.note-supporting-info .fact-list { font-size: var(--workbench-type-support); }
.note-visual-section { max-width: 820px; }
.visual-plan {
  display: block;
  color: var(--ink);
}
.visual-plan-brief { margin-top: 12px; }
.visual-plan-meta {
  margin: 13px 0 0;
  color: var(--muted);
  font-size: var(--workbench-type-meta);
}
.visual-plan-overview,
.visual-plan-page-details {
  display: grid;
  gap: 12px;
  margin-top: 16px;
}
.visual-plan-overview {
  padding: 14px 0;
  border-top: 1px solid transparent;
  border-bottom: 1px solid transparent;
}
.visual-plan-detail > span {
  display: block;
  margin-bottom: 4px;
  color: var(--muted);
  font-size: var(--workbench-type-meta);
  font-weight: 700;
  letter-spacing: .02em;
}
.visual-plan-detail .note-markdown {
  font-size: var(--workbench-type-body);
  line-height: 1.72;
}
.visual-plan-pages {
  display: grid;
  gap: 0;
  margin-top: 14px;
}
.visual-plan-page {
  padding: 14px 0;
  border-top: 1px solid transparent;
}
.visual-plan-page:first-child { border-top: 0; padding-top: 2px; }
.visual-plan-page h4 {
  margin: 0;
  color: var(--ink);
  font-size: var(--workbench-type-body);
  line-height: 1.5;
}
.visual-plan-route {
  margin: 3px 0 8px;
  color: var(--muted);
  font-size: var(--workbench-type-meta);
}
.visual-plan-copy {
  display: block;
  margin: 14px 0 0;
  color: var(--muted);
  font-size: var(--workbench-type-body);
}
.visual-plan-copy > span {
  display: block;
  margin-bottom: 5px;
  font-size: var(--workbench-type-meta);
  font-weight: 700;
}
.visual-plan-copy-lines {
  display: grid;
  gap: 3px;
}
.visual-plan-copy strong {
  color: var(--ink);
  font-size: var(--workbench-type-page-title);
  font-weight: 750;
  line-height: 1.5;
}
.visual-plan-section {
  margin-top: 24px;
}
.visual-plan-section + .visual-plan-section {
  padding-top: 22px;
  border-top: 1px solid transparent;
}
.visual-plan-section > h3 {
  margin: 0 0 11px;
  color: var(--ink);
  font-size: var(--workbench-type-page-title);
  line-height: 1.45;
}
.visual-plan-summary {
  max-width: 760px;
}
.visual-plan-summary ul {
  margin: 0;
  padding-left: 20px;
}
.visual-plan-summary li { padding-left: 2px; }
.visual-plan-page-visible-details {
  margin-top: 13px;
  gap: 10px;
}
.visual-plan-page-extra {
  margin-top: 13px;
  padding-top: 10px;
  border-top: 1px solid transparent;
}
.visual-plan-page-extra summary {
  color: var(--muted);
  cursor: pointer;
  font-size: var(--workbench-type-meta);
  font-weight: 700;
}
.visual-plan-page-extra .visual-plan-page-details {
  margin-top: 12px;
}
.visual-plan-reminder-list {
  display: grid;
  gap: 7px;
  margin: 0;
  padding-left: 20px;
  color: var(--muted);
  font-size: var(--workbench-type-support);
  line-height: 1.7;
}
.visual-plan-reminder-list li { padding-left: 2px; }
.production-image-preview figure {
  position: relative;
  width: 72px;
}
.production-image-preview img {
  width: 72px;
  height: 72px;
  border-radius: 8px;
}
.production-image-remove {
  position: absolute;
  top: -7px;
  right: -7px;
  z-index: 2;
  display: grid;
  place-items: center;
  width: 20px;
  height: 20px;
  padding: 0;
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: 50%;
  background: var(--wb-selected);
  font-size: var(--workbench-type-body);
  line-height: 1;
}
.production-image-remove:hover,
.production-image-remove:focus-visible {
  color: var(--wb-text);
  border-color: transparent;
  background: var(--wb-selected);
}
@media (max-width: 600px) {
  .note-title-option { grid-template-columns: 48px minmax(0, 1fr); }
  .note-title-selected { grid-column: 2; }
  .note-output-divider { margin: 16px 0; }
  .note-markdown { font-size: var(--workbench-type-body); line-height: 1.82; }
  .visual-plan-copy strong { font-size: var(--workbench-type-section-title); }
}

/* v4.0: company UI audit fixes — mobile navigation, empty states, and readable controls. */
.brand-mark svg,
.module-card-icon svg,
.placeholder-icon svg {
  display: block;
  width: 20px;
  height: 20px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}
.brand-mark svg { width: 18px; height: 18px; }
.module-card-icon svg { width: 19px; height: 19px; }
.production-context-items { display: none; }
.empty-state-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.empty-state-actions .primary,
.empty-state-actions .secondary { min-width: 116px; }

@media (max-width: 760px) {
  .module-nav-workspace,
  .module-nav-operations {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    scrollbar-width: thin;
  }
  .module-nav-item {
    width: max-content;
    min-width: 100px;
    max-width: none;
    white-space: nowrap;
  }
  .module-nav-item > span:first-child {
    overflow: visible;
    text-overflow: clip;
  }
  .empty-state-actions { display: grid; grid-template-columns: 1fr; }
  .empty-state-actions .primary,
  .empty-state-actions .secondary { width: 100%; }
}

/* v0.13: 固定案例信息面板时，为文案区域预留真实空间，禁止覆盖正文。 */
.case-detail-layout {
  grid-template-columns: minmax(0, 1fr);
  padding-right: 352px;
}
.case-detail-layout > .case-note-post { min-width: 0; }
.case-meta-panel { right: 24px; width: min(320px, calc(100vw - 48px)); }

@media (max-width: 1100px) {
  .case-detail-layout { grid-template-columns: minmax(0, 1fr); padding-right: 0; }
  .case-meta-panel { position: static; top: auto; right: auto; width: auto; max-height: none; overflow: visible; }
}

/* v0.14: 案例中心采用窄左栏分类树，右侧保持四列案例墙。 */
.case-center-content { display: grid; grid-template-columns: minmax(178px, 198px) minmax(0, 1fr); gap: 14px; align-items: start; min-width: 0; }
.case-center-main { display: grid; gap: 10px; min-width: 0; }
.case-center-taxonomy { position: sticky; top: 18px; display: grid; gap: 8px; min-width: 0; padding: 11px 9px; border: 1px solid var(--line); border-radius: 13px; background: var(--wb-selected); }
.case-center-taxonomy-head { display: flex; align-items: baseline; justify-content: space-between; gap: 6px; padding: 0 3px 4px; border-bottom: 1px solid transparent; }
.case-center-taxonomy-head h3 { margin: 3px 0 0; font-size: var(--workbench-type-support); }
.case-center-taxonomy-head .muted { font-size: var(--workbench-type-meta); }
.case-taxonomy-all, .case-taxonomy-industry-link, .case-taxonomy-group { display: flex; align-items: center; justify-content: space-between; gap: 5px; width: 100%; min-width: 0; padding: 6px 7px; color: var(--muted); border: 1px solid transparent; border-radius: 7px; background: transparent; text-align: left; font-size: var(--workbench-type-meta); }
.case-taxonomy-all:hover, .case-taxonomy-all.active, .case-taxonomy-industry-link:hover, .case-taxonomy-industry-link.active, .case-taxonomy-group:hover, .case-taxonomy-group.active { color: var(--ink); border-color: transparent; background: var(--wb-selected); }
.case-taxonomy-all small, .case-taxonomy-industry-link small, .case-taxonomy-group small { flex: none; color: inherit; font-size: var(--workbench-type-meta); opacity: .7; }
.case-taxonomy-industry { display: grid; gap: 2px; }
.case-taxonomy-industry-row { display: grid; grid-template-columns: 20px minmax(0, 1fr); gap: 1px; align-items: center; }
.case-taxonomy-toggle { display: grid; place-items: center; width: 20px; height: 26px; padding: 0; color: var(--muted); border: 0; border-radius: 5px; background: transparent; font-size: var(--workbench-type-support); }
.case-taxonomy-toggle:hover { color: var(--ink); background: var(--wb-selected); }
.case-taxonomy-industry-link { padding-left: 6px; }
.case-taxonomy-children { display: grid; gap: 2px; margin-left: 20px; padding: 2px 0 3px 8px; border-left: 1px solid transparent; }
.case-taxonomy-group { padding: 5px 6px; font-size: var(--workbench-type-meta); }
.case-taxonomy-empty { display: block; padding: 8px 6px; color: var(--muted); font-size: var(--workbench-type-meta); }
.case-taxonomy-unassigned { display: grid; gap: 3px; margin-top: 4px; padding-top: 8px; border-top: 1px solid transparent; }
.case-taxonomy-unassigned > span { padding: 0 6px 2px; color: var(--muted); font-size: var(--workbench-type-meta); }
.case-center-create-mode { min-width: 0; }
.case-center-create-mode .case-create-panel { max-width: 980px; margin: 0 auto; }
.case-card-grid-v2 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.admin-taxonomy-tree { display: grid; gap: 5px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--wb-selected); }
.admin-taxonomy-industry { display: grid; gap: 2px; }
.admin-taxonomy-industry-row { display: grid; grid-template-columns: 24px minmax(100px, 1fr) auto auto minmax(270px, auto); gap: 8px; align-items: center; min-height: 38px; padding: 4px 6px; border-radius: 8px; }
.admin-taxonomy-industry-row:hover, .admin-taxonomy-industry.is-expanded > .admin-taxonomy-industry-row { background: var(--wb-selected); }
.admin-taxonomy-toggle { display: grid; place-items: center; width: 24px; height: 26px; padding: 0; color: var(--muted); border: 0; border-radius: 5px; background: transparent; }
.admin-taxonomy-toggle:hover { color: var(--ink); background: var(--wb-selected); }
.admin-taxonomy-count, .admin-taxonomy-status { color: var(--muted); font-size: var(--workbench-type-meta); white-space: nowrap; }
.admin-taxonomy-status { color: var(--accent-pale); }
.admin-taxonomy-actions { display: flex; justify-content: flex-end; gap: 8px; }
.admin-taxonomy-children { display: grid; gap: 3px; margin-left: 30px; padding: 3px 0 5px 14px; border-left: 1px solid transparent; }
.admin-taxonomy-group-row { display: grid; grid-template-columns: 18px minmax(100px, 1fr) auto auto auto; gap: 8px; align-items: center; min-height: 31px; padding: 2px 7px; border-radius: 7px; }
.admin-taxonomy-group-row:hover { background: var(--wb-selected); }
.admin-taxonomy-branch { color: var(--muted); }
.admin-taxonomy-group-name { color: var(--ink); font-size: var(--workbench-type-support); }
.admin-taxonomy-bind-select { min-height: 27px; max-width: 150px; padding: 3px 6px; color: var(--muted); border: 1px solid transparent; border-radius: 6px; background: var(--wb-selected); font-size: var(--workbench-type-meta); }
.admin-taxonomy-empty { margin: 4px 0; color: var(--muted); font-size: var(--workbench-type-meta); }
.admin-taxonomy-unassigned { display: grid; gap: 4px; margin-top: 7px; padding: 9px 7px 3px; border-top: 1px dashed transparent; }
.admin-taxonomy-unassigned > strong { color: var(--muted); font-size: var(--workbench-type-meta); font-weight: 600; }
.admin-platform-grid { margin-top: 16px; }

@media (max-width: 1160px) {
  .case-center-content { grid-template-columns: 178px minmax(0, 1fr); }
  .case-card-grid-v2 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .case-center-content { grid-template-columns: 1fr; }
  .case-center-taxonomy { position: static; }
  .case-card-grid-v2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .admin-taxonomy-industry-row { grid-template-columns: 24px minmax(100px, 1fr) auto; }
  .admin-taxonomy-status, .admin-taxonomy-actions { grid-column: 2 / -1; justify-content: flex-start; }
}
@media (max-width: 640px) {
  .case-card-grid-v2 { grid-template-columns: 1fr; }
  .admin-taxonomy-group-row { grid-template-columns: 18px minmax(0, 1fr) auto; }
  .admin-taxonomy-group-row .admin-taxonomy-count, .admin-taxonomy-bind-select { grid-column: 2 / -1; }
}

/* v0.15: 案例详情字段级编辑，修改入口紧跟字段值；理由与数据允许自然换行。 */
.case-meta-editable {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 6px;
  min-width: 0;
}
.case-meta-group-value { justify-content: flex-start; }
.case-meta-value-text { min-width: 0; overflow-wrap: anywhere; }
.case-meta-inline-edit { flex: none; align-self: center; padding: 0; line-height: 1.4; }
.case-meta-reasons { align-items: flex-start; }
.case-meta-reason-list {
  display: flex;
  flex: 0 1 auto;
  flex-wrap: wrap;
  align-items: center;
  gap: 5px;
  min-width: 0;
  max-width: 100%;
}
.case-meta-reason-list .case-reason-pill {
  display: inline-flex;
  max-width: 100%;
  margin: 0;
  white-space: normal;
  overflow-wrap: anywhere;
  line-height: 1.35;
}
.case-meta-metrics-value { align-items: flex-start; }
.case-meta-metrics-value .case-metric-summary { display: grid; flex: 0 1 auto; gap: 6px; min-width: 0; }
.case-meta-inline-form {
  display: grid;
  gap: 8px;
  width: 100%;
  min-width: 0;
}
.case-meta-inline-form > label {
  display: grid;
  gap: 5px;
  color: var(--muted);
  font-size: var(--workbench-type-meta);
}
.case-meta-inline-form select { width: 100%; min-height: 32px; padding: 6px 8px; font-size: var(--workbench-type-support); }
.case-meta-inline-help { color: var(--muted); font-size: var(--workbench-type-meta); line-height: 1.45; }
.case-meta-inline-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.case-meta-inline-form .case-reason-options {
  display: grid;
  grid-template-columns: 1fr;
  align-items: stretch;
  gap: 7px;
}
.case-meta-inline-form .case-reason-options label {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  min-width: 0;
  color: var(--ink);
  font-size: var(--workbench-type-support);
  line-height: 1.4;
}
.case-meta-inline-form .case-reason-options input[type="checkbox"] { flex: none; width: 16px; height: 16px; margin: 1px 0 0; }
.case-meta-metrics-form .case-meta-metric-fields { margin-top: 0; padding-top: 0; border-top: 0; }
.case-meta-metrics-form .case-meta-metric-fields > div[hidden] { display: none; }
.case-meta-metrics-form .case-meta-metric-fields input { min-height: 30px; padding: 6px 7px; font-size: var(--workbench-type-meta); }

/* v0.15: 视频生产统一入口与脚本/封面结果页。 */
.video-production-tabs { display: flex; gap: 6px; margin: 0 0 14px; padding: 4px; border: 1px solid var(--line); border-radius: 10px; background: var(--wb-selected); }
.video-production-tab { padding: 8px 14px; color: var(--muted); border: 0; border-radius: 7px; background: transparent; font-size: var(--workbench-type-support); cursor: pointer; }
.video-production-tab:hover, .video-production-tab.active { color: var(--ink); background: var(--wb-selected); }
.video-production-form, .video-task-detail { max-width: 1080px; }
.video-extraction-summary { display: grid; grid-template-columns: minmax(180px, 260px) minmax(0, 1fr); gap: 18px; align-items: start; margin-bottom: 18px; }
.video-cover-preview { margin: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 10px; background: var(--wb-selected); }
.video-cover-preview img { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.video-cover-preview figcaption { display: flex; justify-content: space-between; gap: 10px; padding: 8px 10px; color: var(--muted); font-size: var(--workbench-type-meta); }
.video-cover-empty, .video-transcript-unavailable, .video-cover-error { display: grid; gap: 6px; padding: 18px; color: var(--muted); border: 1px dashed var(--line); border-radius: 10px; background: var(--wb-selected); }
.video-cover-error strong, .video-cover-empty strong, .video-transcript-unavailable strong { color: var(--ink); }
.video-cover-preview.is-missing { border-color: transparent; }
.video-cover-preview.is-missing figcaption { display: none; }
.video-extraction-status { display: grid; gap: 4px; margin-bottom: 14px; padding: 12px 14px; border-left: 3px solid var(--accent); background: var(--wb-selected); }
.video-extraction-status[data-video-extraction-state^="部分完成"] { border-left-color: var(--wb-error); background: var(--wb-selected); }
.video-extraction-status strong { color: var(--ink); }
.video-extraction-status span, .video-extraction-status small, .video-cover-error span, .video-cover-error small, .video-cover-empty span, .video-cover-empty small { color: var(--muted); }
.video-facts { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 12px; color: var(--muted); font-size: var(--workbench-type-meta); }
.video-facts span { padding: 5px 7px; border: 1px solid transparent; border-radius: 6px; }
.video-transcript-panel { margin-top: 14px; }
.video-transcript-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.video-transcript-columns textarea { width: 100%; min-height: 260px; resize: vertical; }
.video-transcript-single { display: block; }
.video-transcript-single textarea { width: 100%; min-height: 320px; resize: vertical; line-height: 1.8; }
.video-save-case-panel { margin-top: 18px; border-color: transparent; }
.video-script-result { display: grid; gap: 14px; }
.video-script-callout { padding: 12px 14px; border-left: 3px solid var(--accent); background: var(--wb-selected); }
.video-script-callout span { display: block; margin-bottom: 4px; color: var(--muted); font-size: var(--workbench-type-meta); }
.video-script-callout p, .video-script-callout strong { margin: 0; color: var(--ink); }
.video-scene-table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 9px; }
.video-scene-table { width: 100%; min-width: 720px; border-collapse: collapse; font-size: var(--workbench-type-meta); }
.video-scene-table th, .video-scene-table td { padding: 9px 10px; text-align: left; vertical-align: top; border-bottom: 1px solid transparent; }
.video-scene-table th { color: var(--muted); font-weight: 600; background: var(--wb-selected); }
.video-scene-table tr:last-child td { border-bottom: 0; }
.video-task-start-card { padding: 18px; border: 1px dashed var(--line); border-radius: 10px; }
.video-task-start-card p { margin-top: 0; color: var(--muted); }

@media (max-width: 720px) {
  .video-production-tabs { overflow-x: auto; }
  .video-production-tab { flex: 0 0 auto; }
  .video-extraction-summary, .video-transcript-columns { grid-template-columns: 1fr; }
}

/* v0.16: 案例信息随页面滚动，字段修改入口统一贴齐信息区域右侧。 */
.case-detail-layout {
  grid-template-columns: minmax(0, 1fr) minmax(260px, 320px);
  padding-right: 0;
  align-items: start;
}
.case-meta-panel {
  position: static;
  top: auto;
  right: auto;
  z-index: auto;
  width: auto;
  max-height: none;
  overflow: visible;
}
.case-meta-editable {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: start;
  gap: 8px;
}
.case-meta-inline-edit {
  justify-self: end;
  align-self: start;
}
.case-meta-reason-list,
.case-meta-metrics-value .case-metric-summary {
  grid-column: 1;
  width: 100%;
}

/* 紧凑图片入口共用同一行，保留上传、拖拽和粘贴提示。 */
.production-image-input-compact {
  display: flex;
  align-items: center;
  min-width: 0;
  margin: 0;
}
.production-image-input-compact > .field-label,
.production-image-input-compact .production-image-drop-zone small {
  display: none;
}
.production-image-input-compact .production-image-drop-zone {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  width: auto;
  min-height: 30px;
  padding: 5px 9px;
  border: 1px solid transparent;
  border-radius: 7px;
  background: var(--wb-selected);
  white-space: nowrap;
}
.production-image-input-compact .production-image-drop-zone strong {
  color: var(--wb-text);
  font-size: var(--workbench-type-support);
  font-weight: 650;
}
.production-image-input-compact .production-image-drop-zone span {
  display: inline;
  color: var(--wb-text);
  font-size: var(--workbench-type-meta);
  font-weight: 500;
}
.production-image-input-compact .production-image-drop-zone.is-dragging,
.production-image-input-compact .production-image-drop-zone:focus-within {
  border-color: transparent;
  background: var(--wb-selected);
}
.production-image-input-compact .production-image-preview {
  display: flex;
  align-items: center;
  gap: 5px;
  margin-left: 2px;
}
.production-image-input-compact .production-image-preview > .muted {
  display: none;
}
.production-image-input-compact .production-image-preview figure {
  position: relative;
  width: 30px;
  height: 30px;
  margin: 0;
}
.production-image-input-compact .production-image-preview img {
  width: 30px;
  height: 30px;
  border-radius: 5px;
}
.production-image-input-compact .production-image-preview figcaption { display: none; }
.production-image-input-compact .production-image-remove {
  position: absolute;
  top: -6px;
  right: -6px;
  z-index: 1;
  width: 16px;
  height: 16px;
  padding: 0;
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: 50%;
  background: var(--wb-selected);
  font-size: var(--workbench-type-support);
  line-height: 14px;
}
@media (max-width: 600px) {
  .production-image-input-compact .production-image-drop-zone span { display: none; }
}

@media (max-width: 1100px) {
  .case-detail-layout {
    grid-template-columns: minmax(0, 1fr);
    padding-right: 0;
  }
  .case-meta-panel {
    position: static;
    width: auto;
    max-height: none;
    overflow: visible;
  }
}

/* v0.19: 案例信息采用字段名与字段值同一行的紧凑布局，减少详情页纵向占用。 */
.case-meta-panel {
  gap: 10px;
  padding: 13px;
}
.case-meta-title {
  padding-bottom: 8px;
}
.case-meta-list {
  gap: 0;
}
.case-meta-item {
  grid-template-columns: 60px minmax(0, 1fr);
  align-items: start;
  column-gap: 9px;
  row-gap: 0;
  padding: 6px 0;
}
.case-meta-item dt {
  padding-top: 1px;
  white-space: nowrap;
}
.case-meta-item dd {
  line-height: 1.35;
}

/* v0.18: 全局内容优先布局。减少说明占行，把当前内容和主要操作留在首屏。 */
.page-head {
  align-items: center;
  gap: 16px;
  margin-bottom: 16px;
  padding-bottom: 13px;
}
.page-head h2,
.empty h2 {
  margin: 0 0 4px;
  font-size: clamp(25px, 3vw, 34px);
  line-height: 1.18;
}
.page-head p:not(.eyebrow),
.empty p {
  max-width: 680px;
  margin: 0;
  line-height: 1.45;
}
.page-head > div { min-width: 0; }
.page-actions { flex: none; }
.section-heading { margin-bottom: 9px; }
.module-intro,
.knowledge-note {
  display: flex;
  align-items: center;
  gap: 7px 18px;
  margin-bottom: 14px;
  padding: 9px 12px;
  border-left-width: 2px;
  font-size: var(--workbench-type-support);
  line-height: 1.45;
}
.module-intro strong,
.knowledge-note strong { flex: none; }
.module-intro span,
.knowledge-note span { min-width: 0; }
.task-toolbar { margin-bottom: 14px; }
.module-panel,
.task-form,
.output-card,
.confirmation,
.revision,
.archive-panel { margin-bottom: 16px; padding: clamp(16px, 2.2vw, 24px); }

/* 智能对话：范围和摘要并入顶部标题卡，消息区拥有主要视觉重量。 */
.chat-page-head { margin-bottom: 14px; }
.chat-create-panel {
  grid-template-columns: minmax(220px, .72fr) minmax(360px, 1.28fr);
  gap: 18px;
  margin-bottom: 14px;
  padding: 16px 18px;
  border-radius: 14px;
}
.chat-create-copy h3 { margin: 2px 0 5px; }
.chat-create-copy p:not(.eyebrow) { line-height: 1.5; }
.chat-header {
  gap: 12px;
  padding: 13px 15px;
}
.chat-header-copy { min-width: 0; }
.chat-header-copy .conversation-context-panel {
  margin-top: 5px;
  border: 0;
  border-top: 1px solid transparent;
  border-radius: 0;
  background: transparent;
}
.chat-header-copy .conversation-context-panel > summary {
  justify-content: flex-start;
  gap: 8px;
  padding: 5px 0 0;
  color: var(--wb-text);
  font-size: var(--workbench-type-meta);
  font-weight: 600;
}
.chat-header-copy .conversation-context-panel > summary::before {
  content: '范围';
  color: var(--wb-text);
  font-weight: 750;
}
.chat-header-copy .conversation-context-panel > summary > span:first-child { display: none; }
.chat-header-copy .conversation-context-summary { font-size: var(--workbench-type-meta); }
.chat-header-copy .conversation-context-body {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 12px;
  padding: 8px 0 2px;
  border-top: 0;
}
.chat-header-copy .conversation-context-scope,
.chat-header-copy .conversation-source-block { padding-top: 0; }
.chat-header-copy .conversation-context-scope p,
.chat-header-copy .conversation-summary-block p { line-height: 1.45; }
.chat-thread { gap: 8px; }
.workbench-message-list {
  min-height: 360px;
  max-height: calc(100vh - 350px);
  padding: 16px;
}

/* 生产、任务、案例和管理页：把连续说明压成行内上下文，保留结果区宽度。 */
.production-context-items { gap: 6px 16px; }
.task-center-toolbar,
.case-center-toolbar,
.admin-filter-panel { margin-bottom: 12px; }
.task-center-list,
.case-card-grid-v2,
.admin-summary-grid { gap: 10px; }
.case-center-page { gap: 8px; }

@media (max-width: 760px) {
  .page-head { align-items: start; gap: 10px; margin-bottom: 13px; padding-bottom: 10px; }
  .page-actions { width: auto; }
  .module-intro,
  .knowledge-note { align-items: flex-start; flex-direction: column; gap: 3px; }
  .chat-create-panel { grid-template-columns: 1fr; gap: 12px; padding: 14px; }
  .chat-header-copy .conversation-context-body { grid-template-columns: 1fr; }
  .workbench-message-list { min-height: 300px; max-height: 55vh; }
}

/* v0.19: 沉浸式工作区壳层与 ChatGPT 式自适应输入。 */
.topbar { display: none !important; }
.layout,
.layout.has-recent-work,
.layout:not(.has-recent-work) {
  position: relative;
  grid-template-columns: 176px minmax(0, 1fr) 176px;
  min-height: 100vh;
  padding-top: 0;
}
.layout:not(.has-recent-work) { grid-template-columns: 176px minmax(0, 1fr); }
.sidebar {
  top: 0;
  height: 100vh;
  padding: 16px 10px 24px;
}
.sidebar-brand {
  display: flex;
  align-items: center;
  width: 100%;
  margin: 0 0 18px;
  padding: 4px 6px 15px;
  border-bottom: 1px solid transparent;
  text-align: left;
}
.sidebar-brand h1 { font-size: var(--workbench-type-section-title); line-height: 1.35; }
.sidebar-brand .brand-mark { width: 30px; height: 30px; }
.shell-user-menu {
  position: fixed;
  top: 12px;
  right: 20px;
  z-index: 30;
  display: flex;
  align-items: center;
  gap: 9px;
  min-height: 32px;
  padding: 3px 5px 3px 10px;
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: 999px;
  background: var(--wb-selected);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
}
.shell-user-menu .text { min-height: 28px; padding: 0 8px; color: var(--wb-text); }
.workspace {
  width: 100%;
  min-height: 100vh;
  padding-top: 28px;
  padding-bottom: 116px;
}
.workspace > .page-head { padding-right: 150px; }

.chat-form,
.production-chat-form {
  position: sticky;
  bottom: 14px;
  z-index: 12;
  margin-bottom: 0;
}
.chat-form textarea,
.production-chat-form > textarea {
  height: 44px;
  min-height: 44px;
  max-height: 220px;
  overflow-y: hidden;
  resize: none;
  line-height: 1.55;
}
.chat-form textarea { padding-top: 11px; padding-bottom: 11px; }
.production-chat-form > textarea { min-height: 44px; }

@media (max-width: 1020px) and (min-width: 761px) {
  .layout,
  .layout.has-recent-work,
  .layout:not(.has-recent-work) { grid-template-columns: 164px minmax(0, 1fr); }
  .workspace > .page-head { padding-right: 140px; }
}
@media (max-width: 760px) {
  .layout,
  .layout.has-recent-work,
  .layout:not(.has-recent-work) { display: block; min-height: 100vh; }
  .sidebar { height: auto; min-height: 0; padding: 58px 12px 10px; }
  .sidebar-brand { margin-bottom: 10px; padding-bottom: 10px; }
  .shell-user-menu { top: 10px; right: 12px; }
  .workspace { min-height: 0; padding: 20px 16px 96px; }
  .workspace > .page-head { padding-right: 0; }
  .chat-form,
  .production-chat-form { bottom: 8px; }
}

/* v0.21: 图片生成与视频生产统一为顶部任务栏、中间工作区、底部输入区。 */
.module-workbench {
  --module-gap: 16px;
  min-height: calc(100vh - 32px);
  padding-top: var(--module-gap);
}
.workspace:has(.module-workbench) {
  padding-top: var(--module-gap);
}
.module-taskbar {
  position: sticky;
  top: var(--module-gap);
  z-index: 15;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px 16px;
  min-height: 58px;
  margin: 0;
  padding: 11px 14px;
  border: 1px solid transparent;
  border-radius: 13px;
  background: var(--wb-selected);
  box-shadow: none;
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
}
.module-taskbar-title { min-width: 0; }
.module-taskbar-title h2 { margin: 0 0 2px; font-size: var(--workbench-type-page-title); line-height: 1.2; }
.module-taskbar-title p { margin: 0; color: var(--muted); font-size: var(--workbench-type-meta); line-height: 1.4; }
.module-taskbar-title .eyebrow { display: none; }
.module-taskbar-meta { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; color: var(--wb-text); font-size: var(--workbench-type-meta); }
.module-taskbar-meta span { padding: 5px 8px; border: 1px solid transparent; border-radius: 999px; background: var(--wb-selected); }
.module-taskbar-tabs {
  grid-column: 1 / -1;
  display: flex;
  gap: 5px;
  margin: 0;
  padding: 3px;
  border: 0;
  background: var(--wb-selected);
}
.module-taskbar-tabs .video-production-tab { padding: 6px 12px; }
.module-stage {
  min-width: 0;
  min-height: calc(100vh - 120px);
  margin-top: var(--module-gap);
  padding-bottom: 220px;
}
.module-stage .image-module-layout,
.module-stage .bilibili-module-layout {
  grid-template-columns: minmax(0, 1fr);
  gap: 0;
}
.module-stage .image-job-main,
.module-stage .bilibili-job-main { min-width: 0; }

/* 新建图片、视频下载/提取/创作表单作为底部输入区。 */
.image-workbench #image-job-form,
.video-workbench .bilibili-form-panel,
.video-workbench .video-production-form {
  position: fixed;
  left: max(200px, calc(176px + 24px));
  right: max(200px, calc(176px + 24px));
  bottom: var(--module-gap);
  z-index: 20;
  width: auto;
  max-width: none;
  max-height: min(38vh, 330px);
  margin: 0;
  overflow-y: auto;
  padding: 12px 14px;
  border-color: transparent;
  border-radius: 13px;
  background: var(--wb-selected);
  box-shadow: none;
}
.image-workbench #image-job-form { gap: 9px; }
.image-workbench #image-job-form textarea,
.video-workbench .video-production-form textarea,
.video-workbench .bilibili-form-panel textarea { min-height: 44px; max-height: 150px; }
.image-workbench #image-job-form > label,
.video-workbench .video-production-form > form > label,
.video-workbench .bilibili-form-panel > form > label { gap: 5px; }
.image-workbench #image-job-form > label small,
.video-workbench .bilibili-form-panel .form-help,
.video-workbench .video-production-form .form-help { margin: 0; font-size: var(--workbench-type-meta); }
.image-workbench #image-job-form > .model-badge { margin: 0; }
.image-workbench #image-job-form > .primary,
.video-workbench .bilibili-form-panel form > .primary,
.video-workbench .video-production-form form > .primary { justify-self: end; }

.image-workbench .image-job-detail { min-height: calc(100vh - 180px); }
.video-workbench .video-task-detail { min-height: calc(100vh - 180px); }

@media (max-width: 1020px) and (min-width: 761px) {
  .image-workbench #image-job-form,
  .video-workbench .bilibili-form-panel,
  .video-workbench .video-production-form { left: 188px; right: 24px; }
}
@media (max-width: 760px) {
  .module-workbench { --module-gap: 12px; padding-top: var(--module-gap); }
  .module-taskbar { top: var(--module-gap); grid-template-columns: minmax(0, 1fr) auto; padding: 10px 12px; }
  .module-taskbar-title h2 { font-size: var(--workbench-type-page-title); }
  .module-taskbar-meta { grid-column: 1 / -1; justify-content: flex-start; }
  .module-taskbar-tabs { overflow-x: auto; }
  .module-stage { margin-top: var(--module-gap); padding-bottom: 290px; }
  .image-workbench #image-job-form,
  .video-workbench .bilibili-form-panel,
  .video-workbench .video-production-form { left: 12px; right: 12px; bottom: 12px; max-height: 46vh; }
}

/* v0.21: 当前对话只保留一行身份信息，给消息区让出首屏空间。 */
.chat-page-head-active {
  position: sticky;
  top: 10px;
  z-index: 11;
  align-items: center;
  min-height: 44px;
  margin-bottom: 12px;
  padding: 6px 10px 6px 12px;
  border: 1px solid transparent;
  border-radius: 10px;
  background: var(--wb-selected);
  box-shadow: none;
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
}
.chat-page-head-active .chat-active-title {
  min-width: 0;
  flex: 1 1 auto;
}
.chat-page-head-active .conversation-title-block { display: block; }
.chat-page-head-active .conversation-title-view {
  min-width: 0;
  flex-wrap: nowrap;
  gap: 8px;
}
.chat-page-head-active .conversation-title-view > strong {
  max-width: min(46vw, 560px);
  font-size: var(--workbench-type-body);
  line-height: 1.35;
}
.chat-page-head-active .conversation-project-badge {
  flex: 0 0 auto;
  padding: 3px 7px;
  font-size: var(--workbench-type-meta);
  white-space: nowrap;
}
.chat-page-head-active .chat-header-actions {
  flex: 0 0 auto;
  gap: 6px;
}
.chat-page-head-active .chat-more-menu > summary,
.chat-page-head-active .primary.small {
  min-height: 30px;
  padding: 0 9px;
  font-size: var(--workbench-type-meta);
}
.chat-page-head-active .conversation-title-edit { gap: 6px; }
.chat-page-head-active .conversation-title-edit input {
  min-width: min(300px, 45vw);
  min-height: 30px;
  padding-top: 5px;
  padding-bottom: 5px;
}
.conversation-context-panel-secondary {
  margin: -2px 0 0;
  border: 0;
  border-top: 1px solid transparent;
  border-radius: 0;
  background: transparent;
}
.conversation-context-panel-secondary > summary {
  justify-content: flex-start;
  gap: 8px;
  padding: 7px 2px 4px;
  color: var(--wb-text);
  font-size: var(--workbench-type-meta);
}
.conversation-context-panel-secondary > summary > span:first-child { color: var(--wb-text); }
.conversation-context-panel-secondary .conversation-context-body {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 12px;
  padding: 7px 2px 2px;
}
.conversation-context-panel-secondary .conversation-context-scope,
.conversation-context-panel-secondary .conversation-source-block { padding-top: 0; }

@media (max-width: 600px) {
  .chat-page-head-active { top: 8px; padding: 6px 8px; }
  .chat-page-head-active .conversation-title-view { flex-wrap: wrap; }
  .chat-page-head-active .conversation-title-view > strong { max-width: 54vw; }
  .chat-page-head-active .chat-more-menu > summary { font-size: 0; }
  .chat-page-head-active .chat-more-menu > summary::after { content: '⋯'; font-size: var(--workbench-type-page-title); line-height: 1; }
  .conversation-context-panel-secondary .conversation-context-body { grid-template-columns: 1fr; }
}

/* 对话输入区只保留输入表单；执行提示由各模块按需挂接到同一底栏。 */
.chat-composer-row {
  position: fixed;
  left: max(200px, calc(176px + 24px));
  right: max(200px, calc(176px + 24px));
  bottom: 16px;
  z-index: 12;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: end;
  gap: 10px;
}
.chat-composer-row .chat-form {
  position: static;
  left: auto;
  right: auto;
  bottom: auto;
  width: auto;
  margin: 0;
}
@media (max-width: 1020px) and (min-width: 761px) {
  .chat-composer-row { left: 188px; right: 24px; }
}
@media (max-width: 760px) {
  .chat-composer-row {
    left: 12px;
    right: 12px;
    bottom: 10px;
    grid-template-columns: minmax(0, 1fr) minmax(132px, 38%);
    gap: 6px;
  }
}

/* v0.24: 对话内容与固定输入区留出清晰间距，顶部操作直接可见。 */
.workbench-message-list {
  margin-bottom: 14px;
  max-height: calc(100vh - 364px);
}
.chat-page-head-active .chat-header-actions > .text {
  min-height: 30px;
  padding: 0 8px;
  font-size: var(--workbench-type-meta);
}
.chat-page-head-active .chat-header-actions > .danger-text { color: var(--wb-text); }

@media (max-width: 760px) {
  .workbench-message-list {
    margin-bottom: 10px;
    max-height: calc(55vh - 10px);
  }
}

/* v0.25: 对话内容区底部直接对齐固定输入区顶部，不留额外空白。 */
.workbench-message-list {
  margin-bottom: 0;
  min-height: 0;
  height: calc(100vh - 206px);
  max-height: calc(100vh - 206px);
}
@media (max-width: 760px) {
  .workbench-message-list {
    margin-bottom: 0;
    height: max(300px, calc(100vh - 192px));
    max-height: max(300px, calc(100vh - 192px));
  }
}

/* v0.26: 技能中心采用案例中心同款卡片网格，桌面端四栏展示。 */
.skill-card-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  align-items: stretch;
}
.skill-card-grid > .muted { grid-column: 1 / -1; }
.skill-card {
  display: grid;
  grid-template-rows: auto minmax(104px, 1fr) auto auto;
  min-width: 0;
  min-height: 300px;
  overflow: hidden;
  padding: 0;
  border-radius: 16px;
  background: var(--card);
  box-shadow: none;
  transition: transform .16s ease, border-color .16s ease, background .16s ease, box-shadow .16s ease;
}
.skill-card:hover {
  border-color: transparent;
  background: var(--card-raised);
  box-shadow: none;
  transform: translateY(-2px);
}
.skill-card-head {
  display: grid;
  gap: 3px;
  min-width: 0;
  padding: 15px 14px 7px;
}
.skill-card-head h3 {
  overflow: hidden;
  margin: 0;
  color: var(--ink);
  font-size: var(--workbench-font-size-body);
  line-height: 1.4;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.skill-card-key,
.skill-detail-key {
  display: block;
  overflow: hidden;
  min-width: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--workbench-color-text-muted, var(--muted));
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size: var(--workbench-font-size-xs);
  font-weight: 500;
  line-height: 1.35;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.skill-card-description {
  display: grid;
  align-content: start;
  min-width: 0;
  padding: 5px 14px 14px;
}
.skill-card-description p {
  display: -webkit-box;
  overflow: hidden;
  min-height: 88px;
  margin: 0;
  color: var(--muted);
  line-height: 1.65;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
}
.skill-card-meta {
  display: grid;
  grid-template-columns: minmax(0, .82fr) minmax(0, 1.18fr);
  gap: 8px;
  min-width: 0;
  padding: 11px 14px;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: var(--workbench-type-meta);
}
.skill-card-meta > span { min-width: 0; }
.skill-card-meta > span:nth-child(3) { grid-column: 1 / -1; }
.skill-card-meta strong { color: var(--ink); }
.skill-card-meta .pill { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.skill-card-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-width: 0;
  padding: 10px 14px 14px;
  border-top: 1px solid var(--line);
}
.skill-card-actions .skill-toggle { flex: none; gap: 5px; font-size: var(--workbench-type-meta); }
.skill-card-actions .small-action { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.skill-card-meta-item { display: grid; gap: 4px; min-width: 0; align-content: start; }
.skill-card-meta-item em, .skill-detail-meta-item em { color: var(--muted); font-size: var(--workbench-type-meta); font-style: normal; line-height: 1.2; }
.skill-card-meta-item strong, .skill-detail-meta-item strong { overflow: hidden; min-width: 0; color: var(--ink); font-size: var(--workbench-type-meta); font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.skill-card-binding { grid-column: 1 / -1; }
.skill-card-binding-list { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 5px; min-width: 0; }
.skill-card-binding-list .pill { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.skill-module-association { display: inline-flex !important; align-items: center; gap: 5px; }
.skill-module-association small { color: var(--workbench-color-text-muted, var(--muted)); font-size: var(--workbench-type-meta); font-weight: 500; line-height: 1; }
.skill-module-association.is-dependency { border-style: dashed; }
.skill-sync-action { display: grid; justify-items: end; gap: 4px; min-width: 0; }
.skill-sync-time { color: var(--muted); font-size: var(--workbench-type-meta); line-height: 1.25; white-space: nowrap; }
.skill-detail-notice { display: grid; gap: 6px; padding: 13px 16px; border: 1px solid transparent; border-radius: 14px; background: var(--wb-selected); }
.skill-detail-notice p { margin: 0; color: var(--muted); line-height: 1.55; }
.skill-detail-meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: start; gap: 12px 18px; }
.skill-detail-meta-item { display: grid; gap: 4px; min-width: 0; align-content: start; }
.skill-detail-binding { min-width: 0; }
.skill-detail-binding .skill-card-binding-list { margin-top: 0; }
.skill-detail-head h2 { margin-bottom: 2px; }
.skill-detail-head .skill-detail-key { margin-bottom: 8px; }

@media (max-width: 1240px) {
  .skill-card-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 980px) {
  .skill-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 650px) {
  .skill-card-grid { grid-template-columns: 1fr; }
  .skill-card { min-height: 0; }
  .skill-sync-action { justify-items: start; }
  .skill-detail-meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .skill-detail-binding { grid-column: 1 / -1; }
}

/* v0.26: 与顶部任务名称栏统一保留 12px 的呼吸间距。 */
.workbench-message-list {
  margin-bottom: 12px;
  height: calc(100vh - 218px);
  max-height: calc(100vh - 218px);
}
@media (max-width: 760px) {
  .workbench-message-list {
    margin-bottom: 12px;
    height: max(300px, calc(100vh - 204px));
    max-height: max(300px, calc(100vh - 204px));
  }
}

/* v0.27: 笔记生产工作区与智能对话统一为顶部任务栏、中间线程、底部固定输入区。 */
.production-page-head {
  position: sticky;
  top: 10px;
  z-index: 11;
  align-items: center;
  min-height: 44px;
  margin-bottom: 12px;
  padding: 6px 10px 6px 12px;
  border: 1px solid transparent;
  border-radius: 10px;
  background: var(--wb-selected);
  box-shadow: none;
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
}
.production-active-title,
.production-title-block,
.production-title-view { min-width: 0; }
.production-active-title { flex: 1 1 auto; }
.production-title-view {
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
  gap: 8px;
}
.production-title-view > strong {
  overflow: hidden;
  max-width: min(46vw, 560px);
  color: var(--wb-text);
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--workbench-type-body);
  line-height: 1.35;
}
.production-scope-badge {
  flex: 0 0 auto;
  padding: 3px 7px;
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: 999px;
  background: var(--wb-selected);
  font-size: var(--workbench-type-meta);
  font-weight: 700;
  white-space: nowrap;
}
.production-title-edit {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
}
.production-title-edit input {
  min-width: min(300px, 45vw);
  min-height: 30px;
  padding-top: 5px;
  padding-bottom: 5px;
  background: var(--wb-selected);
}
.production-title-edit[hidden],
.production-title-view[hidden] { display: none !important; }
.production-header-actions {
  display: flex;
  align-items: center;
  flex: 0 0 auto;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 6px;
}
.production-header-actions .page-live-status { justify-content: flex-end; }
.production-header-actions > .text {
  min-height: 30px;
  padding: 0 8px;
  font-size: var(--workbench-type-meta);
}
.production-header-actions > .danger-text { color: var(--wb-text); }

.production-workspace {
  min-width: 0;
  margin: 0;
}
.production-thread {
  min-width: 0;
  padding: 0 4px 22px;
}
.production-thread-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 10px;
  padding: 0 2px 8px;
  border-bottom: 1px solid transparent;
}
.production-thread-heading h3 { margin: 2px 0 0; font-size: var(--workbench-type-body); }
.production-thread-heading p:not(.eyebrow) { margin: 3px 0 0; color: var(--muted); font-size: var(--workbench-type-meta); line-height: 1.45; }
.workbench-message-list {
  max-height: none;
  margin: 0 0 12px;
}
.production-artifact { margin-top: 10px; }

.production-composer-row {
  position: static;
  width: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: stretch;
  gap: 10px;
  height: var(--module-composer-height, 106px);
}
.production-composer-row .production-chat-form {
  position: static;
  width: auto;
  height: 100%;
  min-height: 0;
  margin: 0;
  box-sizing: border-box;
}
.production-composer-row .production-chat-form > textarea {
  height: 44px;
  min-height: 44px;
  max-height: 66px;
  overflow-y: auto;
  resize: none;
}
@media (max-width: 760px) {
  .production-page-head { top: 8px; align-items: flex-start; padding: 6px 8px; }
  .production-title-view { flex-wrap: wrap; gap: 5px; }
  .production-title-view > strong { max-width: 58vw; }
  .production-header-actions { gap: 4px; }
  .production-header-actions .page-live-status { width: 100%; justify-content: flex-start; }
  .production-header-actions .status-badge small { display: none; }
  .production-thread {
    padding-right: 0;
    padding-left: 0;
  }
  .production-thread-heading { align-items: flex-start; flex-direction: column; gap: 5px; }
  .production-composer-row {
    grid-template-columns: minmax(0, 1fr) minmax(132px, 38%);
    gap: 6px;
  }
}

/* v0.29: 顶部任务栏、对话区与固定输入区共用同一组左右边界；下一步栏保持紧凑且不贴底。 */
.production-page-head,
.new-note-panel,
.production-workspace {
  --production-boundary-offset: calc(max(200px, calc(176px + 24px)) - calc(176px + clamp(24px, 4vw, 64px)));
  margin-left: var(--production-boundary-offset);
  margin-right: var(--production-boundary-offset);
}
.production-page-head { margin-bottom: 12px; }
.production-thread { padding-right: 0; padding-left: 0; }

/* 学习案例入口并入任务名栏，关闭时只占一行；展开详情不改变任务栏的初始高度。 */
.production-header-learning {
  position: relative;
  flex: 0 1 auto;
  min-width: 0;
  max-width: min(34vw, 360px);
  padding: 0;
  border: 0;
}
.production-header-learning > summary {
  overflow: hidden;
  padding: 2px 0;
  color: var(--wb-text);
  font-size: var(--workbench-type-meta);
  font-weight: 600;
  line-height: 1.35;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.production-header-learning > summary:hover { color: var(--wb-text); }
.production-header-learning[open] { z-index: 22; }
.production-header-learning[open] .production-learning-detail-body {
  position: absolute;
  top: calc(100% + 7px);
  left: 0;
  width: min(420px, calc(100vw - 32px));
  max-height: min(52vh, 420px);
  overflow: auto;
  padding: 11px;
  border: 1px solid transparent;
  border-radius: 9px;
  background: var(--wb-selected);
  box-shadow: none;
}
@media (max-width: 1020px) and (min-width: 761px) {
  .production-page-head,
  .new-note-panel,
  .production-workspace {
    --production-boundary-offset: calc(188px - calc(164px + clamp(24px, 4vw, 64px)));
  }
}
@media (max-width: 760px) {
  .production-page-head,
  .new-note-panel,
  .production-workspace {
    --production-boundary-offset: -4px;
  }
  .production-header-learning { flex-basis: 100%; max-width: 100%; }
  .production-header-learning[open] .production-learning-detail-body { left: -4px; }
}

/* v0.30: 收紧任务栏与内容区的首屏间距，并让学习入口与任务栏内容真正垂直居中。 */
.production-page-head { margin-bottom: 6px; }
.production-title-view { align-items: center; }
.production-header-learning {
  display: flex;
  align-items: center;
}
.production-header-learning > summary {
  display: flex;
  align-items: center;
  min-height: 24px;
  padding: 0;
}

/* 与智能对话的中间消息区保持同样的边框、圆角和深色内层。 */
.production-thread {
  box-sizing: border-box;
  padding: 16px 16px 22px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: var(--wb-selected);
}
@media (max-width: 760px) {
  .production-thread { padding: 12px 12px 18px; }
}

/* v0.31: 删除旧知识上下文占位条，三段工作区沿用智能对话的边框与间距语言。 */
.production-knowledge-inline {
  flex: 0 1 auto;
  min-width: 0;
  max-width: min(30vw, 330px);
  overflow: hidden;
  color: var(--wb-text);
  font-size: var(--workbench-type-meta);
  line-height: 1.35;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.production-header-learning { align-self: center; }

.production-composer-row .production-chat-form {
  gap: 8px;
  padding: 10px;
  border: 1px solid transparent;
  border-radius: 15px;
  background: var(--wb-selected);
  box-shadow: none;
}
@media (max-width: 760px) {
  .production-knowledge-inline { flex-basis: 100%; max-width: 100%; }
}

/* v0.32: 覆盖全局页面头部为智能对话预留的右侧空白，任务栏使用完整可用宽度。 */
.workspace > .production-page-head { padding-right: 10px; }
@media (max-width: 760px) {
  .workspace > .production-page-head { padding-right: 8px; }
}


/* v0.28: 智能对话使用独立视口，顶部任务栏、消息区和底部操作共用同一组边界。 */
html:has(body.chat-page-body),
body.chat-page-body {
  overflow: hidden;
}
body.chat-page-body .layout {
  height: 100vh;
  min-height: 100vh;
  overflow: hidden;
}
body.chat-page-body .workspace {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100vh;
  min-height: 0;
  padding: 28px 24px 0;
  overflow: hidden;
}
body.chat-page-body .workspace > .page-head {
  flex: 0 0 auto;
  width: 100%;
  padding-right: 0;
}
body.chat-page-body .chat-create-panel {
  flex: 0 0 auto;
  max-height: calc(100vh - 120px);
  overflow: auto;
}
body.chat-page-body .chat-layout {
  display: flex;
  flex: 1 1 auto;
  width: 100%;
  min-height: 0;
  height: auto;
  overflow: hidden;
}
body.chat-page-body .chat-main {
  display: flex;
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
  height: 100%;
  overflow: hidden;
}
body.chat-page-body .chat-thread {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  height: 100%;
  gap: 8px;
  overflow: hidden;
  padding-bottom: 122px;
}
body.chat-page-body .workbench-message-list {
  flex: 1 1 auto;
  min-height: 0;
  height: auto;
  max-height: none;
  margin-bottom: 12px;
  overflow-x: hidden;
  overflow-y: auto;
}
body.chat-page-body .chat-composer-row {
  left: calc(176px + 24px);
  right: calc(176px + 24px);
}
body.chat-page-body .layout:not(.has-recent-work) .chat-composer-row {
  right: 24px;
}
body.chat-page-body .sidebar,
body.chat-page-body .recent-work-rail {
  overflow: hidden;
}

@media (max-width: 1020px) and (min-width: 761px) {
  body.chat-page-body .workspace { padding-right: 24px; padding-left: 24px; }
  body.chat-page-body .chat-composer-row { left: 188px; right: 24px; }
}

@media (max-width: 760px) {
  body.chat-page-body .layout {
    display: flex;
    flex-direction: column;
  }
  body.chat-page-body .sidebar {
    flex: 0 0 auto;
    height: auto;
    min-height: 0;
  }
  body.chat-page-body .workspace {
    flex: 1 1 auto;
    width: 100%;
    height: auto;
    min-height: 0;
    padding: 20px 12px 0;
  }
  body.chat-page-body .recent-work-rail {
    display: none;
  }
  body.chat-page-body .chat-composer-row {
    left: 12px;
    right: 12px;
  }
  body.chat-page-body .chat-thread {
    padding-bottom: 116px;
  }
}

/* v0.30: 新建对话先确认范围，再开放输入，避免误把项目问题建成通用对话。 */
.chat-page-head-new .conversation-title-view { gap: 8px; }
.chat-page-head-new .conversation-project-badge { color: var(--wb-text); }

/* v0.34: 四类生产工作区统一为任务栏 / 中间工作区 / 底部输入区；新建态保留明确的工作区反馈。 */
.workspace:has(.chat-page-head),
.workspace:has(.production-page-head) {
  padding-top: 16px;
}
.chat-page-head.module-taskbar,
.production-page-head.module-taskbar {
  top: 16px;
  margin-bottom: 0;
}
.chat-module-stage,
.notes-module-stage {
  margin-top: 16px;
  min-height: calc(100vh - 150px);
  padding-bottom: 150px;
}
.chat-module-stage {
  min-height: 0;
}
.notes-module-stage {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.notes-module-stage > .new-note-panel {
  flex: 0 0 auto;
  width: 100%;
  margin: 0;
  box-sizing: border-box;
}
.notes-module-stage > .production-thread {
  flex: 1 1 auto;
  margin: 0;
}
.module-stage-empty {
  display: grid;
  place-items: center;
  min-height: min(48vh, 390px);
  margin-bottom: 16px;
  padding: 24px;
  box-sizing: border-box;
  border: 1px dashed transparent;
  border-radius: 15px;
  background: var(--wb-selected);
  text-align: center;
}
.module-stage-empty strong { color: var(--wb-text); font-size: var(--workbench-type-section-title); }
.module-stage-empty p { margin: 7px 0 0; color: var(--wb-text); font-size: var(--workbench-type-support); line-height: 1.55; }
.image-stage-empty,
.video-stage-empty { min-height: min(48vh, 380px); }
.image-workbench .module-stage > .image-module-layout,
.video-workbench .module-stage > .bilibili-module-layout { min-height: 0; }
.notes-create-stage {
  display: flex;
  justify-content: center;
  align-items: flex-start;
}
.notes-create-stage > #task-form {
  width: min(760px, 100%);
  margin: 0;
}

@media (max-width: 760px) {
  .workspace:has(.chat-page-head),
  .workspace:has(.production-page-head) { padding-top: 12px; }
  .chat-page-head.module-taskbar,
  .production-page-head.module-taskbar { top: 12px; }
  .chat-module-stage,
  .notes-module-stage { margin-top: 12px; padding-bottom: 170px; }
  .module-stage-empty { min-height: 260px; padding: 18px; }
}

/* v0.35: 统一四段间距，并修复从对话页切换到新建任务后页面无法滚动到底部。 */
html, body { overflow-x: hidden; }
body:not(.chat-page-body) { overflow-y: auto; }
.workspace:has(.module-workbench) { padding-top: 0; padding-bottom: 0; overflow: visible; }
.module-workbench { padding-top: var(--workbench-gap); }
.module-taskbar { top: var(--workbench-gap); }
.module-stage { margin-top: var(--workbench-gap); }
.chat-page-head.module-taskbar,
.production-page-head.module-taskbar { top: var(--workbench-gap); }
.chat-module-stage { margin-top: var(--workbench-gap); padding-bottom: calc(106px + (2 * var(--workbench-gap))); }
.notes-module-stage { margin-top: var(--workbench-gap); padding-bottom: 0; }
.chat-composer-row { bottom: var(--workbench-gap); }
.image-workbench .module-stage,
.video-workbench .module-stage { padding-bottom: calc(min(38vh, 330px) + var(--workbench-gap)); }

/* 新建笔记任务：中间工作区使用紧凑两栏表单，长内容仍由页面滚动承载。 */
.notes-create-stage {
  min-height: 0;
  padding-bottom: var(--workbench-gap);
  overflow: visible;
}
.notes-create-stage > #task-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;
  gap: 12px 14px;
  max-width: 920px;
  padding: 16px;
}
.notes-create-stage > #task-form > label:nth-of-type(3),
.notes-create-stage > #task-form > .production-image-input,
.notes-create-stage > #task-form > .advanced-options { grid-column: 1 / -1; }
.notes-create-stage > #task-form > label { gap: 5px; }
.notes-create-stage > #task-form input,
.notes-create-stage > #task-form select { min-height: 38px; padding-top: 8px; padding-bottom: 8px; }
.notes-create-stage > #task-form textarea[name="brief"] { height: 112px; min-height: 112px; max-height: 160px; }
.notes-create-stage > #task-form .production-image-input { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 8px 12px; }
.notes-create-stage > #task-form .production-image-input .field-label { grid-column: 1 / -1; }
.notes-create-stage > #task-form .production-image-drop-zone { min-height: 58px; padding: 9px 12px; }
.notes-create-stage > #task-form .production-image-preview { min-height: 58px; margin: 0; }
.notes-create-stage > #task-form .advanced-options { margin: 0; }
.notes-create-stage > #task-form > .primary { justify-self: end; grid-column: 2; min-height: 38px; }

@media (max-width: 760px) {
  .notes-create-stage > #task-form { grid-template-columns: 1fr; gap: 11px; padding: 13px; }
  .notes-create-stage > #task-form > label:nth-of-type(3),
  .notes-create-stage > #task-form > .production-image-input,
  .notes-create-stage > #task-form > .advanced-options,
  .notes-create-stage > #task-form > .primary { grid-column: 1; }
  .notes-create-stage > #task-form .production-image-input { grid-template-columns: 1fr; }
  .notes-create-stage > #task-form .production-image-preview { min-height: 42px; }
}
/* v1.15: 新建对话先在轻量弹窗中确定类型，选择后直接进入工作页。 */
.chat-new-conversation-modal {
  position: fixed;
  z-index: 1000;
  inset: 0;
  display: grid;
  place-items: center;
  padding: var(--workbench-space-4);
  /* Keep the dialog visually separate from the flat page surfaces. */
  background: color-mix(in srgb, var(--workbench-color-overlay) 72%, transparent);
  -webkit-backdrop-filter: blur(5px);
  backdrop-filter: blur(5px);
}
.chat-new-conversation-panel {
  display: grid;
  width: min(460px, 100%);
  max-height: min(78vh, 620px);
  overflow: hidden;
  border: 1px solid var(--wb-selected);
  border-radius: var(--workbench-radius-lg);
  background: var(--workbench-color-surface);
  box-shadow: none;
}
.chat-new-conversation-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--workbench-space-3);
  padding: var(--workbench-space-4);
  border-bottom: 1px solid var(--wb-selected);
}
.chat-new-conversation-header h2 { margin: 3px 0 0; color: var(--workbench-color-text); font-size: var(--workbench-type-section-title); }
.chat-new-conversation-body { min-height: 0; padding: var(--workbench-space-4); }
.chat-new-conversation-choice-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--workbench-space-2); }
.chat-new-conversation-choice {
  display: grid;
  justify-items: start;
  gap: var(--workbench-space-1);
  min-height: 78px;
  padding: var(--workbench-space-3);
  color: var(--workbench-color-text);
  text-align: left;
  border: 1px solid var(--wb-selected);
  border-radius: var(--workbench-radius-control);
  background: var(--workbench-color-surface-raised);
}
.chat-new-conversation-choice:hover { border-color: var(--workbench-color-accent); background: var(--workbench-color-accent-surface); }
.chat-new-conversation-choice:disabled { opacity: .5; cursor: not-allowed; }
.chat-new-conversation-choice strong { font-size: var(--workbench-type-body); }
.chat-new-conversation-choice span { color: var(--workbench-color-text-secondary); font-size: var(--workbench-type-support); }
.chat-new-conversation-project-step { display: grid; gap: var(--workbench-space-2); min-height: 0; }
.chat-new-conversation-back { justify-self: start; }
.chat-new-conversation-search input { width: 100%; min-height: var(--workbench-button-height); }
.chat-new-conversation-project-list { display: grid; gap: var(--workbench-space-1); max-height: min(46vh, 360px); overflow-y: auto; overscroll-behavior: contain; }
.chat-new-conversation-project { display: flex; align-items: center; justify-content: space-between; gap: var(--workbench-space-2); min-height: var(--workbench-button-height); padding: 0 var(--workbench-space-3); color: var(--workbench-color-text); text-align: left; border: 1px solid var(--wb-selected); border-radius: var(--workbench-radius-sm); background: transparent; }
.chat-new-conversation-project:hover { border-color: var(--workbench-color-accent); background: var(--workbench-color-accent-surface); }
.chat-new-conversation-project span { color: var(--workbench-color-text-muted); font-size: var(--workbench-type-meta); }
.chat-new-conversation-empty { margin: 0; color: var(--workbench-color-text-secondary); font-size: var(--workbench-type-support); }
.chat-new-conversation-busy { padding: 0 var(--workbench-space-4) var(--workbench-space-4); color: var(--workbench-color-text-secondary); font-size: var(--workbench-type-support); }
@media (max-width: 760px) {
  .chat-new-conversation-choice-grid { grid-template-columns: 1fr; }
  .chat-new-conversation-panel { max-height: 86vh; }
  .chat-new-conversation-body, .chat-new-conversation-header { padding: var(--workbench-space-3); }
}

/* v0.36: 四个生产模块共享同一套视口结构；页面锁定，只有中间工作区滚动。 */
body:has(.module-workbench),
body.notes-workbench-page { overflow: hidden; }
body:has(.module-workbench) .layout,
body.notes-workbench-page .layout { height: 100vh; min-height: 0; overflow: hidden; }
body:has(.module-workbench) .workspace,
body.notes-workbench-page .workspace { height: 100vh; min-height: 0; overflow: hidden; }
.module-workbench { display: flex; flex-direction: column; height: 100%; min-height: 0; padding-top: var(--workbench-gap); }
.module-taskbar,
.chat-page-head.module-taskbar,
.production-page-head.module-taskbar { flex: 0 0 58px; height: 58px; min-height: 58px; margin: 0; padding: 10px 14px; border-radius: 13px; background: var(--wb-selected); }
.module-stage { flex: 1 1 auto; min-height: 0; height: auto; margin-top: var(--workbench-gap); padding-bottom: calc(70px + var(--workbench-gap)); overflow-y: auto; scrollbar-gutter: stable; }
.chat-module-stage { overflow-y: auto; }
.notes-module-stage { display: block; overflow: hidden; }
.notes-module-stage > .production-thread { height: auto; min-height: 0; overflow: visible; }
.notes-create-stage { overflow-y: auto; }

/* 新建态直接展示任务表单，不再使用中间提示或固定底部表单。 */
.image-workbench #image-job-form,
.video-workbench .bilibili-form-panel,
.video-workbench .video-production-form { position: static; left: auto; right: auto; bottom: auto; width: auto; max-width: none; max-height: none; margin: 0; overflow: visible; }
.image-workbench .image-module-layout,
.video-workbench .bilibili-module-layout { min-height: 0; }

/* 已有图片/视频任务的操作统一放入底部操作区。 */
.module-composer { position: fixed; left: max(200px, calc(176px + 24px)); right: max(200px, calc(176px + 24px)); bottom: var(--workbench-gap); z-index: 20; min-height: 52px; padding: 8px 10px; border: 1px solid transparent; border-radius: 13px; background: var(--wb-selected); box-shadow: none; }
.module-composer .stage-action-row { display: flex; align-items: center; justify-content: flex-end; gap: 8px; margin: 0; }
@media (max-width: 1020px) and (min-width: 761px) { .module-composer { left: 188px; right: 24px; } }
@media (max-width: 760px) {
  .module-taskbar, .chat-page-head.module-taskbar, .production-page-head.module-taskbar { flex-basis: 52px; height: 52px; min-height: 52px; padding: 8px 10px; }
  .module-composer { left: 12px; right: 12px; bottom: var(--workbench-gap); } .module-composer .stage-action-row { justify-content: stretch; }
  .module-composer button { flex: 1 1 auto; min-width: 0; }
}

/* 智能对话的任务栏、工作区、输入区使用同一组间距。 */
body.chat-page-body .workspace { height: 100vh; padding: var(--workbench-gap) 24px 0; }
body.chat-page-body .chat-page-head.module-taskbar { flex-basis: 58px; height: 58px; }
body.chat-page-body .chat-layout.chat-module-stage { margin-top: var(--workbench-gap); padding-bottom: calc(106px + (2 * var(--workbench-gap))); }
body.chat-page-body .chat-thread { gap: var(--workbench-gap); padding-bottom: calc(106px + var(--workbench-gap)); }
body.chat-page-body .workbench-message-list { margin-bottom: var(--workbench-gap); }
@media (max-width: 760px) { body.chat-page-body .workspace { padding: var(--workbench-gap) 12px 0; } body.chat-page-body .chat-page-head.module-taskbar { flex-basis: 52px; height: 52px; } }

/* v0.37: 最终收敛旧版高度和 overflow 覆盖，保证任务栏 / 工作区 / 底部区的实际间距一致。 */
.module-taskbar,
.chat-page-head.module-taskbar,
.production-page-head.module-taskbar {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  flex: none;
  width: 100%;
  height: var(--workbench-taskbar-height);
  min-height: var(--workbench-taskbar-height);
  max-height: var(--workbench-taskbar-height);
  margin: 0 !important;
  padding: 10px 14px;
}
.module-stage,
.chat-layout.chat-module-stage,
.notes-module-stage,
.image-module-stage,
.video-module-stage {
  box-sizing: border-box;
  min-height: 0;
  height: auto;
  margin-top: var(--workbench-gap) !important;
  padding-top: 0;
  padding-bottom: calc(var(--workbench-composer-height) + var(--workbench-gap));
  overflow-y: auto;
  scrollbar-gutter: stable;
}

/* 智能对话：只让 chat-layout 滚动，移除旧版 chat-thread 的视口高度和隐藏溢出。 */
body.chat-page-body .workspace {
  display: flex;
  flex-direction: column;
  gap: 0;
  height: 100vh;
  min-height: 0;
  padding: var(--workbench-gap) 24px 0;
  overflow: hidden;
}
body.chat-page-body .chat-page-head.module-taskbar { flex: none; }
body.chat-page-body .chat-layout.chat-module-stage {
  display: block;
  flex: 1 1 auto;
  width: 100%;
  min-height: 0;
  height: auto;
  overflow-y: auto;
  overflow-x: hidden;
}
body.chat-page-body .chat-main,
body.chat-page-body .chat-thread {
  display: block;
  height: auto;
  min-height: 0;
  overflow: visible;
}
body.chat-page-body .chat-thread { padding-bottom: calc(var(--workbench-composer-height) + var(--workbench-gap)); }
body.chat-page-body .workbench-message-list {
  height: auto;
  max-height: none;
  min-height: 0;
  margin-bottom: var(--workbench-gap);
  overflow: visible;
}
body.chat-page-body .chat-composer-row { bottom: var(--workbench-gap); }

/* 笔记生产：生产线程和历史内容由 notes-module-stage 统一滚动。 */
body.notes-workbench-page .workspace {
  height: 100vh;
  min-height: 0;
  padding-top: var(--workbench-gap);
  padding-bottom: 0;
  overflow: hidden;
}
body.notes-workbench-page .production-page-head.module-taskbar { flex: none; }
body.notes-workbench-page .notes-module-stage {
  height: auto;
  min-height: 0;
  overflow: hidden;
}
body.notes-workbench-page .production-thread {
  height: auto;
  min-height: 0;
  max-height: none;
  margin: 0;
  overflow: visible;
}


@media (max-width: 760px) {
  body.chat-page-body .workspace,
  body.notes-workbench-page .workspace { padding-left: 12px; padding-right: 12px; }
  .module-taskbar,
  .chat-page-head.module-taskbar,
  .production-page-head.module-taskbar { padding: 8px 10px; }
}

/* v0.38: 所有三段区域使用同一条中间工作区边界，禁止各模块自行计算左右宽度。 */
.layout { --workbench-left-boundary: 176px; --workbench-right-boundary: 176px; }
.layout:not(.has-recent-work) { --workbench-right-boundary: 0px; }
body:has(.layout:not(.has-recent-work)) .layout { --workbench-right-boundary: 0px; }
.workspace,
body.chat-page-body .workspace,
body.notes-workbench-page .workspace,
body:has(.module-workbench) .workspace { padding-left: 0; padding-right: 0; }
.chat-composer-row,
.module-composer{ left: var(--workbench-left-boundary) !important; right: var(--workbench-right-boundary) !important; }
.module-taskbar,
.chat-page-head.module-taskbar,
.production-page-head.module-taskbar,
.module-stage,
.chat-layout.chat-module-stage,
.notes-module-stage,
.image-module-stage,
.video-module-stage { width: 100%; max-width: none; }
@media (max-width: 1020px) and (min-width: 761px) { .layout { --workbench-left-boundary: 164px; --workbench-right-boundary: 0px; } }
@media (max-width: 760px) {
  .layout { --workbench-left-boundary: 12px; --workbench-right-boundary: 12px; }
  .workspace,
  body.chat-page-body .workspace,
  body.notes-workbench-page .workspace,
  body:has(.module-workbench) .workspace { padding-left: 12px; padding-right: 12px; }
}

/* v0.39: 工作台统一外层网格和三段固定结构；只有结果内容滚动。 */
:root {
  --module-edge-gap: 10px;
  --module-taskbar-height: 58px;
  --module-composer-height: 106px;
  --module-rail-width: 176px;
}
.layout {
  grid-column-gap: var(--module-edge-gap);
  grid-row-gap: 0;
  --module-left-edge: calc(var(--module-rail-width) + var(--module-edge-gap));
  --module-right-edge: calc(var(--module-rail-width) + var(--module-edge-gap));
}
.layout:not(.has-recent-work) { --module-right-edge: 0px; }
.workspace,
body.chat-page-body .workspace,
body.notes-workbench-page .workspace,
body:has(.module-workbench) .workspace {
  width: 100%;
  height: 100vh;
  min-height: 0;
  padding: var(--module-edge-gap) 0 0;
  margin: 0;
  overflow: hidden;
}
.module-workbench {
  display: grid;
  grid-template-rows: var(--module-taskbar-height) minmax(0, 1fr);
  gap: var(--module-edge-gap);
  height: 100%;
  min-height: 0;
  padding: 0;
}
.module-taskbar,
.chat-page-head.module-taskbar,
.production-page-head.module-taskbar {
  position: static;
  width: 100%;
  height: var(--module-taskbar-height);
  min-height: var(--module-taskbar-height);
  max-height: var(--module-taskbar-height);
  margin: 0 !important;
  padding: 10px 14px;
}
.module-stage,
.image-module-stage,
.video-module-stage,
.chat-layout.chat-module-stage,
.notes-module-stage {
  position: relative;
  width: 100%;
  height: auto;
  min-height: 0;
  margin: 0 !important;
  padding: 0;
  overflow: hidden;
}
.module-output-scroll,
.media-output-scroll,
.notes-output-scroll {
  width: 100%;
  height: 100%;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  scrollbar-gutter: stable;
}
.image-module-stage:has(.module-composer),
.video-module-stage:has(.module-composer),
.chat-layout.chat-module-stage,
.notes-module-stage {
  padding-bottom: calc(var(--module-composer-height) + var(--module-edge-gap));
  box-sizing: border-box;
}
.image-module-stage:has(.module-composer) .media-output-scroll,
.video-module-stage:has(.module-composer) .media-output-scroll,
.notes-module-stage .notes-output-scroll { height: 100%; }

/* 左导航和右最近任务保持固定；其内部列表才允许按自身规则滚动。 */
body:has(.module-workbench) .sidebar,
body:has(.module-workbench) .recent-work-rail,
body.notes-workbench-page .sidebar,
body.notes-workbench-page .recent-work-rail,
body.chat-page-body .sidebar,
body.chat-page-body .recent-work-rail { position: sticky; top: 0; height: 100vh; }/* 三类固定底部区只使用外层网格提供的左右边界。 */


.chat-composer-row,
.production-composer-row,
.module-composer{
  left: var(--module-left-edge) !important;
  right: var(--module-right-edge) !important;
  bottom: var(--module-edge-gap) !important;
}

/* 智能对话：中间框固定，只有消息结果区内部滚动。 */
body.chat-page-body .workspace { display: flex; flex-direction: column; gap: var(--module-edge-gap); }
body.chat-page-body .chat-page-head.module-taskbar { flex: 0 0 var(--module-taskbar-height); }
body.chat-page-body .chat-layout.chat-module-stage { display: flex; flex: 1 1 auto; padding-bottom: calc(var(--module-composer-height) + var(--module-edge-gap)); }
body.chat-page-body .chat-main { display: flex; flex: 1 1 auto; height: 100%; min-height: 0; overflow: hidden; }
body.chat-page-body .chat-thread { display: flex; flex-direction: column; height: 100%; min-height: 0; padding-bottom: 0; overflow: hidden; }
body.chat-page-body .workbench-message-list { flex: 1 1 auto; height: auto; min-height: 0; max-height: none; margin-bottom: 0; overflow-y: auto; overflow-x: hidden; }
body.chat-page-body .chat-composer-row { bottom: var(--module-edge-gap) !important; }

/* 笔记生产：中间框固定，生产结果和历史在同一个内部滚动层。 */
body.notes-workbench-page .workspace { display: flex; flex-direction: column; gap: var(--module-edge-gap); }
body.notes-workbench-page .production-page-head.module-taskbar { flex: 0 0 var(--module-taskbar-height); }
body.notes-workbench-page .notes-module-stage { flex: 1 1 auto; padding-bottom: 0; }
body.notes-workbench-page .notes-output-scroll { height: 100%; overflow-x: hidden; overflow-y: auto; }
body.notes-workbench-page .production-workspace,
body.notes-workbench-page .new-note-panel { margin: 0; }
body.notes-workbench-page .production-thread { height: auto; min-height: 0; overflow: visible; }

@media (max-width: 1020px) and (min-width: 761px) {
  :root { --module-rail-width: 164px; }
  .layout { --module-right-edge: 0px; }
}
@media (max-width: 760px) {
  :root { --module-rail-width: 0px; }
  .layout { --module-left-edge: var(--module-edge-gap); --module-right-edge: var(--module-edge-gap); }
  .workspace,
  body.chat-page-body .workspace,
  body.notes-workbench-page .workspace,
  body:has(.module-workbench) .workspace { padding-left: var(--module-edge-gap); padding-right: var(--module-edge-gap); }
  .module-workbench { grid-template-rows: 52px minmax(0, 1fr); }
  .module-taskbar,
  .chat-page-head.module-taskbar,
  .production-page-head.module-taskbar { height: 52px; min-height: 52px; max-height: 52px; padding: 8px 10px; }
}

/* v0.40: 任务栏、结果滚动层和媒体表单统一收口；固定区之间始终保留两个全局间隔。 */
:root { --module-media-composer-height: 60px; }

.module-taskbar,
.module-taskbar .production-active-title,
.module-taskbar .production-title-block,
.module-taskbar .production-title-view { min-width: 0; }
.module-taskbar .production-title-view {
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
  gap: 8px;
}
.module-taskbar .production-title-view > strong {
  min-width: 0;
  max-width: min(42vw, 520px);
  overflow: hidden;
  color: var(--wb-text);
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--workbench-type-body);
  line-height: 1.35;
}
.module-taskbar .production-knowledge-inline {
  min-width: 0;
  max-width: min(38vw, 460px);
  overflow: hidden;
  color: var(--wb-text);
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--workbench-type-meta);
  line-height: 1.35;
}
.module-taskbar .production-header-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex: 0 0 auto;
  min-width: 0;
  gap: 6px;
}
.module-taskbar .production-header-actions .page-live-status {
  display: flex;
  align-items: center;
  min-width: 0;
}
.module-taskbar .production-header-actions > .text {
  min-height: 30px;
  padding: 0 7px;
  font-size: var(--workbench-type-meta);
}
.module-taskbar .production-header-actions > .primary {
  min-height: 34px;
  padding: 0 12px;
  font-size: var(--workbench-type-support);
}
.module-taskbar-tabs-inline {
  display: flex;
  grid-column: auto;
  align-items: center;
  gap: 3px;
  min-width: 0;
  margin: 0 2px 0 0;
  padding: 0;
  overflow: hidden;
  border: 0;
  background: transparent;
}
.module-taskbar-tabs-inline .video-production-tab {
  min-height: 30px;
  padding: 0 8px;
  font-size: var(--workbench-type-meta);
  white-space: nowrap;
}

/* 固定输入区的顶部到结果区底部，和页面边缘到底部统一使用 16px。 */
body.chat-page-body .chat-layout.chat-module-stage,
body.notes-workbench-page .notes-module-stage {
  padding-bottom: calc(var(--module-composer-height) + (2 * var(--module-edge-gap)));
}
body.chat-page-body .chat-composer-row {
  min-height: var(--module-composer-height);
}
body.chat-page-body .chat-composer-row .chat-form {
  min-height: var(--module-composer-height);
}

/* 媒体任务的底部操作条较短，结果层按实际高度预留空间，避免边框被固定条盖住。 */
.image-module-stage:has(> .module-composer),
.video-module-stage:has(> .module-composer) {
  padding-bottom: calc(var(--module-media-composer-height) + (2 * var(--module-edge-gap)));
}
.module-composer {
  height: var(--module-media-composer-height);
  min-height: var(--module-media-composer-height);
  display: flex;
  align-items: center;
}
.module-composer .stage-action-row {
  width: 100%;
  min-height: 0;
  align-items: center;
}

/* 所有媒体结果共用同一条内部滚动层；外层页面和任务栏不滚动。 */
.media-output-scroll {
  box-sizing: border-box;
  padding: 0 var(--module-edge-gap) var(--module-edge-gap);
}
.image-module-layout,
.bilibili-module-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-content: start;
  width: 100%;
  min-height: 100%;
}
.image-job-main,
.bilibili-job-main {
  width: min(1120px, 100%);
  min-width: 0;
  margin: 0 auto;
}
.image-module-stage .image-job-detail,
.video-module-stage .bilibili-job-detail,
.video-module-stage .video-task-detail {
  position: relative;
  z-index: 1;
  width: 100%;
  min-height: 0;
  margin: 0 0 var(--module-edge-gap);
  overflow: visible;
  border-color: transparent;
}
.image-module-stage .image-job-detail .task-title-view,
.video-module-stage .bilibili-job-detail .task-title-view {
  display: none;
}

/* 新建图片 / 视频任务是中间工作区表单，居中并利用可用宽度，不固定在底部。 */
.image-workbench #image-job-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px 16px;
  width: min(960px, 100%);
  max-width: none;
  margin: 0 auto;
  padding: 20px;
}
.image-workbench #image-job-form > label:nth-of-type(3),
.image-workbench #image-job-form > .form-row,
.image-workbench #image-job-form > .custom-ratio-panel,
.image-workbench #image-job-form > .model-badge,
.image-workbench #image-job-form > .primary { grid-column: 1 / -1; }
.image-workbench #image-job-form > .primary { justify-self: end; }
.video-workbench .bilibili-form-panel,
.video-workbench .video-production-form {
  width: min(960px, 100%);
  max-width: none;
  margin: 0 auto;
  padding: 20px;
}
.video-workbench .bilibili-form-panel > .task-form,
.video-workbench .video-production-form > .task-form {
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}
.video-workbench .bilibili-form-panel .section-heading,
.video-workbench .video-production-form .section-heading { margin-bottom: 12px; }
.image-module-layout:has(#image-job-form),
.bilibili-module-layout:has(.bilibili-form-panel),
.bilibili-module-layout:has(.video-production-form) { align-content: center; }

@media (max-width: 760px) {
  .module-taskbar .production-title-view { gap: 5px; }
  .module-taskbar .production-title-view > strong { max-width: 50vw; }
  .module-taskbar .production-knowledge-inline { max-width: 34vw; }
  .module-taskbar .production-header-actions { gap: 3px; }
  .module-taskbar .production-header-actions > .text { padding: 0 4px; font-size: var(--workbench-type-meta); }
  .module-taskbar .production-header-actions > .primary { padding: 0 8px; font-size: var(--workbench-type-meta); }
  .module-taskbar-tabs-inline .video-production-tab { padding: 0 5px; font-size: var(--workbench-type-meta); }
  .image-workbench #image-job-form { grid-template-columns: 1fr; }
  .image-workbench #image-job-form > label,
  .image-workbench #image-job-form > .form-row,
  .image-workbench #image-job-form > .custom-ratio-panel,
  .image-workbench #image-job-form > .model-badge,
  .image-workbench #image-job-form > .primary { grid-column: 1; }
  .image-workbench #image-job-form > .primary { justify-self: stretch; }
  .video-workbench .bilibili-form-panel,
  .video-workbench .video-production-form { padding: 16px; }
}

/* v0.41: 任务与管理页使用页面滚动；工作流页的视口锁定不再影响管理内容。 */
body.management-page-body {
  overflow-x: hidden;
  overflow-y: auto !important;
}
body.management-page-body .layout {
  height: auto;
  min-height: 100vh;
  overflow: visible;
}
body.management-page-body .workspace {
  height: auto;
  min-height: 100vh;
  overflow: visible;
  padding-bottom: 64px;
}
body.management-page-body .recent-work-rail {
  position: sticky;
  top: 0;
  height: 100vh;
}
@media (max-width: 760px) {
  body.management-page-body .recent-work-rail {
    position: static;
    height: 340px;
  }
}

/* v0.42: production discussion message state, reliable image trigger, and
   a scrollable new-task form that uses the same taskbar shell as production. */
.production-image-drop-zone .production-image-add {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 30px;
  padding: 5px 10px;
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: 7px;
  background: var(--wb-selected);
  font: inherit;
  font-size: var(--workbench-type-support);
  font-weight: 650;
  line-height: 1.2;
  cursor: pointer;
}
.production-image-drop-zone .production-image-add:hover,
.production-image-drop-zone .production-image-add:focus-visible {
  color: var(--wb-text);
  border-color: transparent;
  background: var(--wb-selected);
  outline: none;
}
.production-image-input-compact .production-image-drop-zone {
  position: relative;
  z-index: 2;
  overflow: visible;
  pointer-events: auto;
}
.production-image-input-compact .production-image-add {
  flex: 0 0 auto;
  min-height: 28px;
  padding: 4px 8px;
}
.production-image-input-compact .production-image-drop-zone span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
.workbench-message.is-pending {
  border-style: dashed;
  opacity: .86;
}
.workbench-message.is-pending.is-failed {
  border-color: transparent;
  opacity: 1;
}
.workbench-message-pending {
  display: block;
  margin-top: 6px;
  color: var(--wb-text);
  font-size: var(--workbench-type-meta);
  line-height: 1.4;
}
.workbench-message-stream-placeholder {
  color: var(--workbench-color-text-secondary);
  opacity: .78;
}
.workbench-message.is-pending.is-failed .workbench-message-pending { color: var(--wb-text); }

/* v0.54: show the submitted task brief and note references in the same
   chronological production stream without turning them into another panel. */
.workbench-message.is-task-context {
  justify-self: start;
  max-width: min(94%, 820px);
  border-left: 2px solid transparent;
  background: var(--wb-selected);
}
.workbench-message.is-task-context .workbench-message-role { color: var(--wb-text); }
.workbench-message.is-task-context p { white-space: pre-line; }

/* New-task state: the body remains locked like the production workspace,
   while only the form stage scrolls when optional sections are expanded. */
body.notes-workbench-page .notes-create-workbench {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;
}
body.notes-workbench-page .notes-create-workbench > .production-page-head {
  flex: 0 0 var(--module-taskbar-height);
}
body.notes-workbench-page .notes-create-workbench .notes-create-stage {
  flex: 1 1 auto;
  height: auto;
  min-height: 0;
  margin-top: var(--module-edge-gap) !important;
  padding: 0 var(--module-edge-gap) var(--module-edge-gap);
  overflow-x: hidden;
  overflow-y: auto !important;
  align-items: stretch;
  justify-content: flex-start;
  box-sizing: border-box;
  scrollbar-gutter: stable;
}
body.notes-workbench-page .notes-create-stage > #task-form {
  flex: 0 0 auto;
  width: min(920px, 100%);
  max-width: none;
  margin: 0 auto var(--module-edge-gap);
  box-sizing: border-box;
}
body.notes-workbench-page .notes-create-stage > #task-form .production-image-drop-zone {
  position: relative;
  z-index: 1;
  overflow: visible;
}
@media (max-width: 760px) {
  body.notes-workbench-page .notes-create-stage {
    padding-right: var(--module-edge-gap);
    padding-left: var(--module-edge-gap);
  }
  body.notes-workbench-page .notes-create-stage > #task-form { width: 100%; }
}

/* v0.42: 首页和管理页由中间列承载页面滚动，两侧导航与最近工作保持在视口内。 */
body.home-page-body .layout,
body.management-page-body .layout {
  align-items: start;
  height: auto;
  min-height: 100vh;
  overflow: visible;
}
body.home-page-body .workspace,
body.management-page-body .workspace {
  height: auto;
  min-height: 100vh;
  overflow: visible;
}
body.home-page-body .sidebar,
body.home-page-body .recent-work-rail,
body.management-page-body .sidebar,
body.management-page-body .recent-work-rail {
  position: sticky;
  top: 0;
  align-self: start;
  height: 100vh;
  max-height: 100vh;
  overflow: hidden;
}
body.home-page-body .sidebar .session-list,
body.management-page-body .sidebar .session-list,
body.home-page-body .recent-work-panel,
body.management-page-body .recent-work-panel {
  min-height: 0;
}
@media (max-width: 760px) {
  body.home-page-body .sidebar,
  body.management-page-body .sidebar {
    position: static;
    height: auto;
    max-height: none;
    overflow: visible;
  }
  body.home-page-body .recent-work-rail,
  body.management-page-body .recent-work-rail {
    position: static;
    max-height: none;
    overflow: visible;
  }
}

/* v0.43: 让 html 作为唯一页面滚动容器，避免 body overflow:auto 让 sticky 两侧栏失效。 */
body.home-page-body,
body.management-page-body {
  overflow-x: clip !important;
  overflow-y: visible !important;
}

/* v0.44: 视频生产只保留三个明确操作；中间结果区占满剩余高度并独立滚动。 */
.video-workbench,
.video-workbench .module-taskbar,
.video-workbench .video-module-stage,
.video-workbench .media-output-scroll {
  min-width: 0;
  box-sizing: border-box;
}
.video-workbench .module-taskbar {
  overflow: hidden;
}
.video-workbench .module-taskbar .production-active-title {
  min-width: 0;
  overflow: hidden;
}
.video-workbench .module-taskbar .production-header-actions {
  min-width: 0;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
}
.video-workbench .module-taskbar .production-header-actions::-webkit-scrollbar { display: none; }
.video-workbench .module-taskbar-tabs-inline {
  flex: 0 1 auto;
  min-width: 0;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
}
.video-workbench .module-taskbar-tabs-inline::-webkit-scrollbar { display: none; }
.video-workbench .module-taskbar-tabs-inline .video-production-tab {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  min-height: 34px;
  padding: 0 12px;
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: 8px;
  background: var(--wb-selected);
  font-size: var(--workbench-type-support);
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
}
.video-workbench .module-taskbar-tabs-inline .video-production-tab:hover,
.video-workbench .module-taskbar-tabs-inline .video-production-tab:focus-visible {
  color: var(--wb-text);
  border-color: transparent;
  background: var(--wb-selected);
  outline: none;
}
.video-workbench .module-taskbar-tabs-inline .video-production-tab.active {
  color: var(--wb-text);
  border-color: transparent;
  background: var(--wb-selected);
}
.video-workbench .video-module-stage {
  display: flex;
  flex-direction: column;
  height: auto;
  padding-bottom: 0;
  overflow: hidden;
}
.video-workbench .video-module-stage:has(> .module-composer) {
  padding-bottom: calc(var(--module-media-composer-height) + (2 * var(--module-edge-gap)));
}
.video-workbench .video-module-stage > .media-output-scroll {
  flex: 1 1 auto;
  height: auto;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
}
.video-workbench .bilibili-module-layout {
  min-height: 100%;
  align-content: start;
}
.video-workbench .bilibili-job-main {
  padding-bottom: var(--module-edge-gap);
}

@media (max-width: 760px) {
  .video-workbench .module-taskbar .production-header-actions {
    max-width: 100%;
  }
  .video-workbench .module-taskbar-tabs-inline .video-production-tab {
    min-height: 34px;
    padding: 0 10px;
    font-size: var(--workbench-type-meta);
  }
}

/* v0.20: 案例中心复用全局边缘间距，收窄分类树并把空间让给四列案例卡片。 */
.workspace.case-center-workspace {
  width: 100%;
  padding: var(--module-edge-gap) var(--module-edge-gap) calc(var(--module-edge-gap) * 2);
}
.case-center-content {
  grid-template-columns: 164px minmax(0, 1fr);
  gap: var(--module-edge-gap);
}
.case-center-main {
  gap: var(--module-edge-gap);
}
.case-card-grid-v2 {
  gap: var(--module-edge-gap);
}
.case-card-v2 {
  min-height: 390px;
}
.case-card-open {
  grid-template-rows: auto auto auto auto;
  padding: 8px 13px 13px;
}
.case-card-media {
  aspect-ratio: 3 / 4;
}

@media (max-width: 1160px) {
  .case-center-content {
    grid-template-columns: 164px minmax(0, 1fr);
  }
}

@media (max-width: 900px) {
  .case-center-content {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 650px) {
  .workspace.case-center-workspace {
    padding: var(--module-edge-gap);
  }
  .case-card-v2 {
    min-height: 0;
  }
  .case-card-open {
    grid-template-rows: auto auto auto auto;
  }
}


/* v0.46: 视频生产在窄屏下允许整页纵向滚动，避免侧栏和工作区被 100vh 截断。 */
@media (max-width: 1100px) {
  body:has(.video-workbench) {
    overflow-x: hidden !important;
    overflow-y: auto !important;
  }

  body:has(.video-workbench) .layout {
    height: auto;
    min-height: 100vh;
    overflow: visible;
  }

  body:has(.video-workbench) .sidebar {
    position: static;
    height: auto;
    max-height: none;
    overflow: visible;
  }

  body:has(.video-workbench) .workspace {
    height: auto;
    min-height: 0;
    overflow: visible;
    padding-bottom: var(--module-edge-gap);
  }

  body:has(.video-workbench) .module-workbench {
    height: auto;
    min-height: 0;
    padding-top: var(--module-edge-gap);
  }
}

/* v0.47: 账号与退出操作归入左侧导航底部，避免遮挡页面右上操作。 */
.sidebar > .shell-user-menu {
  position: static;
  z-index: 2;
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  width: 100%;
  min-height: 40px;
  margin-top: auto;
  padding: 5px 5px 5px 9px;
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: 10px;
  background: var(--wb-selected);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
}
.sidebar > .shell-user-menu > span:first-child {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sidebar > .shell-user-menu .text {
  flex: 0 0 auto;
  min-height: 28px;
  padding: 0 8px;
  color: var(--wb-text);
}
.sidebar > .shell-user-menu .text:hover {
  color: var(--wb-text);
  background: var(--wb-selected);
}
@media (max-width: 760px) {
  .sidebar > .shell-user-menu {
    width: min(100%, 280px);
    margin: 10px 0 0;
  }
}

/* v0.45: 新建图片任务占满中间工作区；表单过长时只在内容区滚动。 */
.image-workbench:has(#image-job-form) .image-module-stage {
  padding-bottom: 0;
}
.image-workbench:has(#image-job-form) .media-output-scroll {
  height: 100%;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
}
.image-workbench:has(#image-job-form) .image-module-layout {
  align-content: start;
  min-height: 100%;
}
.image-workbench:has(#image-job-form) .image-job-main {
  min-height: 100%;
}

@media (max-width: 760px) {
  /* 移动端导航本身会占用自然高度，新建表单改由页面整体承载滚动。 */
  body:has(#image-job-form) {
    overflow-x: hidden;
    overflow-y: auto;
  }
  body:has(#image-job-form) .layout {
    height: auto;
    min-height: 100vh;
    overflow: visible;
  }
  body:has(#image-job-form) .sidebar {
    position: static;
    height: auto;
    min-height: 0;
    overflow: visible;
  }
  body:has(#image-job-form) .workspace {
    height: auto;
    min-height: 0;
    overflow: visible;
    padding-bottom: var(--module-edge-gap);
  }
body:has(#image-job-form) .image-workbench,
body:has(#image-job-form) .image-module-stage,
body:has(#image-job-form) .media-output-scroll {
    height: auto;
    min-height: 0;
    overflow: visible;
  }
}

/* v0.43: 最终配图统一按工作区四等分显示，避免单张图片横向占满产物区。 */
.production-artifact .image-deliverable .image-grid {
  width: 100%;
  max-width: none;
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.production-artifact .image-deliverable .generated-image {
  width: auto;
  min-width: 0;
  max-width: none;
}

@media (max-width: 900px) {
  .production-artifact .image-deliverable .image-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 440px) {
  .production-artifact .image-deliverable .image-grid {
    grid-template-columns: 1fr;
  }
}

/* v0.48: 图片任务底部输入区对齐智能对话，右侧独立显示建议操作。 */
body:has(.image-workbench) .workspace {
  display: flex;
  flex-direction: column;
  height: 100vh;
  min-height: 0;
  overflow: hidden;
}
.image-workbench {
  flex: 1 1 auto;
  height: 100%;
  min-height: 0;
  gap: var(--module-edge-gap);
}
.image-workbench .image-module-stage {
  height: 100%;
  min-height: 0;
  overflow: hidden;
}
.image-workbench .media-output-scroll {
  box-sizing: border-box;
  min-height: 0;
  padding-right: var(--module-edge-gap);
  padding-bottom: var(--module-edge-gap);
  padding-left: var(--module-edge-gap);
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-gutter: stable;
}
.image-workbench:has(> .image-module-stage > .image-task-composer) {
  --module-media-composer-height: 106px;
}
.image-workbench .image-module-stage:has(> .image-task-composer) {
  padding-bottom: calc(var(--module-media-composer-height) + (2 * var(--module-edge-gap)));
}
.image-task-composer {
  box-sizing: border-box;
  height: var(--module-media-composer-height);
  min-height: var(--module-media-composer-height);
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: stretch;
  gap: var(--module-edge-gap);
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}
.image-task-message-form {
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto;
  gap: 8px;
  height: 100%;
  min-height: 0;
  width: 100%;
  margin: 0;
  padding: 10px;
  border: 1px solid transparent;
  border-radius: 15px;
  background: var(--wb-selected);
  box-shadow: none;
}
.image-task-message-form textarea {
  height: 44px;
  min-height: 44px;
  max-height: 220px;
  padding: 11px 12px;
  resize: none;
  border: 0;
  background: transparent;
  line-height: 1.55;
}
.image-task-message-form textarea::placeholder {
  white-space: nowrap;
  text-overflow: ellipsis;
}
@media (max-width: 760px) {
  .image-workbench:has(> .image-module-stage > .image-task-composer) {
    --module-media-composer-height: 106px;
  }

  /* 窄屏改由页面整体承载任务详情滚动，底部对话区仍固定在视口内。 */
  body:has(.image-workbench) {
    overflow-x: hidden;
    overflow-y: auto;
  }
  body:has(.image-workbench) .layout {
    height: auto;
    min-height: 100vh;
    overflow: visible;
  }
  body:has(.image-workbench) .sidebar {
    position: static;
    height: auto;
    min-height: 0;
    overflow: visible;
  }
  body:has(.image-workbench) .workspace {
    height: auto;
    min-height: 0;
    overflow: visible;
    padding-bottom: var(--module-edge-gap);
  }
  body:has(.image-workbench) .image-workbench {
    display: flex;
    flex-direction: column;
    height: auto;
    min-height: 0;
    overflow: visible;
  }
  body:has(.image-workbench) .image-module-stage {
    height: auto;
    min-height: 0;
    overflow: visible;
  }
  body:has(.image-workbench) .image-module-stage:has(> .image-task-composer) {
    padding-bottom: calc(var(--module-media-composer-height) + var(--module-edge-gap));
  }
  body:has(.image-workbench) .media-output-scroll {
    height: auto;
    min-height: 0;
    overflow: visible;
  }
}

/* v0.48: 当前环节的操作直接放在输入框右侧；按钮只负责预填意图，不代替用户发送。 */
.production-composer-row .production-image-actions {
  display: grid;
  gap: 4px;
}
.production-composer-row .production-single-image-action {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 4px;
}
.production-composer-row .production-single-image-action select {
  min-width: 0;
  min-height: 29px;
  height: 29px;
  padding: 0 6px;
  border: 1px solid transparent;
  border-radius: 6px;
  background: var(--wb-selected);
  color: var(--ink);
  font-size: var(--workbench-type-meta);
}
.production-composer-row .production-single-image-action .stage-action-button {
  width: auto;
  min-width: 58px;
}
/* v0.49: 图片任务中间工作区固定在任务栏与底部操作区之间，只有结果层滚动。 */
.image-workbench {
  gap: 0;
  min-height: 0;
}
.image-workbench .image-module-stage {
  display: flex;
  flex: 1 1 auto;
  height: auto;
  min-height: 0;
  overflow: hidden;
}
.image-workbench .media-output-scroll {
  flex: 1 1 auto;
  height: auto;
  min-height: 0;
  padding: var(--module-edge-gap);
  overflow-x: hidden;
  overflow-y: auto;
}

@media (max-width: 760px) {
  /* 新建任务表单仍由页面整体承载滚动；已有任务保持三段固定布局。 */
  body:has(.image-workbench):not(:has(#image-job-form)) {
    overflow: hidden;
  }
  body:has(.image-workbench):not(:has(#image-job-form)) .layout {
    display: flex;
    flex-direction: column;
    height: 100vh;
    min-height: 0;
    overflow: hidden;
  }
  body:has(.image-workbench):not(:has(#image-job-form)) .sidebar {
    position: static;
    flex: 0 0 auto;
    height: auto;
    min-height: 0;
    overflow: visible;
  }
  body:has(.image-workbench):not(:has(#image-job-form)) .workspace {
    flex: 1 1 auto;
    height: auto;
    min-height: 0;
    overflow: hidden;
    padding-bottom: 0;
  }
  body:has(.image-workbench):not(:has(#image-job-form)) .image-workbench {
    display: grid;
    grid-template-rows: 52px minmax(0, 1fr);
    height: 100%;
    min-height: 0;
    overflow: hidden;
  }
  body:has(.image-workbench):not(:has(#image-job-form)) .image-module-stage {
    display: flex;
    flex: 1 1 auto;
    height: auto;
    min-height: 0;
    overflow: hidden;
  }
  body:has(.image-workbench):not(:has(#image-job-form)) .media-output-scroll {
    flex: 1 1 auto;
    height: auto;
    min-height: 0;
    padding: var(--module-edge-gap);
    overflow-x: hidden;
    overflow-y: auto;
  }
}

/* v0.52: 图片任务拆成同级三段，三段共同占满可用高度，中间结果区单独滚动。 */
body:has(.image-workbench) .image-workbench {
  grid-template-rows: var(--module-taskbar-height) minmax(0, 1fr);
  gap: var(--module-edge-gap);
}
body:has(.image-workbench) .image-workbench:has(> .image-task-composer) {
  grid-template-rows: var(--module-taskbar-height) minmax(0, 1fr) var(--module-media-composer-height);
}
body:has(.image-workbench) .image-module-stage {
  grid-row: 2;
  grid-column: 1;
  display: grid;
  grid-template-rows: minmax(0, 1fr);
  gap: 0;
  min-height: 0;
  padding: 0;
  overflow: hidden;
}
body:has(.image-workbench) .image-workbench > .image-task-composer {
  grid-row: 3;
  grid-column: 1;
  position: static !important;
  inset: auto !important;
  width: 100%;
  height: var(--module-media-composer-height);
  min-height: var(--module-media-composer-height);
  margin: 0;
}
body:has(.image-workbench) .media-output-scroll {
  min-height: 0;
  height: auto;
  padding: var(--module-edge-gap);
  overflow-x: hidden;
  overflow-y: auto;
}
body:has(.image-workbench) .image-workbench:has(> .image-task-composer) .media-output-scroll {
  padding: 0 var(--module-edge-gap);
}
body:has(.image-workbench) .image-module-layout {
  min-height: 0;
}
body:has(.image-workbench) .image-job-detail {
  margin-bottom: 0;
}

@media (min-width: 761px) {
  body:has(.image-workbench) .workspace {
    height: 100vh;
    min-height: 0;
    padding-top: var(--module-edge-gap);
    padding-bottom: var(--module-edge-gap);
    overflow: hidden;
  }
}

@media (max-width: 760px) {
  body:has(.image-workbench):not(:has(#image-job-form)) .workspace {
    flex: 1 1 auto;
    height: auto;
    min-height: 0;
    padding-top: var(--module-edge-gap);
    padding-bottom: var(--module-edge-gap);
    overflow: hidden;
  }
  body:has(.image-workbench):not(:has(#image-job-form)) .image-workbench {
    grid-template-rows: var(--module-taskbar-height) minmax(0, 1fr) var(--module-media-composer-height);
    height: 100%;
  }
  body:has(.image-workbench):has(#image-job-form) .image-workbench {
    display: flex;
    height: auto;
    min-height: 0;
    overflow: visible;
    gap: 0;
  }
  body:has(.image-workbench):has(#image-job-form) .image-module-stage {
    display: block;
    height: auto;
    min-height: 0;
    overflow: visible;
  }
  body:has(.image-workbench):has(#image-job-form) .media-output-scroll {
    height: auto;
    min-height: 0;
    padding: var(--module-edge-gap);
    overflow: visible;
  }
}

/* v0.53-final: task list pages share the same compact taskbar and empty state. */
.module-list-taskbar {
  min-height: var(--module-taskbar-height);
  height: var(--module-taskbar-height);
  margin-bottom: var(--module-edge-gap);
}
.module-list-taskbar .production-header-actions { margin-left: auto; }
.module-list-stage { min-width: 0; padding: 0 var(--module-edge-gap) var(--module-edge-gap); }
.module-list-stage .task-list-search {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 12px;
}
.module-list-stage .task-list-search input {
  flex: 1 1 360px;
  min-width: 0;
  height: 38px;
  padding: 0 12px;
  border-radius: 9px;
  font-size: var(--workbench-type-body);
}
.module-list-stage .task-list-search-hint {
  flex: 0 0 auto;
  color: var(--muted);
  font-size: var(--workbench-type-meta);
  white-space: nowrap;
}
.task-search-empty {
  display: grid;
  justify-items: start;
  gap: 6px;
  padding: 28px 0;
  color: var(--muted);
}
.task-search-empty strong { color: var(--ink); font-size: var(--workbench-type-body); }
.task-search-empty span { font-size: var(--workbench-type-support); }
.task-search-empty button { margin-top: 2px; padding: 0; }
.module-list-stage .task-list-heading { align-items: center; margin: 0 0 12px; }
.module-list-stage .task-list-heading h2 { margin: 0; font-size: var(--workbench-type-section-title); }
.module-list-stage .task-cards { align-items: stretch; }
.module-list-stage .task-card.wide { min-height: 132px; align-content: start; gap: 7px; padding: 16px; text-align: left; }
.module-list-stage .task-card.wide > strong { font-size: var(--workbench-type-body); }
.module-list-stage .task-card.wide > p { display: -webkit-box; overflow: hidden; margin: 0; color: var(--wb-text); line-height: 1.55; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.module-list-stage .task-card.wide > small { color: var(--wb-text); }
.module-empty-state { display: grid; justify-items: center; gap: 9px; min-height: 210px; padding: 44px 24px; border: 1px solid var(--line); border-radius: 16px; color: var(--wb-text); background: var(--wb-selected); text-align: center; }
.module-empty-state strong { color: var(--wb-text); font-size: var(--workbench-type-page-title); }
.module-empty-state span { color: var(--wb-text); font-size: var(--workbench-type-support); }
.conversation-task-cards { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
body.chat-page-body .workspace:has(.module-list-taskbar), body.notes-workbench-page .workspace:has(.module-list-taskbar) { display: block; height: auto; min-height: 100vh; overflow: visible; }
body.chat-page-body .workspace:has(.module-list-taskbar) .module-list-stage, body.notes-workbench-page .workspace:has(.module-list-taskbar) .module-list-stage { overflow: visible; }
@media (max-width: 760px) {
  .module-list-taskbar { height: auto; min-height: 52px; }
  .module-list-taskbar .production-title-view > strong { max-width: 58vw; }
  .module-list-stage { padding-right: 0; padding-left: 0; }
  .module-list-stage .task-list-search { align-items: stretch; flex-direction: column; gap: 6px; }
  .module-list-stage .task-list-search input { flex-basis: auto; width: 100%; }
  .module-list-stage .task-list-search-hint { white-space: normal; }
  .conversation-task-cards { grid-template-columns: 1fr; }
}

body:has(.image-workbench) .image-module-layout,
body:has(.image-workbench) .image-job-main {
  width: 100%;
  max-width: none;
  margin-right: 0;
  margin-left: 0;
}
body:has(.image-workbench) .media-output-scroll {
  padding-right: 0;
  padding-left: 0;
}/* v0.56: 新建任务表单与详情面板共用工作台边界，覆盖历史的 960px 收缩限制。 */


body:has(.image-workbench) .image-workbench #image-job-form{
  width: 100%;
  max-width: none;
  margin-right: 0;
  margin-left: 0;
  box-sizing: border-box;
}

/* v0.55: 图片工作台三段共享同一条 surface boundary，禁止 flex/grid 默认收缩内容宽度。 */
body:has(.image-workbench) .image-workbench,
body:has(.image-workbench) .image-workbench > .module-taskbar,
body:has(.image-workbench) .image-workbench > .image-module-stage,
body:has(.image-workbench) .image-workbench > .image-task-composer,
body:has(.image-workbench) .image-workbench .media-output-scroll,
body:has(.image-workbench) .image-workbench .image-module-layout,
body:has(.image-workbench) .image-workbench .image-job-main,
body:has(.image-workbench) .image-workbench .image-job-detail {
  width: 100%;
  max-width: none;
  min-width: 0;
  margin-right: 0;
  margin-left: 0;
  align-self: stretch;
  box-sizing: border-box;
}

/* 图片工作区只保留最外层 output frame 滚动，消息与图片均为普通内容流。 */
body:has(.image-workbench):has(#image-job-form) .image-output-frame {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 0;
  padding: var(--module-edge-gap);
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-gutter: stable;
  box-sizing: border-box;
}
body:has(.image-workbench):not(:has(#image-job-form)) .image-module-stage {
  display: flex;
  flex: 1 1 auto;
  height: auto;
  min-height: 0;
  overflow: hidden;
}
body:has(.image-workbench):not(:has(#image-job-form)) .image-output-frame {
  display: block;
  flex: 1 1 auto;
  width: 100%;
  height: 100%;
  min-height: 0;
  padding: 0;
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-gutter: stable;
  box-sizing: border-box;
}
body:has(.image-workbench):not(:has(#image-job-form)) .image-module-layout,
body:has(.image-workbench):not(:has(#image-job-form)) .image-job-main {
  display: block;
  flex: none;
  width: 100%;
  height: auto;
  min-height: 0;
  overflow: visible;
}
body:has(.image-workbench):not(:has(#image-job-form)) .image-job-detail {
  display: block;
  flex: none;
  width: 100%;
  height: auto;
  max-height: none;
  min-height: 0;
  margin: 0;
  overflow: visible;
  box-sizing: border-box;
}
body:has(.image-workbench) .image-conversation-stream .workbench-message-list {
  height: auto;
  min-height: 0;
  max-height: none;
  overflow: visible;
}

/* v0.58: 对话消息采用“AI透明、用户中性表面”的层级，不改变消息内容排版和交互。 */
.workbench-message.assistant {
  background: transparent;
  border-color: transparent;
}
.workbench-message.assistant span { color: var(--workbench-message-meta); }
.workbench-message.assistant p { color: var(--workbench-color-text-body); }
.workbench-message.user {
  color: var(--workbench-message-user-text);
  background: var(--workbench-message-user-bg);
  border-color: var(--workbench-message-user-border);
}
.workbench-message.user span { color: var(--workbench-message-meta); }
.workbench-message.user p { color: var(--workbench-message-user-text); }
.workbench-message.user.is-failed {
  color: var(--workbench-message-error-text);
  background: var(--workbench-message-error-bg);
  border-color: var(--workbench-message-error-border);
}
.workbench-message.user.is-failed span,
.workbench-message.user.is-failed p { color: var(--workbench-message-error-text); }

.workbench-message.is-assistant {
  background: transparent;
  border-color: transparent;
}
.workbench-message.is-user {
  color: var(--workbench-message-user-text);
  background: var(--workbench-message-user-bg);
  border-color: var(--workbench-message-user-border);
}
.workbench-message.is-user .workbench-message-role,
.workbench-message.is-user p { color: var(--workbench-message-user-text); }

/* v0.59: 侧边导航统一为“功能区容器 + 导航项”层级，选中项整行高亮，不使用左侧竖线。 */
.sidebar .module-nav {
  display: grid;
  gap: 10px;
}
.sidebar .module-nav-group {
  gap: 5px;
  padding: 8px;
  border: 0;
  border-radius: 0;
  background: transparent;
  background-image: none;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
.sidebar .module-nav-operations {
  border-color: transparent;
  background: transparent;
}
.sidebar .module-nav-group-label {
  padding: 0 8px;
  color: var(--workbench-color-accent);
  font-size: var(--workbench-type-section-title);
  font-weight: 650;
}
.sidebar .module-nav-operations .module-nav-group-label { color: var(--workbench-color-accent); }
.sidebar .module-nav-item,
.sidebar .module-nav-item:hover,
.sidebar .module-nav-item.active,
.sidebar .module-nav-item.active:hover,
.sidebar .module-nav-item.has-running-status.active {
  transform: none;
}
.sidebar .module-nav-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  width: 100%;
  min-height: 42px;
  padding: 0 11px;
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: 9px;
  background: var(--wb-selected);
  box-shadow: none;
  transition: background .16s ease, border-color .16s ease, box-shadow .16s ease, color .16s ease;
}
.sidebar .module-nav-item > span:first-child {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sidebar .module-nav-item:hover {
  color: var(--wb-text);
  background: var(--wb-selected);
  border-color: transparent;
  box-shadow: none;
}
.sidebar .module-nav-item.active,
.sidebar .module-nav-item.active:hover,
.sidebar .module-nav-item.has-running-status.active {
  color: var(--wb-text);
  background: var(--wb-selected);
  border: 1px solid transparent;
  box-shadow: none;
}
.sidebar .module-nav-item.active > span:first-child { color: var(--wb-text); font-weight: 800; }
.sidebar .module-nav-item small.nav-job-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 20px;
  padding: 0 7px;
  color: var(--wb-text);
  background: var(--wb-selected);
  border: 1px solid transparent;
  border-radius: 999px;
  font-size: var(--workbench-type-meta);
  font-weight: 800;
  line-height: 1;
  box-shadow: none;
}
.sidebar .module-nav-item.has-running-status { animation: none; }
.sidebar .module-nav-item.has-running-status:not(.active) {
  border-color: transparent;
  background: var(--wb-selected);
}
.sidebar .module-nav-item.has-review-status:not(.active) {
  border-color: transparent;
  background: var(--wb-selected);
}
.sidebar .module-nav-item small.nav-job-badge[data-admin-review-badge] {
  color: var(--wb-text);
  background: var(--wb-selected);
  border-color: transparent;
  box-shadow: none;
}
.sidebar .module-nav-item small.nav-job-badge[data-admin-review-badge]::before {
  background: var(--wb-selected);
  box-shadow: none;
}
.sidebar .module-nav-item:focus-visible { outline: 2px solid var(--wb-accent); outline-offset: 2px; }
@media (max-width: 760px) {
  .sidebar .module-nav { gap: 8px; }
  .sidebar .module-nav-group { gap: 4px; padding: 6px; }
  .sidebar .module-nav-item { width: auto; min-width: 108px; min-height: 40px; }
}
/* Creative quality warnings stay subordinate to the note itself while making a reviewable draft explicit. */

/* v0.61: 脚本创作、审核、优化共用一套任务表单与结果表达。 */
.video-production-form .task-form { gap: 12px; }
.video-production-form .task-form > .form-row { align-items: start; }
.video-script-source-field textarea { min-height: 190px; }
.video-script-brief-field textarea { min-height: 88px; }
.video-script-mode-help { margin-top: -2px; }

/* v0.62: 脚本新建页是长表单，页面整体负责滚动；工作页仍保持中间结果区独立滚动。 */
body:has(#video-script-form) {
  overflow-x: hidden;
  overflow-y: auto;
}
body:has(#video-script-form) .layout {
  height: auto;
  min-height: 100vh;
  overflow: visible;
}
body:has(#video-script-form) .workspace {
  height: auto;
  min-height: 100vh;
  overflow: visible;
  padding-top: var(--module-edge-gap);
  padding-bottom: var(--module-edge-gap);
}
body:has(#video-script-form) .bilibili-module-layout,
body:has(#video-script-form) .bilibili-job-main {
  min-height: 0;
  overflow: visible;
}
body:has(#video-script-form) .video-production-form {
  width: min(1080px, 100%);
  margin: 0 auto;
  padding: 16px;
}
.video-production-form .task-form { gap: 10px; }
.video-production-form .task-form > .form-row { gap: var(--module-edge-gap); }
.video-production-form .task-form > .primary { justify-self: end; min-width: 148px; }
.video-production-form .video-platform-field small { max-width: 42em; }
.video-extraction-source-row { align-items: start; }
.video-extraction-source-row small { max-width: 42em; }
.video-extraction-source-row .reference-error { color: var(--wb-error); }
.video-production-form input[type="file"] { padding: 8px; }
.video-production-form [hidden] { display: none !important; }
@media (max-width: 760px) {
  body:has(#video-script-form) .workspace { padding-bottom: calc(var(--module-edge-gap) * 2); }
  .video-production-form .task-form > .primary { justify-self: stretch; }
}
.video-review-result { display: grid; gap: 14px; margin: 0 0 16px; }
.video-review-summary {
  display: grid;
  grid-template-columns: minmax(150px, .36fr) minmax(0, 1fr);
  align-items: center;
  gap: 14px;
  padding: 14px 16px;
  border: 1px solid transparent;
  border-radius: 12px;
  background: var(--wb-selected);
}
.video-review-summary > div { display: grid; gap: 4px; }
.video-review-summary > div strong { color: var(--wb-accent); font-size: var(--workbench-type-section-title); }
.video-review-summary > p { margin: 0; color: var(--wb-text); line-height: 1.6; }
.video-review-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.video-review-dimension,
.video-review-risks,
.video-review-list {
  min-width: 0;
  padding: 12px 14px;
  border: 1px solid transparent;
  border-radius: 10px;
  background: var(--wb-selected);
}
.video-review-dimension > div { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.video-review-dimension strong,
.video-review-risks h4,
.video-review-list h4 { color: var(--wb-text); font-size: var(--workbench-type-support); }
.video-review-dimension p,
.video-review-risks p,
.video-review-list p { margin: 7px 0 0; color: var(--wb-text); font-size: var(--workbench-type-support); line-height: 1.55; }
.video-review-dimension small,
.video-review-risks small { display: block; margin-top: 6px; color: var(--wb-accent); font-size: var(--workbench-type-meta); line-height: 1.5; }
.video-review-state { flex: none; padding: 3px 7px; border: 1px solid transparent; border-radius: 999px; color: var(--wb-text); font-size: var(--workbench-type-meta); }
.video-review-state.pass { color: var(--wb-accent); border-color: transparent; background: var(--wb-selected); }
.video-review-state.risk { color: var(--wb-text); border-color: transparent; background: var(--wb-selected); }
.video-review-risks h4, .video-review-list h4 { margin: 0 0 9px; }
.video-review-risks ul, .video-review-list ul { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.video-review-risks li { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 8px; align-items: start; }
.video-review-risk { display: inline-flex; min-width: 18px; justify-content: center; padding: 2px 5px; border-radius: 999px; color: var(--wb-text); background: var(--wb-selected); font-size: var(--workbench-type-meta); font-weight: 800; }
.video-review-risk.high { color: var(--wb-text); background: var(--wb-selected); }
.video-review-risk.low { background: var(--wb-selected); }
.video-review-list li { position: relative; padding-left: 14px; color: var(--wb-text); font-size: var(--workbench-type-support); line-height: 1.55; }
.video-review-list li::before { position: absolute; left: 0; content: '•'; color: var(--wb-accent); }
.video-review-source { display: grid; gap: 7px; margin-bottom: 14px; color: var(--wb-text); font-size: var(--workbench-type-support); font-weight: 700; }
.video-review-source textarea { width: 100%; min-height: 180px; resize: vertical; color: var(--wb-text); border: 1px solid transparent; border-radius: 10px; background: var(--wb-selected); }
@media (max-width: 760px) {
  .video-review-summary { grid-template-columns: 1fr; }
  .video-review-grid { grid-template-columns: 1fr; }
}

/* v0.64: 右侧最近任务使用短状态标签，完整状态保留在提示信息中，避免窄栏内被截断。 */
.recent-work-item,
.recent-work-item-top,
.recent-work-status,
.recent-work-status .status-badge {
  min-width: 0;
  max-width: 100%;
}
.recent-work-item { overflow: hidden; }
.recent-work-item-top small,
.recent-work-item-top time {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.recent-work-item-top time { max-width: 50%; }
.recent-work-status { display: flex; overflow: hidden; }
.recent-work-status .status-badge {
  display: flex;
  flex: 0 1 auto;
  align-items: center;
  gap: 5px;
  box-sizing: border-box;
  width: fit-content;
  min-height: 22px;
  padding: 2px 7px;
  overflow: hidden;
  font-size: var(--workbench-type-meta);
}
.recent-work-status .status-badge > span:not(.status-dot) {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.recent-work-status .status-badge small { display: none; }


/* v0.66: 新建图片任务与笔记任务共用“文字 + 图片”输入方式，表单保持紧凑对齐。 */
body:has(.image-workbench):has(#image-job-form) .image-workbench #image-job-form.image-job-create-form {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-content: start;
  gap: 10px var(--module-edge-gap);
  padding: 16px var(--module-edge-gap);
}
body:has(.image-workbench):has(#image-job-form) .image-job-create-form > .image-job-field-prompt,
body:has(.image-workbench):has(#image-job-form) .image-job-create-form > .production-image-input,
body:has(.image-workbench):has(#image-job-form) .image-job-create-form > .image-job-form-options,
body:has(.image-workbench):has(#image-job-form) .image-job-create-form > .custom-ratio-panel,
body:has(.image-workbench):has(#image-job-form) .image-job-create-form > .model-badge,
body:has(.image-workbench):has(#image-job-form) .image-job-create-form > .image-job-form-footer { grid-column: 1 / -1; }
body:has(.image-workbench):has(#image-job-form) .image-job-create-form > label { gap: 5px; min-width: 0; }
body:has(.image-workbench):has(#image-job-form) .image-job-create-form input,
body:has(.image-workbench):has(#image-job-form) .image-job-create-form select { min-height: 38px; padding-top: 8px; padding-bottom: 8px; }
body:has(.image-workbench):has(#image-job-form) .image-job-create-form textarea[name="prompt"] {
  min-height: 106px;
  max-height: 150px;
  resize: vertical;
}
body:has(.image-workbench):has(#image-job-form) .image-job-create-form .production-image-input {
  display: grid;
  gap: 6px;
  margin: 0;
  min-width: 0;
}
body:has(.image-workbench):has(#image-job-form) .image-job-create-form .production-image-input > .field-label {
  color: var(--ink);
  font-size: var(--workbench-type-support);
  font-weight: 700;
}
body:has(.image-workbench):has(#image-job-form) .image-job-create-form .production-image-drop-zone {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 3px 10px;
  min-height: 52px;
  padding: 8px 10px;
}
/* Resource helper text is owned by the shared create-row contract below.
   Do not let this historical drop-zone rule force it into a single clipped line. */
body:has(.image-workbench):has(#image-job-form) .image-job-create-form .production-image-drop-zone > span:not(.production-image-hint) {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body:has(.image-workbench):has(#image-job-form) .image-job-create-form .production-image-drop-zone small { grid-column: 1 / -1; }
body:has(.image-workbench):has(#image-job-form) .image-job-create-form .production-image-preview {
  min-height: 0;
  gap: 6px;
}
body:has(.image-workbench):has(#image-job-form) .image-job-create-form .production-image-preview figure { width: 52px; }
body:has(.image-workbench):has(#image-job-form) .image-job-create-form .production-image-preview img { width: 52px; height: 52px; }
body:has(.image-workbench):has(#image-job-form) .image-job-create-form .image-job-form-options { align-items: start; }
body:has(.image-workbench):has(#image-job-form) .image-job-create-form .image-job-form-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-width: 0;
  margin-top: 1px;
}
body:has(.image-workbench):has(#image-job-form) .image-job-create-form .image-job-form-footer small {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body:has(.image-workbench):has(#image-job-form) .image-job-create-form .image-job-form-footer .primary {
  flex: 0 0 auto;
  min-width: 148px;
}
@media (max-width: 760px) {
  body:has(.image-workbench):has(#image-job-form) .image-workbench #image-job-form.image-job-create-form {
    grid-template-columns: 1fr;
    gap: 10px;
    padding: 13px;
  }
  body:has(.image-workbench):has(#image-job-form) .image-job-create-form > label,
  body:has(.image-workbench):has(#image-job-form) .image-job-create-form > .form-row,
  body:has(.image-workbench):has(#image-job-form) .image-job-create-form > .custom-ratio-panel,
  body:has(.image-workbench):has(#image-job-form) .image-job-create-form > .model-badge,
  body:has(.image-workbench):has(#image-job-form) .image-job-create-form > .image-job-form-footer { grid-column: 1; }
  body:has(.image-workbench):has(#image-job-form) .image-job-create-form .image-job-form-footer { align-items: stretch; flex-direction: column; gap: 7px; }
  body:has(.image-workbench):has(#image-job-form) .image-job-create-form .image-job-form-footer small { white-space: normal; }
  body:has(.image-workbench):has(#image-job-form) .image-job-create-form .image-job-form-footer .primary { width: 100%; }
}

/* v0.66: recent-work has three rendered rows; the task list must own the
   remaining rail height so cards stay visible and scroll inside the rail. */
.recent-work-panel {
  grid-template-rows: auto auto minmax(0, 1fr);
}
.recent-work-list {
  min-height: 0;
  align-content: start;
  overflow-x: hidden;
  overflow-y: auto;
}

/* v0.68: 独立图片任务沿用笔记配图的紧凑结果卡片，避免单张图片拉伸占满工作区。 */
body:has(.image-workbench):not(:has(#image-job-form)) .image-job-detail .image-grid {
  grid-template-columns: repeat(auto-fill, minmax(148px, 210px));
  justify-content: start;
  align-items: start;
  gap: 14px;
}
body:has(.image-workbench):not(:has(#image-job-form)) .image-job-detail .generated-image {
  min-width: 0;
  width: auto;
  max-width: 210px;
  padding: 9px;
}
body:has(.image-workbench):not(:has(#image-job-form)) .image-job-detail .image-preview-trigger {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 210px;
  max-height: none;
  overflow: hidden;
  background: var(--wb-selected);
}
body:has(.image-workbench):not(:has(#image-job-form)) .image-job-detail .generated-image img {
  width: 100%;
  height: 100%;
  max-height: none;
  aspect-ratio: auto;
  object-fit: contain;
}
@media (max-width: 760px) {
  body:has(.image-workbench):not(:has(#image-job-form)) .image-job-detail .image-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  body:has(.image-workbench):not(:has(#image-job-form)) .image-job-detail .generated-image {
    max-width: none;
  }
  body:has(.image-workbench):not(:has(#image-job-form)) .image-job-detail .image-preview-trigger {
    height: 180px;
  }
}/* v0.70: 图片任务操作改为工作区内居中的模态窗口，窗口独立滚动，不推动结果区。 */


/* 旧版工作区边界规则使用了任务面板 ID，必须在同一层级明确清零，避免弹窗再次被推向右下角。 */

























@media (max-width: 760px) {









}

/* v0.71: 任务输入校验提示必须浮在底部建议操作面板之上，避免被遮挡。 */
.toast {
  z-index: 60;
}

/* v0.72: cross-module history is append-only and visually secondary to the
   current result. User attachments remain visible without enlarging the
   production work area. */
.task-history-stream {
  margin: 14px 0 18px;
  padding: 14px;
  border: 1px solid var(--border, transparent);
  border-radius: 14px;
  background: var(--wb-selected);
}
.task-history-stream .section-heading { margin: 0 0 10px; }
.task-history-stream .section-heading h3 { margin: 0; font-size: var(--workbench-type-body); }
.task-history-stream .section-heading p:not(.eyebrow) { margin: 4px 0 0; font-size: var(--workbench-type-support); }
.task-history-list { display: grid; gap: 8px; max-height: 280px; overflow: auto; padding-right: 2px; }
.task-history-event { padding: 9px 11px; border-radius: 10px; background: var(--wb-selected); }
.task-history-event.is-user { background: var(--wb-selected); }
.task-history-event header { display: flex; align-items: center; gap: 8px; color: var(--wb-text-secondary); font-size: var(--workbench-type-meta); }
.task-history-event header strong { color: var(--wb-text); font-size: var(--workbench-type-support); }
.task-history-event header time { margin-left: auto; white-space: nowrap; }
.task-history-event p { margin: 5px 0 0; color: var(--wb-text-secondary); font-size: var(--workbench-type-support); line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; }
.task-history-attachments { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.task-history-attachment { width: 52px; height: 52px; padding: 0; overflow: hidden; border: 1px solid transparent; border-radius: 8px; background: var(--wb-selected); cursor: pointer; }
.task-history-attachment img { display: block; width: 100%; height: 100%; object-fit: cover; }
.workbench-message .task-history-attachments { margin-top: 7px; }
@media (max-width: 760px) {
  .task-history-stream { margin: 10px 0 14px; padding: 11px; }
  .task-history-list { max-height: 220px; }
  .task-history-event header time { display: inline; }
}

.chat-research-control {
  position: relative;
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 8px;
  box-sizing: border-box;
  min-width: max-content;
  width: max-content;
  max-width: 100%;
  min-height: 34px;
  padding: 5px 10px 5px 9px;
  color: var(--workbench-color-text-secondary);
  border: 1px solid var(--workbench-input-border);
  border-radius: 10px;
  background: var(--workbench-color-surface-subtle);
  cursor: pointer;
  user-select: none;
  transition: border-color .16s ease, background-color .16s ease, color .16s ease, box-shadow .16s ease;
}
.chat-research-control:hover {
  border-color: var(--workbench-input-border-focus);
  background: var(--workbench-color-surface-hover);
  color: var(--workbench-color-text);
}
.chat-research-control:has(input:checked) {
  border-color: transparent;
  background: var(--wb-selected);
  color: var(--workbench-color-text);
  box-shadow: none;
}
.chat-research-control input {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
}
.chat-research-control-track {
  position: relative;
  flex: 0 0 30px;
  width: 30px;
  height: 18px;
  border-radius: 999px;
  background: var(--wb-selected);
  transition: background-color .16s ease;
}
.chat-research-control-track::after {
  position: absolute;
  top: 3px;
  left: 3px;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--wb-selected);
  box-shadow: none;
  content: '';
  transition: transform .16s ease;
}
.chat-research-control input:checked + .chat-research-control-track { background: var(--workbench-color-accent); }
.chat-research-control input:checked + .chat-research-control-track::after { transform: translateX(12px); }
.chat-research-control input:focus-visible + .chat-research-control-track { box-shadow: none; }
.chat-research-control-label { flex: 0 0 auto; font-size: var(--workbench-type-body); font-weight: 700; line-height: 1.2; white-space: nowrap; }
.workbench-composer-help-row { display: flex; flex: 0 1 auto; align-items: center; gap: 10px; min-width: max-content; max-width: 100%; }
.workbench-composer-help-row .workbench-composer-help { min-width: 0; }

/* 普通文本框、下拉框共享一套可调的高度、内边距和对比度；复选框、单选框、文件入口保持原生交互。 */
body:has(.layout) .layout :where(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]), textarea, select) {
  width: 100%;
  min-width: 0;
  color: var(--workbench-input-color);
  border: 1px solid var(--workbench-input-border);
  border-radius: var(--workbench-input-radius);
  background: var(--workbench-input-background);
  font-size: var(--workbench-input-font-size);
  line-height: var(--workbench-input-line-height);
  transition: border-color .16s ease, background-color .16s ease, box-shadow .16s ease;
}
body:has(.layout) .layout :where(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]), select) {
  height: var(--workbench-input-height);
  min-height: var(--workbench-input-min-height);
  padding: 0 var(--workbench-input-padding-inline);
}
body:has(.layout) .layout :where(textarea) {
  padding: var(--workbench-input-padding-block) var(--workbench-input-padding-inline);
  line-height: var(--workbench-input-line-height);
}
body:has(.layout) .layout :where(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]), textarea, select):focus {
  border-color: var(--workbench-input-border-focus);
  background: var(--workbench-input-background-focus);
  box-shadow: none;
}
body:has(.layout) .layout :where(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]), textarea)::placeholder {
  color: var(--workbench-input-placeholder);
  opacity: 1;
}

/* 三类底部对话输入区共用笔记生产的 44px 输入行、32px 操作行和 8/10px 内部节奏。 */
.workbench-composer-form,
.chat-form,
.production-chat-form,
.image-task-message-form {
  gap: var(--workbench-composer-gap) !important;
  padding: var(--workbench-composer-padding-block) var(--workbench-composer-padding-inline) !important;
  border-radius: var(--workbench-composer-radius) !important;
}
.workbench-composer-form > textarea,
.chat-form > textarea,
.production-chat-form > textarea,
.image-task-message-form > textarea {
  height: var(--workbench-composer-textarea-height);
  min-height: var(--workbench-composer-textarea-height);
  max-height: var(--workbench-composer-textarea-max-height);
  padding: var(--workbench-input-padding-block) var(--workbench-input-padding-inline);
  border-color: transparent;
  border-radius: var(--workbench-input-radius);
  background: var(--wb-selected);
  line-height: var(--workbench-input-line-height);
}
.workbench-composer-form > textarea:focus,
.chat-form > textarea:focus,
.production-chat-form > textarea:focus,
.image-task-message-form > textarea:focus {
  border-color: var(--workbench-input-border-focus);
  background: var(--wb-selected);
  box-shadow: none;
}
.production-composer-row .production-chat-form,
.image-task-composer .image-task-message-form {
  box-sizing: border-box;
}

/* v0.75: 工作台通用设计令牌。
   这是新增 UI 的唯一接入层；历史规则保留用于兼容，后续模块不得再写同义的局部颜色、尺寸或坐标。 */
:root {
  /* 颜色：工作台统一为黑色画布、中性信息面和少量语义色。 */
  --workbench-color-bg: var(--wb-bg);
  --workbench-color-surface: var(--wb-bg);
  --workbench-color-surface-raised: var(--wb-selected);
  --workbench-color-surface-subtle: var(--wb-selected);
  --workbench-color-surface-hover: var(--wb-selected);
  --workbench-color-input: var(--wb-selected);
  --workbench-color-input-focus: var(--wb-selected);
  --workbench-color-text: var(--wb-text);
  --workbench-color-text-body: var(--wb-text);
  --workbench-color-on-accent: var(--wb-accent);
  --workbench-color-text-secondary: var(--wb-text-secondary);
  --workbench-color-text-muted: var(--wb-text-secondary);
  --workbench-color-text-subtle: var(--wb-text);
  --workbench-color-accent: var(--wb-accent);
  --workbench-color-accent-hover: var(--wb-accent);
  --workbench-color-accent-soft: var(--wb-accent);
  --workbench-color-accent-surface: var(--wb-accent);
  --workbench-color-danger: var(--wb-error);
  --workbench-color-warning: var(--wb-text-secondary);
  --workbench-color-border: transparent;
  --workbench-color-border-strong: transparent;
  --workbench-color-border-accent: transparent;
  --workbench-color-control-border: transparent;
  --workbench-color-control-border-focus: transparent;
  --workbench-color-focus-ring: 0 0 0 3px var(--wb-bg);

  /* 间距：页面、区域和左右栏都以 --module-edge-gap 为基准。 */
  --workbench-space-1: 4px;
  --workbench-space-2: 8px;
  --workbench-space-3: 12px;
  --workbench-space-4: 16px;
  --workbench-space-5: 24px;
  --workbench-space-page: var(--module-edge-gap);
  --workbench-gap: var(--module-edge-gap);
  --workbench-button-gap: 6px;
  --workbench-admin-nav-width: 200px;
  --workbench-admin-content-gap: var(--module-edge-gap);
  --workbench-admin-row-height: 44px;
  --workbench-admin-cell-padding: 10px 12px;

  /* 圆角：内容容器不超过四档，胶囊只用于状态和范围。 */
  --workbench-radius-sm: 8px;
  --workbench-radius-md: 10px;
  --workbench-radius-lg: 13px;
  --workbench-radius-composer: 15px;
  --workbench-radius-pill: 999px;

  /* 文字：工作台只保留页面主标题 / 内容小标题 / 核心正文 / 辅助内容 / 元信息五级层级。 */
  --workbench-font-size-xs: 10px;
  --workbench-font-size-sm: 12px;
  --workbench-font-size-body: 14px;
  --workbench-font-size-title: 16px;
  --workbench-font-size-section: 16px;
  --workbench-font-size-page: 18px;
  --workbench-line-tight: 1.2;
  --workbench-line-normal: 1.5;
  --workbench-line-relaxed: 1.6;

  /* 操作控件：普通按钮 40，紧凑操作 32，任务栏操作 34。 */
  --workbench-button-height: 40px;
  --workbench-button-height-small: 32px;
  --workbench-button-height-large: 44px;
  --workbench-button-padding-inline: 12px;
  --workbench-button-padding-inline-small: 10px;
  --workbench-button-padding-inline-large: 14px;
  --workbench-button-radius: var(--workbench-radius-sm);
  --workbench-taskbar-action-height: 34px;
  --workbench-taskbar-action-font-size: var(--workbench-font-size-body);
  --workbench-taskbar-action-gap: 6px;

  /* 三段工作页：坐标继续由 module-* 提供，workbench-* 只作为语义别名。 */
  --workbench-taskbar-height: var(--module-taskbar-height);
  --workbench-composer-height: var(--module-composer-height);
  --workbench-taskbar-padding-block: 10px;
  --workbench-taskbar-padding-inline: 14px;
  --workbench-taskbar-title-size: var(--workbench-font-size-section);
  --workbench-taskbar-meta-size: var(--workbench-font-size-sm);
  --workbench-taskbar-field-label-size: var(--workbench-font-size-xs);
  --workbench-taskbar-field-value-size: var(--workbench-font-size-body);
  --workbench-taskbar-field-gap: 2px;
  --workbench-taskbar-field-width: 10em;
  --workbench-taskbar-four-field-width: calc(40em + 36px);
  --workbench-nav-item-height: 42px;
  --workbench-status-height: 22px;
  --workbench-status-dot-size: 6px;
  --workbench-status-font-size: var(--workbench-font-size-xs);
  --workbench-status-radius: var(--workbench-radius-pill);

  /* 输入区沿用小红书笔记生产输入区基线，其他模块只引用这些变量。 */
  --workbench-input-height: 40px;
  --workbench-input-min-height: 40px;
  --workbench-input-padding-inline: 12px;
  --workbench-input-padding-block: 9px;
  --workbench-input-radius: var(--workbench-radius-md);
  --workbench-input-font-size: var(--workbench-font-size-body);
  --workbench-input-line-height: var(--workbench-line-normal);
  --workbench-input-color: var(--workbench-color-text);
  --workbench-input-placeholder: var(--workbench-color-text-subtle);
  --workbench-input-background: var(--workbench-color-input);
  --workbench-input-background-focus: var(--workbench-color-input-focus);
  --workbench-input-border: var(--workbench-color-control-border);
  --workbench-input-border-focus: var(--workbench-color-control-border-focus);
  --workbench-input-focus-ring: var(--workbench-color-focus-ring);
  --workbench-composer-textarea-height: 44px;
  --workbench-composer-textarea-max-height: 168px;
  --workbench-composer-row-height: 32px;
  --workbench-composer-gap: var(--workbench-space-2);
  --workbench-composer-padding-block: 6px;
  --workbench-composer-padding-inline: 10px;
  --workbench-composer-radius: var(--workbench-radius-composer);
  --workbench-composer-send-min-width: 72px;
}

/* 统一按钮契约：每个区域最多一个主按钮；small 只用于任务栏、卡片和底部操作行。 */
body:has(.layout) .layout :where(.primary, .secondary, .button-link) {
  box-sizing: border-box;
  height: var(--workbench-button-height);
  min-height: var(--workbench-button-height);
  padding: 0 var(--workbench-button-padding-inline);
  border-radius: var(--workbench-button-radius);
  font-size: var(--workbench-font-size-body);
  line-height: 1;
}
body:has(.layout) .layout :where(.primary.small, .secondary.small, .text.small, .small-action) {
  height: var(--workbench-button-height-small);
  min-height: var(--workbench-button-height-small);
  padding: 0 var(--workbench-button-padding-inline-small);
  border-radius: var(--workbench-button-radius);
  font-size: var(--workbench-font-size-sm);
}
body:has(.layout) .layout :where(.primary.large, .secondary.large) {
  height: var(--workbench-button-height-large);
  min-height: var(--workbench-button-height-large);
  padding: 0 var(--workbench-button-padding-inline-large);
}
body:has(.layout) .layout :where(.primary) {
  color: var(--workbench-color-on-accent);
  background: var(--workbench-color-accent);
  border-color: var(--workbench-color-accent);
}
body:has(.layout) .layout :where(.primary:hover) {
  color: var(--workbench-color-on-accent);
  background: var(--workbench-color-accent-hover);
  border-color: var(--workbench-color-accent-hover);
}
body:has(.layout) .layout :where(.secondary) {
  color: var(--workbench-color-text-secondary);
  background: var(--workbench-color-surface-subtle);
  border-color: var(--workbench-color-border);
}
body:has(.layout) .layout :where(.secondary:hover) {
  color: var(--workbench-color-text);
  background: var(--workbench-color-surface-hover);
  border-color: var(--workbench-color-border-strong);
}
body:has(.layout) .layout :where(.text) {
  min-height: var(--workbench-button-height-small);
  color: var(--workbench-color-text-secondary);
  border-radius: var(--workbench-button-radius);
  font-size: var(--workbench-font-size-sm);
}
body:has(.layout) .layout :where(.text:hover) {
  color: var(--workbench-color-text);
  background: var(--workbench-color-surface-subtle);
}

/* 统一任务栏：三类模块和列表页使用同一高度、内边距、字级和操作坐标。 */
body:has(.layout) .layout :where(.module-taskbar, .chat-page-head.module-taskbar, .production-page-head.module-taskbar) {
  box-sizing: border-box;
  height: var(--workbench-taskbar-height);
  min-height: var(--workbench-taskbar-height);
  max-height: var(--workbench-taskbar-height);
  padding: var(--workbench-taskbar-padding-block) var(--workbench-taskbar-padding-inline);
  border-radius: var(--workbench-radius-lg);
  background: var(--workbench-color-surface);
  border-color: var(--workbench-color-border);
}
body:has(.layout) .layout :where(.module-taskbar .production-title-view > strong) {
  color: var(--workbench-color-text);
  font-size: var(--workbench-taskbar-title-size);
  line-height: var(--workbench-line-tight);
}
body:has(.layout) .layout :where(.module-taskbar .production-knowledge-inline, .module-taskbar .module-taskbar-meta, .module-taskbar .production-header-actions .page-live-status) {
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-taskbar-meta-size);
  line-height: var(--workbench-line-tight);
}
body:has(.layout) .layout :where(.module-taskbar .production-header-actions) {
  gap: var(--workbench-button-gap);
}
body:has(.layout) .layout :where(.module-taskbar .production-header-actions > .primary, .module-taskbar .production-header-actions > .secondary, .module-taskbar .production-header-actions > .text) {
  height: var(--workbench-taskbar-action-height);
  min-height: var(--workbench-taskbar-action-height);
  padding: 0 var(--workbench-button-padding-inline-small);
  font-size: var(--workbench-taskbar-action-font-size);
}

/* 统一导航与状态：导航项整行高亮，状态用短文案 + 状态点，不用额外的绿色装饰层。 */
body:has(.layout) .layout :where(.sidebar .module-nav-item) {
  min-height: var(--workbench-nav-item-height);
}
body:has(.layout) .layout :where(.status-badge) {
  min-height: var(--workbench-status-height);
  padding: 0 8px;
  gap: 5px;
  border-radius: var(--workbench-status-radius);
  font-size: var(--workbench-status-font-size);
  line-height: 1;
  background: var(--workbench-color-surface-subtle);
}
body:has(.layout) .layout :where(.status-dot) {
  width: var(--workbench-status-dot-size);
  height: var(--workbench-status-dot-size);
}

/* 统一输入区的颜色别名，保证三类对话输入框不会回落到历史浅色主题。 */
body:has(.layout) .layout :where(.workbench-composer-form > textarea, .chat-form > textarea, .production-chat-form > textarea, .image-task-message-form > textarea) {
  border-color: var(--workbench-input-border);
  background: var(--workbench-color-bg);
}
body:has(.layout) .layout :where(.workbench-composer-form > textarea:focus, .chat-form > textarea:focus, .production-chat-form > textarea:focus, .image-task-message-form > textarea:focus) {
  border-color: var(--workbench-input-border-focus);
  background: var(--workbench-color-bg);
  box-shadow: none;
}

@media (max-width: 760px) {
  :root {
    --workbench-space-page: 12px;
    --workbench-input-height: 38px;
    --workbench-input-min-height: 38px;
    --workbench-taskbar-height: 52px;
    --workbench-taskbar-padding-block: 8px;
    --workbench-taskbar-padding-inline: 10px;
    --workbench-composer-send-min-width: 68px;
  }
}

/* v0.76: 任务列表和视频创建页也接入统一工作台壳层。
   四个任务模块共用同一套任务栏、结果滚动层和边界；页面外层不再因旧版
   workspace 规则截断列表，创建表单也只在中间工作区内滚动。 */
body:has(.module-list-workbench) {
  overflow-x: clip !important;
  overflow-y: hidden !important;
}
body:has(.module-list-workbench) .layout {
  height: 100vh;
  min-height: 0;
  overflow: hidden;
}
body:has(.module-list-workbench) .workspace {
  height: 100%;
  min-height: 0;
  padding: 0;
  overflow: hidden;
}
body:has(.module-list-workbench) .module-list-workbench {
  display: grid;
  grid-template-rows: var(--workbench-taskbar-height) minmax(0, 1fr);
  gap: var(--module-edge-gap);
  height: 100%;
  min-height: 0;
  padding-top: var(--module-edge-gap);
  box-sizing: border-box;
}
body:has(.module-list-workbench) .module-list-workbench > .module-list-stage-shell {
  width: 100%;
  min-width: 0;
  min-height: 0;
  margin: 0;
  padding: 0;
  overflow: hidden;
}
body:has(.module-list-workbench) .module-list-workbench > .module-list-stage-shell > .module-list-scroll {
  width: 100%;
  height: 100%;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-gutter: stable;
}
body:has(.module-list-workbench) .module-list-workbench .module-list-stage {
  width: 100%;
  min-height: 100%;
  box-sizing: border-box;
}
body:has(.module-list-workbench) .module-list-workbench .task-list-heading {
  padding-top: 0;
}
body:has(.module-list-workbench) .sidebar,
body:has(.module-list-workbench) .recent-work-rail {
  position: sticky;
  top: 0;
  height: 100vh;
  max-height: 100vh;
}

body:has(.video-create-workbench) {
  overflow-x: clip !important;
  overflow-y: hidden !important;
}
body:has(.video-create-workbench) .layout {
  height: 100vh;
  min-height: 0;
  overflow: hidden;
}
body:has(.video-create-workbench) .workspace {
  height: 100%;
  min-height: 0;
  padding: 0;
  overflow: hidden;
}
body:has(.video-create-workbench) .video-create-workbench {
  display: grid;
  grid-template-rows: var(--workbench-taskbar-height) minmax(0, 1fr);
  gap: var(--module-edge-gap);
  height: 100%;
  min-height: 0;
  padding-top: var(--module-edge-gap);
  box-sizing: border-box;
}
body:has(.video-create-workbench) .video-create-workbench > .video-module-stage {
  display: flex;
  width: 100%;
  min-width: 0;
  min-height: 0;
  margin: 0;
  padding: 0;
  overflow: hidden;
}
body:has(.video-create-workbench) .video-create-workbench > .video-module-stage > .media-output-scroll {
  width: 100%;
  height: 100%;
  min-height: 0;
  padding: 0 var(--module-edge-gap) var(--module-edge-gap);
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-gutter: stable;
  box-sizing: border-box;
}
body:has(.video-create-workbench) .bilibili-module-layout,
body:has(.video-create-workbench) .bilibili-job-main {
  width: 100%;
  min-width: 0;
  min-height: 100%;
  margin: 0 auto;
  box-sizing: border-box;
}
body:has(.video-create-workbench) .bilibili-job-main {
  width: min(1080px, 100%);
  padding-bottom: var(--module-edge-gap);
}
body:has(.video-create-workbench) .video-create-workbench .module-taskbar {
  overflow: hidden;
}
body:has(.video-create-workbench) .video-create-workbench .production-header-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  min-width: 0;
  max-width: 100%;
  gap: var(--workbench-button-gap);
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
}
body:has(.video-create-workbench) .video-create-workbench .production-header-actions::-webkit-scrollbar { display: none; }
body:has(.video-create-workbench) .video-create-workbench .module-taskbar-tabs-inline {
  display: flex;
  flex: 0 1 auto;
  align-items: center;
  min-width: 0;
  max-width: 100%;
  margin: 0;
  padding: 0;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
}
body:has(.video-create-workbench) .video-create-workbench .module-taskbar-tabs-inline::-webkit-scrollbar { display: none; }
body:has(.video-create-workbench) .video-create-workbench .module-taskbar-tabs-inline .video-production-tab {
  flex: 0 0 auto;
  min-height: var(--workbench-taskbar-action-height);
  height: var(--workbench-taskbar-action-height);
  padding: 0 var(--workbench-button-padding-inline-small);
  color: var(--workbench-color-text-secondary);
  border: 1px solid var(--workbench-color-control-border);
  border-radius: var(--workbench-radius-sm);
  background: var(--workbench-color-surface-subtle);
  font-size: var(--workbench-taskbar-action-font-size);
  line-height: 1;
  white-space: nowrap;
}
body:has(.video-create-workbench) .video-create-workbench .module-taskbar-tabs-inline .video-production-tab.active {
  color: var(--workbench-color-text);
  border-color: var(--workbench-color-border-accent);
  background: var(--workbench-color-accent-surface);
}

@media (max-width: 760px) {
  body:has(.module-list-workbench),
  body:has(.video-create-workbench) {
    overflow-y: auto !important;
  }
  body:has(.module-list-workbench) .layout,
  body:has(.video-create-workbench) .layout {
    height: auto;
    min-height: 100vh;
    overflow: visible;
  }
  body:has(.module-list-workbench) .sidebar,
  body:has(.video-create-workbench) .sidebar {
    position: static;
    height: auto;
    max-height: none;
    overflow: visible;
  }
  body:has(.module-list-workbench) .workspace,
  body:has(.video-create-workbench) .workspace {
    height: auto;
    min-height: 0;
    overflow: visible;
    padding: 0 var(--module-edge-gap) var(--module-edge-gap);
  }
  body:has(.module-list-workbench) .module-list-workbench,
  body:has(.video-create-workbench) .video-create-workbench {
    height: auto;
    min-height: calc(100vh - 24px);
  }
  body:has(.module-list-workbench) .module-list-workbench > .module-list-stage-shell,
  body:has(.video-create-workbench) .video-create-workbench > .video-module-stage {
    min-height: 0;
  }
  body:has(.module-list-workbench) .module-list-workbench > .module-list-stage-shell > .module-list-scroll,
  body:has(.video-create-workbench) .video-create-workbench > .video-module-stage > .media-output-scroll {
    height: auto;
    min-height: 0;
    overflow: visible;
  }
  body:has(.video-create-workbench) .video-create-workbench {
    grid-template-rows: var(--workbench-taskbar-height) auto;
  }
}

/* v0.79: 任务与管理页统一交互层级；案例只有封面负责进入详情。 */
.case-card-v2 { grid-template-rows: auto auto auto; }
.case-card-open {
  display: block;
  align-self: start;
  border: 0;
  cursor: pointer;
}
.case-card-open .case-card-media { aspect-ratio: 3 / 4; }
.case-card-open:hover .case-card-media,
.case-card-open:focus-visible .case-card-media { border-color: transparent; box-shadow: none; }
.case-card-content { display: grid; gap: 10px; min-width: 0; padding: 0 13px 13px; }
.case-card-content h3 { display: -webkit-box; overflow: hidden; min-width: 0; min-height: 42px; margin: 0; color: var(--ink); font-size: var(--workbench-type-body); line-height: 1.45; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.case-card-content .case-card-footer { margin-top: 0; }
.case-review-image-button { display: block; flex: none; padding: 0; border: 0; border-radius: 7px; background: transparent; cursor: zoom-in; }
.case-review-image-button:focus-visible { outline: 2px solid var(--wb-accent); outline-offset: 2px; }
.case-review-image-button img { display: block; }

.task-center-toolbar { flex-wrap: wrap; align-items: center; }
.task-center-filter-form { display: flex; flex: 1 1 420px; flex-wrap: wrap; align-items: center; gap: 7px; min-width: 240px; }
.task-center-filter-form input { flex: 1 1 190px; min-width: 0; min-height: 34px; padding: 0 10px; }
.task-center-filter-form select { min-height: 34px; max-width: 170px; padding: 0 9px; }
.task-technical-details { margin-top: 2px; padding-top: 6px; border-top: 1px solid transparent; }
.task-technical-details summary { width: fit-content; color: var(--muted); cursor: pointer; font-size: var(--workbench-type-meta); }
.task-technical-details .task-snapshot-line { display: block; margin-top: 7px; }
.task-technical-details pre { max-height: 180px; overflow: auto; margin: 7px 0 0; padding: 8px; color: var(--muted); border-radius: 7px; background: var(--wb-selected); font: var(--workbench-type-meta)/1.5 ui-monospace, SFMono-Regular, Menlo, monospace; white-space: pre-wrap; }
.task-error { display: grid; gap: 3px; }
.task-error strong { color: var(--wb-text); font-size: var(--workbench-type-support); }
.task-error span { color: var(--wb-text); font-size: var(--workbench-type-support); line-height: 1.55; }

.project-settings-strip { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 18px; margin: 0 0 14px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--wb-selected); }
.project-settings-strip > div { display: grid; flex: 1 1 240px; gap: 3px; min-width: 0; }
.project-settings-strip > div span, .project-setting-value { color: var(--muted); font-size: var(--workbench-type-support); line-height: 1.45; }
.project-industry-select { display: inline-grid; grid-template-columns: auto minmax(140px, 1fr); align-items: center; gap: 8px; color: var(--muted); font-size: var(--workbench-type-support); }
.project-industry-select select { min-height: 32px; padding: 0 8px; }
.project-instructions-status { display: block; min-height: 16px; margin-top: 6px; color: var(--muted); font-size: var(--workbench-type-meta); }
.admin-project-card.is-dirty { border-color: transparent; box-shadow: none; }
.admin-project-permission-footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding-top: 4px; border-top: 1px solid var(--line); }
.admin-project-permission-footer > span { color: var(--muted); font-size: var(--workbench-type-meta); }

.module-nav-resources { margin-top: 12px; padding-top: 12px; border-top: 0; }
.module-nav-operations { margin-top: 12px; padding-top: 12px; border-top: 0; }

@media (max-width: 760px) {
  .module-nav { display: grid; gap: 8px; overflow: visible; }
  .module-nav-group { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; width: 100%; max-width: none; min-width: 0; overflow: visible; }
  .module-nav-group-label { grid-column: 1 / -1; }
  .module-nav-item { width: 100%; min-width: 0; max-width: none; }
  .module-nav-item > span:first-child { overflow: hidden; text-overflow: ellipsis; }
  .task-center-filter-form { flex-basis: 100%; }
  .task-center-filter-form input, .task-center-filter-form select { flex: 1 1 100%; max-width: none; width: 100%; }
  .project-settings-strip { align-items: stretch; }
  .project-industry-select { grid-template-columns: 1fr; width: 100%; }
  .project-industry-select select { width: 100%; }
  .project-image-asset { grid-template-columns: 88px minmax(0, 1fr); gap: 10px; }
  .project-image-asset-preview { min-height: 88px; padding: 6px; }
  .project-image-asset-preview img { max-height: 96px; }
}

/* v0.77: 智能对话先显示用户消息，再等待模型返回，避免长请求期间工作区像没有响应。 */
.workbench-message.is-pending {
  opacity: .82;
}
.workbench-message.is-pending:not(.is-failed) {
  box-shadow: none;
}
.workbench-message.is-pending .workbench-message-status {
  display: block;
  margin-top: 8px;
  color: var(--wb-text);
  font-size: var(--workbench-type-meta);
  line-height: 1.4;
}
.workbench-message.is-pending.is-failed .workbench-message-status {
  color: var(--wb-text);
}

/* v0.82: 管理员员工产出。复用任务原记录和素材路径，不建立第二份媒体副本。 */
.admin-output-filter-panel { grid-template-columns: repeat(6, minmax(120px, 1fr)) auto; }
.admin-output-search-field { min-width: 170px; }
.admin-output-layout { display: grid; grid-template-columns: minmax(270px, 0.38fr) minmax(0, 1fr); gap: var(--workbench-space-4); align-items: start; }
.admin-output-list { display: grid; align-content: start; gap: var(--workbench-space-2); min-width: 0; max-height: calc(100vh - 310px); overflow: auto; padding-right: 2px; }
.admin-output-row { display: grid; gap: 7px; width: 100%; padding: 13px 14px; color: var(--workbench-color-text); border: 1px solid var(--workbench-color-border); border-radius: var(--workbench-radius-md); background: var(--workbench-color-surface); text-align: left; cursor: pointer; }
.admin-output-row:hover { border-color: var(--workbench-color-border-strong); background: var(--workbench-color-surface-hover); }
.admin-output-row.is-active { border-color: var(--workbench-color-border-accent); background: var(--workbench-color-accent-surface); box-shadow: none; }
.admin-output-row-top { display: flex; align-items: center; justify-content: space-between; gap: 9px; min-width: 0; }
.admin-output-row-top strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin-output-row-meta, .admin-output-row-summary, .admin-output-row small { overflow: hidden; color: var(--workbench-color-text-secondary); font-size: var(--workbench-font-size-body); line-height: var(--workbench-line-normal); text-overflow: ellipsis; white-space: nowrap; }
.admin-output-row-summary { color: var(--workbench-color-text-muted); font-size: var(--workbench-font-size-body); }
.admin-output-row small { color: var(--workbench-color-text-muted); font-size: var(--workbench-font-size-xs); }
.admin-output-row-failure { display: grid; gap: 3px; min-width: 0; color: var(--workbench-color-danger); font-size: var(--workbench-font-size-xs); line-height: var(--workbench-line-normal); }
.admin-output-row-failure strong { color: var(--workbench-color-danger); font-weight: 700; }
.admin-output-row-failure span { display: -webkit-box; overflow: hidden; color: var(--workbench-color-text-secondary); overflow-wrap: anywhere; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.admin-output-row .status-badge { flex: none; }
.admin-output-list-empty, .admin-output-detail-empty { display: grid; gap: 7px; padding: 28px 18px; color: var(--workbench-color-text-secondary); border: 1px dashed var(--workbench-color-border); border-radius: var(--workbench-radius-md); text-align: center; }
.admin-output-list-empty strong, .admin-output-detail-empty strong { color: var(--workbench-color-text); }
.admin-output-pagination { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 5px 2px 0; color: var(--workbench-color-text-muted); font-size: var(--workbench-font-size-xs); }
.admin-output-pagination button:disabled { opacity: .45; cursor: default; }
.admin-output-detail { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--workbench-space-4); min-width: 0; padding: 18px; border: 1px solid var(--workbench-color-border); border-radius: var(--workbench-radius-lg); background: var(--workbench-color-surface); }
.admin-output-history { display: grid; gap: 12px; min-width: 0; padding-bottom: 16px; border-bottom: 1px solid var(--workbench-color-border); }
.admin-output-history.is-empty { padding: 12px 14px; border: 1px dashed var(--workbench-color-border); border-radius: var(--workbench-radius-md); }
.admin-output-history .section-heading { align-items: start; margin: 0; }
.admin-output-history .section-heading h4 { margin: 2px 0 0; color: var(--workbench-color-text); font-size: var(--workbench-font-size-title); }
.admin-output-history .section-heading p:not(.eyebrow) { margin: 4px 0 0; color: var(--workbench-color-text-muted); font-size: var(--workbench-font-size-xs); }
.admin-output-history .workbench-message-list { display: grid; gap: 12px; min-width: 0; max-height: none; margin: 0; padding: 0; }
.admin-output-history .workbench-message-turn { display: grid; min-width: 0; }
.admin-output-history .workbench-message { min-width: 0; max-width: 100%; }
.admin-output-history .workbench-message > header { margin-bottom: 2px; }
.admin-output-history .workbench-message > header > div { display: flex; align-items: center; gap: 8px; min-width: 0; }
.admin-output-history .workbench-message > header span { color: var(--workbench-color-text-muted); }
.admin-output-history .workbench-message > p, .admin-output-history .workbench-message-markdown { min-width: 0; overflow-wrap: anywhere; word-break: break-word; }
.admin-output-history .workbench-message.is-user { width: fit-content; max-width: min(88%, 760px); }
.admin-output-history .workbench-message.is-system { padding: 9px 11px; border-left: 2px solid var(--workbench-color-border-strong); background: var(--wb-selected); }
.admin-output-history .workbench-message.is-failed { border-color: transparent; }
.admin-readonly-badge { display: inline-flex; align-items: center; min-height: 24px; padding: 0 9px; color: var(--workbench-color-text-secondary); border: 1px solid var(--workbench-color-border); border-radius: var(--workbench-radius-pill); font-size: var(--workbench-font-size-xs); white-space: nowrap; }
.admin-output-note-workspaces { display: grid; gap: 18px; min-width: 0; }
.admin-output-note-workspace { display: grid; gap: 10px; min-width: 0; padding: 14px; border: 1px solid var(--workbench-color-border); border-radius: var(--workbench-radius-md); background: var(--wb-selected); }
.admin-output-note-workspace .section-heading { margin: 0; }
.admin-output-note-workspace .section-heading h4 { margin: 0; color: var(--workbench-color-text); font-size: var(--workbench-font-size-title); }
.admin-output-note-workspace .section-heading p { margin: 3px 0 0; color: var(--workbench-color-text-muted); font-size: var(--workbench-font-size-xs); }
.admin-output-note-workspace .workbench-message-list { gap: 12px; max-height: none; margin: 0; padding: 0; }
.admin-output-note-workspace .workbench-message { max-width: 100%; }
.admin-output-note-workspace .workbench-message.is-user { width: fit-content; max-width: min(88%, 760px); }
.admin-output-note-workspace .workbench-message.is-system { padding: 9px 11px; border-left: 2px solid var(--workbench-color-border-strong); background: var(--wb-selected); }
.admin-output-detail-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding-bottom: 14px; border-bottom: 1px solid var(--workbench-color-border); }
.admin-output-detail-head > div:first-child { min-width: 0; flex: 1 1 auto; }
.admin-output-detail-head h3 { min-width: 0; max-width: 100%; margin: 2px 0 5px; font-size: var(--workbench-font-size-section); line-height: var(--workbench-line-tight); overflow-wrap: anywhere; word-break: break-word; }
.admin-output-detail-head p, .admin-output-detail-status small { min-width: 0; max-width: 100%; margin: 0; color: var(--workbench-color-text-secondary); font-size: var(--workbench-font-size-body); line-height: var(--workbench-line-normal); overflow-wrap: anywhere; word-break: break-word; }
.admin-output-detail-status { display: grid; max-width: 100%; flex: none; justify-items: end; gap: 6px; }
.admin-output-detail-note-list { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; min-width: 0; }
.admin-output-note { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; min-width: 0; padding-bottom: 14px; border-bottom: 1px solid var(--workbench-color-border); }
.admin-output-note:last-child { padding-bottom: 0; border-bottom: 0; }
.admin-output-note-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.admin-output-note-head > div { display: grid; gap: 4px; min-width: 0; flex: 1 1 auto; }
.admin-output-note-head strong, .admin-output-note-head small { min-width: 0; max-width: 100%; overflow-wrap: anywhere; word-break: break-word; }
.admin-output-note-head strong { color: var(--workbench-color-text); font-size: var(--workbench-font-size-title); line-height: var(--workbench-line-normal); }
.admin-output-note-head small { color: var(--workbench-color-text-muted); font-size: var(--workbench-font-size-xs); line-height: var(--workbench-line-normal); }
.admin-output-copy, .admin-output-detail-block, .admin-output-failure { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; min-width: 0; }
.admin-output-failure { padding: 12px 14px; border: 1px solid transparent; border-radius: var(--workbench-radius-md); background: var(--wb-selected); }
.admin-output-failure .result-label { color: var(--workbench-color-danger); }
.admin-output-failure-body, .admin-output-body, .admin-output-request, .admin-output-json, .admin-output-copy > strong, .admin-output-cta, .admin-output-visual-summary { min-width: 0; max-width: 100%; box-sizing: border-box; overflow-wrap: anywhere; word-break: break-word; }
.admin-output-failure-body { max-height: 220px; overflow: auto; color: var(--workbench-color-text-secondary); }
.admin-output-copy > strong { color: var(--workbench-color-text); font-size: var(--workbench-font-size-title); line-height: var(--workbench-line-normal); }
.admin-output-body { max-height: 380px; overflow: auto; color: var(--workbench-color-text-secondary); font-size: var(--workbench-font-size-body); line-height: 1.75; white-space: normal; }
.admin-output-request { max-height: 180px; overflow: auto; }
.admin-output-json { max-height: 260px; overflow: auto; font: var(--workbench-type-support)/1.6 ui-monospace, SFMono-Regular, Menlo, monospace; white-space: pre-wrap; }
.admin-output-facts, .admin-output-tags { display: flex; flex-wrap: wrap; gap: 7px; }
.admin-output-facts span, .admin-output-tags span { min-width: 0; max-width: 100%; padding: 5px 8px; color: var(--workbench-color-text-secondary); border: 1px solid var(--workbench-color-border); border-radius: var(--workbench-radius-pill); font-size: var(--workbench-font-size-xs); overflow-wrap: anywhere; word-break: break-word; }
.admin-output-cta, .admin-output-visual-summary { margin: 0; color: var(--workbench-color-text-secondary); font-size: var(--workbench-font-size-body); line-height: var(--workbench-line-normal); }
.admin-output-cta span { margin-right: 8px; color: var(--workbench-color-text-muted); }
.admin-output-image-strip { display: flex; flex-wrap: wrap; gap: 10px; }
.admin-output-image-button { display: grid; gap: 5px; width: 104px; padding: 0; color: var(--workbench-color-text-secondary); border: 0; background: transparent; text-align: left; cursor: zoom-in; }
.admin-output-image-button img, .admin-output-image-missing { display: block; width: 104px; height: 132px; border: 1px solid var(--workbench-color-border); border-radius: 8px; background: var(--wb-selected); object-fit: cover; }
.admin-output-image-button:hover img, .admin-output-image-button:focus-visible img { border-color: var(--workbench-color-border-accent); box-shadow: none; }
.admin-output-image-button span { overflow: hidden; font-size: var(--workbench-font-size-xs); text-overflow: ellipsis; white-space: nowrap; }
.admin-output-image-missing { display: grid; align-content: center; justify-items: center; gap: 4px; color: var(--workbench-color-text-muted); font-size: var(--workbench-font-size-xs); text-align: center; }
.admin-output-image-missing small { color: var(--workbench-color-text-muted); font-size: var(--workbench-type-meta); }
@media (max-width: 1000px) { .admin-output-filter-panel { grid-template-columns: repeat(3, minmax(120px, 1fr)); } }
@media (max-width: 900px) { .admin-output-layout { grid-template-columns: 1fr; } .admin-output-list { max-height: 360px; } .admin-output-filter-panel { grid-template-columns: repeat(2, minmax(130px, 1fr)); } }
@media (max-width: 560px) { .admin-output-filter-panel { grid-template-columns: 1fr; } .admin-output-detail-head, .admin-output-note-head { display: grid; } .admin-output-detail-status { justify-items: start; } }

/* v0.83: 案例中心与项目知识共用管理页外边界，内容紧贴中间工作区边缘。 */
body.management-page-body .workspace.case-center-workspace {
  width: 100%;
  min-width: 0;
  min-height: 100vh;
  margin: 0;
  padding: var(--module-edge-gap) 0 64px;
  box-sizing: border-box;
}
body.management-page-body .case-center-page {
  display: grid;
  align-content: start;
  gap: 0;
}
body.management-page-body .case-center-content { gap: 18px; }
body.management-page-body .case-center-main { gap: 18px; }

@media (max-width: 760px) {
  body.management-page-body .workspace.case-center-workspace { padding: var(--module-edge-gap) 0 64px; }
  body.management-page-body .case-center-page > .page-head { margin-bottom: 13px; }
}

/* v0.85: 三个功能分组共用一个导航滚动区，账号区固定在侧边栏底部。 */
body:has(.layout) .sidebar {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  align-content: stretch;
  min-height: 0;
  box-sizing: border-box;
  overflow: hidden;
}
body:has(.layout) .sidebar > .sidebar-brand {
  min-width: 0;
}
body:has(.layout) .sidebar > .module-nav {
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  padding-bottom: var(--module-edge-gap);
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
  scrollbar-color: var(--wb-text);
  scrollbar-width: thin;
}
body:has(.layout) .sidebar > .module-nav > .module-nav-group {
  max-height: none;
  overflow: visible;
}
body:has(.layout) .sidebar > .module-nav::-webkit-scrollbar { width: 5px; }
body:has(.layout) .sidebar > .module-nav::-webkit-scrollbar-track { background: transparent; }
body:has(.layout) .sidebar > .module-nav::-webkit-scrollbar-thumb { border-radius: 999px; background: var(--wb-selected); }
body:has(.layout) .sidebar > .shell-user-menu {
  flex: 0 0 var(--workbench-nav-item-height);
  min-height: var(--workbench-nav-item-height);
  margin-top: var(--module-edge-gap);
  box-sizing: border-box;
  background: var(--wb-selected);
}

body.management-page-body .workspace:has(.project-settings-strip) > .page-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: var(--module-edge-gap);
  margin-bottom: var(--module-edge-gap);
  padding-bottom: var(--module-edge-gap);
  border-bottom: 1px solid transparent;
}
body.management-page-body .workspace:has(.project-settings-strip) > .page-head > div:first-child { min-width: 0; }
body.management-page-body .workspace:has(.project-settings-strip) > .page-head .page-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: var(--workbench-button-gap);
  min-width: 0;
}
body.management-page-body .workspace:has(.project-settings-strip) .project-knowledge-select {
  display: inline-grid;
  grid-template-columns: auto minmax(180px, 230px);
  align-items: center;
  gap: 8px;
  min-width: 0;
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-font-size-sm);
}
body.management-page-body .workspace:has(.project-settings-strip) .project-knowledge-select select {
  width: 100%;
  min-width: 0;
  min-height: var(--workbench-button-height-small);
  padding: 0 var(--workbench-button-padding-inline-small);
}
body.management-page-body .workspace:has(.project-settings-strip) .project-industry-select {
  display: inline-grid;
  grid-template-columns: auto minmax(150px, 200px);
  align-items: center;
  gap: 8px;
  min-width: 0;
  margin-left: 0;
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-font-size-sm);
}
body.management-page-body .workspace:has(.project-settings-strip) .project-industry-select select {
  width: 100%;
  min-width: 0;
  min-height: var(--workbench-button-height-small);
  padding: 0 var(--workbench-button-padding-inline-small);
}
body.management-page-body .workspace:has(.project-settings-strip) .page-actions > .primary,
body.management-page-body .workspace:has(.project-settings-strip) .page-actions > .secondary,
body.management-page-body .workspace:has(.project-settings-strip) .page-actions > .text {
  min-height: var(--workbench-button-height-small);
}
body.management-page-body .workspace:has(.project-settings-strip) .project-settings-strip {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(360px, auto);
  align-items: center;
  gap: var(--module-edge-gap);
  margin-bottom: var(--module-edge-gap);
  padding: 10px 12px;
}
body.management-page-body .workspace:has(.project-settings-strip) .project-settings-strip > div { min-width: 0; }
body.management-page-body .workspace:has(.project-settings-strip) .project-settings-identity small { color: var(--workbench-color-text-muted); font-size: var(--workbench-font-size-xs); }
body.management-page-body .workspace:has(.project-settings-strip) .project-industry-setting {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: 5px var(--workbench-button-gap);
  min-width: 360px;
}
body.management-page-body .workspace:has(.project-settings-strip) .project-industry-setting label {
  display: grid;
  grid-template-columns: auto minmax(170px, 220px);
  align-items: center;
  gap: 8px;
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-font-size-sm);
}
body.management-page-body .workspace:has(.project-settings-strip) .project-industry-setting select { width: 100%; min-width: 0; min-height: var(--workbench-button-height-small); padding: 0 var(--workbench-button-padding-inline-small); }
body.management-page-body .workspace:has(.project-settings-strip) .project-industry-setting button { min-height: var(--workbench-button-height-small); }
body.management-page-body .workspace:has(.project-settings-strip) .project-industry-setting small { grid-column: 1 / -1; color: var(--workbench-color-text-muted); font-size: var(--workbench-font-size-xs); line-height: 1.45; }
body.management-page-body .workspace:has(.project-settings-strip) .project-industry-setting.is-readonly { grid-template-columns: 1fr; align-items: start; min-width: 240px; }
body.management-page-body .workspace:has(.project-settings-strip) .project-quick-actions {
  gap: var(--workbench-button-gap);
  margin: 0 0 var(--module-edge-gap);
}
body.management-page-body .workspace:has(.project-settings-strip) .project-knowledge-meta {
  gap: var(--workbench-button-gap);
  margin: 0 0 var(--module-edge-gap);
}
body.management-page-body .workspace:has(.project-settings-strip) .project-knowledge-meta span {
  padding: 5px 8px;
  font-size: var(--workbench-font-size-xs);
}
body.management-page-body .workspace:has(.project-settings-strip) .project-workspace-grid {
  gap: var(--module-edge-gap);
}

@media (max-width: 760px) {
  .project-prompt-item { flex-direction: column; }
  .project-prompt-actions { width: 100%; justify-content: flex-end; }
  body:has(.layout) .sidebar { display: flex; }
  body:has(.layout) .sidebar > .module-nav { overflow: visible; padding-bottom: 0; }
  body:has(.layout) .sidebar > .shell-user-menu { margin-top: var(--module-edge-gap); }
  body.management-page-body .workspace:has(.project-settings-strip) > .page-head {
    grid-template-columns: 1fr;
    align-items: stretch;
  }
  body.management-page-body .workspace:has(.project-settings-strip) > .page-head .page-actions {
    justify-content: stretch;
  }
  body.management-page-body .workspace:has(.project-settings-strip) .project-knowledge-select {
    flex: 1 1 100%;
    grid-template-columns: auto minmax(0, 1fr);
  }
  body.management-page-body .workspace:has(.project-settings-strip) .project-industry-select {
    flex: 1 1 100%;
    grid-template-columns: auto minmax(0, 1fr);
  }
  body.management-page-body .workspace:has(.project-settings-strip) .project-settings-strip {
    grid-template-columns: 1fr;
    gap: 8px;
  }
  body.management-page-body .workspace:has(.project-settings-strip) .project-industry-setting { grid-template-columns: minmax(0, 1fr) auto; min-width: 0; width: 100%; }
  body.management-page-body .workspace:has(.project-settings-strip) .project-industry-setting label { grid-template-columns: 1fr; align-items: stretch; }
}

/* v0.86: 首页压缩首屏并让模块卡片承担明确的进入动作。 */
body.home-page-body .home-hero {
  grid-template-columns: minmax(0, 1fr);
  min-height: 112px;
  padding: 22px 24px;
}
body.home-page-body .home-hero-content { gap: 4px; }
body.home-page-body .home-hero h2 { font-size: clamp(26px, 3.2vw, 36px); }
body.home-page-body .home-hero-content p:not(.eyebrow) { margin-top: 2px; font-size: var(--workbench-type-support); line-height: 1.5; }
body.home-page-body .home-section { margin-top: var(--module-edge-gap); }
body.home-page-body .home-section .section-heading { margin-bottom: 10px; }
body.home-page-body .home-section .section-heading h3 { font-size: var(--workbench-font-size-section); }
body.home-page-body .module-cards {
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: var(--module-edge-gap);
}
body.home-page-body .module-card {
  min-height: 126px;
  gap: 6px;
  padding: 14px;
}
body.home-page-body .module-card-icon { width: 30px; height: 30px; border-radius: 8px; font-size: var(--workbench-type-section-title); }
body.home-page-body .module-card strong { font-size: var(--workbench-font-size-title); }
body.home-page-body .module-card p {
  display: -webkit-box;
  overflow: hidden;
  margin: 0;
  font-size: var(--workbench-font-size-sm);
  line-height: var(--workbench-line-normal);
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1;
}
body.home-page-body .module-card small { margin-top: auto; color: var(--workbench-color-text-secondary); font-size: var(--workbench-font-size-xs); }

@media (max-width: 760px) {
  body.home-page-body .home-hero { min-height: 96px; padding: 18px 16px; }
  body.home-page-body .module-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  body.home-page-body .module-card { min-height: 116px; padding: 12px; }
}

/* v0.87: 案例允许绑定项目，但项目关系保持为轻量归档和学习相关性信息。 */
.case-create-project-row {
  display: grid;
  grid-template-columns: minmax(220px, 1fr);
  gap: var(--workbench-space-2);
  margin-top: var(--workbench-space-2);
}
.case-create-project-row label {
  display: grid;
  gap: var(--workbench-space-1);
}
.case-create-project-row small,
.case-meta-inline-help {
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-font-size-xs);
  line-height: var(--workbench-line-normal);
}
.case-card-title-status {
  flex-wrap: wrap;
  gap: var(--workbench-space-1) var(--workbench-space-2);
}
.case-card-project {
  overflow: hidden;
  max-width: 100%;
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-font-size-xs);
  line-height: var(--workbench-line-tight);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.case-center-filters #case-project-filter {
  min-width: 132px;
}
.case-meta-inline-form select[name="project_id"] {
  min-width: 180px;
}

@media (max-width: 760px) {
  .case-center-filters #case-project-filter,
  .case-meta-inline-form select[name="project_id"] {
    min-width: 0;
    width: 100%;
  }
}

/* v0.90: 图片任务采用单一对话流，版本信息跟随每次图片产出呈现。 */
.image-conversation-stream {
  display: grid;
  gap: var(--workbench-space-3);
  min-width: 0;
  margin: 0;
}
.workbench-message-list {
  display: grid;
  gap: var(--workbench-space-4);
  min-width: 0;
}
.workbench-message {
  display: grid;
  gap: var(--workbench-space-2);
  min-width: 0;
  max-width: 100%;
  padding: 0;
}
.workbench-message > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--workbench-space-3);
  min-width: 0;
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-font-size-xs);
}
.workbench-message > header > div {
  display: flex;
  align-items: center;
  gap: var(--workbench-space-2);
  min-width: 0;
}
.workbench-message > header strong {
  color: var(--workbench-color-text);
  font-size: var(--workbench-font-size-sm);
  font-weight: 700;
}
.workbench-message > header span {
  overflow: hidden;
  min-width: 0;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.workbench-message > header time {
  flex: none;
  white-space: nowrap;
}
.workbench-message > p {
  margin: 0;
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-font-size-body);
  line-height: var(--workbench-line-normal);
  overflow-wrap: anywhere;
  white-space: pre-wrap;
}
.workbench-message.is-user {
  justify-self: end;
  width: fit-content;
  max-width: min(78%, 680px);
  padding: var(--workbench-space-3) var(--workbench-space-4);
  border-radius: 15px 15px 4px 15px;
  background: var(--workbench-color-accent-soft);
  color: var(--wb-text);
}
.workbench-message.is-user > header {
  color: var(--wb-text);
}
.workbench-message.is-user > header strong,
.workbench-message.is-user > p {
  color: var(--wb-text);
}
.workbench-message.is-system {
  padding: var(--workbench-space-2) var(--workbench-space-3);
  border-left: 2px solid var(--workbench-color-border-strong);
  background: var(--wb-selected);
}
.workbench-message.is-system > p {
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-font-size-sm);
}
.workbench-image-result {
  padding: var(--workbench-space-3);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-md);
  background: var(--wb-selected);
}
.workbench-image-result.is-assistant > header strong {
  color: var(--workbench-color-text);
}
.workbench-image-result > p {
  color: var(--workbench-color-text-secondary);
}
.workbench-image-diagnostics {
  margin-top: 10px;
  padding: 9px 11px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: var(--wb-selected);
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-font-size-sm);
}
.workbench-image-diagnostics strong {
  color: var(--wb-text);
}
.workbench-image-diagnostics p {
  margin: 4px 0 0;
}
.image-conversation-no-assets {
  color: var(--workbench-color-text-muted) !important;
  font-size: var(--workbench-font-size-sm) !important;
}
.image-conversation-summary{
  min-width: 0;
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-md);
  background: var(--wb-selected);
}
.image-conversation-summary > summary{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--workbench-space-3);
  min-height: 36px;
  padding: 0 var(--workbench-space-3);
  cursor: pointer;
  list-style: none;
}
.image-conversation-summary > summary::-webkit-details-marker{ display: none; }
.image-conversation-summary > summary::after{
  flex: none;
  color: var(--workbench-color-text-muted);
  content: '⌄';
  font-size: var(--workbench-type-body);
}
.image-conversation-summary[open] > summary::after{ content: '⌃'; }
.image-conversation-summary > summary strong{
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-font-size-sm);
}
.image-conversation-summary > summary span{
  overflow: hidden;
  min-width: 0;
  margin-left: auto;
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-font-size-xs);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.image-conversation-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--workbench-space-2);
  padding: 0 var(--workbench-space-3) var(--workbench-space-3);
}
.image-conversation-summary-grid > div {
  min-width: 0;
  padding-top: var(--workbench-space-2);
  border-top: 1px solid var(--workbench-color-border);
}
.image-conversation-summary-grid span {
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-font-size-xs);
}
.image-conversation-summary-grid p {
  display: -webkit-box;
  overflow: hidden;
  margin: 4px 0 0;
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-font-size-sm);
  line-height: var(--workbench-line-normal);
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}



.image-conversation-attachments {
  display: flex;
  flex-wrap: wrap;
  gap: var(--workbench-space-2);
  margin-top: var(--workbench-space-1);
}
.image-conversation-attachment {
  width: 56px;
  height: 56px;
  padding: 0;
  overflow: hidden;
  border: 1px solid transparent;
  border-radius: var(--workbench-radius-sm);
  background: var(--wb-selected);
  cursor: pointer;
}
.image-conversation-attachment img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.image-conversation-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(168px, 220px));
  align-items: start;
  justify-content: start;
  gap: var(--workbench-space-3);
  min-width: 0;
  padding-top: var(--workbench-space-1);
}
.image-conversation-image {
  min-width: 0;
  margin: 0;
  padding: var(--workbench-space-2);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-sm);
  background: var(--wb-selected);
}
.image-conversation-image .image-preview-trigger {
  display: block;
  width: 100%;
  padding: 0;
  overflow: hidden;
  border-radius: var(--workbench-radius-sm);
  background: var(--wb-selected);
}
.image-conversation-image .image-preview-trigger img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 300px;
  aspect-ratio: auto;
  object-fit: contain;
}
.image-conversation-image figcaption {
  overflow: hidden;
  margin-top: var(--workbench-space-2);
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-font-size-xs);
  line-height: var(--workbench-line-tight);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.image-conversation-image .image-asset-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 2px var(--workbench-space-2);
  margin-top: var(--workbench-space-1);
}
.image-conversation-image .image-asset-actions .small-action {
  min-height: 26px;
  margin: 0;
  padding: 0;
  font-size: var(--workbench-font-size-xs);
}
.image-job-detail > .image-conversation-stream { min-height: 0; }

@media (max-width: 760px) {
  .workbench-message.is-user { max-width: 90%; }
  .image-conversation-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .image-conversation-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .image-conversation-image .image-preview-trigger img { max-height: 240px; }
  .workbench-message > header time { display: inline; }
}

/* v0.88: keep the case project visible as a compact tag beside learning status. */
.case-card-title-status {
  align-items: center;
  flex-wrap: nowrap;
  gap: var(--workbench-space-1) var(--workbench-space-2);
  min-height: 20px;
}
.case-card-project-tag {
  display: inline-flex;
  align-items: center;
  min-width: 0;
  max-width: min(100%, 190px);
  padding: 2px 6px;
  border: 1px solid transparent;
  border-radius: 999px;
  background: var(--wb-selected);
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-font-size-xs);
  line-height: var(--workbench-line-tight);
}
.case-card-project-tag.is-unbound {
  border-color: transparent;
  background: transparent;
  color: var(--workbench-color-text-muted);
}
.case-card-project-label {
  flex: none;
  margin-right: 4px;
  color: var(--workbench-color-text-muted);
}
.case-card-project-name {
  overflow: hidden;
  min-width: 0;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* v0.89: keep the case taxonomy heading on two intentional rows. */
.case-center-taxonomy-head {
  display: grid;
  gap: var(--workbench-space-1);
  align-items: start;
}
.case-center-taxonomy-head-copy {
  display: grid;
  gap: var(--workbench-space-1);
  min-width: 0;
}
.case-center-taxonomy-head-copy h3,
.case-center-taxonomy-head-copy .muted {
  margin: 0;
  white-space: nowrap;
}
.case-center-taxonomy-head-copy h3 {
  color: var(--workbench-color-text);
  font-size: var(--workbench-font-size-body);
  line-height: var(--workbench-line-tight);
}
.case-center-taxonomy-head-copy .muted {
  font-size: var(--workbench-font-size-xs);
  line-height: var(--workbench-line-tight);
}

/* v0.78: show the model's current task understanding without exposing prompt internals. */
.image-task-understanding {
  display: grid;
  gap: var(--workbench-space-2);
  margin: 0 0 var(--module-edge-gap);
  padding: var(--workbench-space-3) var(--workbench-space-4);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-md);
  background: var(--wb-selected);
}
.image-task-understanding-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--workbench-space-3);
  min-width: 0;
}
.image-task-understanding-head strong { color: var(--workbench-color-text); font-size: var(--workbench-font-size-body); }
.image-task-understanding-head span { min-width: 0; color: var(--workbench-color-text-muted); font-size: var(--workbench-font-size-xs); line-height: 1.45; }
.image-task-understanding-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--workbench-space-2); }
.image-task-understanding-grid > div { min-width: 0; padding-top: var(--workbench-space-2); border-top: 1px solid var(--workbench-color-border); }
.image-task-understanding-grid span { color: var(--workbench-color-text-muted); font-size: var(--workbench-font-size-xs); }
.image-task-understanding-grid p { margin: 4px 0 0; overflow: hidden; color: var(--workbench-color-text-secondary); font-size: var(--workbench-font-size-sm); line-height: 1.45; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 760px) {
  .image-task-understanding { padding: var(--workbench-space-3); }
  .image-task-understanding-head { display: grid; gap: 4px; }
  .image-task-understanding-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* v0.96: 图片入口视觉层级收敛。
   紧凑输入区只保留一个中性按钮和一行提示；外层不再叠加绿色底色、边框和
   按钮底色。图片缩略图独立占位，避免把添加图片提示挤出或遮挡。 */
:root {
  --workbench-image-input-border: var(--workbench-color-border);
  --workbench-image-input-button-surface: transparent;
  --workbench-image-input-button-hover-surface: var(--workbench-color-surface-subtle);
}

.production-image-drop-zone {
  color: var(--workbench-color-text-secondary);
  border-color: var(--workbench-image-input-border);
  background: transparent;
}

.production-image-drop-zone .production-image-add {
  color: var(--workbench-color-text-secondary);
  border-color: transparent;
  background: transparent;
}

.production-image-drop-zone .production-image-add:hover,
.production-image-drop-zone .production-image-add:focus-visible {
  color: var(--workbench-color-text);
  border-color: var(--workbench-image-input-border);
  background: var(--workbench-image-input-button-hover-surface);
}

.production-image-drop-zone.is-dragging,
.production-image-drop-zone:focus-within {
  border-color: var(--workbench-color-accent);
  background: transparent;
}

.production-image-input-compact {
  width: 100%;
  max-width: none;
  gap: var(--workbench-space-2);
  overflow: hidden;
}

.production-image-input-compact .production-image-drop-zone {
  flex: 1 1 auto;
  width: auto;
  min-width: 0;
  max-width: none;
  padding: 0;
  border: 0;
  background: transparent;
}

.production-image-input-compact .production-image-drop-zone .production-image-add {
  flex: 0 0 auto;
  border-color: var(--workbench-image-input-border);
  background: var(--workbench-image-input-button-surface);
}

.production-image-input-compact .production-image-hint {
  min-width: 0;
  flex: 1 1 auto;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.production-image-input-compact .production-image-preview {
  flex: 0 0 auto;
  min-width: 0;
  margin-left: 0;
  overflow: visible;
}

.production-image-input-compact .production-image-remove {
  top: 1px;
  right: 1px;
  border-color: var(--workbench-color-bg);
  background: var(--workbench-color-surface-raised);
}

/* 普通表单保留一个可识别的拖拽边界，但取消绿色底色和内部按钮色块。 */
.production-image-input:not(.production-image-input-compact) .production-image-drop-zone {
  background: var(--workbench-color-surface);
  border-color: var(--workbench-image-input-border);
}

.production-image-input:not(.production-image-input-compact) .production-image-drop-zone .production-image-add {
  border-color: transparent;
  background: transparent;
}

@media (max-width: 760px) {
  .production-image-input-compact {
    gap: var(--workbench-space-1);
  }
}

/* v1.25: 四个生产模块共用一套两层字段任务栏。
   字段名在上、字段值在下；所有字段值同字号，右侧操作顺序保持不变。 */
body:has(.layout) .layout .work-taskbar {
  display: flex;
  align-items: center;
  gap: var(--workbench-space-3);
  overflow: hidden;
}

body:has(.layout) .layout .work-taskbar > :first-child,
body:has(.layout) .layout .work-taskbar-context,
body:has(.layout) .layout .work-taskbar-view {
  min-width: 0;
}

body:has(.layout) .layout .work-taskbar > :first-child {
  flex: 1 1 auto;
  overflow: hidden;
}

body:has(.layout) .layout .work-taskbar-context {
  display: flex;
  flex: 1 1 auto;
  align-items: center;
  width: 100%;
  height: 100%;
  overflow: hidden;
}

body:has(.layout) .layout .work-taskbar-view {
  display: flex;
  flex: 1 1 auto;
  inline-size: min(100%, var(--workbench-taskbar-four-field-width));
  height: 100%;
  align-items: stretch;
  gap: var(--workbench-space-3);
  overflow: hidden;
  white-space: nowrap;
}

/* The edit toggle uses the native hidden attribute. Keep the field view from
   participating in layout when the rename form is open. */
body:has(.layout) .layout .work-taskbar-view[hidden] {
  display: none !important;
}

body:has(.layout) .layout .work-taskbar-field {
  display: grid;
  flex: 1 1 0;
  grid-template-rows: auto auto;
  align-content: center;
  inline-size: 0;
  gap: var(--workbench-taskbar-field-gap);
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
}

body:has(.layout) .layout .work-taskbar-view[data-field-count="4"] .work-taskbar-field {
  flex-basis: var(--workbench-taskbar-field-width);
}
body:has(.layout) .layout :where(.work-taskbar-name, .work-taskbar-project, .work-taskbar-current) {
  flex: 1 1 0;
}
body:has(.layout) .layout .work-taskbar-field-label {
  overflow: hidden;
  color: var(--workbench-color-accent);
  font-size: var(--workbench-taskbar-field-label-size) !important;
  font-weight: 650;
  line-height: 1;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body:has(.layout) .layout .work-taskbar-field-value {
  min-width: 0;
  overflow: hidden;
  color: var(--workbench-color-text);
  font-size: var(--workbench-taskbar-field-value-size) !important;
  font-weight: 600;
  line-height: 1.15;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body:has(.layout) .layout .work-taskbar-actions {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: var(--workbench-taskbar-action-gap);
  overflow: visible;
}

body:has(.layout) .layout .work-taskbar-actions > :where(.primary, .text) {
  height: var(--workbench-taskbar-action-height);
  min-height: var(--workbench-taskbar-action-height);
  font-size: var(--workbench-taskbar-action-font-size);
  white-space: nowrap;
}

body:has(.layout) .layout .work-taskbar-actions > .danger-text {
  color: var(--wb-text);
  background: transparent;
}

body:has(.layout) .layout .work-taskbar-rename {
  display: flex;
  flex: 1 1 auto;
  align-items: center;
  width: 100%;
  min-width: 0;
  gap: 6px;
  overflow: hidden;
}
body:has(.layout) .layout .work-taskbar-rename[hidden] { display: none !important; }
body:has(.layout) .layout .work-taskbar-rename input {
  flex: 1 1 auto;
  width: auto;
  min-width: 0;
  max-width: none;
  height: 34px;
  min-height: 34px;
  text-overflow: ellipsis;
}
body:has(.layout) .layout .work-taskbar-rename :where(button, .small-action) {
  flex: 0 0 auto;
  white-space: nowrap;
}

@media (max-width: 1100px) {
  body:has(.layout) .layout { --workbench-taskbar-field-value-size: var(--workbench-font-size-sm); }
  body:has(.layout) .layout .work-taskbar-view { gap: var(--workbench-space-2); }
  body:has(.layout) .layout .work-taskbar-actions { gap: 3px; }
  body:has(.layout) .layout .work-taskbar-actions > :where(.primary, .text) { padding-inline: 7px; }
}

@media (max-width: 760px) {
  body:has(.layout) .layout .work-taskbar { gap: var(--workbench-space-1); }
  body:has(.layout) .layout .work-taskbar-view { gap: var(--workbench-space-1); }
  body:has(.layout) .layout .work-taskbar-actions > :where(.primary, .text) { padding-inline: 5px; }
}

/* v0.91: 笔记生产 Markdown 输出统一使用语义层级、字号和列表缩进。 */
:root {
  --workbench-markdown-title-size: 18px;
  --workbench-markdown-section-size: 16px;
  --workbench-markdown-subtitle-size: 14px;
  --workbench-markdown-body-size: 14px;
  --workbench-markdown-line-height: 1.75;
  --workbench-markdown-section-gap: 20px;
  --workbench-markdown-paragraph-gap: 12px;
}

body.notes-workbench-page .note-markdown,
body.notes-workbench-page .workbench-message-markdown {
  color: var(--workbench-color-text);
  font-size: var(--workbench-markdown-body-size);
  line-height: var(--workbench-markdown-line-height);
  overflow-wrap: anywhere;
}

/* v0.92: # 与 ## 都作为内容主标题，避免模型按方案输出 ## 后字号降级。 */
body.notes-workbench-page .note-markdown > h2,
body.notes-workbench-page .note-markdown > h3,
body.notes-workbench-page .workbench-message-markdown > h3 {
  margin: var(--workbench-markdown-section-gap) 0 10px;
  color: var(--workbench-color-text);
  font-size: var(--workbench-markdown-title-size);
  font-weight: 800;
  line-height: 1.35;
}

body.notes-workbench-page .note-markdown > h4,
body.notes-workbench-page .workbench-message-markdown > h4 {
  margin: 18px 0 8px;
  color: var(--workbench-color-text);
  font-size: var(--workbench-markdown-section-size);
  font-weight: 800;
  line-height: 1.45;
}

body.notes-workbench-page .note-markdown > h5,
body.notes-workbench-page .workbench-message-markdown > h5 {
  margin: 14px 0 6px;
  color: var(--workbench-color-text);
  font-size: var(--workbench-markdown-subtitle-size);
  font-weight: 780;
  line-height: 1.5;
}

body.notes-workbench-page .note-markdown > h6,
body.notes-workbench-page .workbench-message-markdown > h6 {
  margin: 12px 0 5px;
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-markdown-body-size);
  font-weight: 760;
  line-height: 1.55;
}

body.notes-workbench-page .note-markdown > p,
body.notes-workbench-page .workbench-message-markdown > p {
  margin: 0 0 var(--workbench-markdown-paragraph-gap);
}

body.notes-workbench-page .note-markdown > p:last-child,
body.notes-workbench-page .workbench-message-markdown > p:last-child {
  margin-bottom: 0;
}

body.notes-workbench-page .note-markdown > strong,
body.notes-workbench-page .workbench-message-markdown > strong,
body.notes-workbench-page .note-markdown strong,
body.notes-workbench-page .workbench-message-markdown strong {
  color: var(--workbench-color-text);
  font-weight: 780;
}

body.notes-workbench-page .note-markdown > ul,
body.notes-workbench-page .note-markdown > ol,
body.notes-workbench-page .workbench-message-markdown > ul,
body.notes-workbench-page .workbench-message-markdown > ol {
  display: grid;
  gap: 6px;
  margin: 10px 0 16px;
  padding-left: 26px;
}

body.notes-workbench-page .note-markdown li,
body.notes-workbench-page .workbench-message-markdown li {
  padding-left: 3px;
}

body.notes-workbench-page .note-markdown li::marker,
body.notes-workbench-page .workbench-message-markdown li::marker {
  color: var(--workbench-color-text-muted);
}

body.notes-workbench-page .note-markdown > blockquote,
body.notes-workbench-page .workbench-message-markdown > blockquote {
  margin: 14px 0 16px;
  padding: 2px 0 2px 14px;
  border-left: 2px solid transparent;
  color: var(--workbench-color-text-secondary);
}

body.notes-workbench-page .note-markdown > hr,
body.notes-workbench-page .workbench-message-markdown > hr {
  margin: var(--workbench-markdown-section-gap) 0;
  border: 0;
  border-top: 1px solid var(--workbench-color-border);
}

body.notes-workbench-page .direction-field-content.note-markdown {
  margin-top: 1px;
  font-size: var(--workbench-font-size-sm);
  line-height: 1.7;
}

body.notes-workbench-page .direction-field-content.note-markdown > p {
  margin-bottom: 8px;
}

@media (max-width: 600px) {
  :root {
    --workbench-markdown-title-size: 18px;
    --workbench-markdown-section-size: 16px;
    --workbench-markdown-subtitle-size: 14px;
    --workbench-markdown-body-size: 14px;
  }

  body.notes-workbench-page .note-markdown,
  body.notes-workbench-page .workbench-message-markdown {
    line-height: 1.72;
  }

  body.notes-workbench-page .note-markdown > ul,
  body.notes-workbench-page .note-markdown > ol,
  body.notes-workbench-page .workbench-message-markdown > ul,
  body.notes-workbench-page .workbench-message-markdown > ol {
    padding-left: 22px;
  }
}

/* v1.1: 工作台统一五级字号。
   只作用于已登录后的 .layout；登录页继续使用自己的字号。Markdown 的
   标题、列表、引用和代码结构不变，这里只给语义节点映射字号。 */
:root {
  --workbench-type-page-title: 18px;
  --workbench-type-section-title: 16px;
  --workbench-type-body: 14px;
  --workbench-type-support: 12px;
  --workbench-type-meta: 10px;
}

body:has(.layout) .layout,
body:has(.layout) .layout button,
body:has(.layout) .layout input,
body:has(.layout) .layout textarea,
body:has(.layout) .layout select {
  font-size: var(--workbench-type-body);
}

body:has(.layout) .sidebar .module-nav-item,
body:has(.layout) .sidebar .shell-user-menu,
body:has(.layout) .sidebar .shell-user-menu button {
  font-size: var(--workbench-type-body) !important;
  line-height: 1.5;
}

body:has(.layout) .sidebar .sidebar-brand h1 {
  font-size: var(--workbench-type-section-title) !important;
  line-height: 1.2;
}

body:has(.layout) .layout h1,
body:has(.layout) .layout .page-head :where(h1, h2),
body:has(.layout) .layout .workspace > :where(.page-head, .home-hero, .empty, .placeholder-page) :where(h1, h2),
body:has(.layout) .layout .task-title-view > h2,
body:has(.layout) .layout .conversation-title-view > strong,
body:has(.layout) .layout .case-note-copy-panel > h1,
body:has(.layout) .layout .workbench-markdown > h1,
body:has(.layout) .layout .note-markdown > h1 {
  font-size: var(--workbench-type-page-title) !important;
  line-height: 1.35;
}

body:has(.layout) .layout :where(h2, h3, h4, h5, h6),
body:has(.layout) .layout :where(.module-card > strong, .task-card-open > strong, .direction-card-title > strong, .recent-work-heading h2, .production-thread-heading h3),
body:has(.layout) .layout .workbench-markdown > :where(h2, h3, h4, h5, h6),
body:has(.layout) .layout .note-markdown > :where(h2, h3, h4, h5, h6) {
  font-size: var(--workbench-type-section-title) !important;
  line-height: 1.45;
}

body:has(.layout) .layout :where(p, li, blockquote, a, label, input, textarea, select, button, summary),
body:has(.layout) .layout :where(.module-card > p, .task-card-open > p, .recent-work-item strong, .task-history-event > p),
body:has(.layout) .layout .workbench-markdown > :where(p, li, blockquote, a),
body:has(.layout) .layout .note-markdown > :where(p, li, blockquote, a) {
  font-size: var(--workbench-type-body) !important;
  line-height: var(--workbench-line-relaxed);
}

body:has(.layout) .layout :where(code, pre, table, th, td, .form-help, .image-help, .module-card small, .production-image-hint, .production-image-drop-zone small, input::placeholder, textarea::placeholder),
body:has(.layout) .layout .workbench-markdown > :where(pre, table),
body:has(.layout) .layout .note-markdown > :where(pre, table) {
  font-size: var(--workbench-type-support) !important;
  line-height: 1.6;
}

body:has(.layout) .layout :where(small, time, figcaption, .eyebrow, .status-badge, .pill, .task-status, .case-meta, .task-center-meta, .task-card-open > small, .output-title > span, .version-caption, .note-index, .stage-version-badge, .task-call-count, [class$="-meta"]),
body:has(.layout) .sidebar :where(.eyebrow) {
  font-size: var(--workbench-type-meta) !important;
  line-height: 1.45;
}

body:has(.layout) .layout :where(.small, .small-action, .task-card-action, .production-image-add, .case-upload-remove) {
  font-size: var(--workbench-type-support) !important;
  line-height: 1.45;
}

body:has(.layout) .layout :where(.module-card small, .production-image-drop-zone small) {
  font-size: var(--workbench-type-support) !important;
}

body:has(.layout) .layout .module-card {
  min-height: 170px;
}

body:has(.layout) .layout .module-card > p {
  display: block;
  overflow: visible;
  -webkit-line-clamp: unset;
  line-clamp: unset;
}

body:has(.layout) .layout :where(.workbench-markdown, .note-markdown, .workbench-message-markdown) {
  font-size: var(--workbench-type-body) !important;
  line-height: var(--workbench-line-relaxed);
}

body:has(.layout) .layout :where(.workbench-markdown > pre, .note-markdown > pre, .workbench-message-markdown > pre) {
  max-width: 100%;
  overflow: auto;
  box-sizing: border-box;
}

body:has(.layout) .layout :where(.workbench-markdown > pre > code, .note-markdown > pre > code, .workbench-message-markdown > pre > code) {
  display: block;
  font: var(--workbench-type-support)/1.6 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace !important;
  white-space: pre;
}

/* v1.2: 统一工作台实际生效的字号和窄栏边界。
   历史样式仍可能出现在旧规则层，但登录后的工作台统一从这里开始只使用
   18 / 16 / 14 / 12 / 10px 五档；登录页不在本规则范围内。 */
body:has(.layout) .layout,
body:has(.layout) .layout * {
  font-size: var(--workbench-type-body) !important;
}

body:has(.layout) .layout {
  --workbench-font-size-xs: var(--workbench-type-meta);
  --workbench-font-size-sm: var(--workbench-type-support);
  --workbench-font-size-body: var(--workbench-type-body);
  --workbench-font-size-title: var(--workbench-type-section-title);
  --workbench-font-size-section: var(--workbench-type-section-title);
  --workbench-font-size-page: var(--workbench-type-page-title);
  --workbench-markdown-title-size: var(--workbench-type-page-title);
  --workbench-markdown-section-size: var(--workbench-type-section-title);
  --workbench-markdown-subtitle-size: var(--workbench-type-body);
  --workbench-markdown-body-size: var(--workbench-type-body);
  --workbench-input-font-size: var(--workbench-type-body);
  --workbench-taskbar-title-size: var(--workbench-type-section-title);
  --workbench-taskbar-meta-size: var(--workbench-type-meta);
  --workbench-status-font-size: var(--workbench-type-meta);
}

/* v1.3: 为内容区提供足够的左右空间，窄栏只在真正窄屏时折到下方。 */
@media (min-width: 1221px) {
  body:has(.layout) .layout.has-recent-work {
    grid-template-columns: 196px minmax(0, 1fr) 224px;
  }
  body:has(.layout) .layout:not(.has-recent-work) {
    grid-template-columns: 196px minmax(0, 1fr);
  }
}

@media (min-width: 1021px) and (max-width: 1220px) {
  body:has(.layout) .layout.has-recent-work {
    grid-template-columns: 184px minmax(0, 1fr) 210px;
  }
  body:has(.layout) .layout:not(.has-recent-work) {
    grid-template-columns: 184px minmax(0, 1fr);
  }
}

body:has(.layout) .layout :where(h1, h1 *, h2, h2 *, h3, h3 *, h4, h4 *, h5, h5 *, h6, h6 *) {
  font-size: var(--workbench-type-section-title) !important;
  line-height: 1.45;
}

body:has(.layout) .layout :where(h1, h1 *, .page-head :where(h1, h2), .page-head :where(h1, h2) *, .home-hero :where(h1, h2), .home-hero :where(h1, h2) *, .empty :where(h1, h2), .empty :where(h1, h2) *, .placeholder-page :where(h1, h2), .placeholder-page :where(h1, h2) *, .task-title-view > h2, .task-title-view > h2 *, .workbench-markdown > h1, .workbench-markdown > h1 *, .note-markdown > h1, .note-markdown > h1 *) {
  font-size: var(--workbench-type-page-title) !important;
  line-height: 1.35;
}

body:has(.layout) .layout :where(code, code *, pre, pre *, table, table *, th, td, .form-help, .image-help, .production-image-hint, .production-image-drop-zone small, input::placeholder, textarea::placeholder, .recent-work-empty) {
  font-size: var(--workbench-type-support) !important;
  line-height: 1.6;
}

body:has(.layout) .layout :where(small, time, figcaption, .eyebrow, .status-badge, .pill, .task-status, .case-meta, .task-center-meta, .task-card-open > small, .recent-work-heading .muted, .recent-work-item-top small, .recent-work-item-top time, .output-title > span, .version-caption, .note-index, .stage-version-badge, .task-call-count, [class$="-meta"], .case-card-number, .case-card-type, .case-card-image-count, .case-card-learning-status, .case-card-learning-status *, .case-card-project-tag, .case-card-project-tag *, .case-card-field em, .case-card-field strong, .case-card-reason-values, .case-card-reason-values *, .case-card-reason, .case-card-reason-more) {
  font-size: var(--workbench-type-meta) !important;
  line-height: 1.45;
}

body:has(.layout) .layout :where(.small, .small-action, .task-card-action, .production-image-add, .case-upload-remove, .case-card-delete) {
  font-size: var(--workbench-type-support) !important;
  line-height: 1.45;
}

body:has(.layout) .sidebar .sidebar-brand > span:last-child {
  min-width: 0;
  flex: 1 1 auto;
}

body:has(.layout) .sidebar .sidebar-brand h1 {
  font-size: var(--workbench-type-body) !important;
  line-height: 1.2;
  letter-spacing: -.05em;
  white-space: nowrap;
}

body:has(.layout) .sidebar .sidebar-brand {
  display: flex;
  align-items: center;
  min-width: 0;
  overflow: hidden;
}

body:has(.layout) .sidebar .sidebar-brand > span:last-child {
  min-width: 0;
  overflow: hidden;
}

body:has(.layout) .recent-work-heading h2 {
  font-size: var(--workbench-type-section-title) !important;
  line-height: 1.45;
  white-space: nowrap;
}

body:has(.layout) .recent-work-heading,
body:has(.layout) .recent-work-heading > div,
body:has(.layout) .recent-work-filters,
body:has(.layout) .recent-work-item-top,
body:has(.layout) .recent-work-status,
body:has(.layout) .recent-work-status .status-badge {
  min-width: 0;
}

body:has(.layout) .recent-work-heading {
  align-items: center;
  gap: var(--workbench-button-gap);
}

body:has(.layout) .recent-work-heading > div {
  overflow: hidden;
}

body:has(.layout) .recent-work-heading .muted {
  flex: none;
}

body:has(.layout) .recent-work-heading .muted {
  display: block;
  font-size: var(--workbench-type-meta) !important;
  line-height: 1.45;
  white-space: nowrap;
}

body:has(.layout) .recent-work-filter-select {
  font-size: var(--workbench-type-support) !important;
  line-height: 1.4;
}

body:has(.layout) .recent-work-item {
  overflow: hidden;
}

body:has(.layout) .recent-work-item-top {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
}

body:has(.layout) .recent-work-item-top small,
body:has(.layout) .recent-work-item-top time,
body:has(.layout) .recent-work-status .status-badge,
body:has(.layout) .recent-work-status .status-badge > span:not(.status-dot) {
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body:has(.layout) .recent-work-status .status-badge {
  display: flex;
  width: fit-content;
  box-sizing: border-box;
}

body:has(.layout) .recent-work-status .status-badge > span:not(.status-dot) {
  flex: 0 1 auto;
}

/* v1.4: keep recent-work item copy in real grid rows. Without an intrinsic
   height the rail's fractional rows can collapse the title and subtitle to
   zero, leaving only the type and status visible. */
body:has(.layout) .recent-work-list {
  grid-auto-rows: max-content;
}

body:has(.layout) .recent-work-item {
  grid-template-rows: auto auto auto auto;
  min-height: 116px;
  align-content: start;
}

body:has(.layout) .case-card-number {
  flex: 1 1 auto;
  width: auto;
  min-width: 0;
  max-width: none;
  overflow: visible;
  color: var(--workbench-color-text-secondary);
  font: 600 var(--workbench-type-meta)/1.45 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace !important;
  letter-spacing: .02em;
  text-overflow: clip;
  white-space: nowrap;
}

body:has(.layout) .case-card-top {
  align-items: center;
  gap: 6px;
  line-height: 1.45;
}

body:has(.layout) .case-card-top-actions {
  flex: none;
  gap: 6px;
}

body:has(.layout) .case-card-title-status {
  align-items: center;
  flex-wrap: wrap;
  gap: 6px 8px;
  min-height: 22px;
}

body:has(.layout) .case-card-content h3 {
  min-height: 52px;
  overflow-wrap: anywhere;
}

body:has(.layout) .case-card-footer {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px 10px;
}

body:has(.layout) .case-card-reasons {
  grid-column: 1 / -1;
}

body:has(.layout) .case-card-field strong,
body:has(.layout) .case-card-reason,
body:has(.layout) .case-card-reason-more {
  min-width: 0;
  max-width: 100%;
}

body:has(.layout) .case-card-delete {
  font-size: var(--workbench-type-support) !important;
}

/* v1.6: 三类对话输入统一收口。
   所有输入共用 image / help / send 插槽；执行状态不参与输入区布局。 */
:root {
  --workbench-composer-footer-gap: var(--workbench-composer-gap);
  --workbench-composer-image-column: minmax(0, 1fr);
  --workbench-composer-help-size: var(--workbench-type-support);
  --workbench-composer-action-size: var(--workbench-type-body);
  /* 宽屏也必须给完整模型名称独立列，不能让 320px 选择器溢出到发送区。 */
  --workbench-composer-help-column: var(--workbench-composer-model-column);
  --workbench-composer-send-width: var(--workbench-composer-send-min-width);
  --workbench-composer-image-hint-size: var(--workbench-composer-help-size);
}

/* 三类固定底部区使用同一盒模型和列轨道，避免内层内容把边界撑出父区域。 */
body:has(.layout) .layout :where(.chat-composer-row, .production-composer-row, .image-task-composer) {
  box-sizing: border-box;
  min-width: 0;
  max-width: 100%;
}
body:has(.layout) .layout :where(.chat-composer-row .chat-form, .production-composer-row .production-chat-form, .image-task-composer .image-task-message-form) {
  box-sizing: border-box;
  min-width: 0;
  max-width: 100%;
}

body:has(.layout) .layout :where(.workbench-composer-form, .chat-form, .production-chat-form, .image-task-message-form) {
  container-type: inline-size;
  min-width: 0;
}

body:has(.layout) .layout .workbench-composer-footer {
  display: grid;
  grid-template-columns: var(--workbench-composer-image-column) var(--workbench-composer-help-column) var(--workbench-composer-send-width);
  grid-template-areas: "image help send";
  align-items: center;
  gap: var(--workbench-composer-footer-gap);
  width: 100%;
  min-width: 0;
  min-height: var(--workbench-composer-row-height);
  box-sizing: border-box;
}

body:has(.layout) .layout .workbench-composer-footer:has(.workbench-composer-actions) {
  grid-template-columns: var(--workbench-composer-image-column) var(--workbench-composer-help-column) auto;
}

body:has(.layout) .layout .workbench-composer-image-slot,
body:has(.layout) .layout .workbench-composer-help,
body:has(.layout) .layout .workbench-composer-send-slot {
  min-width: 0;
}

body:has(.layout) .layout .workbench-composer-image-slot { grid-area: image; width: 100%; }
body:has(.layout) .layout .workbench-composer-help {
  grid-area: help;
  display: block;
  margin: 0;
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-composer-help-size) !important;
  line-height: 1.3;
  text-align: right;
  overflow-wrap: anywhere;
  white-space: normal;
}
body:has(.layout) .layout .workbench-composer-send-slot {
  grid-area: send;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  width: 100%;
  max-width: 100%;
}
body:has(.layout) .layout .workbench-composer-send-slot > .primary,
body:has(.layout) .layout .workbench-composer-send-slot .workbench-composer-actions .primary {
  flex: 0 0 var(--workbench-composer-send-width);
  width: var(--workbench-composer-send-width);
  min-width: var(--workbench-composer-send-width);
  height: var(--workbench-composer-row-height);
  min-height: var(--workbench-composer-row-height);
  max-height: var(--workbench-composer-row-height);
  margin: 0;
  padding: 0 var(--workbench-space-2);
  font-size: var(--workbench-composer-action-size) !important;
  line-height: 1;
  white-space: normal;
}
body:has(.layout) .layout .workbench-composer-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--workbench-composer-footer-gap);
  min-width: 0;
}
body:has(.layout) .layout .workbench-composer-send-slot .workbench-composer-actions .secondary {
  flex: 0 1 auto;
  width: auto;
  min-width: 0;
  height: var(--workbench-composer-row-height);
  min-height: var(--workbench-composer-row-height);
  max-height: var(--workbench-composer-row-height);
  padding: 0 var(--workbench-space-2);
  font-size: var(--workbench-composer-action-size) !important;
  white-space: normal;
}

body:has(.layout) .layout .workbench-composer-footer .production-image-input-compact {
  display: flex;
  align-items: center;
  width: 100%;
  min-width: 0;
  max-width: none;
  margin: 0;
  overflow: visible;
}
body:has(.layout) .layout .workbench-composer-footer .production-image-input-compact .production-image-drop-zone {
  display: flex;
  align-items: center;
  width: 100%;
  min-width: 0;
  max-width: none;
  gap: var(--workbench-space-2);
  padding: 0;
  border: 0;
  background: transparent;
  overflow: visible;
}
body:has(.layout) .layout .workbench-composer-footer .production-image-input-compact .production-image-add {
  flex: 0 0 auto;
  height: var(--workbench-composer-row-height);
  min-height: var(--workbench-composer-row-height);
  padding: 0 var(--workbench-space-2);
  font-size: var(--workbench-composer-action-size) !important;
  white-space: nowrap;
}
body:has(.layout) .layout .workbench-composer-footer .production-image-input-compact .production-image-hint {
  flex: 1 1 auto;
  min-width: 0;
  max-width: 100%;
  overflow: visible;
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-composer-help-size) !important;
  line-height: 1.3;
  overflow-wrap: anywhere;
  text-overflow: clip;
  white-space: normal;
}


@container (max-width: 620px) {
  body:has(.layout) .layout .workbench-composer-footer,
  body:has(.layout) .layout .workbench-composer-footer:has(.workbench-composer-actions) {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas: "image send" "help send";
    row-gap: var(--workbench-space-1);
    min-height: 0;
  }
  body:has(.layout) .layout .workbench-composer-help {
    text-align: left;
    white-space: normal;
  }
}

@media (max-width: 760px) {
  :root {
    --workbench-composer-send-width: 68px;
  }
  body:has(.layout) .layout .workbench-composer-footer,
  body:has(.layout) .layout .workbench-composer-footer:has(.workbench-composer-actions) {
    grid-template-columns: minmax(0, 1fr) minmax(116px, 1fr) var(--workbench-composer-send-width);
    grid-template-areas: "image help send";
    grid-template-rows: var(--workbench-composer-row-height);
    row-gap: 0;
    min-height: var(--workbench-composer-row-height);
  }
  body:has(.layout) .layout .workbench-composer-help { text-align: left; white-space: normal; }
}

/* 窄视口下输入区保持 106px 基线：自动高度不能把发送行推出固定区域。
   上传与发送仍保留，Enter 提示由输入框占位文案和原生交互承担。 */
@container (max-width: 620px) {
  body:has(.layout) .layout .production-composer-row .production-chat-form {
    grid-template-rows: auto auto auto !important;
    align-content: start;
  }
  body:has(.layout) .layout .production-composer-row .production-chat-form > textarea {
    min-height: var(--workbench-composer-textarea-height) !important;
    max-height: var(--workbench-composer-textarea-max-height) !important;
  }
  body:has(.layout) .layout .production-composer-row .workbench-composer-footer {
    grid-template-columns: minmax(0, 1fr) auto auto !important;
    grid-template-areas: "image help send" !important;
    grid-template-rows: auto !important;
    height: auto;
    min-height: var(--workbench-composer-row-height);
  }
  body:has(.layout) .layout .production-composer-row .workbench-composer-help { display: none; }
}

/* v1.9: 收敛导航密度并复用既有字号令牌。 v1.11: 侧边导航进一步紧凑化。
   分组标题和导航项统一使用默认 14px。
   不再为导航、技能中心和最近工作新增重复字号变量。
   工作区标题到首个功能项、功能项之间统一 2px；分组之间保留 8px。
   页面主体的 --module-edge-gap 统一为 10px，导航内部节奏与页面坐标保持一致。 */
:root {
  --workbench-module-nav-item-height: 32px;
  --workbench-module-nav-label-height: 22px;
  --workbench-module-nav-section-gap: 8px;
  --workbench-module-nav-group-gap: 6px;
  --workbench-module-nav-group-padding: 6px;
  --workbench-module-nav-divider-padding: 2px;
}
body:has(.layout) .layout .sidebar .module-nav-group {
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
body:has(.layout) .layout .sidebar .module-nav-group::before,
body:has(.layout) .layout .sidebar .module-nav-group::after {
  display: none;
}
body:has(.layout) .layout .sidebar .module-nav-group-label {
  font-size: var(--workbench-type-section-title) !important;
  line-height: 1.35;
  letter-spacing: 0;
  font-weight: 600;
  color: var(--accent) !important;
}

body:has(.layout) .layout .sidebar .module-nav-item,
body:has(.layout) .layout .sidebar .module-nav-item > span:first-child {
  font-size: var(--workbench-type-body) !important;
  line-height: 1.45;
}

body:has(.layout) .layout :where(.skill-card-head h3, .skill-detail-page h3) {
  font-size: var(--workbench-type-section-title) !important;
  line-height: 1.45;
}
body:has(.layout) .layout :where(.skill-card-description p, .skills-page-intro span, .skill-detail-head p, .skill-detail-source p) {
  font-size: var(--workbench-type-body) !important;
  line-height: 1.6;
}
body:has(.layout) .layout :where(.skill-card-meta-item em, .skill-card-meta-item strong, .skill-card-actions .skill-toggle, .skill-detail-meta-item em, .skill-detail-meta-item strong, .skill-version-row small, .skill-sync-time) {
  font-size: var(--workbench-type-meta) !important;
  line-height: 1.45;
}
body:has(.layout) .layout .skill-version-row > div > strong {
  font-size: var(--workbench-type-support) !important;
  line-height: 1.45;
}

body:has(.layout) .layout .recent-work-heading h2 {
  font-size: var(--workbench-type-body) !important;
  line-height: 1.45;
}
body:has(.layout) .layout .recent-work-item > strong {
  font-size: var(--workbench-type-support) !important;
  line-height: 1.4;
}
body:has(.layout) .layout :where(.recent-work-item-top small, .recent-work-item-top time) {
  font-size: var(--workbench-type-meta) !important;
  line-height: 1.45;
}
body:has(.layout) .layout .recent-work-status .status-badge {
  font-size: var(--workbench-type-support) !important;
  line-height: 1.4;
}

body:has(.layout) .layout .module-nav {
  gap: var(--workbench-module-nav-section-gap);
  align-content: start;
  grid-auto-rows: max-content;
}
body:has(.layout) .layout .module-nav-group {
  gap: var(--workbench-module-nav-group-gap);
  align-content: start;
  grid-auto-rows: max-content;
  padding-block: 0;
}
body:has(.layout) .layout .module-nav-group-label {
  display: flex;
  align-items: center;
  height: var(--workbench-module-nav-label-height);
  min-height: var(--workbench-module-nav-label-height);
  padding: 0 8px;
  box-sizing: border-box;
}
body:has(.layout) .layout .module-nav-item {
  height: var(--workbench-module-nav-item-height);
  min-height: var(--workbench-module-nav-item-height);
  max-height: var(--workbench-module-nav-item-height);
  padding-inline: 8px;
  box-sizing: border-box;
}
body:has(.layout) .layout .sidebar .module-nav-item {
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: var(--workbench-radius-sm);
  background: transparent;
  box-shadow: none;
}
body:has(.layout) .layout .sidebar .module-nav-item:hover {
  color: var(--wb-text);
  border-color: transparent;
  background: var(--wb-selected);
  box-shadow: none;
}
body:has(.layout) .layout .sidebar .module-nav-item.active,
body:has(.layout) .layout .sidebar .module-nav-item.active:hover,
body:has(.layout) .layout .sidebar .module-nav-item.has-running-status.active {
  color: var(--wb-text);
  border-color: transparent;
  background: var(--wb-selected);
  box-shadow: none;
}
body:has(.layout) .layout .sidebar .module-nav-item.active > span:first-child {
  color: var(--wb-text);
  font-weight: 800;
}
body:has(.layout) .layout .sidebar .module-nav-item.has-running-status:not(.active) {
  border-color: transparent;
  background: transparent;
}
body:has(.layout) .layout .sidebar .module-nav-item.has-review-status:not(.active) {
  border-color: transparent;
  background: transparent;
}
body:has(.layout) .layout .module-nav-resources,
body:has(.layout) .layout .module-nav-operations {
  margin-top: 0;
  padding-top: var(--workbench-module-nav-divider-padding);
}
body:has(.layout) .layout .sidebar .module-nav-operations {
  border-color: transparent;
  background: transparent;
}

/* v1.12: 管理后台全局模型配置。复用既有表单、令牌和信息层级，
   只保留一个模型选择与一个主操作。 */
.admin-model-settings-layout {
  display: grid;
  grid-template-columns: minmax(280px, 420px) minmax(0, 1fr);
  gap: var(--workbench-space-4);
  align-items: start;
}
.admin-model-settings-form,
.admin-model-settings-summary {
  padding: var(--workbench-space-4);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-lg);
  background: var(--workbench-color-surface);
}
.admin-model-settings-form {
  display: grid;
  gap: var(--workbench-space-3);
}
.admin-model-settings-form label {
  display: grid;
  gap: var(--workbench-space-2);
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-font-size-body);
}
.admin-model-settings-form p {
  margin: 0;
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-font-size-sm);
  line-height: 1.55;
}
.admin-model-settings-form .primary { justify-self: start; }
.admin-model-option-notes {
  display: grid;
  gap: var(--workbench-space-2);
  margin: var(--workbench-space-4) 0 0;
  padding: 0;
  list-style: none;
}
.admin-model-option-notes li {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  gap: var(--workbench-space-2);
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-font-size-sm);
}
.admin-model-option-notes li.is-current { color: var(--workbench-color-text-secondary); }
@media (max-width: 768px) {
  .admin-model-settings-layout { grid-template-columns: 1fr; }
}

/* v1.7: 固定输入区严格对齐实际外壳轨道。
   左右边界必须跟随 .layout 的真实导航 / 最近工作列宽度，不能继续使用旧的 176px 默认值，
   否则输入框会压到导航，右侧操作区会压到最近工作栏。 */
:root {
  --module-nav-width: 196px;
  --module-recent-width: 224px;
}
body:has(.layout) .layout {
  --module-left-edge: calc(var(--module-nav-width) + var(--module-edge-gap));
  --module-right-edge: calc(var(--module-recent-width) + var(--module-edge-gap));
}
body:has(.layout:not(.has-recent-work)) .layout {
  --module-right-edge: 0px;
}

@media (min-width: 1021px) and (max-width: 1220px) {
  :root {
    --module-nav-width: 184px;
    --module-recent-width: 210px;
  }
}

@media (min-width: 761px) and (max-width: 1020px) {
  :root {
    --module-nav-width: 164px;
    --module-recent-width: 0px;
  }
}

@media (max-width: 760px) {
  :root {
    --module-nav-width: 0px;
    --module-recent-width: 0px;
  }
  body:has(.layout) .layout {
    --module-left-edge: var(--module-edge-gap);
    --module-right-edge: var(--module-edge-gap);
  }
}

/* v1.11: 管理后台统一信息层级与配置列表布局。
   统一覆盖旧版后台视觉规则，避免导航、统计、配置和表格各自形成一套密度。 */
body:has(.layout) .layout .admin-page-head {
  margin-bottom: var(--workbench-space-4);
}
body:has(.layout) .layout .admin-page-head .eyebrow {
  font-size: var(--workbench-type-meta);
}
body:has(.layout) .layout .admin-page-head > div > p:not(.eyebrow) {
  margin-top: var(--workbench-space-1);
  font-size: var(--workbench-type-support);
  line-height: var(--workbench-line-normal);
}
body:has(.layout) .layout .admin-section {
  display: grid;
  gap: var(--workbench-space-4);
  min-width: 0;
}
body:has(.layout) .layout .admin-section > .section-heading,
body:has(.layout) .layout .admin-table-section > .section-heading {
  margin-bottom: 0;
}
body:has(.layout) .layout .admin-section-help {
  margin: var(--workbench-space-1) 0 0;
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-type-support);
  line-height: var(--workbench-line-normal);
}
body:has(.layout) .layout .admin-range {
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-type-meta);
  line-height: var(--workbench-line-normal);
  white-space: nowrap;
}
body:has(.layout) .layout .admin-filter-panel {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)) auto;
  align-items: end;
  gap: var(--workbench-space-2);
  padding: var(--workbench-space-3);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-md);
  background: var(--workbench-color-surface);
}
body:has(.layout) .layout .admin-filter-panel label {
  gap: var(--workbench-space-1);
  min-width: 0;
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-type-support);
}
body:has(.layout) .layout .admin-filter-panel .primary {
  min-height: var(--workbench-button-height);
}
body:has(.layout) .layout .admin-summary-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--workbench-space-3);
}
body:has(.layout) .layout .admin-summary-card {
  display: grid;
  gap: var(--workbench-space-1);
  min-width: 0;
  padding: var(--workbench-space-3);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-md);
  background: var(--workbench-color-surface);
}
body:has(.layout) .layout .admin-summary-card span {
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-type-support);
}
body:has(.layout) .layout .admin-summary-card strong {
  color: var(--workbench-color-text);
  font-size: var(--workbench-type-section-title);
  line-height: var(--workbench-line-tight);
}
body:has(.layout) .layout .admin-summary-card small {
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-type-meta);
  line-height: var(--workbench-line-normal);
}
body:has(.layout) .layout .admin-summary-card.is-accent {
  border-color: var(--workbench-color-border-accent);
  background: var(--workbench-color-accent-surface);
}
body:has(.layout) .layout .admin-summary-card.is-danger {
  border-color: transparent;
}
body:has(.layout) .layout .admin-note {
  padding: var(--workbench-space-2) var(--workbench-space-3);
  color: var(--workbench-color-text-secondary);
  border: 1px solid var(--workbench-color-border);
  border-left: 2px solid var(--workbench-color-accent);
  border-radius: var(--workbench-radius-sm);
  background: var(--workbench-color-surface-subtle);
  font-size: var(--workbench-type-support);
  line-height: var(--workbench-line-normal);
}
body:has(.layout) .layout .admin-table-section {
  display: grid;
  gap: var(--workbench-space-2);
  min-width: 0;
}
body:has(.layout) .layout .admin-table-wrap {
  max-width: 100%;
  overflow-x: auto;
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-md);
  background: var(--workbench-color-surface);
}
body:has(.layout) .layout .admin-table {
  width: 100%;
  min-width: 680px;
  border-collapse: collapse;
  color: var(--workbench-color-text);
  font-size: var(--workbench-type-body);
}
body:has(.layout) .layout .admin-table th,
body:has(.layout) .layout .admin-table td {
  padding: var(--workbench-admin-cell-padding);
  text-align: left;
  vertical-align: top;
  border-bottom: 1px solid var(--workbench-color-border);
}
body:has(.layout) .layout .admin-table th {
  color: var(--workbench-color-text-secondary);
  background: var(--workbench-color-surface-subtle);
  font-size: var(--workbench-type-support);
  font-weight: 600;
  white-space: nowrap;
}
body:has(.layout) .layout .admin-table tbody tr:last-child td { border-bottom: 0; }
body:has(.layout) .layout .admin-table td strong { color: var(--workbench-color-text); font-size: var(--workbench-type-body); }
body:has(.layout) .layout .admin-table td small {
  display: block;
  margin-top: var(--workbench-space-1);
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-type-meta);
  line-height: var(--workbench-line-normal);
}
body:has(.layout) .layout .admin-table select {
  min-width: 112px;
  padding: var(--workbench-space-2);
  font-size: var(--workbench-type-body);
}
body:has(.layout) .layout .admin-empty-cell {
  padding: var(--workbench-space-5) !important;
  color: var(--workbench-color-text-muted);
  text-align: center !important;
  font-size: var(--workbench-type-support);
}
body:has(.layout) .layout .admin-project-heading { margin-top: 0; }
body:has(.layout) .layout .admin-project-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--workbench-space-3);
}
body:has(.layout) .layout .admin-project-card {
  display: grid;
  gap: var(--workbench-space-3);
  min-width: 0;
  padding: var(--workbench-space-3);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-md);
  background: var(--workbench-color-surface);
}
body:has(.layout) .layout .admin-project-card h4 { margin: 0; font-size: var(--workbench-type-body); }
body:has(.layout) .layout .admin-project-card-head small,
body:has(.layout) .layout .admin-project-help { color: var(--workbench-color-text-secondary); font-size: var(--workbench-type-support); line-height: var(--workbench-line-normal); }
body:has(.layout) .layout .admin-project-card-head select { min-width: 145px; padding: var(--workbench-space-2); font-size: var(--workbench-type-body); }
body:has(.layout) .layout .admin-member-list { gap: var(--workbench-space-1); max-height: 260px; }
body:has(.layout) .layout .admin-member-option { padding: var(--workbench-space-2); border-color: var(--workbench-color-border); background: var(--workbench-color-surface-subtle); }
body:has(.layout) .layout .admin-member-option strong { font-size: var(--workbench-type-body); }
body:has(.layout) .layout .admin-member-option small { font-size: var(--workbench-type-meta); }
body:has(.layout) .layout .admin-log-table { min-width: 760px; }
body:has(.layout) .layout .admin-log-table details { max-width: 420px; }
body:has(.layout) .layout .admin-log-table pre { max-width: 420px; font: var(--workbench-type-meta)/1.5 ui-monospace, SFMono-Regular, Menlo, Monaco, monospace; }
body:has(.layout) .layout .admin-backup-list { display: grid; gap: var(--workbench-space-2); }
body:has(.layout) .layout .admin-backup-row {
  min-width: 0;
  padding: var(--workbench-space-3);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-md);
  background: var(--workbench-color-surface);
}
body:has(.layout) .layout .admin-backup-row p { color: var(--workbench-color-text-secondary); font-size: var(--workbench-type-support); }
body:has(.layout) .layout .admin-backup-row small { color: var(--workbench-color-text-muted); font-size: var(--workbench-type-meta); }
body:has(.layout) .layout .case-review-list { gap: var(--workbench-space-3); }
body:has(.layout) .layout .case-review-card {
  gap: var(--workbench-space-3);
  padding: var(--workbench-space-3);
  border-color: var(--workbench-color-border);
  border-radius: var(--workbench-radius-md);
  background: var(--workbench-color-surface);
}
body:has(.layout) .layout .case-review-card h3 { margin: 0 0 var(--workbench-space-1); font-size: var(--workbench-type-body); }
body:has(.layout) .layout .case-review-card-head p,
body:has(.layout) .layout .case-review-copy p { color: var(--workbench-color-text-secondary); font-size: var(--workbench-type-support); line-height: var(--workbench-line-normal); }
body:has(.layout) .layout .case-review-fields span { color: var(--workbench-color-text-muted); font-size: var(--workbench-type-meta); }
body:has(.layout) .layout .case-review-fields strong { font-size: var(--workbench-type-body); }
body:has(.layout) .layout .case-review-copy summary { font-size: var(--workbench-type-support); }
body:has(.layout) .layout .case-review-actions { gap: var(--workbench-space-2); }
body:has(.layout) .layout .dictionary-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;
  gap: var(--workbench-space-4);
}
body:has(.layout) .layout .dictionary-section {
  display: grid;
  align-content: start;
  gap: var(--workbench-space-3);
  min-width: 0;
  padding: var(--workbench-space-3);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-md);
  background: var(--workbench-color-surface);
}
body:has(.layout) .layout .dictionary-create-form { gap: var(--workbench-space-2); }
body:has(.layout) .layout .dictionary-list { display: grid; gap: var(--workbench-space-1); }
body:has(.layout) .layout .dictionary-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto 64px auto;
  align-items: center;
  gap: var(--workbench-space-2);
  min-width: 0;
  min-height: var(--workbench-admin-row-height);
  padding: var(--workbench-space-1) 0;
  border-bottom: 1px solid var(--workbench-color-border);
}
body:has(.layout) .layout .dictionary-row:last-child { border-bottom: 0; }
body:has(.layout) .layout .dictionary-row input { min-width: 0; font-size: var(--workbench-type-body); }
body:has(.layout) .layout .dictionary-enabled { font-size: var(--workbench-type-support); white-space: nowrap; }
body:has(.layout) .layout .dictionary-order { width: 64px; font-size: var(--workbench-type-support); }
body:has(.layout) .layout .small-action { font-size: var(--workbench-type-support); }
body:has(.layout) .layout .admin-taxonomy-tree {
  display: grid;
  gap: var(--workbench-space-1);
  padding: var(--workbench-space-2);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-sm);
  background: var(--workbench-color-surface-subtle);
}
body:has(.layout) .layout .admin-taxonomy-industry-row,
body:has(.layout) .layout .admin-taxonomy-group-row { min-width: 0; }
body:has(.layout) .layout .admin-taxonomy-count,
body:has(.layout) .layout .admin-taxonomy-status,
body:has(.layout) .layout .admin-taxonomy-empty,
body:has(.layout) .layout .admin-taxonomy-unassigned > strong { font-size: var(--workbench-type-meta); }
body:has(.layout) .layout .admin-taxonomy-group-name { font-size: var(--workbench-type-body); }
body:has(.layout) .layout .admin-taxonomy-bind-select { font-size: var(--workbench-type-support); }

@media (max-width: 980px) {
  body:has(.layout) .layout .admin-workbench { grid-template-columns: 1fr; }
  body:has(.layout) .layout .admin-navigation { position: static; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--workbench-space-3); }
  body:has(.layout) .layout .admin-nav-group { padding-bottom: 0; border-bottom: 0; }
  body:has(.layout) .layout .admin-capability-layout { grid-template-columns: 1fr; }
  body:has(.layout) .layout .admin-capability-list { max-height: none; }
}
@media (max-width: 700px) {
  body:has(.layout) .layout .admin-filter-panel,
  body:has(.layout) .layout .admin-summary-grid,
  body:has(.layout) .layout .admin-project-grid,
  body:has(.layout) .layout .dictionary-grid { grid-template-columns: 1fr; }
  body:has(.layout) .layout .admin-filter-panel { align-items: stretch; }
  body:has(.layout) .layout .admin-filter-panel .primary { width: 100%; }
  body:has(.layout) .layout .admin-project-card-head { display: grid; }
  body:has(.layout) .layout .admin-project-card-head select { width: 100%; }
  body:has(.layout) .layout .dictionary-row { grid-template-columns: minmax(0, 1fr) auto; }
  body:has(.layout) .layout .dictionary-enabled,
  body:has(.layout) .layout .dictionary-order,
  body:has(.layout) .layout .dictionary-row .small-action { grid-column: 2; }
}
@media (max-width: 640px) {
  body:has(.layout) .layout .admin-navigation { grid-template-columns: 1fr; }
  body:has(.layout) .layout .admin-capability-detail-head,
  body:has(.layout) .layout .admin-protocol-row,
  body:has(.layout) .layout .admin-backup-row { display: grid; }
  body:has(.layout) .layout .admin-capability-meta div { grid-template-columns: 1fr; gap: var(--workbench-space-1); }
}

/* v0.88: 案例卡片元信息统一为三列两行，标签与内容对齐显示。 */
body:has(.layout) .case-card-grid-v2 { align-items: start; }
body:has(.layout) .case-card-v2 { min-height: 0; }
body:has(.layout) .case-card-open { gap: var(--workbench-space-2); padding: 6px 12px 8px; }
body:has(.layout) .case-card-top { min-height: 26px; padding: 7px 12px 0; }
body:has(.layout) .case-card-content { gap: var(--workbench-space-2); padding: 0 12px 10px; }
body:has(.layout) .case-card-content h3 { min-height: 2.8em; font-size: var(--workbench-type-body); line-height: 1.4; }
body:has(.layout) .case-card-footer {
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, .9fr) minmax(0, 1.2fr);
  gap: var(--workbench-space-2);
  min-width: 0;
  padding-top: 8px;
  overflow: hidden;
}
body:has(.layout) .case-card-field {
  display: grid;
  align-content: start;
  gap: 4px;
  min-width: 0;
  overflow: hidden;
}
body:has(.layout) .case-card-field + .case-card-field::before {
  display: none;
}
body:has(.layout) .case-card-field em {
  display: block;
  min-width: 0;
  overflow: hidden;
  color: var(--muted);
  font-size: var(--workbench-type-meta);
  text-overflow: ellipsis;
  white-space: nowrap;
}
body:has(.layout) .case-card-field strong {
  display: block;
  min-width: 0;
  overflow: hidden;
  color: var(--ink);
  font-size: var(--workbench-type-support);
  text-overflow: ellipsis;
  white-space: nowrap;
}
body:has(.layout) .case-card-reasons {
  display: grid;
  grid-column: auto;
  gap: 4px;
  min-width: 0;
}
body:has(.layout) .case-card-reasons-head {
  display: flex;
  justify-content: flex-start;
  gap: 4px;
  min-width: 0;
}
body:has(.layout) .case-card-reason-list {
  display: flex;
  flex-wrap: nowrap;
  gap: 4px;
  min-width: 0;
  overflow: hidden;
}
body:has(.layout) .case-card-reason,
body:has(.layout) .case-card-reason-more {
  flex: 0 1 auto;
  max-width: 108px;
}

/* v1.11: 笔记任务项目摘要沿用现有单行元数据，不增加任务栏高度或内容层。 */
.module-list-stage .note-task-card-meta {
  display: flex !important;
  align-items: center;
  flex-wrap: nowrap !important;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
}
.module-list-stage .note-task-card-meta > .note-task-card-meta-project {
  flex: 0 1 auto;
  min-width: 0;
  max-width: min(68%, 240px);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.module-list-stage .note-task-card-meta > .note-task-updated-meta,
.module-list-stage .note-task-card-meta > .task-card-meta-separator {
  flex: 0 0 auto;
  white-space: nowrap;
}

body.notes-workbench-page .module-taskbar .production-task-name { flex: 0 1 24%; }
body.notes-workbench-page .module-taskbar .production-task-project { flex: 0 1 18%; }
body.notes-workbench-page .module-taskbar .production-task-brief { flex: 1 1 34%; }
body.notes-workbench-page .module-taskbar .production-task-stage { flex: 0 1 24%; }
body.notes-workbench-page .module-taskbar .production-task-project .production-task-field-value {
  max-width: min(180px, 14vw);
}

/* 无地址的旧附件显示为明确占位，避免 broken-image 图标撑坏消息布局。 */
.message-attachment-image.is-missing,
.message-attachment-file.is-missing {
  cursor: default;
  opacity: .72;
}
.message-attachment-image.is-missing {
  display: inline-grid;
  place-items: center;
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-type-meta);
}
.message-attachment-file.is-missing { color: var(--workbench-color-text-muted); }

/* 旧版聊天选择器把所有附件链接强制成 72px 方块；文件附件恢复为文件芯片。 */
.workbench-message-attachments a.message-attachment-file {
  display: inline-flex;
  width: auto;
  height: auto;
  min-height: var(--workbench-button-height-small);
  overflow: hidden;
}

/* v1.14: 移动端侧栏不能占满整屏；缓存中的旧脚本也不能恢复已移除的执行卡片。 */
@media (max-width: 760px) {
  body.chat-page-body .sidebar,
  body.chat-page-body .recent-work-rail {
    position: static;
    height: auto;
    min-height: 0;
  }
  body.chat-page-body .workspace {
    flex: 1 1 auto;
    height: auto;
    min-height: 0;
  }
}
/* v1.16: 附件预览占用独立的一行；固定输入区随之等量增高。
   旧版把托盘塞进 106px 固定高度，并且由图片任务外层 overflow:hidden
   裁掉了缩略图与删除按钮。这里统一处理，不再由各模块分别补高度。 */
:root {
  --workbench-composer-base-height: 106px;
  --workbench-composer-attachment-height: 42px;
  --workbench-composer-with-attachment-height: calc(var(--workbench-composer-base-height) + var(--workbench-composer-attachment-height) + var(--workbench-composer-gap));
}
body:has(.layout) .layout .workbench-composer-attachment-tray {
  display: none;
  align-items: center;
  gap: var(--workbench-space-2);
  width: 100%;
  min-width: 0;
  height: var(--workbench-composer-attachment-height);
  min-height: var(--workbench-composer-attachment-height);
  max-height: var(--workbench-composer-attachment-height);
  padding: 3px 4px;
  box-sizing: border-box;
  overflow-x: auto;
  overflow-y: hidden;
}
body:has(.layout) .layout .workbench-composer-attachment-tray:not(:empty) { display: flex; }
body:has(.layout) .layout .workbench-composer-attachment-area {
  display: none;
  grid-row: 1;
  min-width: 0;
  align-items: center;
  gap: var(--workbench-space-2);
  overflow-x: auto;
  overflow-y: hidden;
}
body:has(.layout) .layout .workbench-composer-attachment-area:has(.workbench-composer-attachment-tray:not(:empty)),
body:has(.layout) .layout .workbench-composer-attachment-area:has(.reference-case-strip-slot:not(:empty)) { display: flex; }
body:has(.layout) .layout .workbench-composer-attachment-area .workbench-composer-attachment-tray {
  flex: 0 1 auto;
  width: auto;
  max-width: 50%;
}
body:has(.layout) .layout .workbench-composer-attachment-area .reference-case-strip-slot {
  flex: 0 1 520px;
  min-width: 260px;
}
body:has(.layout) .layout :where(.workbench-composer-form, .chat-form, .production-chat-form, .image-task-message-form) {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-auto-flow: row;
}
body:has(.layout) .layout .workbench-composer-attachment-tray .workbench-attachment-image,
body:has(.layout) .layout .workbench-composer-attachment-tray .workbench-attachment-file {
  box-sizing: border-box;
  height: 36px;
  min-height: 36px;
  max-height: 36px;
}
body:has(.layout) .layout .workbench-composer-attachment-tray .workbench-attachment-image {
  width: 36px;
  min-width: 36px;
  overflow: hidden;
}
body:has(.layout) .layout .workbench-composer-attachment-tray .workbench-attachment-image figcaption { display: none; }
body:has(.layout) .layout .workbench-composer-attachment-tray .production-image-remove {
  top: 1px;
  right: 1px;
}
body:has(.image-workbench) .image-workbench:has(.workbench-composer-attachment-tray:not(:empty)) > .image-task-composer,
body:has(.image-workbench) .image-workbench:has(.workbench-composer-attachment-tray:not(:empty)) .image-task-message-form {
  overflow: visible;
}

/* v1.17: 固定输入区以底边为锚点向上增高。
   文本框、附件预览和底栏均在同一自然网格中；旧版 106px 外层高度与窄屏单行规则
   会把增高后的内容向下裁掉，因此只保留它作为空输入时的最小高度。 */
:root {
  --workbench-composer-min-height: 106px;
  --workbench-composer-current-height: var(--workbench-composer-min-height);
}
body:has(.layout) .layout :where(.chat-composer-row, .production-composer-row, .image-task-composer) {
  height: auto !important;
  min-height: var(--workbench-composer-current-height) !important;
  align-items: stretch;
}
body:has(.layout) .layout :where(.workbench-composer-form, .chat-form, .production-chat-form, .image-task-message-form) {
  height: auto !important;
  min-height: var(--workbench-composer-current-height) !important;
  grid-template-rows: auto auto auto !important;
  align-content: start;
}
body:has(.layout) .layout :where(.workbench-composer-form > textarea, .chat-form > textarea, .production-chat-form > textarea, .image-task-message-form > textarea) {
  min-height: var(--workbench-composer-textarea-height) !important;
  max-height: var(--workbench-composer-textarea-max-height) !important;
  resize: none;
}
body:has(.layout) .layout .workbench-composer-attachment-tray:not(:empty) {
  grid-row: 1;
}
body:has(.layout) .layout :where(.workbench-composer-form, .chat-form, .production-chat-form, .image-task-message-form) > textarea {
  grid-row: 2;
}
body:has(.layout) .layout .workbench-composer-footer {
  grid-row: 3;
  align-self: end;
}

@container (max-width: 620px) {
  body:has(.layout) .layout .production-composer-row .production-chat-form {
    grid-template-rows: auto auto auto !important;
  }
  body:has(.layout) .layout .production-composer-row .production-chat-form > textarea {
    max-height: var(--workbench-composer-textarea-max-height) !important;
  }
}

/* v1.15: 智能对话窄屏将模块导航收敛为横向滚动条，避免导航挤占消息工作区。 */
@media (max-width: 760px) {
  body.chat-page-body .sidebar {
    display: flex;
    flex-direction: column;
    padding: 10px 12px 8px;
  }
  body.chat-page-body .sidebar > .module-nav {
    display: flex;
    flex: 0 0 auto;
    width: 100%;
    gap: 8px;
    padding: 1px 0 3px;
    overflow-x: auto;
    overflow-y: hidden;
  }
  body.chat-page-body .sidebar > .module-nav > .module-nav-group {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 5px;
    width: auto;
    min-width: max-content;
    padding: 4px;
    overflow: visible;
  }
  body.chat-page-body .sidebar .module-nav-group-label { display: none; }
  body.chat-page-body .sidebar .module-nav-item {
    flex: 0 0 auto;
    width: auto;
    min-width: 94px;
    height: 32px;
    min-height: 32px;
    max-height: 32px;
  }
  body.chat-page-body .sidebar > .shell-user-menu { margin-top: 8px; }
}

/* v1.16: 笔记生产工作区只保留时间顺序明确的消息气泡、图片容器和固定操作区。 */
body.notes-workbench-page .workbench-message-list {
  display: grid;
  align-content: start;
  gap: 18px;
  width: min(100%, 940px);
  margin: 0 auto;
  padding: 4px 2px 24px;
}
body.notes-workbench-page .workbench-message-turn {
  display: grid;
  gap: 8px;
  width: min(100%, 880px);
  min-width: 0;
  justify-self: start;
}
body.notes-workbench-page .workbench-message-turn.is-user {
  width: min(82%, 680px);
  justify-self: end;
}
body.notes-workbench-page .workbench-message {
  display: grid;
  gap: 8px;
  width: 100%;
  max-width: none;
  min-width: 0;
  margin: 0;
  padding: 14px 16px 10px;
  box-sizing: border-box;
  border: 1px solid var(--workbench-color-border);
  border-radius: 16px;
  background: var(--workbench-color-surface);
  box-shadow: none;
}
body.notes-workbench-page .workbench-message.is-assistant {
  border-color: transparent;
  background: var(--wb-selected);
}
body.notes-workbench-page .workbench-message.is-user {
  color: var(--wb-text);
  border-color: transparent;
  background: var(--wb-selected);
}
body.notes-workbench-page .workbench-message.is-pending {
  opacity: 1;
  border-style: solid;
}
body.notes-workbench-page .workbench-message-role {
  margin: 0;
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-type-meta) !important;
  font-weight: 700;
  line-height: 1.3;
}
body.notes-workbench-page .workbench-message.is-user .workbench-message-role { color: var(--wb-text); }
body.notes-workbench-page .workbench-message-version {
  margin: 0;
  color: var(--workbench-color-text);
  font-size: var(--workbench-type-section-title) !important;
  font-weight: 760;
  line-height: 1.4;
}
body.notes-workbench-page .workbench-message.is-user .workbench-message-version { color: var(--wb-text); }
body.notes-workbench-page .workbench-message-markdown { min-width: 0; }
body.notes-workbench-page .workbench-message-markdown > :first-child { margin-top: 0 !important; }
body.notes-workbench-page .workbench-message-markdown > :last-child { margin-bottom: 0 !important; }
body.notes-workbench-page .workbench-message-pending {
  margin: 0;
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-type-meta) !important;
}
body.notes-workbench-page .workbench-message-footer {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 12px;
  min-width: 0;
  margin-top: 2px;
  padding-top: 0;
  border-top: 0;
}
body.notes-workbench-page .workbench-message.is-user .workbench-message-footer {
  border-top: 0;
}
body.notes-workbench-page .workbench-message-footer time {
  min-width: 0;
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-type-meta) !important;
  line-height: 1.3;
  white-space: nowrap;
}
body.notes-workbench-page .workbench-message.is-user .workbench-message-footer time { color: var(--wb-text); }
body.notes-workbench-page .workbench-message-model {
  flex: 0 1 auto;
  min-width: 0;
  max-width: 30ch;
  overflow: hidden;
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-type-meta) !important;
  line-height: 1.3;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.notes-workbench-page .workbench-message.is-user .workbench-message-model { color: var(--wb-text); }
body.notes-workbench-page .workbench-copy-action {
  flex: 0 0 auto;
  min-width: 0;
  min-height: 24px;
  padding: 0 3px !important;
  border: 0 !important;
  color: var(--workbench-color-text-secondary);
  background: transparent !important;
  box-shadow: none;
  font-size: var(--workbench-type-meta) !important;
  font-weight: 650;
  line-height: 1;
}
body.notes-workbench-page .workbench-copy-action:hover,
body.notes-workbench-page .workbench-copy-action:focus-visible { color: var(--workbench-color-text); }
body.notes-workbench-page .workbench-message.is-user .workbench-copy-action { color: var(--wb-text); }
body.notes-workbench-page .workbench-copy-action:disabled { cursor: default; opacity: .42; }
body.notes-workbench-page .workbench-image-grid,
body.notes-workbench-page .image-conversation-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 220px));
  justify-content: start;
  gap: 12px;
  width: 100%;
  min-width: 0;
}
body.notes-workbench-page .workbench-message-turn.is-user .workbench-image-grid { justify-content: end; }
body.notes-workbench-page .image-conversation-gallery {
  width: min(100%, 880px);
  justify-self: start;
}
body.notes-workbench-page .workbench-image-container {
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto;
  min-width: 0;
  margin: 0;
  padding: 8px 8px 6px;
  overflow: hidden;
  border: 1px solid var(--workbench-color-border);
  border-radius: 14px;
  background: var(--workbench-color-surface);
}
body.notes-workbench-page .production-image-preview {
  display: block;
  width: 100%;
  min-height: 0;
  padding: 0 !important;
  overflow: hidden;
  border: 0 !important;
  border-radius: 9px;
  background: var(--wb-selected);
  box-shadow: none;
}
body.notes-workbench-page .production-image-preview img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 4;
  object-fit: contain;
  background: var(--wb-selected);
}
body.notes-workbench-page .workbench-image-container .workbench-message-footer { margin-top: 6px; }
@media (max-width: 760px) {
  body.notes-workbench-page .workbench-message-turn,
  body.notes-workbench-page .image-conversation-gallery { width: 100%; }
  body.notes-workbench-page .workbench-message-turn.is-user { width: min(92%, 680px); }
  body.notes-workbench-page .workbench-image-grid,
  body.notes-workbench-page .image-conversation-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 440px) {
  body.notes-workbench-page .workbench-image-grid,
  body.notes-workbench-page .image-conversation-gallery { grid-template-columns: 1fr; }
}

/* v1.17: 窄屏笔记页保留可见的工作区；导航改为横向滚动，不能把消息区推到视口之外。 */
@media (max-width: 760px) {
  body.notes-workbench-page .layout {
    display: flex;
    flex-direction: column;
    height: 100vh;
    min-height: 0;
    overflow: hidden;
  }
  body.notes-workbench-page .sidebar {
    flex: 0 0 auto;
    width: auto;
    height: auto;
    min-height: 0;
    padding: 10px 12px 8px;
    overflow: hidden;
  }
  body.notes-workbench-page .sidebar-brand {
    margin-bottom: 8px;
    padding-bottom: 8px;
  }
  body.notes-workbench-page .sidebar > .module-nav {
    display: flex;
    flex: 0 0 auto;
    width: 100%;
    gap: 8px;
    padding: 1px 0 3px;
    overflow-x: auto;
    overflow-y: hidden;
  }
  body.notes-workbench-page .sidebar > .module-nav > .module-nav-group {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 5px;
    width: auto;
    min-width: max-content;
    padding: 4px;
    overflow: visible;
  }
  body.notes-workbench-page .sidebar .module-nav-group-label { display: none; }
  body.notes-workbench-page .sidebar .module-nav-item {
    flex: 0 0 auto;
    width: auto;
    min-width: 94px;
    height: 32px;
    min-height: 32px;
    max-height: 32px;
  }
  body.notes-workbench-page .sidebar > .shell-user-menu { margin-top: 8px; }
  body.notes-workbench-page .workspace {
    flex: 1 1 auto;
    width: auto;
    height: auto;
    min-height: 0;
    overflow: hidden;
    padding: 12px 16px 96px;
  }
  body.notes-workbench-page .recent-work-rail {
    display: none;
  }
}

/* v1.18: 解除旧版对外层输入区的 106px 高度锁定。
   必须放在历史模块规则之后，否则 textarea 虽已增高，footer 仍会被压缩为零高。 */
body.chat-page-body .chat-composer-row,
body.notes-workbench-page .production-composer-row,
body:has(.image-workbench) .image-task-composer {
  height: auto !important;
  min-height: var(--workbench-composer-current-height) !important;
  overflow: visible !important;
}
body.chat-page-body .chat-composer-row .chat-form,
body.notes-workbench-page .production-composer-row .production-chat-form,
body:has(.image-workbench) .image-task-composer .image-task-message-form {
  height: auto !important;
  min-height: var(--workbench-composer-current-height) !important;
  grid-template-rows: auto auto auto !important;
  overflow: visible !important;
}
body.chat-page-body .chat-composer-row .workbench-composer-footer,
body.notes-workbench-page .production-composer-row .workbench-composer-footer,
body:has(.image-workbench) .image-task-composer .workbench-composer-footer {
  min-height: var(--workbench-composer-row-height);
}

/* v1.20: 图片工作区沿用与智能对话、笔记生产相同的动态输入框合同。
   历史 44px 上限只适用于旧的双行图片操作条；任务对话不能再继承它。 */
body:has(.image-workbench) .image-workbench:has(> .image-task-composer) {
  --module-media-composer-height: var(--workbench-composer-min-height);
}
body:has(.image-workbench) .image-task-composer {
  height: auto !important;
  min-height: var(--workbench-composer-current-height) !important;
  overflow: visible !important;
}
body:has(.image-workbench) .image-task-composer .image-task-message-form > textarea {
  min-height: var(--workbench-composer-textarea-height) !important;
  max-height: var(--workbench-composer-textarea-max-height) !important;
  overflow-y: auto !important;
}

/* v1.21: 三类工作区统一为原生消息流。
   AI 内容直接呈现；只有用户消息保留气泡；图片始终使用独立容器。 */
body:has(.layout) .layout :where(.workbench-message-list, .workbench-message-list) {
  display: grid;
  align-content: start;
  gap: 20px;
  min-width: 0;
  background: transparent;
  border: 0;
  box-shadow: none;
}
body:has(.layout) .layout .workbench-message {
  display: grid;
  align-content: start;
  gap: 8px;
  width: min(100%, 880px);
  max-width: min(100%, 880px);
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  color: var(--workbench-color-text);
}
body:has(.layout) .layout .workbench-message.is-assistant,
body:has(.layout) .layout .workbench-message.is-system,
body:has(.layout) .layout .workbench-message.workbench-image-result {
  justify-self: start;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}
body:has(.layout) .layout .workbench-message.is-user {
  justify-self: end;
  width: fit-content;
  max-width: min(82%, 680px);
  padding: 12px 16px;
  border: 1px solid transparent;
  border-radius: 15px 15px 4px 15px;
  background: var(--wb-selected);
  color: var(--wb-text);
}
body:has(.layout) .layout .workbench-message-turn > .workbench-message {
  width: 100%;
  max-width: none;
}
body:has(.layout) .layout .workbench-message-turn.is-user > .workbench-message {
  width: 100%;
  max-width: none;
}
body:has(.layout) .layout .workbench-message-markdown,
body:has(.layout) .layout .workbench-message > p {
  min-width: 0;
  margin: 0;
  overflow-wrap: anywhere;
}
body:has(.layout) .layout .workbench-message.is-user .workbench-message-markdown,
body:has(.layout) .layout .workbench-message.is-user > p {
  color: var(--wb-text);
}
body:has(.layout) .layout .workbench-message-context,
body:has(.layout) .layout .workbench-message-status,
body:has(.layout) .layout .workbench-message-pending {
  margin: 0;
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-type-support) !important;
  line-height: 1.45;
}
body:has(.layout) .layout .workbench-message-footer {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 12px;
  min-width: 0;
  margin-top: 2px;
  padding: 0 !important;
  border: 0 !important;
}
body:has(.layout) .layout .workbench-message-footer time {
  min-width: 0;
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-type-meta) !important;
  line-height: 1.3;
  white-space: nowrap;
}
body:has(.layout) .layout .workbench-message.is-user .workbench-message-footer time {
  color: var(--wb-text);
}
body:has(.layout) .layout .workbench-message-model {
  flex: 0 1 auto;
  min-width: 0;
  max-width: 30ch;
  overflow: hidden;
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-type-meta) !important;
  line-height: 1.3;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body:has(.layout) .layout .workbench-message.is-user .workbench-message-model { color: var(--wb-text); }
body:has(.layout) .layout .workbench-copy-action {
  display: inline-grid;
  flex: 0 0 auto;
  place-items: center;
  width: 26px;
  height: 26px;
  min-width: 26px;
  min-height: 26px;
  margin: 0;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 6px;
  background: transparent !important;
  box-shadow: none;
  color: var(--workbench-color-text-muted);
  cursor: pointer;
}
body:has(.layout) .layout .workbench-copy-action svg {
  width: 15px;
  height: 15px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.7;
}
body:has(.layout) .layout .workbench-copy-action:hover,
body:has(.layout) .layout .workbench-copy-action:focus-visible {
  color: var(--workbench-color-text);
  background: var(--wb-selected);
}
body:has(.layout) .layout .workbench-message.is-user .workbench-copy-action {
  color: var(--wb-text);
}
body:has(.layout) .layout .workbench-copy-action:disabled {
  cursor: default;
  opacity: .42;
}
body:has(.layout) .layout :where(.workbench-image-grid, .image-conversation-gallery) {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 220px));
  align-items: start;
  justify-content: start;
  gap: 12px;
  width: 100%;
  min-width: 0;
}
body:has(.layout) .layout .workbench-image-container {
  display: grid;
  grid-template-rows: auto auto auto;
  min-width: 0;
  margin: 0;
  padding: 8px;
  overflow: hidden;
  border: 1px solid var(--workbench-color-border);
  border-radius: 14px;
  background: var(--workbench-color-surface);
}
body:has(.layout) .layout .workbench-image-preview {
  display: block;
  width: 100%;
  min-width: 0;
  padding: 0 !important;
  overflow: hidden;
  border: 0 !important;
  border-radius: 9px;
  background: var(--wb-selected);
  box-shadow: none;
}
body:has(.layout) .layout .workbench-image-preview img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 4;
  object-fit: contain;
  background: var(--wb-selected);
}
body:has(.layout) .layout .workbench-image-container figcaption {
  min-width: 0;
  margin-top: 6px;
  overflow: hidden;
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-type-meta) !important;
  line-height: 1.3;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body:has(.layout) .layout .workbench-image-container .image-asset-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 8px;
  min-width: 0;
  margin-top: 4px;
}
body:has(.layout) .layout .workbench-image-container .workbench-message-footer {
  margin-top: 6px;
}
body:has(.layout) .layout .workbench-image-container .workbench-message-footer time {
  overflow: hidden;
  text-overflow: ellipsis;
}
body:has(.layout) .layout .workbench-message.is-failed {
  border: 0;
  background: transparent;
}

/* v1.24: 笔记结果区只保留外层输出滚动层，消息列表不再创建第二个滚动条。 */
body.notes-workbench-page .workbench-message-list {
  height: auto;
  min-height: 0;
  max-height: none;
  overflow: visible;
}

/* v1.22: 生产类对话区与智能对话保持同一阅读层。
   对话外层、AI/系统消息不铺静态底色；用户消息和图片结果容器保留各自的必要层级。 */
body:has(.layout) .layout :where(.production-conversation, .production-thread, .image-conversation-stream, .workbench-message-list) {
  background: transparent;
}
body:has(.layout) .layout :where(.image-job-detail, .workbench-message.is-assistant, .workbench-message.is-system, .workbench-message.workbench-image-result) {
  background: transparent;
}
body:has(.layout) .layout .workbench-message.is-user {
  background: var(--wb-selected);
}
@media (max-width: 760px) {
  body:has(.layout) .layout .workbench-message.is-user { max-width: 92%; }
  body:has(.layout) .layout :where(.workbench-image-grid, .image-conversation-gallery) {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 440px) {
  body:has(.layout) .layout :where(.workbench-image-grid, .image-conversation-gallery) {
    grid-template-columns: 1fr;
  }
}

/* v1.24: 图片查看器统一为单行操作栏；图片始终先完整适配可视区，再按比例缩放。 */
.image-lightbox {
  position: fixed;
  inset: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  overflow: hidden;
  padding: max(20px, 4vh) max(20px, 4vw) max(82px, 11vh);
  background: var(--wb-selected);
  -webkit-backdrop-filter: blur(24px) saturate(120%);
  backdrop-filter: blur(24px) saturate(120%);
}
.image-lightbox[hidden] { display: none; }
.image-lightbox .lightbox-frame {
  box-sizing: border-box;
  width: min(92vw, 1240px);
  height: min(82vh, 900px);
  max-width: calc(100vw - 40px);
  max-height: calc(100vh - 120px);
  min-width: 0;
  min-height: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  overflow: hidden;
}
.image-lightbox .lightbox-image-stage {
  box-sizing: border-box;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
}
.image-lightbox .lightbox-image-stage img {
  display: block;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  object-position: center;
  border: 1px solid transparent;
  box-sizing: border-box;
  transform-origin: center center;
  transition: transform .16s ease;
  cursor: default;
  user-select: none;
  -webkit-user-drag: none;
}
.image-lightbox .lightbox-image-stage img.is-zoomed { cursor: grab; }
.image-lightbox .lightbox-image-stage img.is-dragging { cursor: grabbing; transition: none; }
.image-lightbox .lightbox-toolbar {
  position: fixed;
  left: 50%;
  bottom: max(18px, 4vh);
  z-index: 3;
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
  gap: 8px;
  min-height: 40px;
  max-width: calc(100vw - 32px);
  padding: 5px 8px;
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: 999px;
  background: var(--wb-selected);
  box-shadow: none;
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
  transform: translateX(-50%);
  white-space: nowrap;
}
.image-lightbox .lightbox-nav-group,
.image-lightbox .lightbox-zoom-controls {
  display: flex;
  align-items: center;
  gap: 3px;
}
.image-lightbox .lightbox-zoom-controls {
  padding-left: 8px;
  border-left: 1px solid transparent;
}
.image-lightbox .lightbox-toolbar .lightbox-nav,
.image-lightbox .lightbox-toolbar .lightbox-action {
  position: static;
  display: inline-grid;
  place-items: center;
  flex: none;
  width: 30px;
  height: 30px;
  margin: 0;
  padding: 0;
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: 8px;
  background: var(--wb-selected);
  font-size: var(--workbench-type-page-title);
  line-height: 1;
  cursor: pointer;
  transform: none;
}
.image-lightbox .lightbox-toolbar .lightbox-action {
  width: auto;
  min-width: 48px;
  padding: 0 10px;
  font-size: var(--workbench-type-support);
}
.image-lightbox .lightbox-toolbar .lightbox-close {
  top: auto;
  right: auto;
  z-index: auto;
  border-radius: 8px;
}
.image-lightbox .lightbox-toolbar .lightbox-nav:hover,
.image-lightbox .lightbox-toolbar .lightbox-nav:focus-visible,
.image-lightbox .lightbox-toolbar .lightbox-action:hover,
.image-lightbox .lightbox-toolbar .lightbox-action:focus-visible,
.image-lightbox .lightbox-toolbar .lightbox-zoom-button:hover,
.image-lightbox .lightbox-toolbar .lightbox-zoom-button:focus-visible {
  border-color: transparent;
  background: var(--wb-selected);
  outline: none;
}
.image-lightbox .lightbox-toolbar .lightbox-nav:disabled,
.image-lightbox .lightbox-toolbar .lightbox-zoom-button:disabled {
  cursor: default;
  opacity: .38;
}
.image-lightbox .lightbox-toolbar .lightbox-counter {
  position: static;
  right: auto;
  bottom: auto;
  z-index: auto;
  min-width: 34px;
  padding: 0 2px;
  color: var(--wb-text);
  border: 0;
  border-radius: 0;
  background: transparent;
  font-size: var(--workbench-type-support);
  line-height: 30px;
  text-align: center;
  transform: none;
}
.image-lightbox .lightbox-toolbar .lightbox-zoom-button {
  position: static;
  width: 30px;
  height: 30px;
  margin: 0;
  padding: 0;
}
.image-lightbox .lightbox-toolbar .lightbox-zoom-level {
  min-width: 42px;
  color: var(--wb-text-secondary);
  font-size: var(--workbench-type-support);
  line-height: 30px;
  text-align: center;
}
@media (max-width: 760px) {
  .image-lightbox { padding-bottom: 82px; }
  .image-lightbox .lightbox-frame {
    width: calc(100vw - 32px);
    height: calc(100vh - 116px);
  }
  .image-lightbox .lightbox-toolbar { bottom: 14px; gap: 4px; padding-inline: 6px; }
  .image-lightbox .lightbox-toolbar .lightbox-action { min-width: 44px; padding-inline: 7px; }
}

/* v1.13: 发布体检只提供线上事实和最近一次受控发布记录，不承担部署操作。 */
body:has(.layout) .layout .release-status-section { gap: var(--workbench-space-4); }
body:has(.layout) .layout .admin-release-actions {
  display: flex;
  align-items: center;
  gap: var(--workbench-space-2);
}
body:has(.layout) .layout .release-status-summary {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
body:has(.layout) .layout .release-status-summary .admin-summary-card {
  min-width: 0;
}
body:has(.layout) .layout .release-status-model {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body:has(.layout) .layout .release-check-list,
body:has(.layout) .layout .release-last-section,
body:has(.layout) .layout .release-version-details {
  display: grid;
  gap: var(--workbench-space-3);
}
body:has(.layout) .layout .release-check-list > .section-heading,
body:has(.layout) .layout .release-last-section > .section-heading {
  margin-bottom: 0;
}
body:has(.layout) .layout .release-check-row {
  display: flex;
  align-items: flex-start;
  gap: var(--workbench-space-3);
  padding: var(--workbench-space-3);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-md);
  background: var(--workbench-color-surface);
}
body:has(.layout) .layout .release-check-row-main {
  display: grid;
  gap: var(--workbench-space-1);
  min-width: 0;
}
body:has(.layout) .layout .release-check-row-title {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--workbench-space-2);
}
body:has(.layout) .layout .release-check-row-title strong {
  color: var(--workbench-color-text);
  font-size: var(--workbench-type-body);
}
body:has(.layout) .layout .release-check-row p {
  margin: 0;
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-type-support);
  line-height: var(--workbench-line-normal);
  overflow-wrap: anywhere;
}
body:has(.layout) .layout .release-status-meta {
  margin: 0;
  padding: var(--workbench-space-3);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-md);
  background: var(--workbench-color-surface);
}
body:has(.layout) .layout .release-status-meta code,
body:has(.layout) .layout .release-version-table code {
  color: var(--workbench-color-text-secondary);
  font: var(--workbench-type-meta)/1.5 ui-monospace, SFMono-Regular, Menlo, monospace;
  overflow-wrap: anywhere;
}
body:has(.layout) .layout .release-version-details {
  padding: var(--workbench-space-3);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-md);
  background: var(--workbench-color-surface);
}
body:has(.layout) .layout .release-version-details > summary {
  cursor: pointer;
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-type-support);
}
body:has(.layout) .layout .release-version-table-wrap {
  display: grid;
  gap: var(--workbench-space-3);
}
body:has(.layout) .layout .release-version-table-wrap h4 {
  margin: 0;
  color: var(--workbench-color-text);
  font-size: var(--workbench-type-body);
}
body:has(.layout) .layout .release-version-table {
  min-width: 520px;
}
@media (max-width: 980px) {
  body:has(.layout) .layout .release-status-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  body:has(.layout) .layout .admin-release-actions { align-items: flex-start; flex-direction: column; }
  body:has(.layout) .layout .release-status-summary { grid-template-columns: 1fr; }
  body:has(.layout) .layout .release-check-row { padding: var(--workbench-space-2); }
}

/* Direct case reference picker: one compact, visual choice for chat, notes and images. */
.reference-case-picker-modal {
  position: fixed;
  z-index: 1000;
  inset: 0;
  display: grid;
  padding: var(--workbench-space-4);
  place-items: center;
  background: var(--wb-selected);
}
.reference-case-picker-panel {
  display: grid;
  width: min(1120px, 100%);
  max-height: min(86vh, 820px);
  overflow: hidden;
  border: 1px solid var(--workbench-color-border-strong);
  border-radius: var(--workbench-radius-lg);
  background: var(--workbench-color-surface-raised);
  box-shadow: none;
}
.reference-case-picker-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--workbench-space-4);
  padding: var(--workbench-space-4);
  border-bottom: 1px solid var(--workbench-color-border);
}
.reference-case-picker-header h2 {
  margin: 3px 0 5px;
  color: var(--workbench-color-text);
  font-size: var(--workbench-type-section-title);
}
.reference-case-picker-header p:last-child {
  margin: 0;
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-type-support);
}
.reference-case-picker-toolbar {
  display: grid;
  grid-template-columns: minmax(220px, 1.7fr) repeat(3, minmax(130px, 1fr));
  gap: var(--workbench-space-2);
  padding: var(--workbench-space-3) var(--workbench-space-4);
  border-bottom: 1px solid var(--workbench-color-border);
}
.reference-case-picker-status {
  padding: 0 var(--workbench-space-4) var(--workbench-space-2);
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-type-support);
}
.reference-case-picker-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--workbench-space-3);
  min-height: 180px;
  overflow: auto;
  padding: var(--workbench-space-3) var(--workbench-space-4) var(--workbench-space-4);
}
.reference-case-picker-card {
  min-width: 0;
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-md);
  background: var(--workbench-color-surface);
  transition: border-color .16s ease, transform .16s ease;
}
.reference-case-picker-card:hover,
.reference-case-picker-card.is-selected {
  border-color: var(--workbench-color-accent);
  transform: translateY(-1px);
}
.reference-case-picker-card button {
  display: grid;
  width: 100%;
  padding: 0;
  border: 0;
  color: inherit;
  text-align: left;
  background: transparent;
  cursor: pointer;
}
.reference-case-picker-media {
  display: grid;
  overflow: hidden;
  aspect-ratio: 3 / 4;
  place-items: center;
  border-radius: var(--workbench-radius-md) var(--workbench-radius-md) 0 0;
  background: var(--workbench-color-surface-subtle);
}
.reference-case-picker-media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.reference-case-picker-media span {
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-type-support);
}
.reference-case-picker-card-body {
  display: grid;
  gap: 4px;
  padding: var(--workbench-space-3);
}
.reference-case-picker-card-body strong,
.reference-case-picker-card-body small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.reference-case-picker-card-body strong { color: var(--workbench-color-text); font-size: var(--workbench-type-body); }
.reference-case-picker-card-body small { color: var(--workbench-color-text-secondary); font-size: var(--workbench-type-meta); }
.reference-case-picker-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}
.reference-case-picker-tags span {
  max-width: 100%;
  overflow: hidden;
  padding: 2px 6px;
  border-radius: 999px;
  color: var(--workbench-color-text-secondary);
  background: var(--workbench-color-surface-subtle);
  font-size: var(--workbench-type-meta);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.reference-case-picker-empty {
  display: grid;
  grid-column: 1 / -1;
  min-height: 170px;
  place-content: center;
  gap: 5px;
  color: var(--workbench-color-text-secondary);
  text-align: center;
}
.reference-case-picker-empty strong { color: var(--workbench-color-text); }
@media (max-width: 900px) {
  .reference-case-picker-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .reference-case-picker-toolbar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .reference-case-picker-toolbar input { grid-column: 1 / -1; }
}
@media (max-width: 600px) {
  .reference-case-picker-modal { padding: 0; place-items: stretch; }
  .reference-case-picker-panel { max-height: 100vh; border-radius: 0; }
  .reference-case-picker-header { padding: var(--workbench-space-3); }
  .reference-case-picker-toolbar { padding: var(--workbench-space-2) var(--workbench-space-3); }
  .reference-case-picker-status { padding-inline: var(--workbench-space-3); }
  .reference-case-picker-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); padding: var(--workbench-space-2) var(--workbench-space-3) var(--workbench-space-3); }
}

/* v1.25: reference cases share one compact attachment-row entry. */
body.reference-case-picker-open { overflow: hidden !important; }
.reference-case-compact-control {
  display: inline-flex;
  flex: 0 1 auto;
  align-items: center;
  gap: var(--workbench-space-1);
  min-width: 0;
}
.reference-case-compact-control > input { display: none; }
.reference-case-add {
  display: inline-flex;
  flex: 0 1 auto;
  align-items: center;
  gap: 6px;
  max-width: 210px;
  height: var(--workbench-composer-row-height, 32px);
  min-height: var(--workbench-composer-row-height, 32px);
  overflow: hidden;
  padding: 0 var(--workbench-space-2);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-sm);
  color: var(--workbench-color-text-secondary);
  background: transparent;
  font-size: var(--workbench-type-support);
  line-height: 1;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: pointer;
}
.reference-case-status-dot {
  width: 7px;
  height: 7px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: var(--workbench-color-accent);
  box-shadow: none;
}
.reference-case-strip-slot:empty { display: none; }
.reference-case-strip-slot {
  min-width: 0;
}
.production-attachment-area {
  display: grid;
  min-width: 0;
  gap: var(--workbench-space-2);
}
.production-attachment-area:has(.reference-case-strip-slot:not(:empty)) .production-image-preview:has(> .muted) { display: none; }
.workbench-composer-footer > .reference-case-strip-slot {
  grid-column: 1 / -1;
}
.reference-case-strip {
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--workbench-space-2);
  min-width: 0;
  min-height: 40px;
  padding: 3px var(--workbench-space-2);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-md);
  background: var(--workbench-color-surface-subtle);
}
.reference-case-strip-preview,
.reference-case-strip-empty {
  display: grid;
  width: 32px;
  height: 36px;
  overflow: hidden;
  padding: 0;
  place-items: center;
  border: 0;
  border-radius: var(--workbench-radius-sm);
  color: var(--workbench-color-text-muted);
  background: var(--workbench-color-surface);
  font-size: var(--workbench-type-meta);
}
.reference-case-strip-preview { cursor: zoom-in; }
.reference-case-strip-preview img { width: 100%; height: 100%; object-fit: contain; }
.workbench-message .chat-case-reference { display: flex; align-items: center; gap: 8px; min-width: 0; }
.workbench-message .chat-case-reference > .reference-case-strip-preview { flex: 0 0 32px; }
.workbench-message .chat-case-reference > .text { min-width: 0; text-align: left; white-space: normal; overflow-wrap: anywhere; }
.workbench-message.is-user .chat-case-reference > .text { color: inherit; }
.workbench-message.is-user .chat-case-reference { color: inherit !important; }
.reference-case-strip-copy { display: grid; min-width: 0; gap: 3px; }
.reference-case-strip-copy strong,
.reference-case-strip-copy span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.reference-case-strip-copy strong { color: var(--workbench-color-text); font-size: var(--workbench-type-support); }
.reference-case-strip-copy span { color: var(--workbench-color-text-muted); font-size: var(--workbench-type-meta); }
.reference-case-strip-actions { display: inline-flex; gap: var(--workbench-space-1); }
.reference-case-strip-actions button {
  min-height: 32px;
  padding: 0 var(--workbench-space-2);
  border: 0;
  border-radius: var(--workbench-radius-sm);
  color: var(--workbench-color-text-secondary);
  background: transparent;
  cursor: pointer;
}
.reference-case-strip-actions button:hover,
.reference-case-strip-actions button:focus-visible { color: var(--workbench-color-text); background: var(--workbench-color-surface); }
.reference-case-add:hover,
.reference-case-add:focus-visible {
  color: var(--workbench-color-text);
  border-color: var(--workbench-color-accent);
  background: var(--workbench-color-surface-subtle);
}
.production-image-input:not(.production-image-input-compact).has-reference-case-control .production-image-drop-zone {
  grid-template-columns: auto auto minmax(0, 1fr);
  align-items: center;
}
.production-image-input:not(.production-image-input-compact).has-reference-case-control .production-image-hint { min-width: 0; }

.reference-case-picker-panel {
  grid-template-rows: auto auto auto minmax(0, 1fr);
  min-height: 0;
}
.reference-case-picker-toolbar {
  grid-template-columns: minmax(240px, 1fr) minmax(150px, 220px) minmax(150px, 220px);
}
.reference-case-picker-toolbar label {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: var(--workbench-space-2);
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-type-support);
}
.reference-case-picker-body {
  display: grid;
  grid-template-columns: 170px minmax(0, 1fr);
  min-height: 0;
  overflow: hidden;
}
.reference-case-picker-taxonomy {
  min-height: 0;
  overflow-y: auto;
  padding: var(--workbench-space-2);
  border-right: 1px solid var(--workbench-color-border);
}
.reference-case-picker-taxonomy button {
  min-width: 0;
  border: 0;
  color: var(--workbench-color-text-secondary);
  background: transparent;
  cursor: pointer;
}
.reference-case-picker-all,
.reference-case-picker-industry-link,
.reference-case-picker-group {
  display: flex;
  width: 100%;
  align-items: center;
  justify-content: space-between;
  gap: var(--workbench-space-1);
  padding: 7px 8px;
  border-radius: var(--workbench-radius-sm);
  text-align: left;
}
.reference-case-picker-all span,
.reference-case-picker-industry-link span,
.reference-case-picker-group span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.reference-case-picker-taxonomy button:hover,
.reference-case-picker-taxonomy button:focus-visible,
.reference-case-picker-taxonomy button.is-active {
  color: var(--workbench-color-text);
  background: var(--workbench-color-surface-subtle);
}
.reference-case-picker-taxonomy button.is-active { box-shadow: none; }
.reference-case-picker-industry > div:first-child { display: grid; grid-template-columns: 24px minmax(0, 1fr); align-items: center; }
.reference-case-picker-toggle { width: 24px; height: 30px; padding: 0; font-size: var(--workbench-type-meta); }
.reference-case-picker-groups { display: grid; gap: 2px; padding-left: 24px; }
.reference-case-picker-group { font-size: var(--workbench-type-meta); }
.reference-case-picker-taxonomy small { color: var(--workbench-color-text-muted); font-size: var(--workbench-type-meta); }
.reference-case-picker-taxonomy-empty { display: block; padding: var(--workbench-space-2); color: var(--workbench-color-text-muted); font-size: var(--workbench-type-support); }
.reference-case-picker-grid {
  min-height: 0;
  align-content: start;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
}
.reference-case-picker-card > .reference-case-picker-media {
  width: 100%;
  padding: 0;
  border: 0;
  cursor: zoom-in;
}
.reference-case-picker-card > .reference-case-picker-media:disabled { cursor: default; }
.reference-case-picker-card-body strong {
  display: -webkit-box;
  min-height: 2.8em;
  overflow: hidden;
  white-space: normal;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.reference-case-picker-reasons {
  display: flex;
  min-width: 0;
  gap: 4px;
  overflow: hidden;
}
.reference-case-picker-reasons span {
  min-width: 0;
  overflow: hidden;
  padding: 2px 6px;
  border-radius: 999px;
  color: var(--workbench-color-text-muted);
  background: var(--workbench-color-surface-subtle);
  font-size: var(--workbench-type-meta);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.reference-case-picker-reasons b { color: var(--workbench-color-text); font-weight: 600; }
.reference-case-picker-card-body .reference-case-picker-select {
  display: inline-flex;
  width: 100%;
  min-height: 32px;
  align-items: center;
  justify-content: center;
  margin-top: 3px;
  padding: 0 var(--workbench-space-2);
  border: 1px solid var(--workbench-color-border);
  border-radius: var(--workbench-radius-sm);
  color: var(--workbench-color-text-secondary);
  background: transparent;
  text-align: center;
  cursor: pointer;
}
.reference-case-picker-card-body .reference-case-picker-select:hover,
.reference-case-picker-card-body .reference-case-picker-select:focus-visible,
.reference-case-picker-card.is-selected .reference-case-picker-select { color: var(--workbench-color-text); border-color: var(--workbench-color-accent); }

@media (max-width: 760px) {
  .reference-case-picker-body { grid-template-columns: 132px minmax(0, 1fr); }
  .reference-case-picker-toolbar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .reference-case-picker-toolbar > input { grid-column: 1 / -1; }
  .reference-case-picker-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 520px) {
  .reference-case-picker-panel { height: 100dvh; max-height: 100dvh; }
  .reference-case-picker-toolbar { grid-template-columns: 1fr; }
  .reference-case-picker-toolbar label { grid-template-columns: 1fr; gap: 4px; }
  .reference-case-picker-body { grid-template-columns: 112px minmax(0, 1fr); }
  .reference-case-picker-grid { grid-template-columns: 1fr; }
  .reference-case-strip { grid-template-columns: 32px minmax(0, 1fr) auto; }
  .reference-case-strip-preview,
  .reference-case-strip-empty { width: 32px; height: 36px; }
  .reference-case-strip-copy span { display: none; }
  .reference-case-strip-actions button { padding-inline: 5px; }
  .production-image-input:not(.production-image-input-compact).has-reference-case-control .production-image-drop-zone { grid-template-columns: auto auto; }
  .production-image-input:not(.production-image-input-compact).has-reference-case-control .production-image-hint { grid-column: 1 / -1; }
}

/* v1.35: 附件与参考案例共用一条可见缩略图轨道。
   旧规则把附件托盘限制为半宽、把案例卡片固定成 520px，并裁掉轨道
   的纵向溢出；在窄工作区或输入区动态增高时，缩略图因此会被压缩或遮挡。
   这里仅统一轨道几何，不改变文件类型、案例选择和放大预览行为。 */
:root {
  --workbench-composer-thumbnail-size: 40px;
  --workbench-composer-thumbnail-lane-height: 48px;
}
body:has(.layout) .layout .workbench-composer-attachment-area {
  display: none;
  width: 100%;
  min-width: 0;
  align-items: center;
  gap: var(--workbench-space-2);
  overflow: visible;
}
body:has(.layout) .layout .workbench-composer-attachment-area:has(.workbench-composer-attachment-tray:not(:empty)),
body:has(.layout) .layout .workbench-composer-attachment-area:has(.reference-case-strip-slot:not(:empty)) {
  display: flex;
}
body:has(.layout) .layout .workbench-composer-attachment-area .workbench-composer-attachment-tray {
  flex: 1 1 0;
  width: auto;
  min-width: 0;
  max-width: none;
  height: var(--workbench-composer-thumbnail-lane-height);
  min-height: var(--workbench-composer-thumbnail-lane-height);
  max-height: var(--workbench-composer-thumbnail-lane-height);
  padding: 4px 7px 4px 4px;
  overflow-x: auto;
  overflow-y: visible;
}
body:has(.layout) .layout .workbench-composer-attachment-area .reference-case-strip-slot {
  flex: 1 1 0;
  width: 100%;
  min-width: 0;
}
body:has(.layout) .layout .workbench-composer-attachment-area .reference-case-strip {
  width: 100%;
  min-height: var(--workbench-composer-thumbnail-lane-height);
  box-sizing: border-box;
  grid-template-columns: var(--workbench-composer-thumbnail-size) minmax(0, 1fr) auto;
  padding: 3px var(--workbench-space-2);
}
body:has(.layout) .layout .workbench-composer-attachment-area .reference-case-strip-preview,
body:has(.layout) .layout .workbench-composer-attachment-area .reference-case-strip-empty {
  width: var(--workbench-composer-thumbnail-size);
  height: var(--workbench-composer-thumbnail-size);
  min-width: var(--workbench-composer-thumbnail-size);
  min-height: var(--workbench-composer-thumbnail-size);
}
body:has(.layout) .layout .workbench-composer-attachment-tray .workbench-attachment-image,
body:has(.layout) .layout .workbench-composer-attachment-tray .workbench-attachment-file {
  height: var(--workbench-composer-thumbnail-size);
  min-height: var(--workbench-composer-thumbnail-size);
  max-height: var(--workbench-composer-thumbnail-size);
}
body:has(.layout) .layout .workbench-composer-attachment-tray .workbench-attachment-image {
  width: var(--workbench-composer-thumbnail-size);
  min-width: var(--workbench-composer-thumbnail-size);
  overflow: visible;
}
body:has(.layout) .layout .workbench-composer-attachment-tray .workbench-attachment-image-preview,
body:has(.layout) .layout .workbench-composer-attachment-area .reference-case-strip-preview {
  box-sizing: border-box;
  overflow: hidden;
}
body:has(.layout) .layout .workbench-composer-attachment-tray .production-image-remove {
  top: -4px;
  right: -4px;
}

/* v1.13: 新建笔记任务与其他创建页统一为紧凑中间表单。
   任务栏保留固定高度，字段按两栏排列，长内容只在中间工作区滚动。 */
body.notes-workbench-page .notes-create-workbench .notes-create-stage {
  align-items: flex-start;
}

body.notes-workbench-page .notes-create-stage > #task-form.note-create-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-content: start;
  align-items: start;
  gap: var(--workbench-space-3) var(--workbench-space-4);
  width: min(920px, 100%);
  max-width: none;
  height: auto;
  min-height: 0;
  margin: 0 auto var(--module-edge-gap);
  padding: var(--workbench-space-4);
  box-sizing: border-box;
}

body.notes-workbench-page .note-create-form > label,
body.notes-workbench-page .note-create-form > .production-image-input {
  min-width: 0;
}

body.notes-workbench-page .note-create-form > label:nth-of-type(3),
body.notes-workbench-page .note-create-form > .production-image-input,
body.notes-workbench-page .note-create-form > .primary {
  grid-column: 1 / -1;
}

body.notes-workbench-page .note-create-form > label {
  gap: var(--workbench-space-1);
}

body.notes-workbench-page .note-create-form input,
body.notes-workbench-page .note-create-form select {
  min-height: 38px;
  padding-top: 8px;
  padding-bottom: 8px;
}

body.notes-workbench-page .note-create-form textarea[name="brief"] {
  height: 112px;
  min-height: 112px;
  max-height: 160px;
  resize: vertical;
}

body.notes-workbench-page .note-create-form > .production-image-input {
  display: grid;
  gap: var(--workbench-space-2);
  margin: 0;
}

body.notes-workbench-page .note-create-form .production-image-drop-zone {
  min-width: 0;
  min-height: 54px;
  padding: 9px 12px;
  box-sizing: border-box;
}

body.notes-workbench-page .note-create-form .production-image-hint {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body.notes-workbench-page .note-create-form .production-attachment-area {
  min-width: 0;
}

body.notes-workbench-page .note-create-form .production-image-preview {
  min-height: 0;
  margin: 0;
}

body.notes-workbench-page .note-create-form > .primary {
  justify-self: end;
  width: auto;
  min-height: 38px;
  margin-top: var(--workbench-space-1);
}

@media (max-width: 760px) {
  body.notes-workbench-page .notes-create-stage > #task-form.note-create-form {
    grid-template-columns: 1fr;
    gap: var(--workbench-space-3);
    padding: var(--workbench-space-3);
  }

  body.notes-workbench-page .note-create-form > label:nth-of-type(3),
  body.notes-workbench-page .note-create-form > .production-image-input,
  body.notes-workbench-page .note-create-form > .primary {
    grid-column: 1;
  }

  body.notes-workbench-page .note-create-form .production-image-hint {
    white-space: normal;
  }
}

/* v1.26: 结合 Frontend Design 的方法论做一次工作台视觉收敛。
   只作用于已登录工作台，不改变登录页、业务流程或模型调用。
   重点是明确层级、保留内容焦点、减少装饰层，并让焦点/动效服务于操作。 */
:root {
  --workbench-content-measure: 72ch;
  --workbench-surface-flat: var(--wb-bg);
  --workbench-border-subtle: transparent;
  --workbench-focus-ring: 0 0 0 2px var(--wb-bg);
  --workbench-motion-fast: 120ms;
  --workbench-motion-standard: 180ms;
}

body:has(.layout) {
  color: var(--workbench-color-text);
  background: var(--workbench-color-bg);
}

body:has(.layout) .layout {
  background: transparent;
}

/* 导航只保留可读结构：分组标题、透明功能项、清晰选中态；不再叠加外框、渐变和阴影。 */
body:has(.layout) .layout .sidebar {
  display: flex;
  flex-direction: column;
  min-height: 0;
  padding: 14px 8px var(--module-edge-gap);
  background: transparent !important;
  border: 0 !important;
  box-shadow: none;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}

body:has(.layout) .layout .sidebar::before,
body:has(.layout) .layout .sidebar::after {
  display: none !important;
}

body:has(.layout) .layout .sidebar-brand {
  flex: 0 0 auto;
  min-width: 0;
  margin: 0 0 var(--workbench-space-2);
  padding: 0 8px;
}

body:has(.layout) .layout .sidebar-brand .brand-mark {
  display: none;
}

body:has(.layout) .layout .sidebar-brand h1 {
  overflow: hidden;
  color: var(--workbench-color-text);
  font-size: var(--workbench-type-section-title) !important;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body:has(.layout) .layout .sidebar > .module-nav {
  display: grid;
  flex: 1 1 auto;
  min-height: 0;
  margin-top: var(--workbench-space-2);
  padding: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
}

body:has(.layout) .layout .sidebar .module-nav-group {
  display: grid;
  align-content: start;
  gap: 2px;
  min-width: 0;
  padding: 0;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none;
}

body:has(.layout) .layout .sidebar .module-nav-group + .module-nav-group {
  margin-top: 8px;
}

body:has(.layout) .layout .sidebar .module-nav-group-label {
  display: flex;
  align-items: center;
  min-height: 22px;
  padding: 0 8px;
  color: var(--workbench-color-accent) !important;
  font-size: var(--workbench-type-section-title) !important;
  font-weight: 650;
  letter-spacing: 0;
  line-height: 1.35;
}

body:has(.layout) .layout .sidebar .module-nav-item {
  position: relative;
  display: flex;
  align-items: center;
  height: var(--workbench-module-nav-item-height);
  min-height: var(--workbench-module-nav-item-height);
  max-height: var(--workbench-module-nav-item-height);
  min-width: 0;
  padding: 0 8px;
  color: var(--workbench-color-text) !important;
  border: 1px solid var(--workbench-border-subtle) !important;
  border-radius: var(--workbench-radius-sm);
  background: transparent !important;
  box-shadow: none;
  font-size: var(--workbench-type-body) !important;
  font-weight: 550;
  line-height: 1.35;
  transform: none !important;
  transition: background var(--workbench-motion-standard) ease, border-color var(--workbench-motion-standard) ease;
}

body:has(.layout) .layout .sidebar .module-nav-item > span:first-child {
  min-width: 0;
  overflow: hidden;
  color: inherit !important;
  font-size: inherit !important;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body:has(.layout) .layout .sidebar .module-nav-item:hover,
body:has(.layout) .layout .sidebar .module-nav-item:focus-visible {
  color: var(--workbench-color-text) !important;
  border-color: var(--workbench-color-border-strong) !important;
  background: var(--workbench-color-surface-hover) !important;
  box-shadow: none;
  outline: none;
}

body:has(.layout) .layout .sidebar .module-nav-item.active,
body:has(.layout) .layout .sidebar .module-nav-item.active:hover,
body:has(.layout) .layout .sidebar .module-nav-item.has-running-status.active {
  color: var(--workbench-color-text) !important;
  border-color: var(--workbench-color-border-accent) !important;
  background: var(--wb-selected);
  box-shadow: none;
  font-weight: 650;
  animation: none !important;
}

body:has(.layout) .layout .sidebar .module-nav-item.has-running-status:not(.active) {
  border-color: transparent !important;
  background: transparent !important;
}

body:has(.layout) .layout .sidebar > .shell-user-menu {
  flex: 0 0 auto;
  min-width: 0;
  margin-top: var(--workbench-space-3);
  padding: var(--workbench-space-2) 8px 0;
  border-top: 1px solid var(--workbench-border-subtle);
  color: var(--workbench-color-text-secondary);
}

body:has(.layout) .layout .sidebar > .shell-user-menu > span:first-child {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* 右侧最近工作是固定阅读栏；内容项使用信息层级，不依赖卡片跳动或阴影。 */
body:has(.layout) .layout .recent-work-panel {
  padding: var(--workbench-space-3);
  border: 1px solid var(--workbench-border-subtle);
  border-radius: var(--workbench-radius-lg);
  background: var(--workbench-surface-flat);
  box-shadow: none;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}

body:has(.layout) .layout .recent-work-heading {
  gap: var(--workbench-space-2);
  padding: 0 0 var(--workbench-space-2);
  border-bottom-color: var(--workbench-border-subtle);
}

body:has(.layout) .layout .recent-work-heading h2 {
  color: var(--workbench-color-text);
  font-size: var(--workbench-type-section-title) !important;
  line-height: 1.35;
}

body:has(.layout) .layout .recent-work-item {
  min-width: 0;
  padding: var(--workbench-space-2);
  border: 1px solid transparent;
  border-radius: var(--workbench-radius-sm);
  background: transparent;
  box-shadow: none;
  transform: none !important;
  transition: background var(--workbench-motion-standard) ease, border-color var(--workbench-motion-standard) ease;
}

body:has(.layout) .layout .recent-work-item:hover,
body:has(.layout) .layout .recent-work-item:focus-visible,
body:has(.layout) .layout .recent-work-item.active {
  border-color: var(--workbench-color-border);
  background: var(--workbench-color-surface-hover);
  outline: none;
}

body:has(.layout) .layout .recent-work-item > strong,
body:has(.layout) .layout .recent-work-project,
body:has(.layout) .layout .recent-work-status {
  min-width: 0;
  max-width: 100%;
}

body:has(.layout) .layout .recent-work-status .status-badge {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* v1.22: 工作台浅色主题。
   主题只作用于已登录后的 .layout，登录页继续使用原有主题；布局、字号、
   任务栏高度和输入区坐标不在这里改动。历史组件通过语义别名接入，新增模块
   只能使用 workbench-* 颜色变量，避免再出现局部硬编码。 */
html[data-theme="light"] body:has(.layout) {
  --paper: var(--wb-bg);
  --card: var(--wb-bg);
  --card-raised: var(--wb-selected);
  --line: transparent;
  --accent: var(--wb-accent);
  --accent-dark: var(--wb-accent);
  --accent-soft: var(--wb-accent);
  --sand: var(--wb-selected);
  --danger: var(--wb-error);
  --shadow: none;

  --workbench-color-bg: var(--wb-bg);
  --workbench-color-surface: var(--wb-bg);
  --workbench-color-surface-raised: var(--wb-selected);
  --workbench-color-surface-subtle: var(--wb-selected);
  --workbench-color-surface-hover: var(--wb-selected);
  --workbench-color-input: var(--wb-selected);
  --workbench-color-input-focus: var(--wb-selected);
  --workbench-color-text: var(--wb-text);
  --workbench-color-text-body: var(--wb-text);
  --workbench-color-ai-output: var(--wb-bg);
  --workbench-color-on-accent: var(--wb-accent);
  --workbench-color-text-secondary: var(--wb-text-secondary);
  --workbench-color-text-muted: var(--wb-text-secondary);
  --workbench-color-text-subtle: var(--wb-text);
  --workbench-color-accent: var(--wb-accent);
  --workbench-color-accent-hover: var(--wb-accent);
  --workbench-color-accent-soft: var(--wb-accent);
  --workbench-color-accent-surface: var(--wb-accent);
  --workbench-color-danger: var(--wb-error);
  --workbench-color-warning: var(--wb-text-secondary);
  --workbench-color-border: transparent;
  --workbench-color-border-strong: transparent;
  --workbench-color-border-accent: transparent;
  --workbench-color-control-border: transparent;
  --workbench-color-control-border-focus: transparent;
  --workbench-color-focus-ring: 0 0 0 3px var(--wb-bg);
  --workbench-color-user-message-text: var(--wb-on-selected);
  --workbench-color-overlay: var(--wb-bg);
  --workbench-surface-flat: var(--wb-bg);
  --workbench-border-subtle: transparent;
}

html[data-theme="light"] body:has(.layout),
html[data-theme="light"] body:has(.layout) .layout {
  color: var(--workbench-color-text);
  background: var(--workbench-color-bg) !important;
  background-image: none !important;
}

html[data-theme="light"] body:has(.layout) .sidebar {
  background: var(--wb-selected);
  border-color: var(--workbench-color-border) !important;
}

html[data-theme="light"] body:has(.layout) .workspace,
html[data-theme="light"] body:has(.layout) .recent-work-rail {
  background: var(--workbench-color-bg) !important;
}

html[data-theme="light"] body:has(.layout) :where(
  .module-taskbar,
  .home-hero,
  .home-hero-note,
  .module-intro,
  .knowledge-note,
  .bilibili-result,
  .bilibili-start-card,
  .task-form,
  .new-note-panel,
  .custom-ratio-panel,
  .bilibili-form-panel,
  .video-production-form,
  .image-job-create-form,
  .module-panel,
  .module-card,
  .task-card,
  .task-list-panel,
  .recent-work-panel,
  .case-row,
  .case-group-sidebar,
  .case-meta-panel,
  .case-create-panel,
  .group-create-form,
  .dictionary-section,
  .skill-card,
  .skill-detail-source,
  .skill-detail-meta,
  .admin-card,
  .admin-panel,
  .project-knowledge-file,
  .image-job-detail,
  .video-task-card
) {
  color: var(--workbench-color-text);
  background: var(--workbench-color-surface) !important;
  border-color: var(--workbench-color-border) !important;
  box-shadow: none;
}

html[data-theme="light"] body:has(.layout) :where(.task-form, .new-note-panel, .video-production-form) :where(label, legend, strong) {
  color: var(--workbench-color-text) !important;
}

html[data-theme="light"] body:has(.layout) :where(.task-form, .new-note-panel, .video-production-form) :where(p, small, .form-help) {
  color: var(--workbench-color-text-secondary) !important;
}

html[data-theme="light"] body:has(.layout) :where(
  h1, h2, h3, h4, h5, h6, strong, label, summary, .field-label,
  .module-nav-group-label, .work-taskbar-field-value, .recent-work-item > strong,
  .task-card-open > strong, .module-card > strong, .page-head h1, .page-head h2
) {
  color: var(--workbench-color-text) !important;
}

html[data-theme="light"] body:has(.layout) :where(
  p, li, blockquote, small, .muted, .form-help, .image-help,
  .work-taskbar-field-label, .work-taskbar-field-meta, .recent-work-project,
  .recent-work-status, .module-card > p, .task-card-open > p
) {
  color: var(--workbench-color-text-secondary) !important;
}

html[data-theme="light"] body:has(.layout) :where(input, textarea, select) {
  color: var(--workbench-color-text) !important;
  background: var(--workbench-color-input) !important;
  border-color: var(--workbench-color-control-border) !important;
}

html[data-theme="light"] body:has(.layout) :where(input, textarea, select):focus {
  background: var(--workbench-color-input-focus) !important;
  border-color: var(--workbench-color-control-border-focus) !important;
  box-shadow: none;
}

html[data-theme="light"] body:has(.layout) :where(input, textarea, select)::placeholder {
  color: var(--workbench-color-text-subtle) !important;
}

html[data-theme="light"] body:has(.layout) :where(.primary) {
  color: var(--workbench-color-on-accent) !important;
  background: var(--workbench-color-accent) !important;
  border-color: var(--workbench-color-accent) !important;
  box-shadow: none;
}

html[data-theme="light"] body:has(.layout) :where(.primary:hover) {
  background: var(--workbench-color-accent-hover) !important;
  border-color: var(--workbench-color-accent-hover) !important;
}

html[data-theme="light"] body:has(.layout) :where(.secondary) {
  color: var(--workbench-color-text-secondary) !important;
  background: var(--workbench-color-surface-subtle) !important;
  border-color: var(--workbench-color-border) !important;
}

html[data-theme="light"] body:has(.layout) :where(.text) {
  color: var(--workbench-color-text-secondary) !important;
}

html[data-theme="light"] body:has(.layout) :where(.text:hover, .secondary:hover) {
  color: var(--workbench-color-text) !important;
  background: var(--workbench-color-surface-hover) !important;
}

html[data-theme="light"] body:has(.layout) .module-nav-item {
  color: var(--workbench-color-text-secondary) !important;
  background: transparent !important;
  border-color: transparent !important;
}

html[data-theme="light"] body:has(.layout) .module-nav-item:hover,
html[data-theme="light"] body:has(.layout) .module-nav-item.active {
  color: var(--workbench-color-text) !important;
  background: var(--workbench-color-surface-hover) !important;
  border-color: var(--workbench-color-border-strong) !important;
  box-shadow: none;
}

html[data-theme="light"] body:has(.layout) .module-nav-group-label,
html[data-theme="light"] body:has(.layout) .eyebrow,
html[data-theme="light"] body:has(.layout) .work-taskbar-field-label {
  color: var(--workbench-color-accent) !important;
}

html[data-theme="light"] body:has(.layout) .sidebar-brand,
html[data-theme="light"] body:has(.layout) .sidebar > .shell-user-menu {
  border-color: var(--workbench-color-border) !important;
}

html[data-theme="light"] body:has(.layout) .sidebar > .shell-user-menu {
  color: var(--workbench-color-text-secondary) !important;
  background: var(--wb-selected);
  box-shadow: none;
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
}

html[data-theme="light"] body:has(.layout) :where(.workbench-message.is-user) {
  color: var(--wb-text);
  background: var(--workbench-color-accent-soft) !important;
}

html[data-theme="light"] body:has(.layout) :where(.workbench-message.is-assistant) {
  color: var(--workbench-color-text-body) !important;
  background: transparent !important;
}

/* 笔记生产的 AI 正文使用深墨绿色，避免浅色主题下的浅绿文字失去对比度。
   只调整阅读色，不改变标题层级、列表结构或消息布局。 */
html[data-theme="light"] body.notes-workbench-page :where(
  .note-markdown,
  .workbench-message-markdown
) {
  color: var(--workbench-color-ai-output) !important;
}

html[data-theme="light"] body.notes-workbench-page :where(
  .note-markdown > h2,
  .note-markdown > h3,
  .note-markdown > h4,
  .note-markdown > h5,
  .note-markdown > h6,
  .workbench-message-markdown > h2,
  .workbench-message-markdown > h3,
  .workbench-message-markdown > h4,
  .workbench-message-markdown > h5,
  .workbench-message-markdown > h6,
  .note-markdown strong,
  .workbench-message-markdown strong
) {
  color: var(--workbench-color-text) !important;
}

html[data-theme="light"] body.notes-workbench-page :where(
  .note-markdown li::marker,
  .workbench-message-markdown li::marker
) {
  color: var(--workbench-color-text-muted) !important;
}

html[data-theme="light"] body.notes-workbench-page :where(
  .note-markdown a,
  .workbench-message-markdown a,
  .note-title-selected
) {
  color: var(--workbench-color-accent-hover) !important;
}

html[data-theme="light"] body.notes-workbench-page .note-markdown code {
  color: var(--wb-text);
  background: var(--wb-selected);
}

html[data-theme="light"] body:has(.layout) .workbench-composer-form,
html[data-theme="light"] body:has(.layout) .chat-form,
html[data-theme="light"] body:has(.layout) .production-chat-form,
html[data-theme="light"] body:has(.layout) .image-task-message-form {
  background: var(--workbench-color-surface) !important;
  border-color: var(--workbench-color-border) !important;
  box-shadow: none;
}

html[data-theme="light"] body:has(.layout) :where(.status-badge, .status-pill) {
  color: var(--workbench-color-text-secondary) !important;
  background: var(--workbench-color-surface-subtle) !important;
  border-color: var(--workbench-color-border) !important;
}

html[data-theme="light"] body:has(.layout) :where(.image-lightbox, .image-lightbox-backdrop, .lightbox-overlay) {
  background: var(--wb-selected);
}

html[data-theme="light"] body:has(.layout) .theme-toggle {
  min-width: 58px;
  white-space: nowrap;
}

/* 任务栏保持 58px，不靠缩小容器解决拥挤；字段只收敛为两层，并在窄屏统一降到 12px。 */
body:has(.layout) .layout :where(.module-taskbar, .chat-page-head.module-taskbar, .production-page-head.module-taskbar) {
  background: var(--workbench-surface-flat) !important;
  border-color: var(--workbench-border-subtle) !important;
  box-shadow: none;
}

body:has(.layout) .layout .work-taskbar-field-label {
  color: var(--workbench-color-accent) !important;
  font-size: var(--workbench-type-meta) !important;
  font-weight: 650;
}

body:has(.layout) .layout .work-taskbar-field-value {
  color: var(--workbench-color-text) !important;
  font-size: var(--workbench-type-body) !important;
  font-weight: 550;
}

body:has(.layout) .layout .work-taskbar-actions {
  flex-wrap: nowrap;
  min-width: max-content;
}

body:has(.layout) .layout .work-taskbar-actions > :where(.primary, .text) {
  flex: 0 0 auto;
  white-space: nowrap;
}

/* 图片任务栏在窄窗口下保留尺寸字段的可读宽度，操作区独立占一行。 */
@media (max-width: 760px) {
  body:has(.layout) .layout .work-taskbar:has(.work-taskbar-image-size) {
    flex-wrap: wrap;
    align-content: center;
    row-gap: var(--workbench-space-1);
    padding-block: 7px;
  }

  body:has(.layout) .layout .work-taskbar:has(.work-taskbar-image-size) > :first-child {
    flex: 0 0 100%;
    width: 100%;
  }

  body:has(.layout) .layout .work-taskbar:has(.work-taskbar-image-size) .work-taskbar-context,
  body:has(.layout) .layout .work-taskbar:has(.work-taskbar-image-size) .work-taskbar-view {
    width: 100%;
    inline-size: 100%;
  }

  body:has(.layout) .layout .work-taskbar:has(.work-taskbar-image-size) .work-taskbar-name {
    flex: 1 1 0;
  }

  body:has(.layout) .layout .work-taskbar:has(.work-taskbar-image-size) .work-taskbar-project {
    flex: .9 1 0;
  }

  body:has(.layout) .layout .work-taskbar:has(.work-taskbar-image-size) .work-taskbar-image-size {
    flex: 1.45 1 0;
  }

  body:has(.layout) .layout .work-taskbar:has(.work-taskbar-image-size) .work-taskbar-actions {
    flex: 0 0 100%;
    justify-content: flex-end;
    min-width: 0;
  }
}

/* 工作区只强调内容本身；AI 输出不再套静态色块，用户消息继续使用既定浅绿色。 */
body:has(.layout) .layout :where(.production-thread, .production-conversation, .image-conversation-stream, .workbench-message-list) {
  background: transparent !important;
  border: 0;
  box-shadow: none;
}

body:has(.layout) .layout :where(.workbench-message.is-assistant, .workbench-message.is-system, .workbench-message.workbench-image-result) {
  max-width: var(--workbench-content-measure);
  background: transparent !important;
  border: 0;
  box-shadow: none;
}

body:has(.layout) .layout .workbench-message.is-user {
  background: var(--workbench-color-accent-soft) !important;
  border-color: transparent;
}

body:has(.layout) .layout :where(.workbench-message-markdown, .note-markdown, .workbench-markdown) {
  max-width: var(--workbench-content-measure);
  overflow-wrap: anywhere;
}

body:has(.layout) .layout :where(.workbench-message-markdown a, .note-markdown a, .workbench-markdown a) {
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}

/* 输入框的容器层级保持单层，附件、提示和发送按钮不再被阴影/背景色块挤压。 */
body:has(.layout) .layout :where(.module-composer, .workbench-composer-form, .chat-form, .production-chat-form, .image-task-message-form) {
  border-color: var(--workbench-border-subtle);
  box-shadow: none;
  background: var(--workbench-surface-flat);
}

body:has(.layout) .layout :where(.workbench-composer-form > textarea, .chat-form > textarea, .production-chat-form > textarea, .image-task-message-form > textarea) {
  color: var(--workbench-color-text);
  background: var(--workbench-color-bg);
  border-color: var(--workbench-border-subtle);
}

body:has(.layout) .layout :where(.workbench-composer-form > textarea:focus, .chat-form > textarea:focus, .production-chat-form > textarea:focus, .image-task-message-form > textarea:focus,
  .module-nav-item:focus-visible, .recent-work-item:focus-visible, .primary:focus-visible, .secondary:focus-visible, .text:focus-visible) {
  box-shadow: none;
}

/* 卡片只保留实体边界，不用位移制造“按钮感”；信息层级由内容和间距表达。 */
body:has(.layout) .layout :where(.task-card, .module-card, .case-card, .generated-image, .reference-case-picker-card, .admin-summary-card) {
  box-shadow: none;
  transform: none;
  transition: border-color var(--workbench-motion-standard) ease, background var(--workbench-motion-standard) ease;
}

body:has(.layout) .layout :where(.task-card:hover, .module-card:hover, .case-card:hover, .generated-image:hover, .reference-case-picker-card:hover) {
  box-shadow: none;
  transform: none;
}

@media (max-width: 1180px) and (min-width: 761px) {
  body:has(.layout) .layout .work-taskbar-field-value {
    font-size: var(--workbench-type-support) !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  body:has(.layout) .layout *,
  body:has(.layout) .layout *::before,
  body:has(.layout) .layout *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
  }
}

/* v1.27: 工作台统一五级字号最终契约。
   只作用于已登录后的 .layout；登录页继续使用自己的字号。
   工作台的文字最终只能落在 18 / 16 / 14 / 12 / 10px 五档。 */
body:has(.layout) .layout {
  --workbench-type-page-title: 18px;
  --workbench-type-section-title: 16px;
  --workbench-type-body: 14px;
  --workbench-type-support: 12px;
  --workbench-type-meta: 10px;
  --workbench-font-size-page: var(--workbench-type-page-title);
  --workbench-font-size-section: var(--workbench-type-section-title);
  --workbench-font-size-title: var(--workbench-type-section-title);
  --workbench-font-size-body: var(--workbench-type-body);
  --workbench-font-size-sm: var(--workbench-type-support);
  --workbench-font-size-xs: var(--workbench-type-meta);
  --workbench-font-size-core: var(--workbench-type-body);
  --workbench-font-size-heading: var(--workbench-type-section-title);
  --workbench-markdown-title-size: var(--workbench-type-page-title);
  --workbench-markdown-section-size: var(--workbench-type-section-title);
  --workbench-markdown-subtitle-size: var(--workbench-type-body);
  --workbench-markdown-body-size: var(--workbench-type-body);
}

/* v1.27 语义映射：通用继承只提供核心正文，独立标题和辅助操作在最后统一归位。 */
body:has(.layout) .layout :where(
  .module-card > strong,
  .task-card-open > strong,
  .direction-card-title > strong
) {
  font-size: var(--workbench-type-section-title) !important;
  line-height: 1.45;
}

body:has(.layout) .layout :where(
  .module-card small,
  .task-card small,
  .module-card .button-link,
  .task-card .button-link
) {
  font-size: var(--workbench-type-support) !important;
  line-height: 1.45;
}

/* v1.28: Workbench Design Quality Layer。
   吸收外部设计方法的流程，不改变工作台既有视觉方向：
   设计变化低、动效克制、信息密度高；桌面端只允许中间工作区滚动，
   导航和最近工作保持稳定，固定任务栏/输入区不被页面内容推动。 */
:root {
  --workbench-design-variance: 2;
  --workbench-motion-intensity: 2;
  --workbench-visual-density: 7;
  --workbench-workspace-inline-gap: var(--module-edge-gap);
  --workbench-workspace-block-gap: var(--module-edge-gap);
}

@media (min-width: 1021px) {
  body:has(.layout) {
    overflow: hidden;
  }

  body:has(.layout) .layout {
    height: calc(100dvh - 68px);
    min-height: 0;
    overflow: hidden;
  }

  body:has(.layout) .layout .sidebar,
  body:has(.layout) .layout .recent-work-rail,
  body:has(.layout) .layout .workspace {
    min-height: 0;
  }

  body:has(.layout) .layout .sidebar {
    overflow: hidden;
  }

  body:has(.layout) .layout .sidebar > .module-nav {
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
  }

  body:has(.layout) .layout .workspace {
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
    padding: var(--workbench-workspace-block-gap) var(--workbench-workspace-inline-gap) calc(var(--workbench-workspace-block-gap) * 2);
  }

  body:has(.layout) .layout .recent-work-rail {
    overflow: hidden;
  }

  body:has(.layout) .layout .recent-work-panel {
    min-height: 0;
  }
}

/* 中间工作区统一使用全局边缘间距；任务栏、结果区和输入区不再各自叠加一套外边距。 */
body:has(.layout) .layout .workspace > :where(.module-workbench, .module-list-workbench) {
  width: 100%;
  min-width: 0;
  margin: 0;
}

body:has(.layout) .layout :where(.work-taskbar-context, .work-taskbar-view, .work-taskbar-field, .production-active-title, .production-title-block, .production-title-view) {
  min-width: 0;
}

body:has(.layout) .layout :where(.work-taskbar-field-value, .production-title-view > strong, .production-knowledge-inline) {
  display: block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body:has(.layout) .layout :where(.workbench-composer-form, .chat-form, .production-chat-form, .image-task-message-form) {
  min-width: 0;
  max-width: 100%;
  overflow: visible;
}

body:has(.layout) .layout :where(.workbench-composer-form > textarea, .chat-form > textarea, .production-chat-form > textarea, .image-task-message-form > textarea) {
  width: 100%;
  min-width: 0;
  resize: none;
  overflow-x: hidden;
  overflow-y: auto;
  overflow-wrap: anywhere;
}

/* 内容阅读区保留最大可读行宽；图片、表格和代码仍可在自身容器内横向处理。 */
body:has(.layout) .layout :where(.workbench-message-markdown, .note-markdown, .workbench-markdown, .task-history-event p) {
  min-width: 0;
  overflow-wrap: anywhere;
}

/* 质量层只使用状态反馈动效，禁止卡片位移和滚动驱动动画。 */
body:has(.layout) .layout :where(.task-card, .module-card, .case-card, .recent-work-item) {
  transform: none !important;
}

@media (prefers-reduced-motion: reduce) {
  body:has(.layout) .layout {
    scroll-behavior: auto;
  }
}

/* v0.80: 视频生产新建页的可见性与导航反馈。
   任务栏必须收在中间工作区内，表单内容由结果层负责滚动；新建态不再
   使用旧的垂直居中规则，避免首屏和底部操作被截断。 */
body:has(.video-create-workbench) .video-create-workbench,
body:has(.video-create-workbench) .video-create-workbench > .module-taskbar,
body:has(.video-create-workbench) .video-create-workbench > .video-module-stage {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

body:has(.video-create-workbench) .video-create-workbench > .module-taskbar {
  grid-template-columns: minmax(0, 1fr) minmax(0, 58%);
  max-width: 100%;
  overflow: hidden;
}

body:has(.video-create-workbench) .video-create-workbench .production-active-title,
body:has(.video-create-workbench) .video-create-workbench .production-title-block,
body:has(.video-create-workbench) .video-create-workbench .production-title-view {
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
}

body:has(.video-create-workbench) .video-create-workbench .production-header-actions {
  width: 100%;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
  flex-wrap: nowrap;
  white-space: nowrap;
}

body:has(.video-create-workbench) .bilibili-module-layout {
  display: block;
  align-content: start;
  width: 100%;
  min-width: 0;
  min-height: 100%;
  box-sizing: border-box;
}

body:has(.video-create-workbench) .bilibili-job-main {
  width: min(1080px, 100%);
  max-width: 100%;
  min-width: 0;
  margin: 0 auto;
  box-sizing: border-box;
}

body:has(.video-create-workbench) :where(.bilibili-form-panel, .video-production-form) {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  margin: 0;
  padding: clamp(16px, 2.2vw, 28px);
  box-sizing: border-box;
  overflow: visible;
}

body:has(.video-create-workbench) :where(.bilibili-form-panel > .task-form, .video-production-form > .task-form) {
  width: 100%;
  max-width: none;
  min-width: 0;
  margin: 0;
  box-sizing: border-box;
}

body:has(.video-create-workbench) .video-navigation-loading-panel {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 180px;
  gap: 10px;
  text-align: center;
}

body:has(.video-create-workbench) .video-navigation-loading-panel > :where(strong, span) {
  flex: 0 0 auto;
}

@media (max-width: 760px) {
  body:has(.video-create-workbench) .video-create-workbench > .module-taskbar {
    grid-template-columns: minmax(0, 42%) minmax(0, 58%);
  }

  body:has(.video-create-workbench) .video-create-workbench .production-header-actions {
    justify-content: flex-start;
  }

  body:has(.video-create-workbench) :where(.bilibili-form-panel, .video-production-form) {
    padding: 16px;
  }
}

/* v0.81: 脚本创作按新建、审核、优化拆分表单；提交操作固定在表单滚动区底部。 */
body:has(.video-create-workbench) .video-script-form-heading {
  position: sticky;
  top: 0;
  z-index: 5;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 14px;
  margin: 0 0 12px;
  padding: 4px 0 10px;
  background: var(--workbench-color-bg);
}

body:has(.video-create-workbench) .video-script-form-heading > div:first-child {
  min-width: 0;
}

body:has(.video-create-workbench) .video-script-mode-switch {
  display: flex;
  flex: 0 0 auto;
  flex-wrap: nowrap;
  gap: 6px;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
}

body:has(.video-create-workbench) .video-script-mode-switch::-webkit-scrollbar { display: none; }

body:has(.video-create-workbench) .video-script-mode-tab {
  flex: 0 0 auto;
  min-height: 34px;
  padding: 0 14px;
  color: var(--wb-text);
  border: 1px solid transparent;
  border-radius: 8px;
  background: var(--wb-selected);
  font: inherit;
  font-size: var(--workbench-type-support);
  font-weight: 700;
  white-space: nowrap;
}

body:has(.video-create-workbench) .video-script-mode-tab:hover,
body:has(.video-create-workbench) .video-script-mode-tab:focus-visible {
  color: var(--wb-text);
  border-color: transparent;
  background: var(--wb-selected);
  outline: none;
}

body:has(.video-create-workbench) .video-script-mode-tab.active {
  color: var(--wb-text);
  border-color: transparent;
  background: var(--wb-selected);
}

body:has(.video-create-workbench) .video-script-mode-panel {
  display: grid;
  grid-column: 1 / -1;
  gap: 10px;
  min-width: 0;
}

body:has(.video-create-workbench) .video-script-mode-panel[hidden] { display: none !important; }

body:has(.video-create-workbench) .video-script-form-actions {
  position: sticky;
  bottom: 0;
  z-index: 4;
  display: flex;
  grid-column: 1 / -1;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  min-width: 0;
  margin-top: 4px;
  padding: 12px 0 4px;
  background: var(--wb-selected);
}

body:has(.video-create-workbench) .video-script-form-actions .form-help {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
}

body:has(.video-create-workbench) .video-script-form-actions > .primary {
  flex: 0 0 auto;
  min-width: 148px;
  justify-self: auto;
}

@media (max-width: 760px) {
  body:has(.video-create-workbench) .video-script-form-heading { gap: 12px; }

  body:has(.video-create-workbench) .video-script-mode-tab {
    min-height: 32px;
    padding: 0 11px;
    font-size: var(--workbench-type-meta);
  }

  body:has(.video-create-workbench) .video-script-form-actions {
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
  }

  body:has(.video-create-workbench) .video-script-form-actions > .primary {
    width: 100%;
    min-width: 0;
  }
}

/* v0.82: 收口通用工作台的高度覆盖。
   新建视频页必须由中间结果层滚动，外层任务栏和脚本模式栏保持可见；
   之前通用布局的 min-content 高度会把 workspace 撑成长页，导致 sticky
   模式栏和底部提交区一起离开视口。 */
@media (min-width: 761px) {
  body:has(.video-create-workbench) {
    overflow: hidden !important;
  }

  body:has(.video-create-workbench) .layout {
    height: 100dvh !important;
    min-height: 0 !important;
    overflow: hidden !important;
  }

  body:has(.video-create-workbench) .workspace {
    height: 100% !important;
    min-height: 0 !important;
    overflow: hidden !important;
    padding-top: var(--module-edge-gap) !important;
  }

  body:has(.video-create-workbench) .video-create-workbench {
    height: 100% !important;
    min-height: 0 !important;
    max-height: 100% !important;
  }

  body:has(.video-create-workbench) .video-create-workbench > .video-module-stage {
    height: auto !important;
    min-height: 0 !important;
    overflow: hidden !important;
  }

  body:has(.video-create-workbench) .video-create-workbench > .video-module-stage > .media-output-scroll {
    height: 100% !important;
    min-height: 0 !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
  }
}

@media (max-width: 760px) {
  body:has(.video-create-workbench) .video-create-workbench > .video-module-stage > .media-output-scroll {
    height: auto !important;
    min-height: 0 !important;
    overflow: visible !important;
  }
}

/* v1.23: 浅色主题补齐三个仍被旧深色规则覆盖的区域。
   只替换表面颜色和边界，保留案例、任务中心与新建任务的原有尺寸和结构。 */
html[data-theme="light"] body:has(.layout) :where(.case-card-v2, .task-center-toolbar, .task-center-row) {
  color: var(--workbench-color-text) !important;
  background: var(--workbench-color-surface) !important;
  border-color: var(--workbench-color-border) !important;
  box-shadow: none;
}

html[data-theme="light"] body:has(.layout) :where(.case-card-v2:hover, .task-center-row:hover) {
  background: var(--workbench-color-surface-hover) !important;
  border-color: var(--workbench-color-border-strong) !important;
}

html[data-theme="light"] body:has(.layout) .case-card-open {
  color: var(--workbench-color-text) !important;
  background: transparent !important;
}

html[data-theme="light"] body:has(.layout) .case-card-media {
  background: var(--workbench-color-surface-raised) !important;
  border-color: var(--workbench-color-border) !important;
}

html[data-theme="light"] body:has(.layout) .case-card-media img {
  background: var(--workbench-color-surface-raised) !important;
}

html[data-theme="light"] body:has(.layout) :where(
  .task-center-main p,
  .task-center-main small,
  .task-technical-details summary,
  .task-call-count
) {
  color: var(--workbench-color-text-secondary) !important;
}

html[data-theme="light"] body:has(.layout) .task-technical-details pre {
  color: var(--workbench-color-text-secondary) !important;
  background: var(--workbench-color-surface-subtle) !important;
  border-color: var(--workbench-color-border) !important;
}

html[data-theme="light"] body.notes-workbench-page .note-create-form .production-image-preview {
  color: var(--workbench-color-text-secondary) !important;
  background: var(--workbench-color-surface-raised) !important;
  border-color: var(--workbench-color-border) !important;
}

html[data-theme="light"] body.notes-workbench-page .note-create-form .production-image-preview img {
  background: var(--workbench-color-surface-raised) !important;
  border-color: var(--workbench-color-border) !important;
}

/* 账号区保持一行；完整账号信息只在“设置”菜单中查看，避免挤占导航空间。 */
body:has(.layout) .layout .sidebar > .shell-user-menu {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
  min-width: 0;
  min-height: var(--workbench-nav-item-height);
  padding: 0 6px 0 18px;
  overflow: visible;
}

/* 弹层宽于窄侧栏时仍需完整显示，不能被桌面壳层裁切。 */
body:has(.layout) .layout .sidebar {
  overflow: visible;
}

body:has(.layout) .layout .sidebar > .shell-user-menu .shell-user-name {
  display: block;
  justify-self: start;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--workbench-color-text-secondary);
}

body:has(.layout) .layout .sidebar > .shell-user-menu .shell-settings-trigger {
  justify-self: end;
  min-height: var(--workbench-nav-item-height);
  padding: 0 6px;
  white-space: nowrap;
}

body:has(.layout) .layout .shell-settings-menu {
  position: absolute;
  left: 0;
  top: auto;
  right: auto;
  bottom: calc(100% + 8px);
  z-index: 1000;
  display: grid;
  gap: 12px;
  width: min(260px, calc(100vw - 32px));
  box-sizing: border-box;
  max-height: min(360px, calc(100dvh - 24px));
  overflow-y: auto;
  margin: 0;
  padding: 12px;
  color: var(--workbench-color-text);
  border: 1px solid var(--workbench-color-border-strong);
  border-radius: var(--workbench-radius-md);
  background: var(--workbench-color-surface-raised);
  box-shadow: none;
}

body:has(.layout) .layout .shell-settings-menu[hidden] {
  display: none;
}

body:has(.layout) .layout .shell-settings-menu:not([hidden]) {
  display: grid !important;
  pointer-events: auto;
  visibility: visible;
}

body:has(.layout) .layout .shell-settings-info {
  display: grid;
  gap: 8px;
  margin: 0;
}

body:has(.layout) .layout .shell-settings-info > div {
  display: grid;
  gap: 2px;
  min-width: 0;
}

body:has(.layout) .layout .shell-settings-info dt {
  color: var(--workbench-color-text-muted);
  font-size: var(--workbench-type-meta);
}

body:has(.layout) .layout .shell-settings-info dd {
  margin: 0;
  overflow-wrap: anywhere;
  color: var(--workbench-color-text);
  font-size: var(--workbench-type-body);
}

body:has(.layout) .layout .shell-settings-warning {
  margin: 0;
  color: var(--wb-text);
  font-size: var(--workbench-type-meta);
  line-height: 1.5;
}

body:has(.layout) .layout .shell-settings-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding-top: 8px;
  border-top: 1px solid var(--workbench-border-subtle);
}

body:has(.layout) .layout .shell-settings-actions .text {
  min-height: 32px;
  padding: 0 8px;
  white-space: nowrap;
}

@media (max-width: 760px) {
  body:has(.layout) .layout .shell-settings-menu {
    width: min(260px, calc(100vw - 24px));
  }
}

/* v1.29: 窄屏笔记页的导航覆盖了通用 .layout 规则，必须放在最终视觉收口之后。 */
@media (max-width: 760px) {
  body.notes-workbench-page .layout .sidebar > .module-nav {
    display: flex !important;
    flex: 0 0 auto;
    min-height: 0;
    height: auto;
    margin-top: var(--workbench-space-2);
    overflow-x: auto;
    overflow-y: hidden;
  }

  body.notes-workbench-page .layout .sidebar > .module-nav > .module-nav-group {
    display: flex;
    flex: 0 0 auto;
    width: auto;
    min-width: max-content;
  }
}

.image-message-quote {
  display: flex;
  align-items: center;
  gap: var(--workbench-space-2);
  padding: var(--workbench-space-2);
  border-left: 2px solid var(--workbench-color-accent);
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-type-support);
  min-width: 0;
}
.image-message-quote > .quote-preview-text {
  flex: 1;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  text-align: left;
}
body:has(.layout) .layout .workbench-composer-attachment-area:has([data-message-quote-slot]:not(:empty)) {
  display: flex;
  flex-wrap: wrap;
}
body:has(.layout) .layout [data-message-quote-slot] { flex: 0 0 100%; min-width: 0; }
body:has(.layout) .layout [data-message-quote-slot]:empty { display: none; }
body:has(.layout) .layout .image-message-quote > button,
body:has(.layout) .layout .workbench-quote-action {
  flex: 0 0 auto !important;
  width: max-content !important;
  min-width: 0 !important;
  justify-self: start;
  padding-inline: var(--workbench-space-2);
  font-size: var(--workbench-type-support) !important;
}
body:has(.layout) .layout .image-message-quote > .quote-preview-text { flex: 1 1 auto !important; width: 0 !important; color: inherit; background: transparent; border: 0; }
body:has(.layout) .layout .quote-thumbnail { width: var(--workbench-composer-row-height); height: var(--workbench-composer-row-height); object-fit: cover; flex: 0 0 auto; border-radius: var(--workbench-radius-sm); }
body:has(.layout) .layout .workbench-quote-action { background: transparent; border: 0; color: inherit; margin: 0; min-height: var(--workbench-button-height-small); }
body:has(.layout) .layout .message-attachment-item { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; }
body:has(.layout) .layout .workbench-message-footer { flex-wrap: wrap; }

/* v1.36: 结果阅读颜色契约。
   正文保持最高对比度；引用、状态、时间和模型信息使用不同但可读的层级。
   浅色主题不再直接使用过浅的主题绿作为正文色，避免引用和状态看不清。 */
:root {
  --workbench-result-body: var(--workbench-color-text-body);
  --workbench-result-secondary: var(--workbench-color-text-secondary);
  --workbench-result-meta: var(--workbench-color-text-muted);
  --workbench-result-quote: var(--workbench-color-text-secondary);
  --workbench-result-link: var(--workbench-color-accent-soft);
  --workbench-result-status: var(--workbench-color-text-secondary);
  --workbench-result-status-running: var(--wb-accent);
}

html[data-theme="light"] body:has(.layout) {
  --workbench-result-body: var(--wb-text);
  --workbench-result-secondary: var(--wb-text-secondary);
  --workbench-result-meta: var(--wb-text-secondary);
  --workbench-result-quote: var(--wb-bg);
  --workbench-result-link: var(--wb-accent);
  --workbench-result-status: var(--wb-text-secondary);
  --workbench-result-status-running: var(--wb-accent);
}

body:has(.layout) .layout :where(.workbench-message-markdown, .note-markdown, .workbench-markdown) {
  color: var(--workbench-result-body);
}

body:has(.layout) .layout :where(.workbench-message-context, .workbench-message-footer, .workbench-message-model, .workbench-message-stream-placeholder) {
  color: var(--workbench-result-meta);
}

body:has(.layout) .layout :where(.workbench-message-status, .workbench-message-pending, .task-history-event .workbench-message-context) {
  color: var(--workbench-result-status);
}

body:has(.layout) .layout :where(.workbench-message-markdown a, .note-markdown a, .workbench-markdown a) {
  color: var(--workbench-result-link);
}

body:has(.layout) .layout :where(.workbench-message-markdown blockquote, .note-markdown blockquote, .workbench-markdown blockquote) {
  color: var(--workbench-result-secondary);
  border-left-color: var(--workbench-result-link);
}

body:has(.layout) .layout .image-message-quote {
  color: var(--workbench-result-quote);
  border-left-color: var(--workbench-result-link);
  background: var(--workbench-color-surface-subtle);
}

/* v1.37: 统一资源入口。底栏只显示一个 +，菜单在输入区上方展开，
   文件、图片和参考案例继续复用原有选择器与附件协议。 */
body:has(.layout) .layout .workbench-composer-resource {
  position: relative;
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  min-width: var(--workbench-composer-resource-size);
  min-height: var(--workbench-composer-resource-size);
  overflow: visible;
}

body:has(.layout) .layout .workbench-composer-resource-trigger {
  display: inline-grid;
  place-items: center;
  flex: 0 0 var(--workbench-composer-resource-size);
  width: var(--workbench-composer-resource-size);
  height: var(--workbench-composer-resource-size);
  min-width: var(--workbench-composer-resource-size);
  min-height: var(--workbench-composer-resource-size);
  margin: 0;
  padding: 0;
  color: var(--workbench-color-text-secondary);
  border: 1px solid var(--workbench-color-border);
  border-radius: 50%;
  background: transparent;
  font-size: var(--workbench-font-size-title);
  font-weight: 400;
  line-height: 1;
  cursor: pointer;
}

body:has(.layout) .layout .workbench-composer-resource-trigger:hover,
body:has(.layout) .layout .workbench-composer-resource-trigger:focus-visible,
body:has(.layout) .layout .workbench-composer-resource-trigger[aria-expanded="true"] {
  color: var(--workbench-color-text);
  border-color: var(--workbench-color-accent);
  background: var(--workbench-color-accent-surface);
  outline: none;
}

body:has(.layout) .layout .workbench-composer-resource-menu {
  position: absolute;
  left: 0;
  bottom: calc(100% + var(--workbench-space-2));
  z-index: 1000;
  display: grid;
  gap: 2px;
  width: 156px;
  max-width: min(156px, calc(100vw - 32px));
  box-sizing: border-box;
  margin: 0;
  padding: var(--workbench-space-1);
  border: 1px solid var(--workbench-color-border-strong);
  border-radius: var(--workbench-radius-md);
  background: var(--workbench-color-surface-raised);
  box-shadow: none;
}

body:has(.layout) .layout .workbench-composer-resource-menu[hidden] {
  display: none !important;
}

body:has(.layout) .layout .workbench-composer-resource-menu-item {
  display: flex;
  align-items: center;
  width: 100%;
  min-width: 0;
  height: var(--workbench-button-height-small);
  min-height: var(--workbench-button-height-small);
  margin: 0;
  padding: 0 var(--workbench-space-2);
  color: var(--workbench-color-text-secondary);
  border: 0;
  border-radius: var(--workbench-radius-sm);
  background: transparent;
  font-size: var(--workbench-font-size-sm);
  line-height: 1;
  text-align: left;
  white-space: nowrap;
  cursor: pointer;
}

body:has(.layout) .layout .workbench-composer-resource-menu-item:hover,
body:has(.layout) .layout .workbench-composer-resource-menu-item:focus-visible {
  color: var(--workbench-color-text);
  background: var(--workbench-color-surface-hover);
  outline: none;
}

body:has(.layout) .layout .workbench-composer-resource-slot .production-image-input-compact .reference-case-compact-control {
  display: inline;
  width: 0;
  height: 0;
  overflow: hidden;
}

body:has(.layout) .layout .workbench-composer-resource-slot .production-image-input-compact .reference-case-compact-control .reference-case-add {
  display: none !important;
}

/* v1.39: 执行状态统一作为对话流中的系统消息，不参与输入区布局。 */
body:has(.layout) .layout .workbench-message-list > .workbench-execution-message {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--workbench-space-2) var(--workbench-space-3);
  width: 100%;
  min-width: 0;
  margin: var(--workbench-space-3) 0 0;
  padding: var(--workbench-space-2) 0 0;
  border: 0;
  border-top: 1px solid var(--workbench-color-border);
  border-radius: 0;
  background: transparent;
  color: var(--workbench-result-status);
  font-size: var(--workbench-type-support);
  line-height: 1.5;
  box-sizing: border-box;
}
body:has(.layout) .layout .workbench-execution-message-body {
  display: flex;
  flex: 1 1 240px;
  align-items: flex-start;
  gap: var(--workbench-space-2);
  min-width: 0;
}
body:has(.layout) .layout .workbench-execution-message-dot {
  flex: 0 0 6px;
  width: 6px;
  height: 6px;
  margin-top: 7px;
  border-radius: 50%;
  background: currentColor;
}
body:has(.layout) .layout .workbench-execution-message-text {
  min-width: 0;
  overflow-wrap: anywhere;
  white-space: normal;
}
body:has(.layout) .layout .workbench-execution-message-actions {
  display: flex;
  flex: 0 0 auto;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--workbench-space-2);
  min-width: 0;
}
body:has(.layout) .layout .workbench-execution-message-actions > button {
  flex: 0 0 auto;
  min-height: var(--workbench-button-height-small);
  white-space: nowrap;
}
body:has(.layout) .layout .workbench-message-list > .workbench-execution-message.is-running,
body:has(.layout) .layout .workbench-message-list > .workbench-execution-message.is-submitting,
body:has(.layout) .layout .workbench-message-list > .workbench-execution-message.is-accepted {
  color: var(--workbench-result-status-running);
}
body:has(.layout) .layout .workbench-message-list > .workbench-execution-message.is-failed {
  color: var(--wb-text);
}
body:has(.layout) .layout .workbench-message-list > .workbench-execution-message.is-paused {
  color: var(--wb-text);
}
@media (max-width: 760px) {
  body:has(.layout) .layout .workbench-message-list > .workbench-execution-message {
    margin-top: var(--workbench-space-2);
    padding-top: var(--workbench-space-2);
  }
  body:has(.layout) .layout .workbench-execution-message-actions {
    flex-basis: 100%;
    padding-left: 14px;
  }
}

/* v1.40: neutral theme surfaces and readable message semantics.
   Light mode uses white as the primary surface; dark mode uses neutral black.
   Green is not used for message, attachment, metadata, or ordinary emphasis. */
:root {
  --workbench-color-surface: var(--wb-bg);
  --workbench-color-surface-raised: var(--wb-selected);
  --workbench-color-surface-subtle: var(--wb-selected);
  --workbench-color-surface-hover: var(--wb-selected);
  --workbench-color-input: var(--wb-selected);
  --workbench-color-input-focus: var(--wb-selected);
  --workbench-color-text: var(--wb-text);
  --workbench-color-text-body: var(--wb-text);
  --workbench-color-on-accent: var(--wb-accent);
  --workbench-color-text-secondary: var(--wb-text-secondary);
  --workbench-color-text-muted: var(--wb-text-secondary);
  --workbench-color-text-subtle: var(--wb-text);
  --workbench-color-accent-hover: var(--wb-accent);
  --workbench-color-accent-soft: var(--wb-accent);
  --workbench-color-accent-surface: var(--wb-accent);
  --workbench-color-danger: var(--wb-error);
  --workbench-color-warning: var(--wb-text-secondary);
  --workbench-color-border: transparent;
  --workbench-color-border-strong: transparent;
  --workbench-color-border-accent: transparent;
  --workbench-color-control-border: transparent;
  --workbench-color-control-border-focus: transparent;
  --workbench-color-focus-ring: 0 0 0 3px var(--wb-bg);
  --workbench-color-user-message-text: var(--wb-on-selected);
  --workbench-color-overlay: var(--wb-bg);
  --workbench-surface-flat: var(--wb-bg);
  --workbench-border-subtle: transparent;
  --workbench-message-user-bg: var(--wb-bg);
  --workbench-message-user-text: var(--wb-on-selected);
  --workbench-message-user-border: transparent;
  --workbench-message-attachment-bg: var(--wb-bg);
  --workbench-message-attachment-text: var(--wb-text);
  --workbench-message-attachment-border: transparent;
  --workbench-message-attachment-icon: var(--wb-bg);
  --workbench-message-meta: var(--wb-bg);
  --workbench-message-error-bg: var(--wb-error);
  --workbench-message-error-text: var(--wb-error);
  --workbench-message-error-border: transparent;
}

html[data-theme="light"] body:has(.layout) {
  --paper: var(--wb-bg);
  --paper-deep: var(--wb-bg);
  --card: var(--wb-bg);
  --card-raised: var(--wb-selected);
  --card-soft: var(--wb-selected);
  --line: transparent;
  --accent: var(--wb-accent);
  --accent-dark: var(--wb-accent);
  --accent-soft: var(--wb-accent);
  --accent-pale: var(--wb-accent);
  --sand: var(--wb-selected);
  --danger: var(--wb-error);
  --shadow: none;
  --workbench-color-surface: var(--wb-bg);
  --workbench-color-surface-raised: var(--wb-selected);
  --workbench-color-surface-subtle: var(--wb-selected);
  --workbench-color-surface-hover: var(--wb-selected);
  --workbench-color-input: var(--wb-selected);
  --workbench-color-input-focus: var(--wb-selected);
  --workbench-color-text: var(--wb-text);
  --workbench-color-text-body: var(--wb-text);
  --workbench-color-on-accent: var(--wb-accent);
  --workbench-color-text-secondary: var(--wb-text-secondary);
  --workbench-color-text-muted: var(--wb-text-secondary);
  --workbench-color-text-subtle: var(--wb-text);
  --workbench-color-accent-hover: var(--wb-accent);
  --workbench-color-accent-soft: var(--wb-accent);
  --workbench-color-accent-surface: var(--wb-accent);
  --workbench-color-danger: var(--wb-error);
  --workbench-color-warning: var(--wb-text-secondary);
  --workbench-color-border: transparent;
  --workbench-color-border-strong: transparent;
  --workbench-color-border-accent: transparent;
  --workbench-color-control-border: transparent;
  --workbench-color-control-border-focus: transparent;
  --workbench-color-focus-ring: 0 0 0 3px var(--wb-bg);
  --workbench-color-user-message-text: var(--wb-on-selected);
  --workbench-color-overlay: var(--wb-bg);
  --workbench-surface-flat: var(--wb-bg);
  --workbench-border-subtle: transparent;
  --workbench-message-user-bg: var(--wb-bg);
  --workbench-message-user-text: var(--wb-on-selected);
  --workbench-message-user-border: transparent;
  --workbench-message-attachment-bg: var(--wb-bg);
  --workbench-message-attachment-text: var(--wb-text);
  --workbench-message-attachment-border: transparent;
  --workbench-message-attachment-icon: var(--wb-bg);
  --workbench-message-meta: var(--wb-bg);
  --workbench-message-error-bg: var(--wb-error);
  --workbench-message-error-text: var(--wb-error);
  --workbench-message-error-border: transparent;
}

html body:has(.layout),
html body:has(.layout) .layout {
  color: var(--workbench-color-text) !important;
  background: var(--workbench-color-bg) !important;
  background-image: none !important;
}

body:has(.layout) .layout :where(.topbar, .sidebar, .workspace, .recent-work-rail) {
  color: var(--workbench-color-text);
  border-color: var(--workbench-color-border) !important;
}
body:has(.layout) .layout :where(.topbar, .sidebar, .recent-work-rail) {
  background: var(--workbench-color-surface) !important;
}
body:has(.layout) .layout :where(
  .home-hero, .home-hero-note, .module-intro, .knowledge-note, .bilibili-result,
  .bilibili-start-card, .task-form, .new-note-panel, .custom-ratio-panel,
  .bilibili-form-panel, .video-production-form, .image-job-create-form,
  .module-panel, .module-card, .task-card, .task-list-panel, .recent-work-panel,
  .case-row, .case-group-sidebar, .case-meta-panel, .case-create-panel,
  .group-create-form, .dictionary-section, .skill-card, .skill-detail-source,
  .skill-detail-meta, .admin-card, .admin-panel, .project-knowledge-file,
  .image-job-detail, .video-task-card, .chat-header, .workbench-message-list,
  .evolution-panel, .module-taskbar, .task-center-toolbar, .task-center-row,
  .conversation-source-panel, .conversation-list
) {
  color: var(--workbench-color-text) !important;
  background: var(--workbench-color-surface) !important;
  border-color: var(--workbench-color-border) !important;
  box-shadow: none;
}

body:has(.layout) .layout :where(h1, h2, h3, h4, h5, h6, strong, label, summary, .field-label) {
  color: var(--workbench-color-text) !important;
}
body:has(.layout) .layout :where(p, li, blockquote, small, .muted, .form-help, .image-help, .page-head p:not(.eyebrow), .module-card p, .task-card p, .task-card small, .case-card p, .case-card small) {
  color: var(--workbench-color-text-secondary) !important;
}
body:has(.layout) .layout :where(.eyebrow, .step-kicker, .result-kicker, .stage-card-kicker, .accent-number, .module-nav-group-label, .work-taskbar-field-label) {
  color: var(--workbench-color-text-muted) !important;
}

body:has(.layout) .layout :where(.primary) {
  color: var(--workbench-color-on-accent) !important;
  background: var(--workbench-color-accent) !important;
  background-color: var(--workbench-color-accent) !important;
  border-color: var(--workbench-color-accent) !important;
  box-shadow: none;
}
body:has(.layout) .layout :where(.primary:hover, .primary:focus-visible) {
  color: var(--workbench-color-on-accent) !important;
  background: var(--workbench-color-accent-hover) !important;
  background-color: var(--workbench-color-accent-hover) !important;
  border-color: var(--workbench-color-accent-hover) !important;
}
body:has(.layout) .layout :where(.secondary) {
  color: var(--workbench-color-text-secondary) !important;
  background: var(--workbench-color-surface) !important;
  border-color: var(--workbench-color-border) !important;
  box-shadow: none;
}
body:has(.layout) .layout :where(.secondary:hover, .text:hover) {
  color: var(--workbench-color-text) !important;
  background: var(--workbench-color-surface-hover) !important;
  border-color: var(--workbench-color-border-strong) !important;
}
body:has(.layout) .layout :where(.text, a:not(.button-link)) {
  color: var(--workbench-color-text-secondary) !important;
}
body:has(.layout) .layout :where(.pill, .task-status, .case-card > span, .reference-chip, .case-number) {
  color: var(--workbench-color-text-secondary) !important;
  background: var(--workbench-color-accent-soft) !important;
  border-color: var(--workbench-color-border) !important;
}
body:has(.layout) .layout .text.danger-text,
body:has(.layout) .layout button.danger-text,
body:has(.layout) .layout a.danger-text {
  color: var(--workbench-color-danger) !important;
}
body:has(.layout) .layout .text.danger-text:hover,
body:has(.layout) .layout button.danger-text:hover,
body:has(.layout) .layout a.danger-text:hover,
body:has(.layout) .layout .text.danger-text:focus-visible,
body:has(.layout) .layout button.danger-text:focus-visible,
body:has(.layout) .layout a.danger-text:focus-visible {
  color: var(--workbench-color-danger) !important;
}
body:has(.layout) .layout :where(.module-nav-item:hover, .module-nav-item.active, .job-item:hover, .job-item.active, .conversation-item:hover, .conversation-item.active) {
  color: var(--workbench-color-text) !important;
  background: var(--workbench-color-surface-hover) !important;
  border-color: var(--workbench-color-border-strong) !important;
  box-shadow: none;
}

body:has(.layout) .layout :where(input, textarea, select) {
  color: var(--workbench-color-text) !important;
  background: var(--workbench-color-input) !important;
  border-color: var(--workbench-color-control-border) !important;
}
body:has(.layout) .layout :where(input, textarea, select):focus {
  background: var(--workbench-color-input-focus) !important;
  border-color: var(--workbench-color-control-border-focus) !important;
  box-shadow: none;
}
body:has(.layout) .layout :where(input, textarea, select)::placeholder {
  color: var(--workbench-color-text-subtle) !important;
}

body:has(.layout) .layout :where(.workbench-message.user, .workbench-message.is-user) {
  color: var(--workbench-message-user-text) !important;
  background: var(--workbench-message-user-bg) !important;
  border-color: var(--workbench-message-user-border) !important;
  box-shadow: none;
}
body:has(.layout) .layout :where(.workbench-message.assistant, .workbench-message.is-assistant) {
  color: var(--workbench-color-text-body) !important;
  background: transparent !important;
  border-color: var(--workbench-color-border) !important;
}
body:has(.layout) .layout :where(.workbench-message.user, .workbench-message.is-user) :where(p, li, blockquote, strong, .workbench-message-markdown, .workbench-message-version) {
  color: var(--workbench-message-user-text) !important;
}
body:has(.layout) .layout :where(.workbench-message.assistant, .workbench-message.is-assistant) :where(p, li, blockquote, .workbench-message-markdown) {
  color: var(--workbench-color-text-body) !important;
}
body:has(.layout) .layout :where(.workbench-message-role, .workbench-message-footer, .workbench-message-footer time, .workbench-message-model, .message-timestamp) {
  color: var(--workbench-message-meta) !important;
}
body:has(.layout) .layout :where(.workbench-message-footer) {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--workbench-space-2) var(--workbench-space-3);
  min-width: 0;
  margin-top: var(--workbench-space-2);
  padding-top: 0;
  border-top: 0;
  font-size: var(--workbench-type-meta);
}
body:has(.layout) .layout :where(.workbench-message-footer button, .workbench-message-footer a, .workbench-copy-action, [data-quote-workbench-message]) {
  min-height: 24px;
  color: var(--workbench-message-meta) !important;
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none;
  font-size: var(--workbench-type-meta);
}
body:has(.layout) .layout :where(.workbench-message-footer button:hover, .workbench-message-footer a:hover, .workbench-copy-action:hover, [data-quote-workbench-message]:hover, .workbench-message-footer button:focus-visible, .workbench-copy-action:focus-visible) {
  color: var(--workbench-color-text) !important;
  background: var(--workbench-color-surface-hover) !important;
}

body:has(.layout) .layout :where(.workbench-attachment-file, .message-attachment-file, .workbench-message-attachments a) {
  color: var(--workbench-message-attachment-text) !important;
  background: var(--workbench-message-attachment-bg) !important;
  border-color: var(--workbench-message-attachment-border) !important;
}
body:has(.layout) .layout :where(.workbench-attachment-file > span, .message-attachment-file > span, .workbench-message-attachments .file-type, .workbench-message-attachments .attachment-type) {
  color: var(--workbench-message-attachment-icon) !important;
}
body:has(.layout) .layout :where(.workbench-attachment-file strong, .message-attachment-file strong) {
  color: var(--workbench-message-attachment-text) !important;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body:has(.layout) .layout :where(.workbench-message-status) {
  display: flex;
  align-items: flex-start;
  gap: var(--workbench-space-2);
  min-width: 0;
  margin-top: var(--workbench-space-2);
  padding: var(--workbench-space-2) var(--workbench-space-3);
  color: var(--workbench-color-text-secondary) !important;
  background: var(--workbench-color-surface-subtle) !important;
  border: 1px solid var(--workbench-color-border) !important;
  border-radius: var(--workbench-radius-sm);
  font-size: var(--workbench-type-support) !important;
  line-height: 1.5;
  overflow-wrap: anywhere;
}
body:has(.layout) .layout :where(.workbench-message-status.is-running, .workbench-message-status.is-submitting, .workbench-message-status.is-accepted, .workbench-message-status.is-completed) {
  color: var(--workbench-color-text-secondary) !important;
}
body:has(.layout) .layout :where(.workbench-message-status.is-failed) {
  color: var(--workbench-message-error-text) !important;
  background: var(--workbench-message-error-bg) !important;
  border-color: var(--workbench-message-error-border) !important;
}
body:has(.layout) .layout .workbench-message-status.is-failed {
  color: var(--workbench-message-error-text) !important;
  background: var(--workbench-message-error-bg) !important;
  border-color: var(--workbench-message-error-border) !important;
}
body:has(.layout) .layout :where(.workbench-message.is-failed) {
  background: var(--workbench-message-user-bg) !important;
  border-color: var(--workbench-message-error-border) !important;
}

body:has(.layout) .layout :where(.status-running, .status-completed, .status-waiting, .status-paused) {
  color: var(--workbench-color-text-secondary) !important;
  background: var(--workbench-color-surface-subtle) !important;
  border-color: var(--workbench-color-border) !important;
  box-shadow: none;
}
body:has(.layout) .layout :where(.status-running .status-dot, .status-completed .status-dot, .status-waiting .status-dot, .status-paused .status-dot) {
  background: currentColor !important;
  box-shadow: none;
}
body:has(.layout) .layout :where(.status-failed, .task-error, .admin-output-failure) {
  color: var(--workbench-message-error-text) !important;
  background: var(--workbench-message-error-bg) !important;
  border-color: var(--workbench-message-error-border) !important;
  box-shadow: none;
}
body:has(.layout) .layout :where(.status-failed strong, .task-error strong, .admin-output-failure .result-label) {
  color: var(--workbench-message-error-text) !important;
}

body:has(.layout) .layout :where(.workbench-composer-form, .chat-form, .production-chat-form, .image-task-message-form) {
  color: var(--workbench-color-text) !important;
  background: var(--workbench-color-surface) !important;
  border-color: var(--workbench-color-border) !important;
  box-shadow: none;
}
body:has(.layout) .layout :where(.workbench-composer-form > textarea, .chat-form > textarea, .production-chat-form > textarea, .image-task-message-form > textarea) {
  color: var(--workbench-color-text) !important;
  background: var(--workbench-color-input) !important;
  border-color: var(--workbench-color-control-border) !important;
}

html[data-theme="light"] body:has(.layout) :where(.workbench-message-list, .chat-header, .module-taskbar, .workbench-composer-form, .chat-form, .production-chat-form, .image-task-message-form, .sidebar, .recent-work-rail) {
  background: var(--wb-selected);
}
html[data-theme="light"] body:has(.layout) :where(.workspace, .workbench-message-list) {
  background: var(--wb-selected);
}
html[data-theme="light"] body:has(.layout) :where(.workbench-message-list) {
  border-color: transparent !important;
}

@media (max-width: 760px) {
  body:has(.layout) .layout :where(.workbench-message, .workbench-message.is-user, .workbench-message.is-assistant) {
    max-width: 94%;
  }
  body:has(.layout) .layout :where(.workbench-attachment-file, .message-attachment-file) {
    max-width: min(100%, 70vw);
  }
}

/* v1.41: execution reminders stay neutral and expose task progress. */
body:has(.layout) .layout .workbench-message-status.is-submitting,
body:has(.layout) .layout .workbench-message-status.is-accepted,
body:has(.layout) .layout .workbench-message-status.is-running,
body:has(.layout) .layout .workbench-message-status.is-paused {
  color: var(--workbench-color-text-muted) !important;
  background: var(--workbench-color-surface-subtle) !important;
  border-color: var(--workbench-color-border) !important;
  font-weight: 600;
}
body:has(.layout) .layout .workbench-message-status.is-submitting::before,
body:has(.layout) .layout .workbench-message-status.is-accepted::before,
body:has(.layout) .layout .workbench-message-status.is-running::before,
body:has(.layout) .layout .workbench-message-status.is-paused::before {
  background: currentColor !important;
  box-shadow: none;
}
body:has(.layout) .layout .workbench-message-status.is-running::before,
body:has(.layout) .layout .workbench-message-status.is-submitting::before {
  animation: workbench-status-pulse 1.4s ease-in-out infinite;
}
@keyframes workbench-status-pulse {
  0%, 100% { opacity: .42; }
  50% { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  body:has(.layout) .layout .workbench-message-status.is-running::before,
  body:has(.layout) .layout .workbench-message-status.is-submitting::before {
    animation: none;
  }
}

/* v1.42: flat dark theme surfaces.
   The dark workbench uses one black page background and one neutral information
   surface. Green/red remain semantic text and indicator colors only; containers
   no longer use green, olive or warm tinted fills and decorative borders. */
html:not([data-theme="light"]) body:has(.layout) {
  --wb-flat-bg: var(--wb-bg);
  --workbench-color-surface: var(--wb-bg);
  --workbench-color-surface-raised: var(--wb-selected);
  --workbench-color-surface-subtle: var(--wb-selected);
  --workbench-color-surface-hover: var(--wb-selected);
  --workbench-color-input: var(--wb-selected);
  --workbench-color-input-focus: var(--wb-selected);
  --workbench-color-text: var(--wb-text);
  --workbench-color-text-body: var(--wb-text);
  --workbench-color-text-secondary: var(--wb-text-secondary);
  --workbench-color-text-muted: var(--wb-text-secondary);
  --workbench-color-text-subtle: var(--wb-text);
  --wb-flat-accent: var(--wb-accent);
  --workbench-color-accent-hover: var(--wb-accent);
  --workbench-color-accent-soft: var(--wb-accent);
  --workbench-color-accent-surface: var(--wb-accent);
  --workbench-color-danger: var(--wb-error);
  --workbench-color-warning: var(--wb-text-secondary);
  --workbench-color-border: transparent;
  --workbench-color-border-strong: transparent;
  --workbench-color-border-accent: transparent;
  --workbench-color-control-border: transparent;
  --workbench-color-control-border-focus: transparent;
  --workbench-color-focus-ring: 0 0 0 3px var(--wb-bg);
  --workbench-surface-flat: var(--wb-bg);
  --workbench-border-subtle: transparent;
  --workbench-message-user-bg: var(--wb-bg);
  --workbench-message-user-text: var(--wb-on-selected);
  --workbench-message-user-border: transparent;
  --workbench-message-attachment-bg: var(--wb-bg);
  --workbench-message-attachment-text: var(--wb-text);
  --workbench-message-attachment-border: transparent;
  --workbench-message-attachment-icon: var(--wb-bg);
  --workbench-message-meta: var(--wb-bg);
  --workbench-message-error-bg: var(--wb-error);
  --workbench-message-error-text: var(--wb-error);
  --workbench-message-error-border: transparent;

  /* Legacy aliases are intentionally flattened in dark mode as well. */
  --paper: transparent;
  --paper-deep: var(--wb-bg);
  --card: var(--wb-bg);
  --card-raised: var(--wb-selected);
  --card-soft: var(--wb-selected);
  --line: transparent;
  --accent: var(--wb-accent);
  --accent-dark: var(--wb-accent);
  --accent-soft: var(--wb-accent);
  --accent-pale: var(--wb-accent);
  --sand: var(--wb-selected);
  --danger: var(--wb-error);
  --shadow: none;
}

html:not([data-theme="light"]) body:has(.layout) .layout {
  background: var(--wb-flat-bg) !important;
  background-image: none !important;
}

/* Outer layout regions stay open; their child information blocks carry the only surface. */
html:not([data-theme="light"]) body:has(.layout) .layout :where(
  .topbar, .sidebar, .workspace, .recent-work-rail, .recent-work-panel,
  .workbench-message-list, .chat-header, .module-list-stage
) {
  background: transparent !important;
  background-image: none !important;
  border-color: transparent !important;
  box-shadow: none;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

/* All retained blocks use the same neutral surface instead of multiple dark-green layers. */
html:not([data-theme="light"]) body:has(.layout) .layout :where(
  .module-taskbar, .module-panel, .module-card, .task-card, .task-list-panel,
  .case-row, .case-group-sidebar, .case-meta-panel, .case-create-panel,
  .group-create-form, .dictionary-section, .skill-card, .skill-detail-source,
  .skill-detail-meta, .admin-card, .admin-panel, .project-knowledge-file,
  .image-job-detail, .video-task-card, .task-center-toolbar, .task-center-row,
  .conversation-source-panel, .conversation-list, .workbench-composer-form,
  .chat-form, .production-chat-form, .image-task-message-form, .recent-work-item
) {
  background: var(--workbench-color-surface) !important;
  background-image: none !important;
  border-color: transparent !important;
  box-shadow: none;
}

html:not([data-theme="light"]) body:has(.layout) .layout :where(
  .module-taskbar, .module-panel, .module-card, .task-card, .task-list-panel,
  .case-row, .case-group-sidebar, .case-meta-panel, .case-create-panel,
  .group-create-form, .dictionary-section, .skill-card, .skill-detail-source,
  .skill-detail-meta, .admin-card, .admin-panel, .project-knowledge-file,
  .image-job-detail, .video-task-card, .task-center-toolbar, .task-center-row,
  .conversation-source-panel, .conversation-list, .workbench-composer-form,
  .chat-form, .production-chat-form, .image-task-message-form, .recent-work-item
):hover {
  box-shadow: none;
}

/* No colored fills for normal messages; user messages use the same neutral surface. */
html:not([data-theme="light"]) body:has(.layout) .layout :where(.workbench-message.user, .workbench-message.is-user) {
  background: var(--workbench-message-user-bg) !important;
  border-color: transparent !important;
  box-shadow: none;
}
html:not([data-theme="light"]) body:has(.layout) .layout :where(.workbench-message.assistant, .workbench-message.is-assistant) {
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none;
}

/* Status/reminder blocks use the same surface; only the dot and text carry meaning. */
html:not([data-theme="light"]) body:has(.layout) .layout :where(.workbench-message-status, .status-running, .status-completed, .status-waiting, .status-paused) {
  color: var(--wb-flat-accent) !important;
  background: var(--workbench-color-surface-raised) !important;
  border-color: transparent !important;
  box-shadow: none;
}
html:not([data-theme="light"]) body:has(.layout) .layout :where(.workbench-message-status.is-failed, .status-failed, .task-error, .admin-output-failure) {
  color: var(--workbench-message-error-text) !important;
  background: var(--workbench-color-surface-raised) !important;
  border-color: transparent !important;
  box-shadow: none;
}

/* Field names and recent task types retain the requested green emphasis. */
html:not([data-theme="light"]) body:has(.layout) .layout :where(
  .work-taskbar-field-label, .module-nav-group-label, .recent-work-item-top small,
  .recent-work-item .task-type, .recent-work-item [data-task-type]
) {
  color: var(--wb-flat-accent) !important;
}
html:not([data-theme="light"]) body:has(.layout) .layout :where(
  .module-nav-item.active, .module-nav-item:hover, .recent-work-item.active
) {
  color: var(--wb-flat-accent) !important;
  background: var(--workbench-color-surface-hover) !important;
  border-color: transparent !important;
  box-shadow: none;
}

/* Attachments and Markdown blocks use neutral surfaces; only filenames/links/code stay green. */
html:not([data-theme="light"]) body:has(.layout) .layout :where(
  .workbench-attachment-file, .message-attachment-file, .workbench-message-attachments a,
  .workbench-message-markdown pre, .workbench-message-markdown code,
  .note-markdown pre, .note-markdown code
) {
  background: var(--workbench-color-surface-raised) !important;
  border-color: transparent !important;
  box-shadow: none;
}
html:not([data-theme="light"]) body:has(.layout) .layout :where(
  .workbench-attachment-file strong, .message-attachment-file strong,
  .workbench-message-markdown a, .note-markdown a,
  .workbench-message-markdown code, .note-markdown code
) {
  color: var(--wb-flat-accent) !important;
}

/* Inputs have no decorative border; focus is expressed by a green glow only. */
html:not([data-theme="light"]) body:has(.layout) .layout :where(input, textarea, select) {
  background: var(--workbench-color-input) !important;
  border-color: transparent !important;
  box-shadow: none;
}
html:not([data-theme="light"]) body:has(.layout) .layout :where(input, textarea, select):focus {
  background: var(--workbench-color-input-focus) !important;
  border-color: transparent !important;
  box-shadow: none;
}

html:not([data-theme="light"]) body:has(.layout) .layout :where(.primary) {
  background: var(--wb-flat-accent) !important;
  border-color: transparent !important;
  box-shadow: none;
}
html:not([data-theme="light"]) body:has(.layout) .layout :where(.secondary, .pill, .task-status, .status-badge, .status-pill) {
  background: var(--workbench-color-surface-raised) !important;
  border-color: transparent !important;
  box-shadow: none;
}

/* v1.43: final shell typography and palette cleanup.
   Brand title and navigation group titles are section-level text (16px).
   Navigation no longer inherits any historical glass, gradient, border or
   warm/green-tinted surface rules. */
html[data-theme="light"] body:has(.layout) {
  --paper: var(--wb-bg);
  --paper-deep: var(--wb-bg);
  --card: var(--wb-bg);
  --card-raised: var(--wb-selected);
  --card-soft: var(--wb-selected);
  --line: transparent;
  --accent: var(--wb-accent);
  --accent-dark: var(--wb-accent);
  --accent-soft: var(--wb-accent);
  --accent-pale: var(--wb-accent);
  --sand: var(--wb-selected);
  --danger: var(--wb-error);
  --shadow: none;
  --workbench-color-border: transparent;
  --workbench-color-border-strong: transparent;
  --workbench-color-border-accent: transparent;
  --workbench-color-control-border: transparent;
  --workbench-color-control-border-focus: transparent;
}

body:has(.layout) .layout .sidebar-brand h1 {
  color: var(--workbench-color-accent) !important;
  font-size: var(--workbench-type-section-title) !important;
  line-height: 1.35;
  letter-spacing: 0;
}
body:has(.layout) .layout :where(.module-nav-group-label) {
  min-height: var(--workbench-module-nav-label-height);
  padding: 0 8px;
  color: var(--workbench-color-accent) !important;
  background: transparent !important;
  background-image: none !important;
  border: 0 !important;
  font-size: var(--workbench-type-section-title) !important;
  font-weight: 650;
  letter-spacing: 0;
  line-height: 1.35;
}
body:has(.layout) .layout :where(.module-nav, .module-nav-group) {
  background: transparent !important;
  background-image: none !important;
  border: 0 !important;
  padding: 0 !important;
  box-shadow: none;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}
body:has(.layout) .layout :where(.module-nav-group) {
  gap: 2px !important;
}
body:has(.layout) .layout :where(.module-nav-group + .module-nav-group) {
  margin-top: 8px !important;
}
body:has(.layout) .layout :where(.module-nav-item) {
  color: var(--workbench-color-text) !important;
  background: transparent !important;
  background-image: none !important;
  border-color: transparent !important;
  box-shadow: none;
  font-size: var(--workbench-type-body) !important;
}
body:has(.layout) .layout :where(.module-nav-item:hover, .module-nav-item.active, .module-nav-item.active:hover) {
  color: var(--workbench-color-accent) !important;
  background: var(--workbench-color-surface-hover) !important;
  background-image: none !important;
  border-color: transparent !important;
  box-shadow: none;
}
body:has(.layout) .layout :where(.topbar, .sidebar, .workspace, .recent-work-rail, .recent-work-panel, .workbench-message-list, .chat-header, .module-list-stage) {
  background: transparent !important;
  background-image: none !important;
  border-color: transparent !important;
  box-shadow: none;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}
body:has(.layout) .layout :where(
  .module-taskbar, .module-panel, .module-card, .task-card, .task-list-panel,
  .case-row, .case-group-sidebar, .case-meta-panel, .case-create-panel,
  .group-create-form, .dictionary-section, .skill-card, .skill-detail-source,
  .skill-detail-meta, .admin-card, .admin-panel, .project-knowledge-file,
  .image-job-detail, .video-task-card, .task-center-toolbar, .task-center-row,
  .conversation-source-panel, .conversation-list, .workbench-composer-form,
  .chat-form, .production-chat-form, .image-task-message-form, .recent-work-item
) {
  background: var(--workbench-color-surface) !important;
  background-image: none !important;
  border-color: transparent !important;
  box-shadow: none;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

/* v1.44: theme parity and light-surface cleanup.
   Both themes expose the same semantic token set. Only token values differ;
   components must not create a light-only palette or hard-coded surfaces. */
html:not([data-theme="light"]) body:has(.layout) {
  --wb-flat-bg: var(--wb-bg);
  --workbench-color-surface: var(--wb-bg);
  --workbench-color-surface-raised: var(--wb-selected);
  --workbench-color-surface-subtle: var(--wb-selected);
  --workbench-color-surface-hover: var(--wb-selected);
  --workbench-color-input: var(--wb-selected);
  --workbench-color-input-focus: var(--wb-selected);
  --workbench-color-text: var(--wb-text);
  --workbench-color-text-body: var(--wb-text);
  --workbench-color-on-accent: var(--wb-accent);
  --workbench-color-text-secondary: var(--wb-text-secondary);
  --workbench-color-text-muted: var(--wb-text-secondary);
  --workbench-color-text-subtle: var(--wb-text);
  --workbench-color-accent-hover: var(--wb-accent);
  --workbench-color-accent-soft: var(--wb-accent);
  --workbench-color-accent-surface: var(--wb-accent);
  --workbench-color-danger: var(--wb-error);
  --workbench-color-warning: var(--wb-text-secondary);
  --workbench-color-border: transparent;
  --workbench-color-border-strong: transparent;
  --workbench-color-border-accent: transparent;
  --workbench-color-control-border: transparent;
  --workbench-color-control-border-focus: transparent;
  --workbench-color-focus-ring: 0 0 0 3px var(--wb-bg);
  --workbench-color-user-message-text: var(--wb-on-selected);
  --workbench-color-overlay: var(--wb-bg);
  --workbench-surface-flat: var(--wb-bg);
  --workbench-border-subtle: transparent;
  --workbench-message-user-bg: var(--wb-bg);
  --workbench-message-user-text: var(--wb-on-selected);
  --workbench-message-user-border: transparent;
  --workbench-message-attachment-bg: var(--wb-bg);
  --workbench-message-attachment-text: var(--wb-text);
  --workbench-message-attachment-border: transparent;
  --workbench-message-attachment-icon: var(--wb-bg);
  --workbench-message-meta: var(--wb-bg);
  --workbench-message-error-bg: var(--wb-error);
  --workbench-message-error-text: var(--wb-error);
  --workbench-message-error-border: transparent;
  --paper: transparent;
  --paper-deep: var(--wb-bg);
  --card: var(--wb-bg);
  --card-raised: var(--wb-selected);
  --card-soft: var(--wb-selected);
  --line: transparent;
  --accent: var(--wb-accent);
  --accent-dark: var(--wb-accent);
  --accent-soft: var(--wb-accent);
  --accent-pale: var(--wb-accent);
  --sand: var(--wb-selected);
  --danger: var(--wb-error);
  --shadow: none;
}

html[data-theme="light"] body:has(.layout) {
  --wb-flat-bg: var(--wb-bg);
  --workbench-color-surface: var(--wb-bg);
  --workbench-color-surface-raised: var(--wb-selected);
  --workbench-color-surface-subtle: var(--wb-selected);
  --workbench-color-surface-hover: var(--wb-selected);
  --workbench-color-input: var(--wb-selected);
  --workbench-color-input-focus: var(--wb-selected);
  --workbench-color-text: var(--wb-text);
  --workbench-color-text-body: var(--wb-text);
  --workbench-color-on-accent: var(--wb-accent);
  --workbench-color-text-secondary: var(--wb-text-secondary);
  --workbench-color-text-muted: var(--wb-text-secondary);
  --workbench-color-text-subtle: var(--wb-text);
  --workbench-color-accent-hover: var(--wb-accent);
  --workbench-color-accent-soft: var(--wb-accent);
  --workbench-color-accent-surface: var(--wb-accent);
  --workbench-color-danger: var(--wb-error);
  --workbench-color-warning: var(--wb-text-secondary);
  --workbench-color-border: transparent;
  --workbench-color-border-strong: transparent;
  --workbench-color-border-accent: transparent;
  --workbench-color-control-border: transparent;
  --workbench-color-control-border-focus: transparent;
  --workbench-color-focus-ring: 0 0 0 3px var(--wb-bg);
  --workbench-color-user-message-text: var(--wb-on-selected);
  --workbench-color-overlay: var(--wb-bg);
  --workbench-surface-flat: var(--wb-bg);
  --workbench-border-subtle: transparent;
  --workbench-message-user-bg: var(--wb-bg);
  --workbench-message-user-text: var(--wb-on-selected);
  --workbench-message-user-border: transparent;
  --workbench-message-attachment-bg: var(--wb-bg);
  --workbench-message-attachment-text: var(--wb-text);
  --workbench-message-attachment-border: transparent;
  --workbench-message-attachment-icon: var(--wb-bg);
  --workbench-message-meta: var(--wb-bg);
  --workbench-message-error-bg: var(--wb-error);
  --workbench-message-error-text: var(--wb-error);
  --workbench-message-error-border: transparent;
  --paper: var(--wb-bg);
  --paper-deep: var(--wb-bg);
  --card: var(--wb-bg);
  --card-raised: var(--wb-selected);
  --card-soft: var(--wb-selected);
  --line: transparent;
  --accent: var(--wb-accent);
  --accent-dark: var(--wb-accent);
  --accent-soft: var(--wb-accent);
  --accent-pale: var(--wb-accent);
  --sand: var(--wb-selected);
  --danger: var(--wb-error);
  --shadow: none;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .topbar, .sidebar, .workspace, .recent-work-rail, .recent-work-panel,
  .workbench-message-list, .chat-header, .module-list-stage
) {
  background: transparent !important;
  background-image: none !important;
  border-color: transparent !important;
  box-shadow: none;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .module-taskbar, .module-panel, .module-card, .task-card, .task-list-panel,
  .case-row, .case-group-sidebar, .case-meta-panel, .case-create-panel,
  .group-create-form, .case-group-detail-panel, .case-group-edit,
  .case-center-toolbar, .case-center-group-area, .dictionary-section,
  .skill-card, .skill-detail-source, .skill-detail-meta, .admin-card,
  .admin-panel, .project-knowledge-file, .image-job-detail, .video-task-card,
  .task-center-toolbar, .task-center-row, .conversation-source-panel,
  .conversation-list, .workbench-composer-form, .chat-form,
  .production-chat-form, .image-task-message-form, .recent-work-item,
  .case-card-v2, .case-center-empty
) {
  color: var(--workbench-color-text) !important;
  background: var(--workbench-color-surface) !important;
  background-image: none !important;
  border-color: transparent !important;
  box-shadow: none;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .case-group-item, .case-group-chip, .case-center-type-tab
) {
  color: var(--workbench-color-text-secondary) !important;
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none;
}

/* v1.45: keep the live Case Center taxonomy in the same light surface system.
   The current Case Center uses .case-center-taxonomy (not the retired
   .case-group-sidebar), so the generic light-theme surface rule above cannot
   reach it. */
html[data-theme="light"] body:has(.layout) .layout :where(
  .case-center-taxonomy
) {
  color: var(--workbench-color-text) !important;
  background: var(--workbench-color-surface) !important;
  background-image: none !important;
  border-color: transparent !important;
  box-shadow: none;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .case-center-taxonomy-head,
  .case-taxonomy-all,
  .case-taxonomy-industry-link,
  .case-taxonomy-group,
  .case-taxonomy-toggle,
  .case-taxonomy-children,
  .case-taxonomy-unassigned
) {
  border-color: transparent !important;
  background: transparent !important;
  box-shadow: none;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .case-taxonomy-all,
  .case-taxonomy-industry-link,
  .case-taxonomy-group,
  .case-taxonomy-toggle,
  .case-taxonomy-empty,
  .case-taxonomy-unassigned > span
) {
  color: var(--workbench-color-text-secondary) !important;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .case-taxonomy-all:hover,
  .case-taxonomy-all.active,
  .case-taxonomy-industry-link:hover,
  .case-taxonomy-industry-link.active,
  .case-taxonomy-group:hover,
  .case-taxonomy-group.active,
  .case-taxonomy-toggle:hover
) {
  color: var(--workbench-color-accent) !important;
  background: var(--workbench-color-surface-hover) !important;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .case-group-item:hover, .case-group-item.active,
  .case-group-chip:hover, .case-group-chip.active,
  .case-center-type-tab:hover, .case-center-type-tab.active
) {
  color: var(--workbench-color-accent) !important;
  background: var(--workbench-color-surface-hover) !important;
  border-color: transparent !important;
  box-shadow: none;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .case-group-item small, .case-group-chip small, .case-card-number,
  .case-card-field em, .case-card-empty, .case-center-empty p
) {
  color: var(--workbench-color-text-muted) !important;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .case-card-v2:hover, .case-row:hover, .case-center-toolbar:hover,
  .task-center-row:hover
) {
  background: var(--workbench-color-surface-hover) !important;
  border-color: transparent !important;
  box-shadow: none;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .case-card-media, .case-card-media img, .case-card-media-empty,
  .case-card-footer, .case-card-reason-more
) {
  background: var(--workbench-color-surface-raised) !important;
  border-color: transparent !important;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .case-card-open h3, .case-card-field strong, .case-card-reason-values,
  .case-card-media-empty span, .case-center-empty strong
) {
  color: var(--workbench-color-text) !important;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .module-nav-item:hover, .module-nav-item.active,
  .job-item:hover, .job-item.active, .conversation-item:hover,
  .conversation-item.active, .recent-work-item:hover, .recent-work-item.active
) {
  color: var(--workbench-color-accent) !important;
  background: var(--workbench-color-surface-hover) !important;
  border-color: transparent !important;
  box-shadow: none;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .workbench-message.is-assistant, .workbench-message.is-system,
  .workbench-message.workbench-image-result
) {
  color: var(--workbench-color-text-body) !important;
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .workbench-message.is-user, .workbench-message.user
) {
  color: var(--workbench-message-user-text) !important;
  background: var(--workbench-message-user-bg) !important;
  border-color: transparent !important;
  box-shadow: none;
}

html[data-theme="light"] body:has(.layout) .layout :where(input, textarea, select) {
  color: var(--workbench-color-text) !important;
  background: var(--workbench-color-input) !important;
  border-color: var(--workbench-color-control-border) !important;
}

html[data-theme="light"] body:has(.layout) .layout :where(input:focus, textarea:focus, select:focus) {
  background: var(--workbench-color-input-focus) !important;
  border-color: var(--workbench-color-control-border-focus) !important;
  box-shadow: none;
}

/* v1.46: 工作台最终四颜色规范。
   登录页保留原有视觉；工作台只允许页面背景、选中色、强调色和错误色。
   所有其他文字层级均为主题主文字的透明度，不再引入新的色相。 */
:root {
  --wb-bg: #000000;
  --wb-selected: #212121;
  --wb-accent: #39D98A;
  --wb-error: #D92D20;
  --wb-text: #FFFFFF;
  --wb-text-secondary: rgba(255,255,255,.66);
  --wb-text-muted: rgba(255,255,255,.40);
  --wb-on-accent: #000000;
  --wb-on-selected: #FFFFFF;
}

html[data-theme="light"] body:has(.layout) {
  --wb-bg: #FFFFFF;
  --wb-selected: #dedede;
  --wb-accent: #119447;
  --wb-text: #000000;
  --wb-text-secondary: rgba(0,0,0,.60);
  --wb-text-muted: rgba(0,0,0,.40);
  --wb-on-accent: #FFFFFF;
  --wb-on-selected: #000000;
}

html:not([data-theme="light"]) body:has(.layout),
html[data-theme="light"] body:has(.layout) {
  --workbench-color-bg: var(--wb-bg);
  --workbench-color-surface: var(--wb-bg);
  --workbench-color-surface-raised: var(--wb-selected);
  --workbench-color-surface-subtle: var(--wb-selected);
  --workbench-color-surface-hover: transparent;
  --workbench-color-input: var(--wb-selected);
  --workbench-color-input-focus: var(--wb-selected);
  --workbench-color-text: var(--wb-text);
  --workbench-color-text-body: var(--wb-text);
  --workbench-color-ai-output: var(--wb-text);
  --workbench-color-on-accent: var(--wb-on-accent);
  --workbench-color-text-secondary: var(--wb-text-secondary);
  --workbench-color-text-muted: var(--wb-text-muted);
  --workbench-color-text-subtle: var(--wb-text-secondary);
  --workbench-color-accent: var(--wb-accent);
  --workbench-color-accent-hover: var(--wb-accent);
  --workbench-color-accent-soft: var(--wb-selected);
  --workbench-color-accent-surface: var(--wb-selected);
  --workbench-color-danger: var(--wb-error);
  --workbench-color-warning: var(--wb-text-secondary);
  --workbench-color-border: transparent;
  --workbench-color-border-strong: transparent;
  --workbench-color-border-accent: transparent;
  --workbench-color-control-border: transparent;
  --workbench-color-control-border-focus: transparent;
  --workbench-color-focus-ring: none;
  --workbench-color-user-message-text: var(--wb-on-selected);
  --workbench-color-overlay: var(--wb-bg);
  --workbench-surface-flat: var(--wb-bg);
  --workbench-border-subtle: transparent;
  --workbench-message-user-bg: var(--wb-selected);
  --workbench-message-user-text: var(--wb-on-selected);
  --workbench-message-user-border: transparent;
  --workbench-message-attachment-bg: var(--wb-selected);
  --workbench-message-attachment-text: var(--wb-accent);
  --workbench-message-attachment-border: transparent;
  --workbench-message-attachment-icon: var(--wb-on-selected);
  --workbench-message-meta: var(--wb-text-secondary);
  --workbench-message-error-bg: var(--wb-selected);
  --workbench-message-error-text: var(--wb-error);
  --workbench-message-error-border: transparent;
  --workbench-result-body: var(--wb-text);
  --workbench-result-secondary: var(--wb-text-secondary);
  --workbench-result-meta: var(--wb-text-muted);
  --workbench-result-quote: var(--wb-text-secondary);
  --workbench-result-link: var(--wb-accent);
  --workbench-result-status: var(--wb-text-secondary);
  --workbench-result-status-running: var(--wb-accent);
  --workbench-result-status-error: var(--wb-error);
  --workbench-result-status-warning: var(--wb-text-secondary);

  /* 兼容旧选择器，但旧颜色不再保留。 */
  --ink: var(--wb-text);
  --muted: var(--wb-text-secondary);
  --paper: var(--wb-bg);
  --paper-deep: var(--wb-bg);
  --card: var(--wb-bg);
  --card-raised: var(--wb-selected);
  --card-soft: var(--wb-selected);
  --line: transparent;
  --accent: var(--wb-accent);
  --accent-dark: var(--wb-accent);
  --accent-soft: var(--wb-selected);
  --accent-pale: var(--wb-accent);
  --sand: var(--wb-selected);
  --danger: var(--wb-error);
  --shadow: none;
}

html body:has(.layout),
html body:has(.layout) .layout {
  color: var(--wb-text) !important;
  background: var(--wb-bg) !important;
  background-image: none !important;
}

body:has(.layout) .layout * {
  border-color: transparent !important;
  box-shadow: none !important;
  background-image: none !important;
}

body:has(.layout) .layout :where(
  .topbar, .sidebar, .workspace, .recent-work-rail, .recent-work-panel,
  .workbench-message-list, .chat-header, .module-list-stage
) {
  color: var(--wb-text) !important;
  background: transparent !important;
}

body:has(.layout) .layout :where(
  .module-taskbar, .module-panel, .module-card, .task-card, .task-list-panel,
  .case-row, .case-group-sidebar, .case-meta-panel, .case-create-panel,
  .group-create-form, .dictionary-section, .skill-card, .skill-detail-source,
  .skill-detail-meta, .admin-card, .admin-panel, .project-knowledge-file,
  .image-job-detail, .video-task-card, .task-center-toolbar, .task-center-row,
  .conversation-source-panel, .conversation-list, .recent-work-item,
  .case-card-v2, .case-center-empty
) {
  color: var(--wb-text) !important;
  background: var(--wb-bg) !important;
}

body:has(.layout) .layout :where(
  h1, h2, h3, h4, h5, h6, strong, label, summary,
  .field-label, .field-value, .module-taskbar, .task-card h3,
  .case-card h3, .module-card h3
) {
  color: var(--wb-text) !important;
}

body:has(.layout) .layout :where(
  p, li, blockquote, small, .muted, .form-help, .image-help,
  .page-head p:not(.eyebrow), .module-card p, .task-card p,
  .task-card small, .case-card p, .case-card small,
  .workbench-message-context, .workbench-message-footer,
  .workbench-message-model, .message-timestamp
) {
  color: var(--wb-text-secondary) !important;
}

body:has(.layout) .layout :where(
  .sidebar-brand h1, .eyebrow, .module-nav-group-label,
  .work-taskbar-field-label, .recent-work-item-top small,
  .recent-work-item .task-type, .recent-work-item [data-task-type],
  .step-kicker, .result-kicker, .result-label, .stage-card-kicker,
  .history-entry-heading, .accent-number
) {
  color: var(--wb-accent) !important;
}

body:has(.layout) .layout :where(
  a:not(.button-link), .workbench-message-markdown a,
  .note-markdown a, .workbench-markdown a,
  .workbench-message-markdown code, .note-markdown code,
  .workbench-attachment-file strong, .message-attachment-file strong
) {
  color: var(--wb-accent) !important;
}

body:has(.layout) .layout :where(
  .primary, .brand-mark, .module-card-icon, .placeholder-icon
) {
  color: var(--wb-on-accent) !important;
  background: var(--wb-accent) !important;
  border: 0 !important;
}

body:has(.layout) .layout :where(.primary:hover, .primary:focus-visible) {
  color: var(--wb-on-accent) !important;
  background: var(--wb-accent) !important;
}

body:has(.layout) .layout :where(.secondary, .text, .button-link) {
  color: var(--wb-text-secondary) !important;
  background: transparent !important;
  border: 0 !important;
}

body:has(.layout) .layout :where(.secondary:hover, .text:hover, .button-link:hover,
  .secondary:focus-visible, .text:focus-visible, .button-link:focus-visible) {
  color: var(--wb-text) !important;
  background: transparent !important;
}

body:has(.layout) .layout :where(.danger-text, .task-error, .admin-output-failure,
  .status-failed, .workbench-message-status.is-failed) {
  color: var(--wb-error) !important;
}

body:has(.layout) .layout :where(
  .module-nav-item, .job-item, .conversation-item, .recent-work-item,
  .case-group-item, .case-group-chip, .case-center-type-tab,
  .case-taxonomy-all, .case-taxonomy-industry-link, .case-taxonomy-group,
  .case-taxonomy-toggle
) {
  color: var(--wb-text) !important;
  background: transparent !important;
}

body:has(.layout) .layout :where(
  .module-nav-item.active, .job-item.active, .conversation-item.active,
  .recent-work-item.active, .case-group-item.active, .case-group-chip.active,
  .case-center-type-tab.active, .case-taxonomy-all.active,
  .case-taxonomy-industry-link.active, .case-taxonomy-group.active
) {
  color: var(--wb-on-selected) !important;
  background: var(--wb-selected) !important;
}

body:has(.layout) .layout :where(
  .module-nav-item:hover, .job-item:hover, .conversation-item:hover,
  .recent-work-item:hover, .case-group-item:hover, .case-group-chip:hover,
  .case-center-type-tab:hover, .case-taxonomy-all:hover,
  .case-taxonomy-industry-link:hover, .case-taxonomy-group:hover,
  .case-taxonomy-toggle:hover
) {
  color: var(--wb-text) !important;
  background: transparent !important;
}

body:has(.layout) .layout :where(
  .workbench-message.user, .workbench-message.is-user
) {
  color: var(--wb-on-selected) !important;
  background: var(--wb-selected) !important;
  border: 0 !important;
}

body:has(.layout) .layout :where(
  .workbench-message.user p, .workbench-message.user li,
  .workbench-message.user strong, .workbench-message.is-user p,
  .workbench-message.is-user li, .workbench-message.is-user strong
) {
  color: var(--wb-on-selected) !important;
}

body:has(.layout) .layout :where(
  .workbench-message.assistant, .workbench-message.is-assistant,
  .workbench-message.is-system, .workbench-message.workbench-image-result
) {
  color: var(--wb-text) !important;
  background: transparent !important;
}

body:has(.layout) .layout :where(
  input:not([type="checkbox"]):not([type="radio"]), textarea, select,
  .workbench-composer-form, .chat-form, .production-chat-form,
  .image-task-message-form
) {
  color: var(--wb-on-selected) !important;
  background: var(--wb-selected) !important;
  border: 0 !important;
  outline: 0 !important;
}

body:has(.layout) .layout :where(input, textarea, select)::placeholder {
  color: var(--wb-text-secondary) !important;
  opacity: 1;
}

body:has(.layout) .layout :where(input:focus, textarea:focus, select:focus,
  .workbench-composer-form:focus-within, .chat-form:focus-within,
  .production-chat-form:focus-within, .image-task-message-form:focus-within) {
  color: var(--wb-on-selected) !important;
  background: var(--wb-selected) !important;
  border: 0 !important;
  box-shadow: none !important;
}

body:has(.layout) .layout :where(input[type="checkbox"], input[type="radio"]) {
  background: transparent !important;
  accent-color: var(--wb-accent) !important;
}

body:has(.layout) .layout :where(
  .workbench-composer-resource-trigger, .production-image-add,
  .reference-case-add, .workbench-composer-resource-menu-item,
  .workbench-composer-help-slot, .workbench-model-picker
) {
  color: var(--wb-on-selected) !important;
  background: transparent !important;
  border: 0 !important;
}

body:has(.layout) .layout :where(
  .workbench-composer-resource-trigger:hover,
  .workbench-composer-resource-trigger:focus-visible,
  .workbench-composer-resource-menu-item:hover,
  .workbench-composer-resource-menu-item:focus-visible,
  .production-image-add:hover, .production-image-add:focus-visible
) {
  color: var(--wb-on-selected) !important;
  background: transparent !important;
}

body:has(.layout) .layout :where(
  .workbench-composer-resource-menu, .image-lightbox,
  .image-lightbox-backdrop, .lightbox-overlay, dialog
) {
  color: var(--wb-text) !important;
  background: var(--wb-bg) !important;
  border: 0 !important;
}

body:has(.layout) .layout :where(
  .workbench-message-attachments a, .workbench-attachment-file,
  .message-attachment-file, .workbench-message-markdown pre,
  .note-markdown pre, .workbench-markdown pre,
  .status-badge, .status-pill, .task-status, .pill,
  .reference-chip, .case-number
) {
  color: var(--wb-text-secondary) !important;
  background: var(--wb-selected) !important;
  border: 0 !important;
}

body:has(.layout) .layout :where(
  .status-running, .status-completed, .workbench-message-status,
  .workbench-message-pending, .task-snapshot-line
) {
  color: var(--wb-accent) !important;
  background: var(--wb-selected) !important;
}

body:has(.layout) .layout :where(
  .status-failed, .workbench-message-status.is-failed,
  .task-error, .admin-output-failure
) {
  color: var(--wb-error) !important;
  background: var(--wb-selected) !important;
}

/* 浅色主题的选中面仍是 #212121，覆盖历史浅色选择器的高优先级，确保白字可读。 */
html[data-theme="light"] body:has(.layout) .layout :where(
  input:not([type="checkbox"]):not([type="radio"]), textarea, select,
  .workbench-composer-form, .chat-form, .production-chat-form,
  .image-task-message-form
) {
  color: var(--wb-on-selected) !important;
  background: var(--wb-selected) !important;
  border-color: transparent !important;
}

html[data-theme="light"] body:has(.layout) .layout :where(input, textarea, select)::placeholder {
  color: var(--wb-text-secondary) !important;
  opacity: 1;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .workbench-composer-resource-trigger, .production-image-add,
  .reference-case-add, .workbench-composer-resource-menu-item,
  .workbench-composer-help-slot, .workbench-model-picker
) {
  color: var(--wb-on-selected) !important;
  background: transparent !important;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .shell-settings-menu, .shell-user-menu,
  .workbench-composer-resource-menu, .image-lightbox,
  .image-lightbox-backdrop, .lightbox-overlay, dialog
) {
  color: var(--wb-on-selected) !important;
  background: var(--wb-selected) !important;
  border-color: transparent !important;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .shell-settings-menu *, .shell-user-menu *,
  .workbench-composer-resource-menu *, dialog *
) {
  color: inherit !important;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .workbench-message.user, .workbench-message.is-user
) {
  color: var(--wb-on-selected) !important;
  background: var(--wb-selected) !important;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .workbench-message.user p, .workbench-message.user li,
  .workbench-message.user strong, .workbench-message.is-user p,
  .workbench-message.is-user li, .workbench-message.is-user strong
) {
  color: var(--wb-on-selected) !important;
}

/* v1.48: 浅色主题的浅灰选中面统一使用黑字。
   状态标签、激活项、账号设置菜单和账号底栏都使用 #dedede，保持与页面背景的层次并确保可读。 */
html[data-theme="light"] body:has(.layout) .layout :where(
  .sidebar > .shell-user-menu,
  .sidebar > .shell-user-menu .shell-user-name,
  .sidebar > .shell-user-menu .shell-settings-trigger,
  .shell-settings-menu,
  .shell-settings-menu *,
  .shell-settings-info dt,
  .shell-settings-info dd,
  .shell-settings-warning,
  .shell-settings-actions .text,
  .status-badge,
  .status-badge *,
  .status-pill,
  .status-pill *,
  .task-status,
  .task-status *,
  .pill,
  .pill *,
  .reference-chip,
  .reference-chip *,
  .case-number,
  .case-number *,
  .module-nav-item.active,
  .job-item.active,
  .conversation-item.active,
  .recent-work-item.active,
  .task-filter-tabs button.active,
  .admin-tab.active
) {
  color: var(--wb-on-selected) !important;
}

html[data-theme="light"] body:has(.layout) .layout :where(
  .sidebar > .shell-user-menu,
  .shell-settings-menu,
  .status-badge,
  .status-pill,
  .task-status,
  .pill,
  .reference-chip,
  .case-number
) {
  background: var(--wb-selected) !important;
}

/* v1.49: 统一新建任务页与工作页的资源 / 模型 / 联网控件。
   新建页保留资源说明的可读性，工作页保持单行紧凑输入；两者不再通过
   固定列宽把联网按钮或上传限制文案挤到不可见区域。 */
:root {
  --workbench-composer-network-width: 96px;
  --workbench-create-control-gap: var(--workbench-space-2);
}

body:has(.layout) .layout .production-image-input:not(.production-image-input-compact) .production-image-drop-zone {
  display: block;
  min-width: 0;
  min-height: 0;
  padding: var(--workbench-space-2);
  border: 0 !important;
  border-radius: var(--workbench-radius-md);
  background: var(--wb-selected) !important;
  overflow: visible;
}

body:has(.layout) .layout .workbench-create-resource-row {
  display: flex;
  align-items: center;
  gap: var(--workbench-create-control-gap);
  width: 100%;
  min-width: 0;
  min-height: var(--workbench-button-height);
}

body:has(.layout) .layout .workbench-create-resource-actions {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: var(--workbench-space-2);
  min-width: 0;
}

body:has(.layout) .layout .workbench-create-resource-row .production-image-add,
body:has(.layout) .layout .workbench-create-resource-row .reference-case-add {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: auto;
  max-width: 180px;
  height: var(--workbench-button-height);
  min-height: var(--workbench-button-height);
  margin: 0;
  padding: 0 var(--workbench-space-3);
  color: var(--wb-text) !important;
  border: 0 !important;
  border-radius: var(--workbench-radius-sm);
  background: var(--wb-bg) !important;
  font-size: var(--workbench-type-body) !important;
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
}

body:has(.layout) .layout .workbench-create-resource-row .reference-case-add {
  max-width: 220px;
}

body:has(.layout) .layout .workbench-create-resource-row .production-image-hint {
  display: block;
  flex: 1 1 auto;
  min-width: 0;
  max-width: none;
  margin: 0;
  color: var(--wb-text-secondary) !important;
  font-size: var(--workbench-type-support) !important;
  line-height: 1.45;
  overflow: visible;
  overflow-wrap: anywhere;
  text-overflow: clip;
  white-space: normal;
}

body:has(.layout) .layout .workbench-create-runtime-controls {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  grid-column: 1 / -1;
  align-items: center;
  gap: var(--workbench-create-control-gap);
  min-width: 0;
  min-height: var(--workbench-button-height);
  margin-top: var(--workbench-space-1);
}

body:has(.layout) .layout .workbench-create-runtime-control-group {
  display: flex;
  align-items: center;
  gap: var(--workbench-create-control-gap);
  min-width: 0;
}

body:has(.layout) .layout .workbench-create-runtime-control-group .workbench-model-picker {
  display: flex;
  align-items: center;
  flex: 0 1 clamp(180px, 24vw, 280px);
  width: clamp(180px, 24vw, 280px);
  min-width: 180px;
  height: var(--workbench-button-height);
  min-height: var(--workbench-button-height);
  padding: 0 var(--workbench-space-2);
  color: var(--wb-text) !important;
  border: 0 !important;
  border-radius: var(--workbench-radius-sm);
  background: var(--wb-selected) !important;
}

body:has(.layout) .layout .workbench-create-runtime-control-group .workbench-model-picker > span {
  flex: 0 0 auto;
  margin-right: var(--workbench-space-2);
  color: var(--wb-accent) !important;
  font-size: var(--workbench-type-support) !important;
  font-weight: 600;
  white-space: nowrap;
}

body:has(.layout) .layout .workbench-create-runtime-control-group .workbench-model-picker select {
  flex: 1 1 auto;
  width: auto !important;
  min-width: 0 !important;
  height: 100% !important;
  padding: 0 24px 0 0 !important;
  color: var(--wb-text) !important;
  border: 0 !important;
  background: transparent !important;
  font-size: var(--workbench-type-body) !important;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body:has(.layout) .layout .workbench-create-runtime-controls > .workbench-create-runtime-help {
  min-width: 0;
  margin: 0;
  color: var(--wb-text-secondary) !important;
  font-size: var(--workbench-type-support) !important;
  line-height: 1.45;
  overflow-wrap: anywhere;
}

body:has(.layout) .layout .workbench-create-runtime-controls > .primary {
  flex: 0 0 auto;
  width: auto;
  min-width: 120px;
  min-height: var(--workbench-button-height);
  margin: 0;
  white-space: nowrap;
}

body:has(.layout) .layout .chat-research-control {
  display: inline-flex;
  align-items: center;
  flex: 0 0 var(--workbench-composer-network-width);
  width: var(--workbench-composer-network-width);
  min-width: var(--workbench-composer-network-width);
  min-height: var(--workbench-button-height);
  box-sizing: border-box;
  gap: 6px;
  padding: 0 var(--workbench-space-2);
  color: var(--wb-text) !important;
  border: 0 !important;
  border-radius: var(--workbench-radius-sm);
  background: var(--wb-selected) !important;
  transition: none;
}

body:has(.layout) .layout .chat-research-control:hover,
body:has(.layout) .layout .chat-research-control:focus-within {
  color: var(--wb-text) !important;
  border: 0 !important;
  background: var(--wb-selected) !important;
  box-shadow: none !important;
}

body:has(.layout) .layout .chat-research-control:has(input:checked) {
  color: var(--wb-on-accent) !important;
  background: var(--wb-accent) !important;
}

body:has(.layout) .layout .chat-research-control-track {
  flex: 0 0 30px;
  width: 30px;
  height: 18px;
  background: var(--wb-text-muted) !important;
}

body:has(.layout) .layout .chat-research-control-track::after {
  width: 12px;
  height: 12px;
  background: var(--wb-bg) !important;
}

body:has(.layout) .layout .chat-research-control input:checked + .chat-research-control-track {
  background: var(--wb-accent) !important;
}

body:has(.layout) .layout .chat-research-control input:checked + .chat-research-control-track::after {
  background: var(--wb-on-accent) !important;
}

body:has(.layout) .layout .chat-research-control-label,
body:has(.layout) .layout .chat-research-control-state {
  flex: 0 0 auto;
  color: inherit !important;
  font-size: var(--workbench-type-support) !important;
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
}

body:has(.layout) .layout .chat-research-control-state {
  font-size: 0 !important;
}

body:has(.layout) .layout .chat-research-control-state::before {
  content: '关';
  font-size: var(--workbench-type-support);
}

body:has(.layout) .layout .chat-research-control input:checked ~ .chat-research-control-state::before {
  content: '开';
}

body:has(.layout) .layout .workbench-composer-resource-trigger {
  color: var(--wb-on-selected) !important;
  border: 0 !important;
  background: var(--wb-selected) !important;
}

body:has(.layout) .layout .workbench-composer-resource-trigger:hover,
body:has(.layout) .layout .workbench-composer-resource-trigger:focus-visible {
  color: var(--wb-on-selected) !important;
  border: 0 !important;
  background: var(--wb-selected) !important;
}

body:has(.layout) .layout .workbench-composer-resource-trigger[aria-expanded="true"] {
  color: var(--wb-on-accent) !important;
  background: var(--wb-accent) !important;
}

body:has(.layout) .layout .workbench-composer-resource-menu {
  color: var(--wb-text) !important;
  border: 0 !important;
  background: var(--wb-selected) !important;
}

body:has(.layout) .layout .workbench-composer-resource-menu-item {
  color: var(--wb-on-selected) !important;
  background: var(--wb-bg) !important;
}

@media (max-width: 760px) {
  body:has(.layout) .layout .workbench-create-resource-row {
    align-items: flex-start;
    flex-wrap: wrap;
  }

  body:has(.layout) .layout .workbench-create-resource-row .production-image-hint {
    flex: 1 0 100%;
  }

  body:has(.layout) .layout .workbench-create-runtime-controls {
    grid-template-columns: minmax(0, 1fr) auto;
  }

  body:has(.layout) .layout .workbench-create-runtime-controls > .workbench-create-runtime-help {
    grid-column: 1 / -1;
    grid-row: 2;
  }

  body:has(.layout) .layout .workbench-create-runtime-controls > .primary {
    grid-column: 2;
    grid-row: 1;
  }

  body:has(.layout) .layout .workbench-create-runtime-control-group {
    min-width: 0;
  }

  body:has(.layout) .layout .workbench-create-runtime-control-group .workbench-model-picker {
    min-width: 0;
    width: 100%;
  }
}

/* v1.50: 图片新建页的历史选择器规则曾把资源辅助文案强制成单行省略。
   辅助文案必须随资源入口换行，不能截断上传限制。 */
body:has(.image-workbench):has(#image-job-form) .image-job-create-form .production-image-drop-zone > .production-image-hint {
  min-width: 0;
  max-width: none;
  overflow: visible;
  overflow-wrap: anywhere;
  text-overflow: clip;
  white-space: normal;
}

/* v1.51: 交互可见性最终契约。
   统一覆盖主题历史规则的透明化结果，只复用现有语义颜色；被动内容不获得点击暗示。 */
body:has(.layout) .layout :where(
  .module-nav-item, .module-card, .recent-work-item, .task-card-open,
  .job-item, .conversation-item, .case-group-item, .case-group-chip,
  .case-center-type-tab, .case-taxonomy-all, .case-taxonomy-industry-link,
  .case-taxonomy-group, .case-taxonomy-toggle, .admin-capability-row,
  .admin-output-row
) {
  cursor: pointer;
}

body:has(.layout) .layout :where(.module-nav-item) {
  color: var(--wb-text) !important;
  background: transparent !important;
  border: 1px solid var(--wb-selected) !important;
  box-shadow: none !important;
}

body:has(.layout) .layout :where(.module-nav-item:hover, .module-nav-item:focus-visible, .module-nav-item.active) {
  color: var(--wb-accent) !important;
  background: var(--wb-selected) !important;
  border-color: var(--wb-accent) !important;
  box-shadow: none !important;
}

body:has(.layout) .layout :where(
  .module-card, .recent-work-item, .task-card-open,
  .job-item, .conversation-item, .case-group-item, .case-group-chip,
  .case-center-type-tab, .case-taxonomy-all, .case-taxonomy-industry-link,
  .case-taxonomy-group, .case-taxonomy-toggle, .admin-capability-row,
  .admin-output-row
) {
  color: var(--wb-text) !important;
  background: var(--wb-selected) !important;
  border: 1px solid transparent !important;
  box-shadow: none !important;
}

body:has(.layout) .layout :where(
  .module-card:hover, .module-card:focus-visible, .recent-work-item:hover,
  .recent-work-item:focus-visible, .recent-work-item.active,
  .task-card-open:hover, .task-card-open:focus-visible,
  .job-item:hover, .job-item:focus-visible, .job-item.active,
  .conversation-item:hover, .conversation-item:focus-visible, .conversation-item.active,
  .case-group-item:hover, .case-group-item:focus-visible, .case-group-item.active,
  .case-group-chip:hover, .case-group-chip:focus-visible, .case-group-chip.active,
  .case-center-type-tab:hover, .case-center-type-tab:focus-visible,
  .case-taxonomy-all:hover, .case-taxonomy-all:focus-visible,
  .case-taxonomy-industry-link:hover, .case-taxonomy-industry-link:focus-visible,
  .case-taxonomy-group:hover, .case-taxonomy-group:focus-visible,
  .case-taxonomy-toggle:hover, .case-taxonomy-toggle:focus-visible,
  .admin-capability-row:hover, .admin-capability-row:focus-visible,
  .admin-output-row:hover, .admin-output-row:focus-visible
) {
  color: var(--wb-accent) !important;
  background: var(--wb-selected) !important;
  border-color: var(--wb-accent) !important;
}

body:has(.layout) .layout :where(.text, .button-link, .task-card-action) {
  color: var(--wb-accent) !important;
  background: transparent !important;
  border-color: transparent !important;
  text-decoration: underline;
  text-decoration-color: var(--wb-accent);
  cursor: pointer;
}

body:has(.layout) .layout :where(.text:hover, .text:focus-visible, .button-link:hover,
  .button-link:focus-visible, .task-card-action:hover, .task-card-action:focus-visible) {
  color: var(--wb-accent) !important;
  background: var(--wb-selected) !important;
  border-color: var(--wb-accent) !important;
}

body:has(.layout) .layout :where(.danger-text, .task-card-action.danger-text) {
  color: var(--wb-error) !important;
  text-decoration-color: var(--wb-error);
}

body:has(.layout) .layout :where(.danger-text:hover, .danger-text:focus-visible,
  .task-card-action.danger-text:hover, .task-card-action.danger-text:focus-visible) {
  color: var(--wb-error) !important;
  background: var(--wb-selected) !important;
  border-color: var(--wb-error) !important;
}

body:has(.layout) .layout :where(details > summary) {
  color: var(--wb-accent) !important;
  cursor: pointer;
}

body:has(.layout) .layout :where(details > summary:hover, details > summary:focus-visible, details[open] > summary) {
  color: var(--wb-accent) !important;
  background: var(--wb-selected) !important;
}

body:has(.layout) .layout :where(.task-card, .case-card, .status-badge, .task-status, .pill, .case-number) {
  cursor: default;
}

/* v1.52: 主题级优先级收敛。
   浅色/深色主题的旧透明规则带有 html[data-theme] 前缀；这里复用相同的语义颜色，确保运行时最终命中。 */
html[data-theme] body:has(.layout) .layout :where(.module-nav-item) {
  color: var(--wb-text) !important;
  background: transparent !important;
  border: 1px solid var(--wb-selected) !important;
}

html[data-theme] body:has(.layout) .layout :where(.module-nav-item:hover, .module-nav-item:focus-visible, .module-nav-item.active) {
  color: var(--wb-accent) !important;
  background: var(--wb-selected) !important;
  border-color: var(--wb-accent) !important;
}

html[data-theme] body:has(.layout) .layout :where(
  .module-card, .recent-work-item, .task-card-open,
  .job-item, .conversation-item, .case-group-item, .case-group-chip,
  .case-center-type-tab, .case-taxonomy-all, .case-taxonomy-industry-link,
  .case-taxonomy-group, .case-taxonomy-toggle, .admin-capability-row,
  .admin-output-row
) {
  color: var(--wb-text) !important;
  background: var(--wb-selected) !important;
  border: 1px solid transparent !important;
}

html[data-theme] body:has(.layout) .layout :where(
  .module-card:hover, .module-card:focus-visible, .recent-work-item:hover,
  .recent-work-item:focus-visible, .recent-work-item.active,
  .task-card-open:hover, .task-card-open:focus-visible,
  .job-item:hover, .job-item:focus-visible, .job-item.active,
  .conversation-item:hover, .conversation-item:focus-visible, .conversation-item.active,
  .case-group-item:hover, .case-group-item:focus-visible, .case-group-item.active,
  .case-group-chip:hover, .case-group-chip:focus-visible, .case-group-chip.active,
  .case-center-type-tab:hover, .case-center-type-tab:focus-visible,
  .case-taxonomy-all:hover, .case-taxonomy-all:focus-visible,
  .case-taxonomy-industry-link:hover, .case-taxonomy-industry-link:focus-visible,
  .case-taxonomy-group:hover, .case-taxonomy-group:focus-visible,
  .case-taxonomy-toggle:hover, .case-taxonomy-toggle:focus-visible,
  .admin-capability-row:hover, .admin-capability-row:focus-visible,
  .admin-output-row:hover, .admin-output-row:focus-visible
) {
  color: var(--wb-accent) !important;
  background: var(--wb-selected) !important;
  border-color: var(--wb-accent) !important;
}

html[data-theme] body:has(.layout) .layout :where(.text, .button-link, .task-card-action) {
  color: var(--wb-accent) !important;
  background: transparent !important;
  border-color: transparent !important;
  text-decoration: underline;
  text-decoration-color: var(--wb-accent);
}

html[data-theme] body:has(.layout) .layout :where(.text:hover, .text:focus-visible, .button-link:hover,
  .button-link:focus-visible, .task-card-action:hover, .task-card-action:focus-visible) {
  color: var(--wb-accent) !important;
  background: var(--wb-selected) !important;
  border-color: var(--wb-accent) !important;
}

html[data-theme] body:has(.layout) .layout :where(.danger-text, .task-card-action.danger-text) {
  color: var(--wb-error) !important;
  text-decoration-color: var(--wb-error);
}

html[data-theme] body:has(.layout) .layout :where(.danger-text:hover, .danger-text:focus-visible,
  .task-card-action.danger-text:hover, .task-card-action.danger-text:focus-visible) {
  color: var(--wb-error) !important;
  background: var(--wb-selected) !important;
  border-color: var(--wb-error) !important;
}

html[data-theme] body:has(.layout) .layout :where(details > summary) {
  color: var(--wb-accent) !important;
}

html[data-theme] body:has(.layout) .layout :where(details > summary:hover, details > summary:focus-visible, details[open] > summary) {
  color: var(--wb-accent) !important;
  background: var(--wb-selected) !important;
}

/* v1.53: 导航真实层级覆盖。
   导航项位于 sidebar 内，复用该层级保证激活和悬停状态不再被旧主题规则压回透明。 */
html[data-theme] body:has(.layout) .layout .sidebar :where(.module-nav-item) {
  color: var(--wb-text) !important;
  background: transparent !important;
  border: 1px solid var(--wb-selected) !important;
}

html[data-theme] body:has(.layout) .layout .sidebar :where(.module-nav-item:hover, .module-nav-item:focus-visible, .module-nav-item.active) {
  color: var(--wb-accent) !important;
  background: var(--wb-selected) !important;
  border-color: var(--wb-accent) !important;
}

/* v1.54: 导航激活态最终命中。
   旧主题使用 .module-nav-item.active 的更高选择器优先级；这里明确写出 button 和 active，
   仍只复用工作台已有的选中底色、强调色和正文色。 */
html[data-theme] body:has(.layout) .layout .sidebar button.module-nav-item.active,
html[data-theme] body:has(.layout) .layout .sidebar button.module-nav-item.active:hover,
html[data-theme] body:has(.layout) .layout .sidebar button.module-nav-item:focus-visible {
  color: var(--wb-accent) !important;
  background-color: var(--wb-selected) !important;
  border-color: var(--wb-accent) !important;
  box-shadow: none !important;
}

/* v1.55: 案例筛选与管理后台导航也使用同一套可点击契约。 */
html[data-theme] body:has(.layout) .layout :where(
  button.case-taxonomy-all,
  button.case-center-type-tab,
  button.case-group-item,
  button.case-group-chip,
  button.case-taxonomy-industry-link,
  button.admin-nav-item
) {
  color: var(--wb-text) !important;
  background: transparent !important;
  border: 1px solid var(--wb-selected) !important;
  cursor: pointer !important;
}

html[data-theme] body:has(.layout) .layout :where(
  button.case-taxonomy-all:hover,
  button.case-taxonomy-all:focus-visible,
  button.case-taxonomy-all.active,
  button.case-center-type-tab:hover,
  button.case-center-type-tab:focus-visible,
  button.case-center-type-tab.active,
  button.case-group-item:hover,
  button.case-group-item:focus-visible,
  button.case-group-item.active,
  button.case-group-chip:hover,
  button.case-group-chip:focus-visible,
  button.case-group-chip.active,
  button.case-taxonomy-industry-link:hover,
  button.case-taxonomy-industry-link:focus-visible,
  button.case-taxonomy-industry-link.active,
  button.admin-nav-item:hover,
  button.admin-nav-item:focus-visible,
  button.admin-nav-item.active
) {
  color: var(--wb-accent) !important;
  background-color: var(--wb-selected) !important;
  border-color: var(--wb-accent) !important;
  box-shadow: none !important;
}

/* v1.56: 账号区取消历史视口定位偏移，保证设置弹层完整落在侧栏与工作区内。 */
html[data-theme] body:has(.layout) .layout .sidebar > .shell-user-menu {
  top: auto !important;
  right: auto !important;
  bottom: auto !important;
  left: auto !important;
}

html[data-theme] body:has(.layout) .layout .sidebar > .shell-user-menu .shell-settings-menu {
  left: 0 !important;
  right: auto !important;
}

/* v1.61: 首页最近工作筛选只保留下拉框，并与任务列表保持同一宽度。 */
body:has(.layout) .layout .recent-work-filters {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: center;
  gap: 0;
  min-width: 0;
  margin-bottom: var(--workbench-space-3);
  padding: 0;
  overflow: visible;
}

body:has(.layout) .layout .recent-work-filter-select {
  width: 100% !important;
  min-width: 0 !important;
  max-width: none;
  height: var(--workbench-button-height-small) !important;
  min-height: var(--workbench-button-height-small) !important;
  margin: 0;
  padding: 0 var(--workbench-space-2) !important;
  color: var(--workbench-color-text) !important;
  border: 1px solid var(--wb-selected) !important;
  border-radius: var(--workbench-radius-sm);
  background: var(--wb-selected) !important;
  font-size: var(--workbench-type-body) !important;
  line-height: 1.4;
}

body:has(.layout) .layout .recent-work-filter-select:hover,
body:has(.layout) .layout .recent-work-filter-select:focus-visible {
  border-color: var(--wb-accent) !important;
  outline: 2px solid var(--wb-accent);
  outline-offset: 1px;
}

body:has(.layout) .layout .recent-work-filter-select option {
  color: var(--workbench-color-text);
  background: var(--wb-selected);
}

/* v1.58: 只有固定“上图文字”区块中的完整列表项使用强调色；不猜测冒号前后的语义。 */
html[data-theme] body:has(.layout) .layout .note-markdown > .markdown-visual-copy-heading + ul > li .markdown-visual-copy-value,
html[data-theme] body:has(.layout) .layout .note-markdown > .markdown-visual-copy-heading + ol > li .markdown-visual-copy-value,
html[data-theme] body:has(.layout) .layout .workbench-message-markdown > .markdown-visual-copy-heading + ul > li .markdown-visual-copy-value,
html[data-theme] body:has(.layout) .layout .workbench-message-markdown > .markdown-visual-copy-heading + ol > li .markdown-visual-copy-value {
  color: var(--workbench-color-accent) !important;
}

/* v1.59: recent work is the compact multi-task monitor.
   Keep the status on its own full-width row so the narrow rail never clips
   the label, and use the existing accent/error tokens for quick scanning. */
body:has(.layout) .layout .recent-work-status {
  display: flex;
  width: 100%;
  min-width: 0;
  margin-top: 2px;
  overflow: hidden;
}

body:has(.layout) .layout .recent-work-status .status-badge {
  display: flex;
  width: fit-content;
  min-width: 0;
  min-height: 20px;
  padding: 2px 0;
  color: var(--workbench-color-text-secondary) !important;
  border: 0 !important;
  border-radius: 0;
  background: transparent !important;
  font-size: var(--workbench-type-meta) !important;
  font-weight: 800;
}

body:has(.layout) .layout .recent-work-status .status-badge > span:not(.status-dot) {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--workbench-type-meta) !important;
  line-height: inherit;
}

body:has(.layout) .layout .recent-work-status .status-badge .status-dot {
  display: none !important;
}

body:has(.layout) .layout .recent-work-status .status-badge:not(.status-failed) {
  color: var(--workbench-color-accent) !important;
}

body:has(.layout) .layout .recent-work-status .status-badge:not(.status-failed) > * {
  color: inherit !important;
}

body:has(.layout) .layout .recent-work-status .status-badge.status-failed {
  color: var(--workbench-message-error-text) !important;
}

body:has(.layout) .layout .recent-work-status .status-badge.status-failed > * {
  color: inherit !important;
}

body:has(.layout) .layout .recent-work-status .status-badge small {
  display: none !important;
}

/* v1.60: 已查看是用户阅读回执，不使用任务执行强调色；四个任务模块、
   任务卡片和最近任务栏统一使用现有弱信息灰色。该规则放在最近任务的
   通用强调色之后，避免 status-viewed 被重新染成绿色。 */
body:has(.layout) .layout :where(.status-viewed) {
  color: var(--workbench-color-text-secondary) !important;
  background: var(--workbench-color-surface-subtle) !important;
  border-color: var(--workbench-color-border) !important;
  box-shadow: none !important;
}

body:has(.layout) .layout :where(.status-viewed .status-dot) {
  background: currentColor !important;
  box-shadow: none !important;
}

body:has(.layout) .layout .recent-work-status .status-badge.status-viewed,
body:has(.layout) .layout .recent-work-status .status-badge.status-viewed > * {
  color: var(--workbench-color-text-secondary) !important;
  background: transparent !important;
  border-color: transparent !important;
}

/* Recent-work cards use one stable four-row hierarchy across every module. */
body:has(.layout) .layout .recent-work-item-top {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
}

body:has(.layout) .layout .recent-work-item > strong {
  display: -webkit-box;
  max-width: 100%;
  overflow: hidden;
  color: var(--workbench-color-text);
  font-size: var(--workbench-type-body) !important;
  line-height: 1.4;
  white-space: normal;
  text-wrap: pretty;
  overflow-wrap: break-word;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

body:has(.layout) .layout .recent-work-project {
  display: block;
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
  color: var(--workbench-color-text-secondary);
  font-size: var(--workbench-type-support) !important;
  line-height: 1.4;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body:has(.layout) .layout .recent-work-status .status-badge {
  font-size: var(--workbench-type-meta) !important;
  line-height: 1.45;
}

/* The mascot only occupies the spare space between navigation and account. */
body:has(.layout) .layout > .sidebar > .sidebar-mascot-slot {
  display: flex;
  flex: 1 1 0;
  align-items: flex-end;
  justify-content: center;
  min-height: 0;
  overflow: hidden;
  pointer-events: none;
}

.sidebar-mascot-stage {
  position: relative;
  flex: 0 0 auto;
  width: auto;
  height: min(100%, 150px);
  aspect-ratio: 1;
  overflow: hidden;
}

.sidebar-mascot-stage :is(canvas, .sidebar-mascot-fallback) {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.sidebar-mascot-stage canvas { visibility: hidden; }
.sidebar-mascot-stage.is-ready canvas { visibility: visible; }
.sidebar-mascot-stage.is-ready .sidebar-mascot-fallback { visibility: hidden; }

.sidebar-mascot-sweat {
  position: absolute;
  top: 36%;
  left: 39%;
  width: 4%;
  height: 5%;
  opacity: 0;
  background: url('mascot/sweat.svg?v=20260924-v1') center / contain no-repeat;
  transform: rotate(-35deg) scale(.6);
}

.sidebar-mascot-stage[data-sweat="on"] .sidebar-mascot-sweat {
  animation: sidebar-mascot-sweat 2.8s ease-in-out both;
}

@keyframes sidebar-mascot-sweat {
  0% { opacity: 0; transform: translateY(-2px) rotate(-35deg) scale(.55); }
  18%, 67% { opacity: .95; transform: translateY(0) rotate(-35deg) scale(1); }
  92% { opacity: .75; transform: translateY(6px) rotate(-35deg) scale(.9); }
  100% { opacity: 0; transform: translateY(9px) rotate(-35deg) scale(.7); }
}

.sidebar-mascot-sleep {
  position: absolute;
  top: 18%;
  left: 76%;
  color: var(--workbench-color-accent);
  font-size: var(--workbench-type-meta);
  font-weight: 700;
  opacity: 0;
}

.sidebar-mascot-stage[data-mode="sleeping"] .sidebar-mascot-sleep {
  animation: sidebar-mascot-snore 4s ease-out infinite;
}

@keyframes sidebar-mascot-snore {
  0% { opacity: 0; transform: translateY(6px) scale(.8); }
  25%, 65% { opacity: .8; }
  100% { opacity: 0; transform: translate(8px, -14px) scale(1.1); }
}

@media (max-width: 1020px), (max-height: 650px) {
  body:has(.layout) .layout > .sidebar > .sidebar-mascot-slot { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .sidebar-mascot-stage[data-sweat="on"] .sidebar-mascot-sweat {
    animation: none;
    opacity: .9;
    transform: rotate(-35deg);
  }
  .sidebar-mascot-stage[data-mode="sleeping"] .sidebar-mascot-sleep {
    animation: none;
    opacity: .8;
  }
}
