/* Shell / layout — agent-demo · 0-dep */
  /* ============ 侧栏项目组切换 ============ */
  .brand{display:flex;align-items:center;gap:var(--sp-2);font-weight:600;font-size:var(--text-ui-base);cursor:pointer;white-space:nowrap;color:var(--color-foreground)}
  .logo{width:var(--size-7);height:var(--control-h-7);border-radius:var(--radius-md);background:var(--color-primary);display:inline-flex;align-items:center;justify-content:center;color:var(--color-primary-foreground);font-weight:600;font-size:var(--text-ui-xs);line-height:1;flex-shrink:0}
  .proj{margin-left:0;font-size:var(--text-ui-sm);color:var(--color-foreground);padding:var(--sp-1-5) var(--sp-2);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;display:flex;align-items:center;gap:var(--sp-1-5);transition:border-color .12s,background-color .12s;width:100%;min-width:0;box-sizing:border-box}
  .proj:hover{border-color:var(--color-border-hover);background:var(--color-surface-hover)}
  .proj .ws-name,.proj #projName{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}
  .proj .caret-ind{font-size:var(--text-ui-xs);color:var(--color-foreground-subtlest)}
  .proj-wrap{position:relative;width:100%}
  .team-dropdown{position:absolute;top:calc(100% + var(--sp-1));left:0;right:0;width:auto;min-width:100%;background:var(--color-menu);border:1px solid var(--color-popover-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--sp-1);display:none;z-index:55}
  .team-dropdown.show{display:block}
  .td-h{padding:var(--sp-1) var(--sp-2) var(--sp-2);font-size:var(--text-ui-sm);font-weight:600;color:var(--color-foreground-subtle)}
  .td-i{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2);cursor:pointer;font-size:var(--text-ui-base);border-radius:var(--radius-md)}
  .td-i:hover{background:var(--color-menu-hover)}
  .td-i.on{background:var(--color-selected)}
  .td-name{flex:1;color:var(--color-foreground);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .td-role{font-size:var(--text-ui-xs);color:var(--color-foreground-subtle)}
  .td-check{color:var(--color-success);font-size:var(--text-ui-sm);margin-left:var(--sp-1)}
  .icon-btn{width:var(--size-7);height:var(--control-h-7);border-radius:var(--radius-md);border:none;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:var(--text-ui-base);color:var(--color-foreground-subtle);position:relative;transition:background-color .12s,color .12s;flex-shrink:0}
  .icon-btn:hover{background:var(--color-hover);color:var(--color-foreground)}
  .icon-btn.on{background:var(--color-selected);color:var(--color-foreground)}
  .avatar{width:var(--size-7);height:var(--control-h-7);border-radius:var(--radius-full);background:var(--color-primary);display:flex;align-items:center;justify-content:center;font-weight:600;color:var(--color-primary-foreground);font-size:var(--text-ui-xs);cursor:pointer;flex-shrink:0}
  .menu{position:absolute;width:var(--menu-w);background:var(--color-menu);border:1px solid var(--color-popover-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--sp-1);display:none;z-index:80}
  .menu.show{display:block}
  .menu.rail-menu{left:calc(100% + var(--sp-2));right:auto;top:auto;bottom:0}
  .menu.rail-menu.notif{bottom:44px}
  .mi{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2);border-radius:var(--radius-md);cursor:pointer;font-size:var(--text-ui-base);color:var(--color-foreground)}
  .mi:hover{background:var(--color-menu-hover)}
  .mi i{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
  .mi:hover i{color:var(--color-foreground)}
  .sep{height:var(--sp-px);background:var(--color-border);margin:var(--sp-1) 0}

  /* ============ 主体：产品入口轨（透明贴 chrome）+ frames ============ */
  .app-body{display:flex;flex:1;min-height:0;overflow:hidden;gap:var(--shell-inset)}
  /* 产品模块轨：比 ZCode 多一级；透明图标轨，贴窗口 chrome（body = --color-background-win-alt） */
  .leftnav{width:var(--nav-w);background:transparent;border:0;border-radius:0;display:flex;flex-direction:column;flex-shrink:0;padding:calc((var(--sp-12) - var(--control-h-9)) / 2 + var(--sp-px)) 0 var(--sp-1);align-items:stretch;position:relative;z-index:50}
  .nav-i{display:flex;align-items:center;justify-content:center;gap:0;padding:0;width:var(--size-9);height:var(--control-h-9);margin:0 auto var(--sp-1);border-radius:var(--radius-lg);cursor:pointer;color:var(--color-foreground-subtle);font-size:var(--text-ui-base);font-weight:500;transition:background-color .12s,color .12s;position:relative;border:none;background:transparent;flex-shrink:0;text-decoration:none}
  .nav-i:hover{background:color-mix(in oklab,var(--color-foreground) 10%,transparent);color:var(--color-foreground)}
  .nav-i.active,.nav-i.on{background:var(--color-selected);color:var(--color-foreground);font-weight:600}
  .nav-i .ico-wrap{font-size:var(--text-ui-lg);width:auto;text-align:center;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;line-height:1}
  .nav-i .ico-wrap i{font-size:var(--text-ui-lg);line-height:1}
  /* Tabler 左轨：filled 面性 / outline 线性，尺寸跟 Lucide 一样走 1em */
  .nav-i .ico-wrap svg.tb-ico{width:1em;height:1em;display:block;flex-shrink:0}
  .nav-i .nav-label{position:absolute;left:calc(100% + var(--sp-2));top:50%;transform:translateY(-50%);background:var(--color-tooltip);color:var(--color-tooltip-foreground);font-size:var(--text-ui-sm);font-weight:500;padding:var(--sp-1) var(--sp-2);border-radius:var(--radius-md);box-shadow:var(--shadow-tooltip);white-space:nowrap;pointer-events:none;opacity:0;z-index:70;border:1px solid var(--color-border)}
  /* Tooltip.js owns rail hints; avoid a second CSS-only bubble on hover. */
  .nav-i .label-num{display:none}
  .nav-sep{height:var(--sp-px);width:var(--size-6);margin:var(--sp-1) auto var(--sp-2);background:var(--color-border);flex-shrink:0}
  .nav-mid{display:flex;flex-direction:column;align-items:center;flex-shrink:0}
  /* 底栏：靠 margin-top:auto 留白分区即可；勿再加全宽 border（比上面 .nav-sep 更重，且违透明轨） */
  .nav-foot{margin-top:auto;padding-top:var(--sp-2);border-top:0;display:flex;flex-direction:column;align-items:center;position:relative;gap:var(--sp-1)}
  .nav-foot .nav-i{margin-bottom:0}
  .nav-avatar{width:var(--size-7);height:var(--control-h-7);border-radius:var(--radius-full);background:var(--color-primary);color:var(--color-primary-foreground);font-size:var(--text-ui-xs);font-weight:600;display:inline-flex;align-items:center;justify-content:center;line-height:1}

  .main-col{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--color-background);overflow:hidden;border:1px solid var(--panel-frame-border);border-radius:var(--panel-radius)}
  /* analysis：主列退成透明槽；frame 挂在 .analysis（侧栏+会话一张大卡） */
  .main-col:has(.analysis),.main-col:has(.thread-wrap),.main-col:has(.cdx-lib-root),.main-col:has(.cdx-gpt-root),.main-col:has(.cdx-mgmt-root),.main-col:has(.cdx-sub-root){background:transparent;border:none;border-radius:0;overflow:hidden}
  .main-col:has(.cdx-lib-root),.main-col:has(.cdx-gpt-root),.main-col:has(.cdx-mgmt-root),.main-col:has(.cdx-sub-root){background:var(--color-background-win-alt);border:none;border-radius:0}
  .main-col:has(.cdx-lib-root) .cdx-lib-root,.main-col:has(.cdx-gpt-root) .cdx-gpt-root,.main-col:has(.cdx-mgmt-root) .cdx-mgmt-root,.main-col:has(.cdx-sub-root) .cdx-sub-root{border:1px solid var(--panel-frame-border);border-radius:var(--panel-radius);overflow:hidden;background:var(--color-panel)}
  /* Settings 保留产品入口轨，页面呈现在导航右侧 */
  .app-body.settings-mode{gap:var(--sp-2)}
  .app-body.settings-mode .leftnav{display:flex}
  .app-body.settings-mode .right{display:none!important}
  .app-body.settings-mode .main-col,
  .app-body.settings-mode .main-col:has(.zc-settings-page){
    background:transparent;border:none;border-radius:0;overflow:hidden;
  }
  .main-scroll{flex:1;overflow-y:auto;overflow-x:hidden}
  .view{padding:var(--sp-6) var(--sp-8) var(--sp-10);max-width:var(--content-max);margin:0 auto;width:100%;box-sizing:border-box}

  /* ============ Side Pane frame（对标 ZCode AnimatedSidePanePanel：bg-background，非 panel 白） ============ */
  .right{width:var(--right-w);background:var(--color-background);border:1px solid var(--panel-frame-border);border-radius:var(--panel-radius);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden;transition:width .18s ease,opacity .18s ease,border-color .18s;position:relative}
  .right.collapsed{width:0;min-width:0;flex:0 0 0px;border-color:transparent;border-width:0;opacity:0;pointer-events:none;overflow:hidden}
  .right.is-resizing{transition:none}
  /* Codex 完整视图：隐藏会话列，右侧浏览器拉满（侧栏任务列表保留） */
  .app-body.sp-full-view .chat-center{display:none!important}
  .app-body.sp-full-view .main-col{flex:0 0 auto;width:auto;max-width:none;min-width:0}
  .app-body.sp-full-view .main-col .analysis{width:auto}
  .app-body.sp-full-view .right,
  .app-body.sp-full-view .right.collapsed,
  .app-body.sp-full-view .right.is-full-view{
    flex:1 1 auto!important;width:auto!important;min-width:0;max-width:none!important;
    opacity:1;pointer-events:auto;border-width:1px;border-color:var(--panel-frame-border);
    overflow:hidden
  }
  .app-body.sp-full-view .right-resize{display:none;pointer-events:none}
  .right.sp-split-on .sp-browser-body{display:grid;grid-template-columns:1fr 1fr;gap:0}
  .right.sp-split-on .sp-browser-body::after{
    content:'分屏预览（Mock）';display:flex;align-items:center;justify-content:center;
    border-left:1px solid var(--color-border);color:var(--color-foreground-subtle);
    font-size:var(--text-ui-sm);background:color-mix(in oklab,var(--color-surface) 40%,transparent)
  }
  /* 拖拽缝 — 对标 ZCode ResizableHandle（真实 4px 缝 + after 细线；min 240 / max 65% / 展开 45%）
     收起时不渲染可交互区（pointer-events:none），禁止从边缘拖出面板 */
  .right-resize{
    position:absolute;top:0;bottom:0;z-index:6;cursor:col-resize;
    left:0;width:6px;margin:0;padding:0;
    background:transparent;touch-action:none;border:0;
  }
  .right-resize::after{
    content:'';pointer-events:none;position:absolute;inset-block:var(--panel-radius,var(--radius-xl));
    left:50%;width:2px;transform:translateX(-50%);border-radius:999px;
    background:color-mix(in oklab,var(--color-foreground) 20%,transparent);
    opacity:0;transition:opacity .12s ease
  }
  .right.collapsed .right-resize{display:none;pointer-events:none}
  .right-resize:hover::after,
  .right-resize[data-separator="hover"]::after,
  .right-resize[data-separator="active"]::after,
  .right.is-resizing .right-resize::after{opacity:1}
  .right-chrome{position:relative;flex-shrink:0;display:flex;flex-direction:column;min-width:0}
  /* Codex「进入完整视图 Ctrl+Shift+F」 */
  .sp-fullview-bar{display:flex;align-items:center;justify-content:flex-start;padding:var(--sp-1) var(--sp-2) 0;flex-shrink:0}
  .sp-fullview-btn{
    display:inline-flex;align-items:center;gap:var(--sp-1-5);height:var(--control-h-7);
    padding:0 var(--sp-2);border:0;border-radius:var(--radius-md);background:transparent;
    color:var(--color-foreground-subtle);font:inherit;font-size:var(--text-ui-sm);font-weight:500;
    cursor:pointer;max-width:100%
  }
  .sp-fullview-btn:hover,.sp-fullview-btn.on{background:var(--color-hover);color:var(--color-foreground)}
  .sp-fullview-ico{display:inline-flex;line-height:0;flex-shrink:0}
  .sp-fullview-lbl{white-space:nowrap}
  .sp-fullview-kbd{color:var(--color-foreground-subtlest);font-size:var(--text-ui-xs);white-space:nowrap}
  /* Side Pane Tab 条 — AnimatedSidePanePanel TabsList !h-12 + SidePaneTabTrigger */
  .sp-tabs{display:flex;align-items:stretch;justify-content:flex-start;border-bottom:1px solid color-mix(in oklab,var(--color-border) 50%,transparent);padding:0;height:var(--sp-12);min-height:var(--sp-12);box-sizing:border-box;gap:0;background:transparent;width:100%;overflow:hidden}
  .sp-tabs-main{display:flex;align-items:center;justify-content:flex-start;flex:1;min-width:0;height:100%}
  .sp-tabs-scroll{display:flex;align-items:center;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none;height:var(--sp-12)}
  .sp-tabs-scroll::-webkit-scrollbar{display:none}
  /* ZCode 左侧有 p-2 的 Tab Overview 槽；产品禁 Overview，仍保留 pl-2 与 WorkspaceHeader 对齐，避免首 Tab 贴边 */
  .sp-tabs-content{display:flex;align-items:center;width:100%;gap:var(--sp-1);padding:var(--sp-2-5) 0 var(--sp-2-5) var(--sp-2);box-sizing:border-box;min-width:0}
  .sp-tabs-actions-end{display:flex;align-items:center;gap:var(--sp-1);padding:0 var(--sp-2);flex-shrink:0;height:100%;margin-left:auto}
  .sp-icon-btn{width:var(--control-h-8);height:var(--control-h-8);border:0;background:transparent;border-radius:var(--radius-md);color:var(--color-foreground-subtle);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;flex-shrink:0;outline:none;box-shadow:none}
  .sp-icon-btn:hover{background:var(--color-hover);color:var(--color-foreground)}
  .sp-icon-btn:focus-visible{outline:2px solid var(--color-ring);outline-offset:-2px;background:var(--color-hover);color:var(--color-foreground)}
  /* WorkspaceSidePaneToggleButton：打开时 !bg-selected */
  .sp-icon-btn.on{background:var(--color-selected);color:var(--color-foreground)}
  .sp-icon-btn-sm{width:var(--control-h-7);height:var(--control-h-7)}
  /* Tab：对标 SidePaneTabTrigger — !h-7 rounded-lg px-1.5 pr-2；active=bg-selected；禁全局 2px focus 环 */
  .sp-tab{display:inline-flex;align-items:center;gap:var(--sp-1);height:var(--control-h-7);min-width:3.75rem;max-width:9.75rem;flex:1 1 9.75rem;padding:0 var(--sp-2) 0 var(--sp-1-5);border:1px solid transparent;border-radius:var(--radius-lg);background:transparent;color:var(--color-foreground-subtle);cursor:default;position:relative;box-sizing:border-box;overflow:hidden;font-size:var(--text-ui-base);font-weight:500;white-space:nowrap;transition:background-color .12s,color .12s,border-color .12s}
  .sp-tab:hover{background:var(--color-hover);color:var(--color-foreground)}
  .sp-tab:not(.on):hover,.sp-tab:not([data-active]):hover{background:var(--color-hover)}
  .sp-tab.on,.sp-tab[data-active],.sp-tab[data-state="active"]{color:var(--color-foreground);background:var(--color-selected)}
  .sp-tab:focus-visible{outline:2px solid var(--color-ring);outline-offset:-2px}
  .sp-tab-content{display:flex;min-width:0;flex:1;align-items:center;gap:var(--sp-1);overflow:hidden;white-space:nowrap;--tab-fade-offset:0px;mask-image:linear-gradient(to right,black calc(100% - var(--tab-fade-offset) - 0.5rem),transparent calc(100% - var(--tab-fade-offset)));-webkit-mask-image:linear-gradient(to right,black calc(100% - var(--tab-fade-offset) - 0.5rem),transparent calc(100% - var(--tab-fade-offset)))}
  .sp-tab-content[data-close-visible],.sp-tab:hover .sp-tab-content,.sp-tab:focus-within .sp-tab-content{--tab-fade-offset:1.25rem}
  .sp-tab-ico{display:inline-flex;align-items:center;justify-content:center;width:var(--size-4);height:var(--size-4);flex-shrink:0;color:inherit;line-height:0}
  .sp-tab-ico .zc-file-ico,.sp-tab-ico .sp-file-ico,.sp-file-ico{width:14px;height:14px;display:block;flex-shrink:0}
  .sp-tab-title{flex-shrink:0;white-space:nowrap;font-size:var(--text-ui-base);font-weight:500}
  .sp-tab-x{position:absolute;right:var(--sp-1);top:50%;transform:translateY(-50%);width:var(--size-5);height:var(--size-5);border:0;background:transparent;border-radius:var(--radius-md);color:var(--color-foreground-subtlest);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;opacity:0;flex-shrink:0;pointer-events:none}
  .sp-tab:hover .sp-tab-x,.sp-tab.on .sp-tab-x,.sp-tab[data-active] .sp-tab-x{opacity:1;pointer-events:auto}
  .sp-tab-x:hover{background:var(--color-hover);color:var(--color-foreground)}
  /* + 添加标签 — 贴在 tabs 内容末尾；▾ 打开更多类型 */
  .sp-add-wrap{position:relative;display:inline-flex;flex-shrink:0;align-items:center;gap:0}
  .sp-add-more{width:var(--size-5)!important;min-width:var(--size-5);margin-left:-2px}
  /* fixed：对标 ZCode DropdownMenu portal，避免被 .sp-tabs/.right overflow:hidden 裁切 */
  .sp-add-menu{position:fixed;top:0;left:0;min-width:12rem;padding:var(--sp-1);border:1px solid var(--color-popover-border);border-radius:var(--radius-lg);background:var(--color-menu);box-shadow:var(--shadow-md);z-index:220;display:flex;flex-direction:column;gap:var(--sp-0-5)}
  .sp-add-menu[hidden]{display:none!important}
  .sp-add-mi{display:flex;align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2) var(--sp-2-5);border:0;border-radius:var(--radius-md);background:transparent;color:var(--color-foreground);font-size:var(--text-ui-base);cursor:pointer;text-align:left}
  .sp-add-mi:hover{background:var(--color-menu-hover)}
  .sp-add-mi .ico{display:inline-flex;color:var(--color-foreground-subtle);line-height:0}
  /* 打开标签页空态 — openTabLauncher + styles.css container query */
  .sp-launcher-shell{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--color-background);container:side-pane-open-tab / inline-size}
  .sp-launcher-top{display:flex;align-items:center;justify-content:flex-end;height:var(--sp-12);padding:0 var(--sp-2);flex-shrink:0}
  .sp-launcher{display:flex;flex:1;min-height:0;align-items:center;justify-content:center;overflow-y:auto;padding:var(--sp-10) var(--sp-5)}
  .sp-launcher-inner{display:flex;flex-direction:column;gap:var(--sp-5);width:100%;max-width:20rem}
  .sp-launcher-copy{display:flex;flex-direction:column;gap:var(--sp-2);text-align:center}
  .sp-launcher-copy h2{font-size:var(--text-ui-xl);font-weight:600;margin:0;color:var(--color-foreground);line-height:1.75rem}
  .sp-launcher-copy p{margin:0;font-size:var(--text-ui-base);color:var(--color-foreground-subtle);line-height:1.25rem}
  .sp-launcher-list{display:flex;flex-direction:column;gap:var(--sp-2);width:100%}
  .sp-launcher-btn{display:flex;align-items:center;gap:var(--sp-3);height:var(--sp-12);min-width:0;padding:0 var(--sp-3);border:0;border-radius:var(--radius-xl);background:var(--color-surface);color:var(--color-foreground);font-size:var(--text-ui-base);font-weight:500;cursor:pointer;text-align:left;transition:background-color .12s}
  .sp-launcher-btn:hover{background:var(--color-surface-hover)}
  .sp-launcher-btn:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-ring,var(--color-input-border-focused))}
  .sp-launcher-btn .ico,.sp-launcher-btn .zc-file-ico,.sp-launcher-btn .sp-file-ico{display:inline-flex;color:var(--color-foreground-subtle);line-height:0;flex-shrink:0}
  .sp-launcher-btn .zc-file-ico,.sp-launcher-btn .sp-file-ico{width:16px;height:16px}
  .sp-launcher-btn .lbl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;text-align:left}
  @container side-pane-open-tab (min-width: 480px) {
    .sp-launcher-inner{max-width:34rem}
    .sp-launcher-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr))}
    .sp-launcher-btn{flex-direction:column;gap:0.375rem;height:5.5rem;justify-content:center}
    .sp-launcher-btn .lbl{flex:0 1 auto;text-align:center}
  }
  /* WorkspaceFileTree | PreviewPane 合并进右侧（对标截图两红框） */
  .sp-ws{display:flex;height:100%;min-height:0;min-width:0;background:var(--color-background);overflow:hidden}
  .sp-ws-tree{
    display:flex;flex-direction:column;width:min(42%,15rem);min-width:11rem;max-width:18rem;
    flex-shrink:0;border-right:1px solid var(--color-border);min-height:0;background:var(--color-background);
  }
  /* 文件搜索 — 对标 WorkspaceFileTree：侧栏无「返回」行时用 pt-2 与 Tab 底边留白（原仅 px/pb，贴分割线） */
  .sp-ws-search{display:flex;align-items:center;padding:var(--sp-2);flex-shrink:0}
  .sp-ws-search-inner{position:relative;min-width:0;flex:1}
  .sp-ws-search-ico{
    position:absolute;left:var(--sp-2);top:50%;transform:translateY(-50%);
    width:var(--size-3-5);height:var(--size-3-5);line-height:0;
    color:var(--color-foreground-subtlest);pointer-events:none;z-index:1;
    display:inline-flex;align-items:center;justify-content:center;
  }
  .sp-ws-search-ico svg{width:var(--size-3-5);height:var(--size-3-5)}
  .sp-ws-search-input{
    width:100%;height:var(--control-h-7);box-sizing:border-box;
    padding:var(--sp-0-5) var(--sp-7);
    border:1px solid var(--color-input-border);border-radius:var(--radius-md);
    background:transparent;font:inherit;font-size:var(--text-ui-base);line-height:1.55;
    color:var(--color-foreground);outline:none;box-shadow:none;
    transition:border-color .12s,background-color .12s;
  }
  .sp-ws-search-input:hover{border-color:var(--color-input-border-hover)}
  .sp-ws-search-input:focus,.sp-ws-search-input:focus-visible{
    background:var(--color-input-focused);border-color:var(--color-input-border-focused);
    outline:2px solid var(--color-ring);outline-offset:1px;
  }
  .sp-ws-search-input::placeholder{color:var(--color-foreground-subtlest)}
  .sp-ws-search-clear{
    position:absolute;right:var(--sp-1);top:50%;transform:translateY(-50%);
    display:inline-flex;align-items:center;justify-content:center;
    width:var(--size-5);height:var(--size-5);border:0;border-radius:var(--radius-md);
    background:transparent;color:var(--color-foreground-subtlest);cursor:pointer;padding:0;z-index:1;
  }
  .sp-ws-search-clear:hover{background:var(--color-surface-hover);color:var(--color-foreground)}
  .sp-ws-search-clear svg{width:var(--size-3);height:var(--size-3)}
  .sp-ws-titlebar{display:flex;align-items:center;gap:var(--sp-1);padding:0 var(--sp-2) var(--sp-2);flex-shrink:0}
  .sp-ws-title{min-width:0;flex:1;margin:0;padding:var(--sp-1) var(--sp-0-5) var(--sp-1) var(--sp-2-5);font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground-subtlest);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .sp-ws-title-acts{display:flex;align-items:center;gap:0;flex-shrink:0}
  .sp-ws-list{flex:1;min-height:0;overflow:auto;padding:0 var(--sp-2) var(--sp-2)}
  .sp-ws-empty{padding:var(--sp-4) var(--sp-2);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);text-align:center}
  /* 文件行：密度对标 WorkspaceFileTreeRowView（h-7 rounded-lg）；选中态对标历史任务 .pchat.on = bg-selected，无描边 */
  .sp-ws-row{
    position:relative;display:flex;align-items:center;gap:var(--sp-1-5);width:100%;height:var(--control-h-7);
    padding:var(--sp-1) var(--sp-2) var(--sp-1) calc(var(--workspace-file-tree-depth,0) * 0.75rem + var(--sp-2));
    border:1px solid transparent;border-radius:var(--radius-lg);background:transparent;
    box-sizing:border-box;text-align:left;cursor:pointer;font:inherit;color:var(--color-foreground);
    font-size:var(--text-ui-base);transition:background-color .12s,border-color .12s;
    outline:none;box-shadow:none;
  }
  .sp-ws-row:hover{background:var(--color-surface-hover)}
  .sp-ws-row.selected{border-color:transparent;background:var(--color-selected);color:var(--color-foreground)}
  .sp-ws-row.selected:hover{background:var(--color-selected)}
  .sp-ws-row:focus-visible{outline:2px solid var(--color-ring);outline-offset:-2px}
  .sp-ws-chev,.sp-ws-chev-spacer{display:inline-flex;align-items:center;justify-content:center;width:var(--size-4);height:var(--size-4);flex-shrink:0;line-height:0;color:var(--color-foreground-subtlest)}
  .sp-ws-chev svg{width:var(--size-3);height:var(--size-3);transition:transform .12s}
  .sp-ws-chev.open svg{transform:rotate(90deg)}
  .sp-ws-file-ico,.sp-ws-row .zc-file-ico{width:16px;height:16px;flex-shrink:0}
  .sp-ws-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .sp-ws-preview{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column}
  /* PreviewPane：h-10 面包屑 + 代码体 */
  .sp-code{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--color-background);overflow:hidden}
  .sp-code-header{display:flex;align-items:center;gap:var(--sp-8);height:var(--sp-10);background:color-mix(in oklab,var(--color-surface) 30%,transparent);border-bottom:none;flex-shrink:0}
  .sp-code-crumb{min-width:0;flex:1;overflow-x:auto;scrollbar-width:none}
  .sp-code-crumb::-webkit-scrollbar{display:none}
  .sp-code-crumb-inner{display:flex;min-width:max-content;align-items:center;padding:0 var(--sp-3);gap:var(--sp-0-5);font-size:var(--text-ui-base);color:var(--color-foreground-subtle)}
  .sp-code-crumb-root,.sp-code-crumb-seg{flex-shrink:0;color:var(--color-foreground-subtle)}
  .sp-code-crumb-sep{display:inline-flex;flex-shrink:0;line-height:0;color:var(--color-foreground-subtlest)}
  .sp-code-crumb-sep svg{width:var(--size-3-5);height:var(--size-3-5)}
  .sp-code-file{display:inline-flex;align-items:center;gap:var(--sp-1);min-width:0;color:var(--color-foreground)}
  .sp-code-file .sp-tab-ico,.sp-code-file svg,.sp-code-file .zc-file-ico,.sp-code-file .sp-file-ico{flex-shrink:0;width:14px;height:14px;color:var(--color-foreground-subtle)}
  .sp-code-file-lbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .sp-code-header-acts{display:flex;align-items:center;gap:var(--sp-2);padding-right:var(--sp-1-5);flex-shrink:0}
  .sp-code-path{padding:var(--sp-2) var(--sp-3);font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest);border-bottom:1px solid var(--color-border);font-family:var(--font-mono);flex-shrink:0}
  .sp-code-body{flex:1;overflow:auto;padding:var(--sp-2) 0;font-family:var(--font-mono);font-size:var(--code-font-size,13px);font-weight:var(--code-font-weight);line-height:1.55;min-height:0}
  .sp-code-line{display:flex;min-height:1.55em;padding:0 var(--sp-3) 0 0}
  .sp-code-line .ln{width:3rem;flex-shrink:0;text-align:right;padding-right:var(--sp-3);color:var(--color-foreground-subtlest);user-select:none}
  .sp-code-line code{flex:1;white-space:pre;color:var(--color-foreground);font-family:inherit;font-size:inherit;background:transparent}
  .sp-empty-pane{padding:var(--sp-6) var(--sp-4);color:var(--color-foreground-subtle)}
  .sp-empty-pane b{display:block;color:var(--color-foreground);margin-bottom:var(--sp-2)}
  /* Codex 工作区浏览器 */
  .sp-browser{display:flex;flex-direction:column;height:100%;min-height:0;min-width:0;background:var(--color-background)}
  .sp-browser-nav{
    display:flex;align-items:center;gap:var(--sp-1);height:var(--sp-10);padding:0 var(--sp-2);
    border-bottom:1px solid color-mix(in oklab,var(--color-border) 50%,transparent);flex-shrink:0
  }
  .sp-browser-nav-btns{display:flex;align-items:center;gap:0;flex-shrink:0}
  .sp-browser-nav .sp-icon-btn:disabled{opacity:.35;cursor:default;pointer-events:none}
  .sp-browser-url-form{flex:1;min-width:0;display:flex}
  .sp-browser-url{
    width:100%;height:var(--control-h-7);box-sizing:border-box;padding:0 var(--sp-3);
    border:1px solid var(--color-input-border);border-radius:var(--radius-full);
    background:color-mix(in oklab,var(--color-surface) 55%,transparent);
    font:inherit;font-size:var(--text-ui-sm);color:var(--color-foreground);outline:none
  }
  .sp-browser-url:hover{border-color:var(--color-input-border-hover)}
  .sp-browser-url:focus,.sp-browser-url:focus-visible{
    background:var(--color-input-focused);border-color:var(--color-input-border-focused);
    outline:2px solid var(--color-ring);outline-offset:1px
  }
  .sp-browser-url::placeholder{color:var(--color-foreground-subtlest)}
  .sp-browser-body{flex:1;min-height:0;min-width:0;overflow:auto;display:flex;flex-direction:column}
  .sp-browser-banner{
    display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);
    background:color-mix(in oklab,var(--color-surface) 70%,transparent);
    border-bottom:1px solid var(--color-border);font-size:var(--text-ui-sm);flex-shrink:0
  }
  .sp-browser-banner-txt{flex:1;min-width:0;color:var(--color-foreground)}
  .sp-browser-banner-act{
    border:0;background:transparent;color:var(--color-foreground);font:inherit;font-size:var(--text-ui-sm);
    font-weight:500;cursor:pointer;padding:var(--sp-1) var(--sp-2);border-radius:var(--radius-md)
  }
  .sp-browser-banner-act:hover{background:var(--color-hover)}
  .sp-ntp{flex:1;min-height:0;overflow:auto;padding:var(--sp-6) var(--sp-5) var(--sp-8)}
  .sp-ntp-inner{max-width:42rem;margin:0 auto;display:flex;flex-direction:column;gap:var(--sp-6)}
  .sp-ntp-sec{display:flex;flex-direction:column;gap:var(--sp-3)}
  .sp-ntp-h{margin:0;font-size:var(--text-ui-base);font-weight:600;color:var(--color-foreground)}
  .sp-ntp-tools{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
  .sp-ntp-tool{
    display:inline-flex;align-items:center;gap:var(--sp-2);min-height:var(--control-h-9);
    padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-xl);
    background:var(--color-surface);color:var(--color-foreground);font:inherit;font-size:var(--text-ui-sm);
    font-weight:500;cursor:pointer;text-align:left
  }
  .sp-ntp-tool:hover{background:var(--color-surface-hover);border-color:var(--color-border-hover)}
  .sp-ntp-tool-ico{display:inline-flex;line-height:0;color:var(--color-foreground-subtle)}
  .sp-ntp-tool-lbl{white-space:nowrap}
  .sp-ntp-tool-k{color:var(--color-foreground-subtlest);font-size:var(--text-ui-xs);margin-left:var(--sp-1)}
  .sp-ntp-reco{display:flex;flex-wrap:wrap;gap:var(--sp-3)}
  .sp-ntp-reco-item{
    display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);width:5.5rem;
    padding:var(--sp-2);border:0;border-radius:var(--radius-xl);background:transparent;
    color:var(--color-foreground);font:inherit;font-size:var(--text-ui-xs);cursor:pointer
  }
  .sp-ntp-reco-item:hover{background:var(--color-hover)}
  .sp-ntp-reco-ico{
    width:var(--size-10);height:var(--size-10);border-radius:var(--radius-xl);
    display:inline-flex;align-items:center;justify-content:center;
    background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-foreground-subtle)
  }
  .sp-ntp-reco-lbl{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-align:center;line-height:1.3}
  .sp-ntp-recent{display:flex;flex-direction:column;gap:var(--sp-0-5)}
  .sp-ntp-recent-row{
    display:flex;align-items:center;gap:var(--sp-2);width:100%;min-height:var(--control-h-8);
    padding:var(--sp-1-5) var(--sp-2);border:0;border-radius:var(--radius-lg);background:transparent;
    color:var(--color-foreground);font:inherit;font-size:var(--text-ui-sm);cursor:pointer;text-align:left
  }
  .sp-ntp-recent-row:hover{background:var(--color-hover)}
  .sp-ntp-recent-ico{display:inline-flex;line-height:0;color:var(--color-foreground-subtle);flex-shrink:0}
  .sp-ntp-recent-lbl{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .sp-browser-page{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--sp-6);min-height:0}
  .sp-browser-page-card{
    max-width:26rem;width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-2);
    padding:var(--sp-5);border:1px solid var(--color-border);border-radius:var(--radius-xl);background:var(--color-surface)
  }
  .sp-browser-page-card b{font-size:var(--text-ui-lg);font-weight:600;color:var(--color-foreground)}
  .sp-browser-page-ico{display:inline-flex;color:var(--color-foreground-subtle);line-height:0}
  .sp-browser-mono{margin:0;font-family:var(--font-mono);font-size:var(--text-ui-xs);color:var(--color-foreground-subtle);word-break:break-all}
  .sp-browser-muted{margin:0;font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);line-height:1.45}
  .sp-browser-page-acts{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-1)}
  .sp-browser-pill{
    height:var(--control-h-8);padding:0 var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-full);
    background:var(--color-background);color:var(--color-foreground);font:inherit;font-size:var(--text-ui-sm);
    font-weight:500;cursor:pointer
  }
  .sp-browser-pill:hover{background:var(--color-hover)}
  .rbody{flex:1;overflow-y:auto;padding:var(--sp-2) var(--sp-2) var(--sp-3);min-height:0}
  .rbody.code-mode,.rbody.ws-files-mode,.rbody.term-mode,.rbody.git-mode,.rbody.browser-mode,.rbody.launcher-mode{padding:0;overflow:hidden;display:flex;flex-direction:column}
  .rsec{margin-bottom:var(--sp-4)}
  .right-tabs,.rtab,.sidepane-toggle{display:none !important}
  .rt{font-size:var(--text-ui-sm);font-weight:500;color:var(--color-foreground-subtlest);text-transform:none;letter-spacing:0;margin-bottom:var(--sp-2);padding:0 var(--sp-1)}
  .rcard{border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--sp-2) var(--sp-2-5);margin-bottom:var(--sp-1-5);background:var(--color-card);cursor:pointer;transition:border-color .12s,background-color .12s}
  .rcard:hover{border-color:var(--color-border-hover);background:var(--color-surface-hover)}
  .rcard .title-text{font-weight:500;font-size:var(--text-ui-base);display:flex;align-items:center;gap:var(--sp-1-5);color:var(--color-foreground)}
  .rcard .desc-text{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);margin-top:var(--sp-0-5);line-height:1.45}
  /* SidePaneTerminalPane — 对标 ZCode：bg-background p-3 + xterm 浅色终端（非暗底 code-surface） */
  .side-term{
    display:flex;flex-direction:column;height:100%;min-height:0;min-width:0;
    margin:0;padding:var(--sp-3);box-sizing:border-box;
    border:none;border-radius:0;overflow:hidden;
    background:var(--color-background);
  }
  .side-term-screen,.side-term-body{
    flex:1;min-height:0;min-width:0;overflow:auto;
    padding:0;margin:0;
    background:var(--color-terminal-bg);
    color:var(--color-terminal-fg);
    font-family:ui-monospace,SFMono-Regular,'SF Mono',Menlo,Monaco,Consolas,'Cascadia Mono','JetBrains Mono',monospace;
    font-size:var(--text-ui-base);line-height:1.45;
  }
  .side-term-line{white-space:pre-wrap;word-break:break-word;margin:0;min-height:1.45em}
  .side-term-line .ok{color:var(--color-terminal-green)}
  .side-term-line .warn{color:var(--color-terminal-yellow)}
  .side-term-line .err{color:var(--color-terminal-red)}
  .side-term-line .dim{color:var(--color-terminal-bright-black)}
  .side-term-line .cmd{color:var(--color-terminal-cyan)}
  .side-term-prompt{display:flex;align-items:center;flex-wrap:wrap;gap:0;color:var(--color-terminal-fg)}
  .side-term-user{color:var(--color-terminal-green)}
  .side-term-at,.side-term-host{color:var(--color-terminal-fg)}
  .side-term-cwd{color:var(--color-terminal-blue)}
  .side-term-mark{color:var(--color-terminal-fg)}
  /* xterm 块状光标 — cursor / cursorAccent */
  .side-term-cursor{
    display:inline-block;width:.65ch;height:1.15em;margin-left:1px;vertical-align:text-bottom;
    background:var(--color-terminal-cursor);color:var(--color-terminal-cursor-accent);
    animation:side-term-blink 1.06s step-end infinite;
  }
  @keyframes side-term-blink{50%{opacity:0}}
  @media (prefers-reduced-motion:reduce){.side-term-cursor{animation:none}}
  .rbody:has(.side-term){padding:0;display:flex;flex-direction:column;background:var(--color-background)}
  /* Plan 卡确认 */
  .plan-card-actions{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-3);flex-wrap:wrap}
  .plan-card-actions .btn-craft{height:var(--control-h-8);padding:0 var(--sp-3-5);border-radius:var(--radius-lg);border:0;background:var(--color-primary);color:var(--color-primary-foreground);font-size:var(--text-ui-sm);font-weight:500;cursor:pointer}
  .plan-card-actions .btn-craft:hover{filter:brightness(.95)}
  .plan-check{display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-1-5) var(--sp-3);font-size:var(--text-ui-base);color:var(--color-foreground);cursor:pointer;border-bottom:1px solid color-mix(in oklab,var(--color-border) 70%,transparent)}
  .plan-check:last-child{border-bottom:none}
  .plan-check input{margin-top:3px;accent-color:var(--color-brand)}
  .plan-check .step-title{font-weight:600}
  .plan-check .desc-text{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);margin-top:var(--sp-px)}

  /* 运行任务进度条 */
  .prog{height:var(--sp-1);border-radius:var(--radius-sm);background:var(--color-background);margin-top:var(--sp-2);overflow:hidden}
  .prog .fill{height:100%;border-radius:var(--radius-sm);background:var(--color-brand);transition:width .4s ease}
  .prog .fill.queue{background:var(--color-foreground-subtlest)}
  /* 历史追溯 = Side Pane 内产物检视（对标 ZCode SettingsSegmentedTabs + code viewer） */
  .trace-head{display:flex;align-items:flex-start;gap:var(--sp-2);margin-bottom:var(--sp-3);flex-wrap:wrap}
  .trace-title{font-weight:600;font-size:var(--text-ui-base);line-height:1.35;color:var(--color-foreground);flex:1;min-width:0}
  .trace-title .vtag{margin-left:var(--sp-1-5);font-size:var(--text-ui-xs);font-weight:500;color:var(--color-foreground-subtle);background:var(--color-surface);border:1px solid var(--color-border);padding:0 var(--sp-1-5);height:var(--size-4-5);display:inline-flex;align-items:center;border-radius:var(--radius-full);vertical-align:middle}
  .trace-title .desc-line{font-weight:400;color:var(--color-foreground-subtle);font-size:var(--text-ui-sm);margin-top:var(--sp-1);display:block}
  .dl-btn,.open-nb-btn{flex-shrink:0;height:var(--control-h-7);padding:0 var(--sp-2-5);border-radius:var(--radius-md);font-size:var(--text-ui-sm);font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:var(--sp-1);border:1px solid var(--color-border);background:transparent;color:var(--color-foreground-subtle);transition:background-color .12s,color .12s,border-color .12s}
  .dl-btn:hover,.open-nb-btn:hover{background:var(--color-hover);color:var(--color-foreground);border-color:var(--color-border-hover)}
  .dl-btn{background:var(--color-primary);color:var(--color-primary-foreground);border-color:transparent}
  .dl-btn:hover{background:color-mix(in oklab,var(--color-primary) 85%,var(--color-foreground));color:var(--color-primary-foreground);border-color:transparent}
  .open-nb-btn{color:var(--color-interaction-confirmation-foreground);border-color:color-mix(in oklab,var(--color-interaction-confirmation-foreground) 35%,transparent)}
  .open-nb-btn:hover{background:color-mix(in oklab,var(--color-interaction-confirmation-foreground) 10%,transparent);color:var(--color-interaction-confirmation-foreground);border-color:color-mix(in oklab,var(--color-interaction-confirmation-foreground) 45%,transparent)}
  .trace-actions{display:flex;align-items:center;gap:var(--sp-1-5);flex-shrink:0}
  /* 子页签 = SettingsSegmentedTabs：h-8 track + h-7 pill */
  .trace-subtabs{display:inline-flex;align-items:center;gap:0;height:var(--control-h-8);padding:var(--sp-0-5);margin:0 0 var(--sp-3);border:none;border-radius:var(--radius-full);background:var(--color-surface);font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest);max-width:100%;overflow-x:auto;scrollbar-width:none}
  .trace-subtabs::-webkit-scrollbar{display:none}
  .trace-subtabs .step-state{cursor:pointer;padding:0 var(--sp-2-5);height:var(--control-h-7);box-sizing:border-box;display:inline-flex;align-items:center;position:relative;font-weight:500;font-size:var(--text-ui-sm);transition:color .12s,background-color .12s;border-radius:var(--radius-full);border:1px solid transparent;color:var(--color-foreground-subtle);white-space:nowrap;flex:none}
  .trace-subtabs .step-state:hover{color:var(--color-foreground);background:transparent}
  .trace-subtabs .step-state.on{color:var(--color-foreground);font-weight:500;background:var(--color-background);border-color:transparent;box-shadow:none}
  .trace-subtabs .step-state.on::after{display:none}
  .trace-subtabs .step-state .check-mark{margin-left:var(--sp-1);font-size:var(--text-ui-xs);color:var(--color-interaction-confirmation-foreground);font-weight:600}
  .trace-body{font-size:var(--text-ui-sm)}
  .input-chips{display:flex;flex-wrap:wrap;gap:var(--sp-1-5);margin-bottom:var(--sp-2)}
  .input-chips .lbl-text{font-size:var(--text-ui-xs);color:var(--color-foreground-subtlest);margin-right:var(--sp-0-5);align-self:center;font-weight:500}
  .chip-tag{font-size:var(--text-ui-xs);background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-foreground);padding:0 var(--sp-2);height:var(--size-5-5);display:inline-flex;align-items:center;border-radius:var(--radius-md);font-family:var(--font-mono)}
  /* 代码/终端表面：强制暗底，不受 Light 主题吃掉（SPEC 硬边界） */
  .code-block{background:var(--color-code-surface);color:var(--color-code-surface-fg);border:1px solid var(--color-code-surface-border);border-radius:var(--radius-lg);padding:var(--sp-2) 0;font-family:var(--font-mono);font-size:var(--text-ui-xs);line-height:1.55;overflow-x:auto;counter-reset:ln}
  .code-block .ln{padding:0 var(--sp-2-5) 0 0;display:flex}
  .code-block .ln-num{width:var(--size-8);color:color-mix(in oklab,var(--color-code-surface-fg) 45%,transparent);text-align:right;padding-right:var(--sp-2-5);flex-shrink:0;user-select:none;border-right:1px solid var(--color-code-surface-border);margin-right:var(--sp-2-5)}
  .code-block .ln-tx{flex:1;white-space:pre;color:var(--color-code-surface-fg)}
  .code-block .ln.hl{background:color-mix(in oklab,var(--color-warning) 22%,transparent)}
  .code-block .ln.hl .ln-tx{color:var(--color-syntax-highlight)}
  .code-block .ln.kw{color:var(--color-syntax-keyword)}
  .code-block .ln.str{color:var(--color-syntax-string)}
  .code-block .ln.cm{color:var(--color-syntax-comment);font-style:italic}
  .code-block .ln.cmt-note{color:var(--color-syntax-comment);font-style:italic}
  .trace-body .term-line,.rbody .term-line{background:var(--color-code-surface);color:var(--color-code-surface-fg);border:1px solid var(--color-code-surface-border);border-radius:var(--radius-lg);padding:var(--sp-2-5) var(--sp-3);font-family:var(--font-mono);font-size:var(--text-ui-sm);line-height:1.6;white-space:pre-wrap;height:auto;overflow:auto}
  .term-line .ok{color:var(--color-syntax-string)}
  .term-line .warn{color:var(--color-syntax-highlight)}
  .term-line .err{color:var(--color-syntax-error)}
  .term-line .dim{color:var(--color-syntax-comment)}
  .term-line .cmd{color:var(--color-syntax-command)}
  .msg-list{display:flex;flex-direction:column;gap:0}
  .msg-row{display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-2) var(--sp-1);border-bottom:1px solid var(--color-border);border-radius:var(--radius-md)}
  .msg-row:last-child{border-bottom:none}
  .msg-row:hover{background:var(--color-hover)}
  .msg-row .ico-mark{flex-shrink:0;width:var(--size-4);text-align:center;font-size:var(--text-ui-sm);margin-top:1px;color:var(--color-foreground-subtle);display:inline-flex;align-items:center;justify-content:center}
  .msg-row .tx{flex:1;min-width:0}
  .msg-row .tx .label-num{font-weight:500;color:var(--color-foreground);font-size:var(--text-ui-sm)}
  .msg-row .tx .b{color:var(--color-foreground-subtle);margin-top:var(--sp-0-5);font-size:var(--text-ui-sm);line-height:1.45}
  .msg-row.warn .label-num{color:var(--color-warning)}
  .msg-row.warn .ico-mark{color:var(--color-warning)}
  .env-line{display:flex;gap:var(--sp-2-5);margin-bottom:var(--sp-1)}
  .env-line .stat-k{color:var(--color-foreground-subtlest);width:var(--rail-ico);flex-shrink:0}
  .env-line .stat-v{color:var(--color-foreground);font-family:var(--font-mono);font-size:var(--text-ui-xs)}
  .review-row{display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-2-5) var(--sp-3);border-radius:var(--radius-lg);background:color-mix(in oklab,var(--color-interaction-confirmation-foreground) 8%,transparent);border:1px solid color-mix(in oklab,var(--color-interaction-confirmation-foreground) 28%,transparent);font-size:var(--text-ui-sm);color:var(--color-interaction-confirmation-foreground)}
  .review-row.fail{background:var(--color-destructive-surface);border-color:color-mix(in oklab,var(--color-destructive) 25%,transparent);color:var(--color-destructive)}
  .review-row .chk{flex-shrink:0;font-size:var(--text-ui-base);line-height:1.3}
  .review-row .ttl{font-weight:500;font-size:var(--text-ui-sm)}
  .review-row .dsc{margin-top:var(--sp-0-5);font-weight:400;color:inherit;opacity:.85}
  .review-row .meta-row{margin-top:var(--sp-1-5);display:flex;gap:var(--sp-1-5);flex-wrap:wrap}
  .review-row .pill{font-size:var(--text-ui-xs);background:var(--color-background);border:1px solid color-mix(in oklab,currentColor 35%,transparent);border-radius:var(--radius-full);padding:0 var(--sp-2);height:var(--size-5);display:inline-flex;align-items:center;color:inherit}
  /* 资源：按模式差异化卡片 */
  .res-card{border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--sp-2-5) var(--sp-3);margin-bottom:var(--sp-2);background:var(--color-card)}
  .res-card .rh{display:flex;align-items:center;gap:var(--sp-1-5);font-weight:500;font-size:var(--text-ui-sm)}
  .res-card .status-badge{margin-left:auto;font-size:var(--text-ui-xs);font-weight:500;padding:0 var(--sp-2);height:var(--size-5);display:inline-flex;align-items:center;border-radius:var(--radius-full);white-space:nowrap}
  .status-badge.idle{background:var(--color-success-surface);color:var(--color-success)}
  .status-badge.busy{background:var(--color-destructive-surface);color:var(--color-destructive)}
  .status-badge.ok{background:var(--color-accent);color:var(--color-brand)}
  .gauge{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-2);font-size:var(--text-ui-xs);color:var(--color-foreground-subtle)}
  .gauge .gl{width:var(--size-7);flex-shrink:0;color:var(--color-foreground-subtlest)}
  .gauge .gb{flex:1;height:var(--sp-1);border-radius:var(--radius-sm);background:var(--color-background);overflow:hidden}
  .gauge .gb .gf{height:100%;border-radius:var(--radius-sm);background:var(--color-brand);transition:width .4s ease}
  .gauge .gv{width:var(--switch-w);text-align:right;flex-shrink:0;font-variant-numeric:tabular-nums;color:var(--color-foreground-subtle)}
  .res-stat{display:flex;gap:var(--sp-2);margin-top:var(--sp-2)}
  .res-stat .chip{flex:1;background:var(--color-background);border-radius:var(--radius-md);padding:var(--sp-2) var(--sp-1);text-align:center}
  .res-stat .chip .cv{font-weight:600;font-size:var(--text-ui-caption)}
  .res-stat .chip .check-mark{font-size:var(--text-ui-xs);color:var(--color-foreground-subtlest);margin-top:1px}
  .cost-tag{display:inline-flex;align-items:center;gap:var(--sp-1);font-size:var(--text-ui-xs);font-weight:500;color:var(--color-destructive);background:var(--color-destructive-surface);border-radius:var(--radius-full);padding:var(--sp-0-5) var(--sp-2);margin-top:var(--sp-2)}
  .file-item{display:flex;align-items:center;gap:var(--sp-2);min-height:var(--control-h-8);padding:var(--sp-1) var(--sp-1-5);border-radius:var(--radius-lg);border-bottom:none;position:relative;transition:background .12s}
  .file-item:last-child{border-bottom:none}
  .file-item:hover{background:var(--color-hover)}
  .file-item .ico-wrap{font-size:var(--text-ui-base);width:var(--size-4);text-align:center;flex-shrink:0;color:var(--color-foreground-subtle);display:inline-flex;align-items:center;justify-content:center}
  .file-item .fmain{flex:1;min-width:0}
  .file-item .label-num{font-size:var(--text-ui-base);font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--color-foreground)}
  .file-item .loc{font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest);margin-top:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:var(--sp-1)}
  .file-item .stat-s{font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest);white-space:nowrap;flex-shrink:0;font-variant-numeric:tabular-nums}
  .open-btn{flex-shrink:0;border:1px solid transparent;background:transparent;border-radius:var(--radius-md);padding:0 var(--sp-2);height:var(--control-h-6);font-size:var(--text-ui-sm);font-weight:500;color:var(--color-foreground-subtle);cursor:pointer;display:none;align-items:center;gap:var(--sp-1);transition:all .12s}
  .file-item:hover .open-btn{display:inline-flex}
  .open-btn:hover{background:var(--color-hover);color:var(--color-foreground);border-color:transparent}
  /* 工作空间文件：标题旁空间路径 + 打开按钮 */
  .ws-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-2)}
  .ws-head .rt{margin-bottom:0}
  .ws-loc{display:flex;align-items:center;gap:var(--sp-1-5);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--sp-1-5) var(--sp-2);margin-bottom:var(--sp-2);min-height:var(--control-h-7);box-sizing:border-box}
  .ws-loc .ico-wrap{flex-shrink:0}
  .ws-loc .txt{font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
  .kv{display:grid;grid-template-columns:90px 1fr;gap:var(--sp-1-5) var(--sp-2-5);font-size:var(--text-ui-sm)}
  .kv .stat-k{color:var(--color-foreground-subtlest)}
  /* Agent Team 卡片 — 对标 ZCode 行密度 */
  .acard{border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--sp-2) var(--sp-2-5);margin-bottom:var(--sp-1-5);background:var(--color-card);display:flex;align-items:center;gap:var(--sp-2);transition:border-color .12s,background-color .12s;min-height:calc(var(--sp-10) + var(--sp-1));box-sizing:border-box}
  .acard:hover{border-color:var(--color-border-hover);background:var(--color-surface-hover)}
  .acard .dot-mark{width:var(--sp-2);height:var(--sp-2);border-radius:50%;flex-shrink:0;background:var(--color-foreground-subtlest)}
  .acard .dot-mark.on{background:var(--color-success);box-shadow:0 0 0 3px color-mix(in oklab,var(--color-success) 18%,transparent)}
  .acard .main-area{flex:1;min-width:0}
  .acard .title-text{font-weight:500;font-size:var(--text-ui-base);display:flex;align-items:center;gap:var(--sp-1-5);color:var(--color-foreground)}
  .acard .desc-text{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);margin-top:1px;line-height:1.4}

  /* ============ 通用组件 ============ */
  .card{background:var(--color-card);border:1px solid var(--color-card-border);border-radius:var(--radius-xl);box-shadow:none}
  .panel-card{padding:var(--sp-4);margin-bottom:var(--sp-5)}
  .panel-card .sec-t{margin:0 0 var(--sp-2-5)}
  .panel-muted{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);margin-bottom:var(--sp-2)}
  .panel-muted b{color:var(--color-foreground);font-weight:600}
  .panel-actions{display:flex;gap:var(--sp-2);margin-top:var(--sp-3)}
  .btn{display:inline-flex;align-items:center;gap:var(--sp-1);height:var(--control-h-7);padding:0 var(--sp-2);border:none;border-radius:var(--radius-md);font-size:var(--text-ui-base);font-weight:500;white-space:nowrap;cursor:pointer;transition:background-color .12s,border-color .12s;user-select:none;background:var(--color-primary);color:var(--color-primary-foreground)}
  .btn:hover{background:color-mix(in oklab,var(--color-primary) 80%,var(--color-primary))}
  .btn:disabled{pointer-events:none;opacity:.5}
  .btn-p{background:var(--color-primary);color:var(--color-primary-foreground)}
  .btn-p:hover{background:color-mix(in oklab,var(--color-primary) 80%,var(--color-primary))}
  .btn-g{background:transparent;color:var(--color-foreground);border:1px solid var(--color-border)}
  .btn-g:hover{background:var(--color-hover);border-color:var(--color-border-hover)}
  .btn-g2{background:var(--color-success);color:var(--color-primary-foreground);border:none}
  .btn-g2:hover{background:color-mix(in oklab,var(--color-success) 88%,var(--color-success))}
  .chip{display:inline-flex;align-items:center;gap:var(--sp-1-5);height:var(--control-h-7);padding:0 var(--sp-3);border-radius:var(--radius-md);background:transparent;border:1px solid var(--color-border);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);cursor:pointer;transition:border-color .12s,color .12s,background-color .12s}
  .chip:hover{border-color:var(--color-border-hover);color:var(--color-foreground);background:var(--color-hover)}
  .chip.on{background:var(--color-selected);border-color:transparent;color:var(--color-foreground);font-weight:500}
  .tag{font-size:var(--text-ui-xs);font-weight:600;padding:var(--sp-px) var(--sp-2);border-radius:var(--radius-full);background:var(--color-tag);color:var(--color-foreground-subtle)}
  .tag.green{background:var(--color-success-surface);color:var(--color-success)}
  .tag.blue{background:var(--color-accent);color:var(--color-brand)}
  .tag.orange{background:var(--color-warning-surface);color:var(--color-warning)}
  .badge-pro{font-size:var(--text-ui-xs);font-weight:600;padding:var(--sp-px) var(--sp-2);border-radius:var(--radius-full);background:var(--color-warning-surface);color:var(--color-warning)}
  .badge-free{font-size:var(--text-ui-xs);font-weight:600;padding:var(--sp-px) var(--sp-2);border-radius:var(--radius-full);background:var(--color-success-surface);color:var(--color-success)}
  .badge-plus{font-size:var(--text-ui-xs);font-weight:600;padding:var(--sp-px) var(--sp-2);border-radius:var(--radius-full);background:var(--color-accent);color:var(--color-brand)}

.platform-trigger{border:0;cursor:pointer;font:inherit}
.platform-entry-menu{position:fixed;z-index:150;min-width:15rem;padding:var(--sp-2);border:1px solid var(--color-popover-border);border-radius:var(--radius-2xl);background:var(--color-menu);box-shadow:var(--shadow-xl)}
.platform-entry-menu button{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:var(--sp-9);padding:var(--sp-2) var(--sp-2-5);border:0;border-radius:var(--radius-lg);background:transparent;color:var(--color-foreground);font:inherit;font-size:var(--text-ui-base);text-align:left;cursor:pointer}
.platform-entry-menu button:hover,.platform-entry-menu button:focus-visible{background:var(--color-menu-hover)}
.platform-entry-menu button span{flex:1}
.platform-entry-menu button svg{flex-shrink:0}
.platform-entry-menu button svg:last-child{color:var(--color-foreground-subtle)}

/* Codex new tab: tools only, two-column rows. */
.sp-ntp{padding:var(--sp-8) var(--sp-6);container-type:inline-size;container-name:side-pane-tools}
.sp-ntp-inner{max-width:960px}
.sp-ntp-sec{gap:var(--sp-4)}
.sp-ntp-tools{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-1)}
.sp-ntp-tool{width:100%;min-width:0;box-sizing:border-box;min-height:var(--control-h-10);border:1px solid transparent;background:var(--color-card);font-size:var(--text-ui-base);font-weight:400}
.sp-ntp-tool-lbl{flex:1}
.sp-ntp-tool-k{border-radius:var(--radius-full);background:var(--color-surface-hover);padding:0 var(--sp-2);white-space:nowrap}
.sp-ntp-tool-more>svg{color:var(--color-foreground-subtle)}
@container side-pane-tools (max-width:600px){.sp-ntp-tools{grid-template-columns:minmax(0,1fr)}}
@supports not (container-type:inline-size){.sp-ntp-tools{grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr))}}

/* Browser overflow menu, aligned to the address-bar right edge. */
.sp-browser-menu-wrap{position:relative;flex-shrink:0}
.sp-browser-menu-trigger{border-radius:var(--radius-full);background:var(--color-surface-hover)}
.sp-browser-menu{position:absolute;right:0;top:calc(100% + var(--sp-2));width:280px;max-width:calc(100vw - 32px);max-height:calc(100vh - 160px);overflow:auto;z-index:100;padding:var(--sp-2);border-radius:var(--radius-2xl);background:var(--color-menu);box-shadow:var(--shadow-menu);color:var(--color-foreground)}
.sp-browser-menu[hidden]{display:none}
.sp-browser-menu>button{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:var(--control-h-8);border:0;border-radius:var(--radius-lg);padding:var(--sp-1) var(--sp-2);background:transparent;color:inherit;font:inherit;font-size:var(--text-ui-base);text-align:left;cursor:pointer}
.sp-browser-menu>button:hover{background:var(--color-menu-hover)}
.sp-browser-menu>button:disabled{color:var(--color-foreground-subtlest);cursor:default;background:transparent}
.sp-browser-zoom{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);font-size:var(--text-ui-base)}
.sp-browser-zoom>span{flex:1}
.sp-browser-zoom-control{display:flex;align-items:center;border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;background:var(--color-surface-hover)}
.sp-browser-zoom-control button{border:0;background:transparent;color:var(--color-foreground-subtle);width:var(--size-6);height:var(--control-h-7);cursor:pointer}
.sp-browser-zoom-control span{padding:0 var(--sp-2);border-inline:1px solid var(--color-border);font-size:var(--text-ui-sm)}
.sp-browser-body.is-device-preview{max-width:390px;margin-inline:auto;width:100%;border-inline:1px solid var(--color-border)}

/* Codex browser chrome and new-tab detail pass. */
.sp-tabs{height:var(--sp-12);min-height:var(--sp-12);background:transparent}
.sp-tabs-content{gap:var(--sp-2);padding:var(--sp-2) var(--sp-2)}
.sp-tab{height:var(--control-h-8);max-width:240px;flex-basis:240px;padding-inline:var(--sp-2-5);font-weight:400}
.sp-tab.on,.sp-tab[data-active],.sp-tab[data-state="active"]{background:var(--color-hover);border-color:transparent;box-shadow:none}
.sp-browser-nav{height:var(--sp-12);gap:var(--sp-2);padding:0 var(--sp-2);background:transparent}
.sp-browser-nav-btns{height:var(--control-h-8);box-sizing:border-box;border:1px solid var(--color-border);border-radius:var(--radius-full);padding:0 var(--sp-1);background:var(--color-card);box-shadow:none}
.sp-browser-nav-btns .sp-icon-btn{width:var(--size-7);height:var(--control-h-7);border-radius:var(--radius-full)}
.sp-browser-nav-btns .sp-icon-btn:last-child{border-left:1px solid var(--color-border);border-radius:0}
.sp-browser-url{height:var(--control-h-8);font-size:var(--text-ui-base);background:var(--color-card);text-align:center;border-color:var(--color-border)}
.sp-browser-url:focus{text-align:left}
.sp-browser-menu-trigger{height:var(--control-h-8);width:var(--size-8);background:var(--color-card);border:1px solid var(--color-border)}
.sp-browser-menu-trigger:hover,.sp-browser-menu-trigger[aria-expanded="true"]{background:var(--color-surface-hover)}
.sp-ntp{padding:var(--sp-8) var(--sp-6)}
.sp-ntp-inner{max-width:960px;width:100%;box-sizing:border-box}
.sp-ntp-h{font-size:var(--text-ui-base);font-weight:500}
.sp-ntp-tools{column-gap:var(--sp-4);row-gap:var(--sp-1)}
.sp-ntp-tool{min-height:var(--control-h-10);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-lg);gap:var(--sp-2)}
.sp-ntp-tool-ico svg{width:var(--size-4);height:var(--size-4)}
.sp-ntp-tool-k{font-size:var(--text-ui-sm);line-height:1.4}

/* Full-view tabs also cover the workspace task sidebar. */
.app-body.sp-full-view .main-col{display:none!important}

/* Tab separators stay inside inactive tabs; chrome backgrounds remain unchanged. */
.sp-tab[data-state="inactive"]+.sp-tab[data-state="inactive"]::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:1px;height:var(--size-4);background:var(--color-border);opacity:.65;pointer-events:none}
.sp-tab:hover::before,.sp-tab:hover+.sp-tab::before{opacity:0}
.sp-tab-content{gap:var(--sp-2)}
.sp-tab-x{right:var(--sp-2);width:var(--size-5);height:var(--size-5)}
.sp-tabs-actions-end{position:relative;padding-left:var(--sp-3);gap:var(--sp-2)}
.sp-tabs-actions-end::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:1px;height:var(--size-4);background:var(--color-border);opacity:.65}
.sp-browser-nav-btns .sp-icon-btn:last-child{position:relative;border-left:0;border-radius:var(--radius-full);margin-left:var(--sp-1)}
.sp-browser-nav-btns .sp-icon-btn:last-child::before{content:"";position:absolute;left:calc(0px - var(--sp-1));top:50%;transform:translateY(-50%);width:1px;height:var(--size-4);background:var(--color-border);pointer-events:none}

/* Shared top-row geometry across workspace and directory pages. */
:root{--page-header-height:var(--sp-12);--page-header-inset:var(--sp-1-5)}
