/* Components — agent-demo · 0-dep */
  /* ============ 分析页（默认首页） ============ */
  /* 侧栏 + 会话合并为一张大卡；右侧 Side Pane 仍独立 frame */
  .analysis{
    display:flex;flex:1;width:100%;height:100%;gap:0;min-width:0;min-height:0;
    background:var(--color-background);
    border:1px solid var(--panel-frame-border);
    border-radius:var(--panel-radius);
    overflow:hidden;
  }
  /* Task Sidebar — 对标 ZCode WorkspaceSidebar：同卡内分栏，仅右边线分隔 */
  .aside{position:relative;width:var(--sidebar-w);background:transparent;border:0;border-right:1px solid color-mix(in oklab,var(--color-border) 70%,transparent);border-radius:0;display:flex;flex-direction:column;flex-shrink:0;min-height:0;overflow:hidden}
  .aside-h{padding:var(--sp-2) var(--sp-2) var(--sp-1);border-bottom:none;display:flex;align-items:center;justify-content:space-between;min-height:var(--control-h-8);gap:var(--sp-1)}
  .aside-h-actions{display:flex;align-items:center;gap:var(--sp-0-5)}
  .aside-search{width:var(--size-7);height:var(--control-h-7);border:none;background:transparent;border-radius:var(--radius-lg);color:var(--color-foreground);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
  .aside-search:hover{background:var(--color-surface-hover);color:var(--color-foreground)}
  /* Brand 顶栏：产品名（无下拉箭头）；字重加粗作身份锚点 */
  .aside-brand-label{
    min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    padding:0 var(--sp-1);font-size:var(--text-ui-xl);font-weight:600;line-height:1.25;letter-spacing:-.01em;
    color:var(--color-foreground)
  }
  .aside-h .title-text{font-weight:700;font-size:var(--text-ui-lg);line-height:1.25;color:var(--color-foreground);letter-spacing:-.01em;text-transform:none}
  .aside-h .add{width:var(--size-7);height:var(--control-h-7);border-radius:var(--radius-lg);background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:var(--text-ui-base);color:var(--color-foreground-subtle);border:none}
  .aside-h .add:hover{background:var(--color-surface-hover);color:var(--color-foreground)}
  /* 侧栏菜单：滚动仍可用，滚动条隐藏（全局 14px 条对菜单过粗） */
  .aside-s{flex:1;overflow-y:auto;padding:var(--sp-1) var(--sp-2) var(--sp-3);display:flex;flex-direction:column;gap:0;scrollbar-width:none}
  .aside-s::-webkit-scrollbar{display:none;width:0;height:0}
  .pgroup{margin-bottom:var(--sp-3);padding-top:var(--sp-2-5)}
  .pgt{font-size:var(--text-ui-sm);font-weight:500;color:var(--color-foreground-subtlest);text-transform:none;letter-spacing:0;margin-bottom:var(--sp-1);padding-left:var(--sp-2-5)}
  .pitem{display:flex;align-items:center;gap:var(--sp-2);height:var(--control-h-8);padding:0 var(--sp-2-5);border-radius:var(--radius-lg);border:1px solid transparent;cursor:pointer;color:var(--color-foreground-subtle);font-size:var(--text-ui-base);margin-bottom:var(--sp-0-5)}
  .pitem:hover{background:var(--color-surface-hover);color:var(--color-foreground)}
  .pitem.on{background:var(--color-selected);color:var(--color-foreground);font-weight:500}
  .pitem .ico-wrap{font-size:var(--text-ui-base)}
  /* ZCode ConversationDraftEmptyState */
  .draft-empty{position:relative;width:100%;max-width:42rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-6);margin-bottom:var(--sp-10);color:var(--color-foreground)}
  .draft-empty-logo{pointer-events:none;position:absolute;left:50%;top:50%;aspect-ratio:5/4;width:min(72vw,25rem);margin-top:calc(var(--sp-10) * -1);transform:translate(-50%,-50%);color:var(--color-foreground-subtlest)}
  .draft-logo-light{width:100%;height:100%;opacity:.7;display:block;
    -webkit-mask-image:linear-gradient(to bottom,black 0%,transparent 70%,transparent 100%);
    mask-image:linear-gradient(to bottom,black 0%,transparent 70%,transparent 100%);
    -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%}
  .dark .draft-logo-light,html.dark .draft-logo-light{display:none}
  .draft-logo-dark{width:100%;height:100%;display:none;object-fit:contain}
  .dark .draft-logo-dark,html.dark .draft-logo-dark{display:block}
  .draft-greeting{position:relative;z-index:1;width:100%;padding:0 var(--sp-4);text-align:center;font-weight:500;font-size:var(--v4-draft-greeting-font-size,30px);line-height:1.2;color:var(--color-foreground);letter-spacing:0}

  .chat-center{flex:1;display:flex;flex-direction:column;min-width:0;align-items:stretch;justify-content:flex-start;padding:0;background:transparent;position:relative;border:0;border-radius:0;overflow:visible}
  .chat-center-body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--sp-8) var(--sp-6) var(--sp-6);min-height:0;width:100%;box-sizing:border-box}
  .chat-center-body>.draft-empty,.chat-center-body>.composer-region,.chat-center-body>.draft-suggestions{width:100%;max-width:42rem}

  /* Composer — ZCode ConversationComposer：surface 卡套 workspace 头 + 独立 bordered ChatPromptEditor */
  .composer-region{width:100%;z-index:20;flex-shrink:0}
  .composer-region.centered{max-width:42rem}
  .composer-shell{width:100%;overflow:visible}
  .composer-shell.composer-surface{border-radius:var(--radius-2xl);background:var(--color-surface);box-shadow:none;overflow:visible}
  .composer-ctx{display:flex;align-items:center;flex-wrap:wrap;gap:0;padding:var(--sp-1-5);min-width:0}
  .composer-shell.composer-surface .ask-box{max-width:none;width:100%;margin:0;box-shadow:var(--shadow-xl)}
  .composer-ctx .workspace-pill-wrap{margin:0;min-width:0}
  .composer-ctx .workspace-pill{
    height:var(--control-h-8);padding:0 var(--sp-2) 0 var(--sp-3);gap:var(--sp-1-5);max-width:15rem;
    border:none;background:transparent;border-radius:var(--radius-full);
    font-size:var(--text-ui-base);font-weight:400;box-shadow:none;
  }
  .composer-ctx .workspace-pill:hover{background:var(--color-surface-hover);border-color:transparent}
  .composer-ctx .workspace-pill .ws-name{font-weight:400;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .composer-ctx .workspace-pill .ws-path{display:none}
  .composer-ctx .workspace-pill .dot-mark{display:none}
  .composer-ctx .workspace-pill .ws-ico{display:inline-flex;flex-shrink:0}
  .workspace-pill .ws-ico{display:none}
  .composer-env-chip{display:inline-flex;align-items:center;gap:var(--sp-1-5);height:var(--control-h-8);padding:0 var(--sp-2) 0 var(--sp-2-5);border:none;background:transparent;border-radius:var(--radius-full);font-size:var(--text-ui-base);color:var(--color-foreground);cursor:pointer;flex-shrink:0}
  .composer-env-chip:hover{background:var(--color-surface-hover)}
  .composer-env-chip .env-ico{display:inline-flex;color:var(--color-foreground-subtle)}
  .composer-env-menu{position:absolute;top:calc(100% + var(--sp-1-5));left:0;min-width:var(--popover-w-sm);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}
  .composer-env-menu.show{display:block}
  .composer-env-mi{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-md);font-size:var(--text-ui-base);color:var(--color-foreground);cursor:pointer}
  .composer-env-mi:hover{background:var(--color-menu-hover)}
  .composer-env-mi.on{background:var(--color-selected);font-weight:500}
  .composer-env-wrap{position:relative}
  .composer-shell .chat-meta,.composer-region .workspace-note{display:none}
  .draft-suggestions{width:100%;max-width:42rem;margin-top:var(--sp-6);overflow-x:auto;scrollbar-width:none}
  .draft-suggestions::-webkit-scrollbar{display:none}
  /* banner-gen HomeRecommendations：分类胶囊 → 展开任务列表 */
  .science-home{display:flex;flex-direction:column;align-items:stretch;box-sizing:border-box;padding:var(--sp-2) var(--sp-1-5) var(--sp-1-5);border:1px solid transparent;border-radius:var(--radius-2xl)}
  .science-home.is-expanded{background:transparent;border-color:transparent}
  .science-home-tabs{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--sp-2);position:relative}
  .science-home-tab{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-1);flex-shrink:0;height:var(--control-h-8);padding:0 var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-full);background:transparent;color:var(--color-foreground);font-size:var(--text-ui-base);cursor:pointer;white-space:nowrap}
  .science-home-tab svg{color:var(--color-foreground-subtle)}
  .science-home-tab:hover,.science-home-tab[aria-selected="true"]{background:var(--color-surface-hover)}
  .science-home.is-expanded .science-home-tab{border-color:transparent}
  .science-home-panel{display:flex;flex-direction:column;align-self:stretch;width:100%;min-width:0;margin-top:var(--sp-3)}
  .science-home-subjects{margin:0;padding:var(--sp-1) var(--sp-2-5) var(--sp-2);font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest)}
  .science-home-item{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);width:100%;min-height:var(--control-h-9);padding:var(--sp-2) var(--sp-2-5);border:0;background:transparent;color:var(--color-foreground-subtle);font-size:var(--text-ui-base);text-align:left;cursor:pointer}
  .science-home-item+ .science-home-item{position:relative}
  .science-home-item+ .science-home-item::before{content:'';position:absolute;top:0;left:var(--sp-2-5);right:var(--sp-2-5);border-top:1px solid var(--color-border);pointer-events:none}
  .science-home-item:hover{background:var(--color-surface-hover);border-radius:var(--radius-lg);color:var(--color-foreground)}
  .science-home-item svg{flex-shrink:0}
  @media(max-width:767px){
    .science-home-tabs{justify-content:flex-start;overflow-x:auto;padding-bottom:var(--sp-1)}
    .science-home-tab{min-height:calc(var(--sp-10) + var(--sp-1));background:var(--color-surface);border-color:transparent;padding:0 var(--sp-3)}
    .science-home.is-expanded .science-home-tabs{padding-right:0}
    .science-home-item{min-height:calc(var(--sp-10) + var(--sp-1))}
  }
  .draft-suggestions-row{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--sp-2);max-width:100%;margin:0 auto}
  .draft-sug{display:inline-flex;align-items:center;gap:var(--sp-1-5);height:var(--control-h-8);max-width:16rem;padding:0 var(--sp-3);border-radius:var(--radius-lg);border:1px solid var(--color-border);background:transparent;color:var(--color-foreground);font-size:var(--text-ui-caption);font-weight:400;line-height:1.45;cursor:pointer;text-align:left;animation:draftSugIn .28s ease both;animation-delay:var(--delay,0ms)}
  .draft-sug:hover{background:color-mix(in oklab,var(--color-input) 50%,transparent);border-color:var(--color-border-hover)}
  .draft-sug:hover .draft-sug-ico,.draft-sug:hover .draft-sug-t{opacity:1}
  .draft-sug-ico{display:inline-flex;flex-shrink:0;color:var(--color-foreground);opacity:.7;transition:opacity .12s}
  .draft-sug-t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-base);opacity:.7;transition:opacity .12s}
  @keyframes draftSugIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

  /* WorkspaceHeader — 对标 ZCode h-12（仅会话可选；草稿不渲染） */
  /* 会话顶栏：与侧栏合并大卡后不再画底部分割线 */
  .ws-header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);height:var(--sp-12);padding:var(--sp-2);border-bottom:none;flex-shrink:0;background:transparent;width:100%;box-sizing:border-box}
  .ws-header.draft{border-bottom:none}
  .ws-header-main{display:flex;align-items:center;gap:var(--sp-2);min-width:0;flex:1;overflow:hidden}
  .thread-wrap .ws-header{padding-left:var(--sp-4)}
  /* 对标 ZCode TitleSection：文件夹图标 + 单行标题 + ···；路径在浮层 */
  .ws-header-ws-wrap{position:relative;flex-shrink:0}
  .ws-header-ws{width:var(--size-7);height:var(--control-h-7);border:none;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;outline:none;box-shadow:none}
  .ws-header-ws:hover,.ws-header-ws:focus-visible{background:var(--color-hover);color:var(--color-foreground);outline:none;box-shadow:none}
  .ws-header-ws svg{width:var(--size-4);height:var(--size-4)}
  .ws-header-ctx{position:absolute;top:calc(100% + var(--sp-1));left:0;z-index:80;width:18rem;padding:var(--sp-3);border:1px solid var(--color-popover-border);border-radius:var(--radius-lg);background:var(--color-popover);color:var(--color-popover-foreground);box-shadow:var(--shadow-md);text-align:left}
  .ws-header-ctx[hidden]{display:none!important}
  .ws-header-ctx-row{display:flex;align-items:flex-start;gap:var(--sp-2);min-width:0}
  .ws-header-ctx-ico{display:inline-flex;flex-shrink:0;color:var(--color-foreground);line-height:0;margin-top:var(--sp-0-5)}
  .ws-header-ctx-ico svg{width:var(--size-4);height:var(--size-4)}
  .ws-header-ctx-text{display:flex;min-width:0;flex:1;flex-direction:column;gap:var(--sp-1)}
  .ws-header-ctx-name{font-size:var(--text-ui-base);font-weight:400;color:var(--color-popover-foreground);overflow-wrap:anywhere;word-break:break-word}
  .ws-header-ctx-path{font-size:var(--text-ui-sm);font-weight:400;color:var(--color-foreground-subtle);overflow-wrap:anywhere;word-break:break-word}
  .ws-header-more{width:var(--size-7);height:var(--control-h-7);border:none;background:transparent;border-radius:var(--radius-md);color:var(--color-foreground-subtle);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
  .ws-header-more:hover{background:var(--color-hover);color:var(--color-foreground)}
  .ws-header-title{margin:0;min-width:0;max-width:25rem;font-size:var(--text-ui-base);font-weight:600;color:var(--color-foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}
  .ws-header-actions{display:flex;align-items:center;gap:var(--sp-0-5);flex-shrink:0}
  .ws-header-actions .icon-btn{width:var(--size-7);height:var(--control-h-7)}
  .chat-title{font-size:clamp(var(--text-ui-xl),3.2vw,var(--text-display));font-weight:500;margin-bottom:var(--sp-6);color:var(--color-foreground);letter-spacing:-.01em;text-align:center}
  .chat-meta{display:none}
  .env-pills{display:flex;align-items:center;gap:var(--sp-1);background:var(--color-surface);border-radius:var(--radius-full);padding:var(--sp-1)}
  .env-pill{display:flex;align-items:center;gap:var(--sp-1);padding:var(--sp-1-5) var(--sp-3-5);border-radius:var(--radius-full);font-size:var(--text-ui-caption);color:var(--color-foreground-subtle);cursor:pointer;transition:all .12s}
  .env-pill:hover{color:var(--color-foreground)}
  .env-pill.on{background:var(--color-card);color:var(--color-foreground);box-shadow:var(--shadow-xs);font-weight:500}
  .workspace-pill-wrap{position:relative}
  .workspace-pill{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1-5) var(--sp-3);background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-full);font-size:var(--text-ui-caption);color:var(--color-foreground);cursor:pointer;transition:all .12s}
  .workspace-pill:hover{border-color:var(--color-border-hover);background:var(--color-surface-hover)}
  .workspace-pill .dot-mark{width:var(--sp-2);height:var(--sp-2);border-radius:50%;background:var(--color-success)}
  .workspace-pill .ws-name{font-weight:600}
  .workspace-pill .ws-path{color:var(--color-foreground-subtle);font-weight:400}
  .workspace-pill .caret-ind{font-size:var(--text-ui-xs);color:var(--color-foreground-subtle);margin-left:var(--sp-0-5)}
  .workspace-note{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
  .ws-dropdown{position:absolute;top:calc(100% + var(--sp-2));left:0;width:var(--content-w-lg);background:var(--color-menu);border:1px solid var(--color-popover-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-popover);padding:var(--sp-2-5) 0;display:none;z-index:50}
  .ws-dropdown.show{display:block}
  .ws-dh{padding:0 var(--sp-3-5) var(--sp-2);font-size:var(--text-ui-sm);font-weight:600;color:var(--color-foreground-subtle)}
  .ws-cap{padding:0 var(--sp-3-5) var(--sp-2);font-size:var(--text-ui-xs);color:var(--color-foreground-subtlest);line-height:1.4;border-bottom:1px solid var(--color-border)}
  .res-cap{font-size:var(--text-ui-xs);color:var(--color-foreground-subtlest);margin-top:var(--sp-1);line-height:1.4}
  .ws-di{display:flex;align-items:center;gap:var(--sp-2-5);padding:var(--sp-2) var(--sp-3-5);cursor:pointer;font-size:var(--text-ui-caption)}
  .ws-di:hover{background:var(--color-background)}
  .ws-di .check{margin-left:auto;font-size:var(--text-ui-caption);color:var(--color-success);visibility:hidden}
  .ws-di.on .check{visibility:visible}
  .ws-di .dot-mark{flex-shrink:0}
  .ws-di .ws-info{display:flex;flex-direction:column;gap:var(--sp-px);min-width:0}
  .ws-di .ws-path{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
  .ws-dempty{padding:var(--sp-3-5);color:var(--color-foreground-subtle);font-size:var(--text-ui-caption)}
  .ws-dadd{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2-5) var(--sp-3-5);margin:var(--sp-1-5) var(--sp-3-5) 0;border-top:1px solid var(--color-border);color:var(--color-foreground);font-size:var(--text-ui-caption);cursor:pointer}
  .ws-dadd:hover{color:var(--color-brand)}
  .ws-form{padding:var(--sp-2) var(--sp-3-5) var(--sp-1);display:none}
  .ws-form.show{display:block}
  .ws-form input{width:100%;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--sp-2) var(--sp-2-5);font-size:var(--text-ui-caption);outline:none;margin-bottom:var(--sp-1-5);background:var(--color-input);color:var(--color-foreground)}
  .ws-form input:focus{border-color:var(--color-input-border-focused);box-shadow:0 0 0 2px color-mix(in oklab,var(--color-input-border-focused) 35%,transparent)}
  .ws-form .row{display:flex;gap:var(--sp-1-5);justify-content:flex-end}
  .ws-form .row button{padding:var(--sp-1) var(--sp-2-5);font-size:var(--text-ui-sm);height:var(--control-h-7);border-radius:var(--radius-md)}
  /* ModeSelect — 对标 V4ComposerModeControls：Plan 勾选 + 分隔 + 权限单选 */
  .mode-wrap{position:relative;display:inline-flex;align-items:center;gap:var(--sp-1);flex-shrink:0}
  .mode-trigger{gap:var(--sp-1)}
  .mode-trigger-warn,.mode-trigger-warn:hover{color:var(--color-warning)!important}
  .mode-trigger-ico,.mode-trigger-chev{display:inline-flex;flex-shrink:0;line-height:0}
  .mode-trigger-chev{color:var(--color-foreground-subtle)}
  .mode-trigger-warn .mode-trigger-chev{color:inherit}
  .mode-trigger-label{min-width:0}
  .mode-plan-marker{display:inline-flex;align-items:center;gap:var(--sp-1)}
  .mode-plan-sep{display:inline-block;width:1px;height:var(--size-3);background:var(--color-border);flex-shrink:0}
  .mode-plan-chip{color:var(--color-foreground-subtle)}
  .mode-plan-chip:hover{color:var(--color-foreground-subtle)}
  .mode-plan-chip .mode-plan-x{display:none}
  .mode-plan-chip:hover .mode-plan-ico,.mode-plan-chip:focus-visible .mode-plan-ico{display:none}
  .mode-plan-chip:hover .mode-plan-x,.mode-plan-chip:focus-visible .mode-plan-x{display:inline-flex}
  .mode-plan-ico,.mode-plan-x{display:inline-flex;line-height:0}
  .mode-dropdown{position:absolute;bottom:calc(100% + var(--sp-1));top:auto;left:0;width:24rem;max-width:calc(100vw - var(--sp-8));display:none;flex-direction:column;gap:var(--sp-0-5);background:var(--color-menu);border:1px solid var(--color-popover-border);border-radius:var(--radius-2xl);box-shadow:var(--shadow-md);padding:var(--sp-2);z-index:80;white-space:normal}
  .mode-menu-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-1) var(--sp-2) var(--sp-2);font-size:var(--text-ui-base);color:var(--color-foreground-subtle)}
  .mode-learn-more{border:0;background:transparent;padding:0;color:inherit;font:inherit;text-decoration:underline;text-underline-offset:var(--sp-1);cursor:pointer;white-space:nowrap}
  .mode-dropdown .mode-di{align-items:center}
  .mode-di.mode-di-high .mode-ico,.mode-di.mode-di-high .mt,.mode-di.mode-di-high .md,.mode-di.mode-di-high .mode-check{color:var(--color-warning)}
  .mode-dropdown.show{display:flex}
  .mode-sep{height:1px;margin:var(--sp-1) calc(var(--sp-1) * -1);background:var(--color-border)}
  .mode-radio-group{display:flex;flex-direction:column;gap:var(--sp-0-5)}
  .mode-di{position:relative;display:flex;align-items:flex-start;gap:var(--sp-3);min-height:calc(var(--sp-12) + var(--sp-1));width:100%;padding:var(--sp-2) var(--sp-8) var(--sp-2) var(--sp-2);border:0;background:transparent;cursor:pointer;border-radius:var(--radius-md);text-align:left;color:var(--color-foreground);font:inherit}
  .mode-di:hover{background:var(--color-menu-hover)}
  .mode-di .mode-ico{display:inline-flex;flex-shrink:0;width:var(--size-4-5);height:var(--size-4-5);margin-top:2px;color:var(--color-foreground)}
  .mode-di .mode-ico svg{width:100%;height:100%}
  .mode-di .mode-body{min-width:0;flex:1;display:flex;flex-direction:column;gap:var(--sp-0-5)}
  .mode-di .mt{font-size:var(--text-ui-base);font-weight:400;line-height:1.45;color:var(--color-foreground)}
  .mode-di .md{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);line-height:1.45}
  .mode-di .mode-check{position:absolute;right:var(--sp-2);top:var(--sp-2-5);display:inline-flex;color:var(--color-foreground-subtle);pointer-events:none}
  .mode-di .mode-check svg{width:var(--size-4);height:var(--size-4)}
  .goal-overlay{position:fixed;inset:0;background:var(--color-overlay);z-index:100;display:none;align-items:center;justify-content:center}
  .goal-overlay.show{display:flex}
  .goal-panel{width:var(--dialog-w-md);max-width:92vw;background:var(--color-card);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);border:1px solid var(--color-border);padding:var(--sp-5);animation:gpIn .18s ease-out}
  @keyframes gpIn{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
  .goal-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-4)}
  .goal-h span{font-size:var(--text-ui-lg);font-weight:600}
  .goal-x{width:var(--size-7);height:var(--control-h-7);border-radius:var(--radius-md);border:none;background:var(--color-surface);color:var(--color-foreground-subtle);cursor:pointer;font-size:var(--text-ui-lg);display:flex;align-items:center;justify-content:center}
  .goal-x:hover{background:var(--color-background);color:var(--color-foreground)}
  .goal-l{font-size:var(--text-ui-sm);font-weight:600;color:var(--color-foreground-subtle);margin-bottom:var(--sp-1-5)}
  .goal-body textarea{width:100%;border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--sp-2-5) var(--sp-3);font-size:var(--text-ui-caption);outline:none;resize:vertical;min-height:var(--sp-16);margin-bottom:var(--sp-3-5);background:var(--color-input);color:var(--color-foreground)}
  .goal-body textarea:focus{border-color:var(--color-input-border-focused);box-shadow:0 0 0 2px color-mix(in oklab,var(--color-input-border-focused) 35%,transparent)}
  .goal-body input[type=number]{width:100%;border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--sp-2-5) var(--sp-3);font-size:var(--text-ui-caption);outline:none;margin-bottom:var(--sp-2);background:var(--color-input);color:var(--color-foreground)}
  .goal-body input[type=number]:focus{border-color:var(--color-input-border-focused);box-shadow:0 0 0 2px color-mix(in oklab,var(--color-input-border-focused) 35%,transparent)}
  .goal-tip{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);line-height:1.5;margin-bottom:var(--sp-4)}
  .goal-body .btn{width:100%;justify-content:center}
  /* Composer — 对标 ZCode ChatPromptEditor：gap-3 p-3 rounded-2xl；输入 min-h-10 max-h-40 leading-5 */
  .ask-box{position:relative;width:100%;max-width:42rem;display:flex;flex-direction:column;gap:var(--sp-3);background:var(--color-input);border:1px solid var(--color-input-border);border-radius:var(--radius-2xl);padding:var(--sp-3);box-shadow:none;transition:border-color .15s,background-color .15s;overflow:visible}
  .ask-box:hover{border-color:var(--color-input-border-hover)}
  .ask-box:focus-within{border-color:var(--color-input-border-focused)!important;background:var(--color-input-focused)}
  .ask-box textarea{width:100%;border:none;outline:none;resize:none;font-size:var(--text-ui-base);line-height:1.6;min-height:var(--sp-10);max-height:12rem;background:transparent;padding:0;color:var(--color-foreground);caret-color:var(--color-foreground)}
  .ask-box textarea::placeholder{color:var(--color-foreground-subtlest)}
  .ask-hint{display:none}
  .ask-tools{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--sp-3);margin-top:0;padding-top:0;border-top:none;position:relative;z-index:50;overflow:visible}
  .ask-tools-l{display:flex;gap:var(--sp-1);align-items:center;flex-wrap:nowrap;min-width:0;flex:1;position:relative;overflow:visible}
  .ask-tools-r{display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-1-5);flex-shrink:0;position:relative;overflow:visible;z-index:51}
  .atb{display:inline-flex;align-items:center;gap:var(--sp-1);height:var(--control-h-7);padding:0 var(--sp-2);border-radius:var(--radius-lg);background:transparent;border:1px solid transparent;font-size:var(--text-ui-base);font-weight:400;color:var(--color-foreground-subtle);cursor:pointer;transition:background-color .12s,border-color .12s,color .12s;white-space:nowrap;flex-shrink:0}
  .atb:hover{border-color:transparent;color:var(--color-foreground);background:var(--color-hover)}
  .atb.atb-plus{width:var(--size-7);padding:0;justify-content:center}
  .plus-wrap{position:relative}
  .plus-menu{position:absolute;left:0;bottom:calc(100% + var(--sp-2));z-index:90;min-width:12rem;padding:var(--sp-1);border:1px solid var(--color-popover-border);border-radius:var(--radius-xl);background:var(--color-popover);box-shadow:var(--shadow-md);display:none;flex-direction:column;gap:var(--sp-0-5)}
  .plus-menu.show{display:flex}
  .plus-sec{padding:var(--sp-1) var(--sp-2);font-size:var(--text-ui-xs);font-weight:500;color:var(--color-foreground-subtle);letter-spacing:.02em}
  .plus-mi{display:flex;align-items:center;gap:var(--sp-2);width:100%;min-height:var(--control-h-8);padding:0 var(--sp-2);border:0;border-radius:var(--radius-lg);background:transparent;color:var(--color-foreground);font-size:var(--text-ui-base);font-weight:500;cursor:pointer;text-align:left}
  .plus-mi:hover{background:var(--color-menu-hover)}
  .plus-mi svg{flex-shrink:0;color:var(--color-foreground-subtle)}
  .ask-drop-hint{display:none;position:absolute;inset:0;z-index:6;align-items:center;justify-content:center;gap:var(--sp-2);pointer-events:none;border-radius:inherit;background:color-mix(in oklab,var(--color-background) 72%,transparent);backdrop-filter:blur(2px)}
  .ask-box.drop-active .ask-drop-hint{display:flex}
  .ask-drop-hint span{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);border:1px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-accent,var(--color-surface));color:var(--color-foreground);font-size:var(--text-ui-base);box-shadow:var(--shadow-sm)}
  .ask-drop-hint svg{flex-shrink:0}
  /* ModelSelect — 对标波尔·科学空间：标准/高级档位，无模型名 */
  .atb.model-btn{gap:var(--sp-1);border-color:transparent;background:transparent}
  .atb.model-btn:hover{border-color:transparent;background:var(--color-hover)}
  .model-trigger-label{min-width:0}
  .model-trigger-chev{display:inline-flex;flex-shrink:0;line-height:0;color:var(--color-foreground-subtle)}
  .model-group{display:inline-flex;align-items:center;gap:var(--sp-1);position:relative;margin-left:0}
  /* ChatContextUsage / ContextTrigger — 仅圆环；草稿不渲染 */
  .ctx-usage{display:inline-flex;align-items:center;position:relative;flex-shrink:0}
  .ctx-trigger{display:inline-flex;align-items:center;justify-content:center;width:var(--control-h-8);height:var(--control-h-8);padding:0;border:0;border-radius:var(--radius-md);background:transparent;color:var(--color-foreground-subtle);cursor:pointer;flex-shrink:0}
  .ctx-trigger:hover{background:var(--color-hover);color:var(--color-foreground)}
  .ctx-ring{width:var(--size-3-5);height:var(--size-3-5);flex-shrink:0;display:block}
  .ctx-ring .bg{fill:none;stroke:currentColor;stroke-width:4;opacity:.25}
  .ctx-ring .fg{fill:none;stroke:currentColor;stroke-width:4;stroke-linecap:round;opacity:.7;transform:rotate(-90deg);transform-origin:center;transition:stroke-dashoffset .3s}
  .ctx-pill{display:none} /* legacy */
  .ctx-pct,.ctx-tooltip{display:none}
  .run-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--size-7);height:var(--control-h-7);border-radius:var(--radius-lg);background:transparent;border:1px solid transparent;cursor:pointer;position:relative;transition:background-color .12s,border-color .12s;box-shadow:none;flex-shrink:0}
  .run-btn:hover{border-color:var(--color-border);background:var(--color-hover)}
  .run-ring{width:var(--size-4-5);height:var(--size-4-5);transform:rotate(-90deg)}
  .run-ring .bg{fill:none;stroke:var(--color-border);stroke-width:3.5}
  .run-ring .fg{fill:none;stroke:var(--color-brand);stroke-width:3.5;stroke-linecap:round;transition:stroke-dashoffset .3s}
  .run-btn .tt{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:var(--color-tooltip);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-tooltip);padding:var(--sp-1) var(--sp-2);font-size:var(--text-ui-sm);color:var(--color-tooltip-foreground);white-space:nowrap;display:none;z-index:55;pointer-events:none}
  .run-btn:hover .tt{display:block}
  .model-wrap{position:relative;display:inline-flex}
  .model-dropdown{position:absolute;bottom:calc(100% + var(--sp-1));top:auto;right:0;left:auto;width:var(--dialog-w-sm);max-width:min(92vw,22rem);display:none;flex-direction:column;gap:var(--sp-0-5);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);z-index:80;white-space:normal}
  .model-dropdown.show{display:flex}
  .model-di{position:relative;display:flex;align-items:flex-start;gap:var(--sp-3);width:100%;padding:var(--sp-2) var(--sp-8) var(--sp-2) var(--sp-3);border:0;background:transparent;cursor:pointer;border-radius:var(--radius-md);text-align:left;color:var(--color-foreground);font:inherit}
  .model-di:hover{background:var(--color-menu-hover)}
  .model-di .model-body{min-width:0;flex:1;display:flex;flex-direction:column;gap:var(--sp-0-5)}
  .model-di .mt{font-size:var(--text-ui-base);font-weight:500;line-height:1.45;color:var(--color-foreground)}
  .model-di .md{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);line-height:1.45}
  .model-di .model-check{position:absolute;right:var(--sp-2);top:var(--sp-2-5);display:inline-flex;color:var(--color-foreground-subtle);pointer-events:none}
  .model-di .model-check svg{width:var(--size-4);height:var(--size-4)}
  /* ChatContextUsage 面板 — 对标 ZCode ContextContent !w-80 !rounded-xl !shadow-md + Body bg-menu p-3 space-y-3
   * 触发器在 ask-tools-r：禁止 translateX(-50%) 居中（右半会被 thread 裁切）；右对齐向上弹（side=top sideOffset=2） */
  .ctx-usage{position:relative;z-index:90}
  .ask-tools,.ask-tools-r,.model-group,.composer-shell,.composer-region{overflow:visible}
  .ctx-detail{
    position:absolute;bottom:calc(100% + 2px);right:0;left:auto;transform:none;
    width:20rem;max-width:min(20rem,calc(100vw - 2rem));
    background:var(--color-menu);color:var(--color-foreground);
    border:1px solid var(--color-popover-border);border-radius:var(--radius-xl);
    box-shadow:var(--shadow-md);padding:0;display:none;z-index:120;
    overflow:hidden;pointer-events:auto;
  }
  .ctx-detail.show{display:block}
  .ctx-detail-body{width:100%;background:var(--color-menu);padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-3);box-sizing:border-box}
  .ctx-detail .cd-usage{display:flex;flex-direction:column;gap:var(--sp-2)}
  .ctx-detail .cdh{display:flex;align-items:center;gap:var(--sp-3);min-width:0;margin:0 0 var(--sp-1)}
  .ctx-detail .cdh-t{flex-shrink:0;font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground)}
  .ctx-detail .cdh-sum{margin-left:auto;flex-shrink:0;text-align:right;font-family:var(--font-mono);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);white-space:nowrap}
  .ctx-detail .cd-bar{height:var(--sp-2);min-height:var(--sp-2);background:var(--color-surface);border-radius:var(--radius-sm);overflow:hidden;margin:0;display:flex}
  .ctx-detail .cd-bar span{height:100%;min-width:var(--sp-2);flex-shrink:0}
  .ctx-detail .cd-list{display:grid;gap:var(--sp-1-5)}
  .ctx-detail .cdi{display:flex;align-items:center;gap:var(--sp-2);min-width:0;font-size:var(--text-ui-sm);line-height:1.45}
  .ctx-detail .cdi .dot-mark{width:var(--sp-2);height:var(--sp-2);border-radius:var(--radius-sm);border:1px solid var(--color-border);flex-shrink:0;box-sizing:border-box}
  .ctx-detail .cdi .nn{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-foreground-subtle)}
  .ctx-detail .cdi .pp{margin-left:auto;min-width:2.5rem;flex-shrink:0;text-align:right;font-family:var(--font-mono);font-size:var(--text-ui-sm);font-variant-numeric:tabular-nums;color:var(--color-foreground)}
  /* 对标 ChatPromptEditor submit size=icon-md rounded-lg bg-brand */
  .ask-send{width:var(--size-7);height:var(--size-7);border-radius:var(--radius-lg);background:var(--color-brand);color:var(--color-foreground-inverse);border:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-1);cursor:pointer;font-size:var(--text-ui-base);transition:background-color .12s;flex-shrink:0;padding:0}
  .ask-send:hover{background:color-mix(in oklab,var(--color-brand) 80%,transparent)}
  .ask-send:disabled{opacity:.4;pointer-events:none}
  .ask-send:focus-visible{box-shadow:0 0 0 2px var(--color-input-border-focused)}
  .ask-send svg{width:var(--size-4);height:var(--size-4)}

  /* Permission — 对标 Codex ApprovalCard（见下方 .cdx-apv 区块） */
  /* Composer 附件 — 对标 ConversationComposer Attachments（grid 媒体 / inline 文件卡） */
  .attach-chips{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--sp-2);padding:0;max-width:100%}
  .ask-box.drop-active{border-color:var(--color-input-border-focused)!important;background:color-mix(in oklab,var(--color-brand) 6%,var(--color-input))}
  .attach-card{position:relative;box-sizing:border-box}
  .attach-card-file{
    display:inline-flex;align-items:center;gap:var(--sp-2);height:var(--sp-12);width:fit-content;max-width:100%;min-width:0;
    padding:var(--sp-1-5) var(--sp-6) var(--sp-1-5) var(--sp-1-5);border:1px solid var(--color-border);border-radius:var(--radius-lg);
    background:var(--color-surface);color:var(--color-foreground);cursor:default;
  }
  .attach-card-file:hover{background:var(--color-surface-hover)}
  .attach-card-file[role="button"]{cursor:pointer}
  .attach-card-file .attach-thumb{
    display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--size-9);height:var(--size-9);
    border-radius:var(--radius-md);background:var(--color-background);overflow:hidden;
  }
  .attach-card-file .attach-thumb .zc-file-ico,.attach-card-file .attach-thumb img{width:var(--size-4);height:var(--size-4);display:block}
  .attach-card-file .attach-meta{min-width:0;max-width:10rem;flex:1;display:flex;flex-direction:column;gap:0;line-height:1.25}
  .attach-card-file .attach-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground)}
  .attach-card-file .attach-type{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-sm);font-weight:400;color:var(--color-foreground-subtle)}
  .attach-card-file .attach-upload{max-width:7rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
  .attach-card-file .attach-upload.is-fail{color:var(--color-destructive)}
  .attach-card-media{
    position:relative;width:var(--sp-12);height:var(--sp-12);overflow:hidden;border-radius:var(--radius-lg);background:var(--color-surface);cursor:pointer;flex-shrink:0;
  }
  .attach-card-media::after{content:"";position:absolute;inset:0;border-radius:inherit;border:1px solid var(--color-border);pointer-events:none}
  .attach-card-media .attach-media{width:100%;height:100%;object-fit:cover;display:block}
  .attach-card-media .attach-media-ph{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--color-foreground-subtle)}
  .attach-card-media .attach-play{
    position:absolute;inset:0;margin:auto;width:var(--size-7);height:var(--size-7);border-radius:999px;
    display:flex;align-items:center;justify-content:center;background:color-mix(in oklab,#000 55%,transparent);color:#fff;pointer-events:none;
  }
  .attach-card-media .attach-media-progress{
    position:absolute;inset:0;display:grid;place-items:center;border-radius:inherit;
    background:color-mix(in oklab,var(--color-background) 85%,transparent);font-size:var(--text-ui-2xs);font-weight:600;color:var(--color-foreground);
  }
  .attach-card .attach-rm{
    position:absolute;right:2px;top:2px;z-index:20;width:14px;height:14px;padding:0;border:0;border-radius:999px;
    display:inline-flex;align-items:center;justify-content:center;
    background:var(--color-primary);color:var(--color-primary-foreground);cursor:pointer;line-height:0;
    opacity:0;transition:opacity .12s;
  }
  .attach-card:hover .attach-rm,.attach-card:focus-within .attach-rm,.attach-card .attach-rm:focus-visible{opacity:1}
  .attach-card .attach-rm:hover{background:color-mix(in oklab,var(--color-primary) 80%,transparent);color:var(--color-primary-foreground)}
  .attach-card .attach-rm svg{width:10px;height:10px}
  @media (hover:none){.attach-card .attach-rm{opacity:1}}
  .msg-attach{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-1-5)}
  .msg-attach-chip{display:inline-flex;align-items:center;gap:var(--sp-2);height:var(--sp-12);max-width:100%;min-width:0;padding:var(--sp-1-5);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-sizing:border-box}
  .msg-attach-chip .attach-thumb{display:inline-flex;align-items:center;justify-content:center;width:var(--size-9);height:var(--size-9);border-radius:var(--radius-md);background:var(--color-background);flex-shrink:0}
  .msg-attach-chip .attach-thumb img{width:var(--size-4);height:var(--size-4)}
  .msg-attach-chip .attach-meta{min-width:0;max-width:10rem;display:flex;flex-direction:column}
  .msg-attach-chip .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-base);font-weight:500}
  .msg-attach-chip .sz{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
  .msg-attach-media{width:var(--sp-12);height:var(--sp-12);border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--color-border)}
  .msg-attach-media img{width:100%;height:100%;object-fit:cover;display:block}
  .attach-preview-dlg{position:fixed;inset:0;z-index:220;background:color-mix(in oklab,#000 45%,transparent);display:none;align-items:center;justify-content:center;padding:var(--sp-6)}
  .attach-preview-dlg.show{display:flex}
  .attach-preview-card{background:var(--color-popover);border:1px solid var(--color-popover-border);border-radius:var(--radius-2xl);box-shadow:var(--shadow-md);max-width:min(880px,96vw);max-height:90vh;overflow:hidden;display:flex;flex-direction:column}
  .attach-preview-h{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);font-size:var(--text-ui-sm);color:var(--color-foreground)}
  .attach-preview-h span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .attach-preview-b{padding:var(--sp-3);display:flex;align-items:center;justify-content:center;overflow:auto;background:var(--color-background)}
  .aside-resize{position:absolute;top:0;right:-2px;width:4px;height:100%;cursor:col-resize;z-index:5}
  .aside-resize::after{
    content:'';pointer-events:none;position:absolute;inset-block:var(--sp-3);
    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
  }
  .aside-resize:hover::after,.aside.is-resizing .aside-resize::after{opacity:1}
  .rtab.group{position:relative;padding-right:var(--sp-5)}
  .rtab .tab-x{position:absolute;right:var(--sp-1);top:50%;transform:translateY(-50%);opacity:0;width:var(--size-4);height:var(--size-4);border:0;background:transparent;color:var(--color-foreground-subtle);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);padding:0;line-height:1}
  .rtab:hover .tab-x,.rtab:focus-within .tab-x{opacity:1}
  .rtab .tab-x:hover{background:var(--color-hover);color:var(--color-foreground)}

  .quick{display:none}

  /* 会话时间线 — 对标 ZCode ConversationTimeline + conversationLayout.ts + sticky dock
   * 内容列：默认 w-full；≥864px → calc(100%-6rem) max-w-4xl；≥1280px → calc(100%-24rem) max-w-6xl
   * Turn / dock 共用同一列宽 + px-4，避免消息与 Composer 左右错边
   * 草稿空态仍用 max-w-2xl（见 .chat-center-body / .composer-region.centered）
   */
  /* overflow 不可 hidden：ctx-detail / model-dropdown 向上弹出会被裁切（对标 ZCode HoverCard portal） */
  .thread-wrap{flex:1;display:flex;flex-direction:column;min-width:0;background:transparent;padding:0;position:relative;border:0;border-radius:0;overflow:visible;container-type:inline-size;container-name:conversation}
  .conv-timeline,.thread-wrap .thread{flex:1;overflow-y:auto;padding:0;display:flex;flex-direction:column;align-items:center;min-height:0;position:relative}
  /* 内容列 — packages/ui/src/v4/conversationLayout.ts */
  .conv-col{
    width:100%;
    margin-left:auto;margin-right:auto;
    box-sizing:border-box;
  }
  @container conversation (min-width:864px){
    .conv-col{width:calc(100% - 6rem);max-width:48rem}
  }
  @container conversation (min-width:1280px){
    .conv-col{width:calc(100% - 6rem);max-width:48rem}
  }
  /* 无容器查询时回退（旧 WebKit） */
  @supports not (container-type:inline-size){
    @media (min-width:864px){.conv-col{width:calc(100% - 6rem);max-width:48rem}}
    @media (min-width:1280px){.conv-col{width:calc(100% - 6rem);max-width:48rem}}
  }
  /* Turn — ConversationTurnGroup：与 dock 同列宽 + 同 px-4（保证卡片与 Composer 左右齐边）
   * 条目节奏对标 Codex：conversation-item-gap 16px */
  .conv-timeline .msg,.thread .msg{
    width:100%;max-width:none;
    margin-left:auto;margin-right:auto;
    padding:0 var(--sp-4) var(--sp-4);
    margin-bottom:0;
    box-sizing:border-box;
  }
  .conv-timeline .msg:first-child,.thread .msg:first-child{padding-top:calc(var(--sp-4) + var(--control-h-8) + var(--sp-2))}
  @container conversation (min-width:864px){
    .conv-timeline .msg,.thread .msg{width:calc(100% - 6rem);max-width:48rem}
  }
  @container conversation (min-width:1280px){
    .conv-timeline .msg,.thread .msg{width:calc(100% - 6rem);max-width:48rem}
  }
  @supports not (container-type:inline-size){
    @media (min-width:864px){.conv-timeline .msg,.thread .msg{width:calc(100% - 6rem);max-width:48rem}}
    @media (min-width:1280px){.conv-timeline .msg,.thread .msg{width:calc(100% - 6rem);max-width:48rem}}
  }
  /* sticky dock — 与消息列同宽同左右 pad（ConversationTimeline data-v4-composer-dock-content） */
  .composer-dock{position:sticky;bottom:0;z-index:40;width:100%;display:flex;justify-content:center;pointer-events:none;background:linear-gradient(to top,var(--color-background) 72%,transparent);box-sizing:border-box;flex-shrink:0;overflow:visible}
  .composer-dock-content{
    pointer-events:auto;position:relative;z-index:10;
    width:100%;max-width:none;
    margin-left:auto;margin-right:auto;
    padding:0 var(--sp-4) var(--sp-4);
    box-sizing:border-box;
  }
  @container conversation (min-width:864px){
    .composer-dock-content{width:calc(100% - 6rem);max-width:48rem}
  }
  @container conversation (min-width:1280px){
    .composer-dock-content{width:calc(100% - 6rem);max-width:48rem}
  }
  @supports not (container-type:inline-size){
    @media (min-width:864px){.composer-dock-content{width:calc(100% - 6rem);max-width:48rem}}
    @media (min-width:1280px){.composer-dock-content{width:calc(100% - 6rem);max-width:48rem}}
  }
  .composer-back-anchor{position:relative;width:100%}
  .composer-dock .composer-region{width:100%;max-width:none}
  .thread-wrap .ask-box{margin:0;max-width:none;width:100%;align-self:stretch}
  /* 对话流 — ZCode 已工作 / 思考 / ToolLayout / 动作栏 / 滚底 */
  .bubble.a-turn{padding:0;background:transparent;border:none;box-shadow:none;max-width:100%;width:100%;display:flex;flex-direction:column;gap:0}
  /* history-message：兄弟块 mt-5（对标 ConversationWorkSegmentFlow） */
  .a-hist{display:flex;flex-direction:column;width:100%;min-width:0}
  .a-worked-bar{
    display:flex;width:100%;border-bottom:1px solid color-mix(in oklab,var(--color-border) 50%,transparent);
    padding-bottom:var(--sp-2);margin:0;
  }
  .user-message-time{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);font-variant-numeric:tabular-nums;margin-right:var(--sp-1)}
  .msg.mine .a-actions-u{display:flex;align-items:center;gap:var(--sp-2);justify-content:flex-end;width:100%}
  .a-worked{
    display:inline-flex;max-width:100%;align-items:center;gap:var(--sp-2);margin:0;padding:0;border:0;
    background:transparent;color:var(--color-foreground-subtle);font-size:var(--text-ui-base);
    cursor:pointer;text-align:left;
  }
  .a-worked-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .a-worked .a-worked-chev{
    flex-shrink:0;opacity:.7;color:var(--color-foreground-subtlest);
    transition:transform .15s ease;line-height:0;display:inline-flex;
  }
  .a-worked.open .a-worked-chev,.a-worked-chev.is-open{transform:rotate(90deg)}
  .a-worked.is-running{color:var(--color-foreground-subtle)}
  /* CollapsibleContent：展开后 pt-5；收起隐藏 */
  .a-hist-body{display:none;flex-direction:column;gap:0;padding-top:var(--sp-5);width:100%;min-width:0}
  .a-hist.is-open .a-hist-body{display:flex}
  /* 条目节奏：默认 16px（--conversation-item-gap）；连续工具行组内 4px（--conversation-grouped-item-gap） */
  .a-hist-body > * + *{margin-top:var(--sp-4)}
  .a-hist-body > .zc-tool + .zc-tool{margin-top:var(--sp-1)}
  /* 助手块内子区块（正文→图→卡→diff→动作栏）：gap-3 = 12px */
  .a-body > * + *,.a-final > * + *{margin-top:var(--sp-3)}
  .a-final{margin-top:var(--sp-5);min-width:0}
  .a-turn > .a-actions{margin-top:var(--sp-1-5)}
  /* Reasoning — 对标 Codex reasoning 行：单行 text/50%，hover → foreground；chevron 默认透明 */
  .a-reason{margin:0;border:0;background:transparent;overflow:visible;align-self:flex-start}
  .a-reason-trig{
    display:inline-flex;max-width:100%;min-width:0;align-items:center;gap:var(--sp-2);
    border:0;background:transparent;padding:0;cursor:pointer;text-align:left;
    font-size:var(--text-ui-base);color:color-mix(in oklab, var(--color-foreground) 50%, transparent);
  }
  .a-reason-trig:hover{color:var(--color-foreground)}
  .a-reason-ico{flex-shrink:0;line-height:0;color:inherit}
  .a-reason-t{display:inline-flex;align-items:center;gap:var(--sp-2);min-width:0;flex-shrink:0;white-space:nowrap}
  .a-reason-lab{font-weight:500;color:inherit}
  .a-reason-dot,.a-reason-dur{font-weight:400;color:inherit}
  .a-reason-streaming{
    font-weight:500;
    background:linear-gradient(90deg,var(--color-foreground-subtlest) 0%,var(--color-foreground) 40%,var(--color-foreground-subtlest) 80%);
    background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;
    animation:aReasonShine 2.4s linear infinite;
  }
  @keyframes aReasonShine{to{background-position:-200% 0}}
  .a-reason-stream-sum{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-foreground-subtle)}
  .a-reason-chev{
    flex-shrink:0;opacity:0;color:inherit;
    transition:transform .2s,opacity .2s;display:inline-flex;line-height:0;
  }
  .a-reason-trig:hover .a-reason-chev,.a-reason.open .a-reason-chev,.a-reason-chev.is-open{opacity:1}
  .a-reason-chev.is-open,.a-reason.open .a-reason-chev{transform:rotate(90deg)}
  /* 展开体：text/60%，max-h 140px 边缘渐隐（对标 Codex reasoning 展开） */
  .a-reason-b{
    display:none;margin-top:var(--sp-2);padding:0;border:0;max-height:140px;overflow-y:auto;
    font-size:var(--text-ui-base);line-height:1.55;color:color-mix(in oklab, var(--color-foreground) 60%, transparent);
    -webkit-mask-image:linear-gradient(180deg, #000 0, #000 calc(100% - 28px), transparent 100%);
    mask-image:linear-gradient(180deg, #000 0, #000 calc(100% - 28px), transparent 100%);
  }
  .a-reason.open .a-reason-b{display:block}

  /* ToolSummaryRow / Explore / Todo — 对标 ToolLayout + Codex 活动行通则
   * 摘要色 = text 60%（color-mix）；hover 整行 → foreground；chevron hover/展开才显 */
  .zc-tool{margin:0;display:flex;flex-direction:column;align-items:flex-start;gap:0;width:100%}
  .zc-tool-sum{
    display:inline-flex;max-width:100%;align-items:center;gap:var(--sp-2);align-self:flex-start;
    border:0;background:transparent;padding:0;cursor:pointer;text-align:left;
    font:inherit;font-size:var(--text-ui-base);
    color:color-mix(in oklab, var(--color-foreground) 60%, transparent);
  }
  .zc-tool-sum:hover{color:var(--color-foreground)}
  .zc-tool-sum:hover .zc-tool-chev{opacity:1}
  .zc-tool-ico{display:inline-flex;flex-shrink:0;line-height:0;color:inherit}
  .zc-tool-ico svg,.zc-tool-ico .lucide{color:inherit}
  .zc-tool-kind{flex-shrink:0;font-weight:500;color:inherit;white-space:nowrap}
  .zc-tool-sep{flex-shrink:0;color:inherit}
  .zc-tool-primary{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:inherit}
  .zc-tool-secondary{flex-shrink:0;font-family:var(--font-mono);font-size:var(--text-ui-base);color:inherit}
  .zc-tool-status{flex-shrink:0;font-size:var(--text-ui-base);color:var(--color-destructive);text-decoration:underline;text-decoration-style:dotted;text-underline-offset:2px}
  .zc-tool-chev{
    flex-shrink:0;opacity:0;color:inherit;line-height:0;
    transition:transform .2s ease-out,opacity .2s ease-out;
  }
  .zc-tool-sum:hover .zc-tool-chev,.zc-tool.is-open .zc-tool-chev,.zc-tool-chev.is-open{opacity:1}
  .zc-tool-chev.is-open,.zc-tool.is-open .zc-tool-chev{transform:rotate(90deg)}
  /* explore 展开：ml-2 border-l pl-3.5 space-y-2（pt-2 在 body） */
  .zc-tool-body{
    display:none;width:100%;margin-top:var(--sp-2);padding-left:var(--sp-3-5);margin-left:var(--sp-2);
    border-left:1px solid var(--color-border);box-sizing:border-box;
  }
  .zc-tool.is-open .zc-tool-body{display:flex;flex-direction:column;gap:var(--sp-2)}
  .zc-todo .zc-tool-body{border-left:0;margin-left:0;padding-left:0}
  .zc-tool-child{
    display:flex;width:100%;min-width:0;align-items:center;gap:var(--sp-2);
    border:0;background:transparent;padding:0;min-height:var(--control-h-7);cursor:pointer;text-align:left;
    font:inherit;font-size:var(--text-ui-base);color:var(--color-foreground-subtle);
  }
  .zc-tool-child:hover{color:var(--color-foreground)}
  .zc-tool-child:hover .zc-tool-child-chev{opacity:1}
  .zc-tool-child-act{flex-shrink:0;color:var(--color-foreground-subtlest)}
  .zc-tool-child-target{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-foreground)}
  .zc-tool-child-sum{margin-left:auto;flex-shrink:0;color:var(--color-foreground-subtlest)}
  .zc-tool-child-chev{flex-shrink:0;opacity:0;line-height:0;color:var(--color-foreground-subtlest);transition:opacity .15s}
  .zc-tool-delegate{margin:0}
  .zc-tool.is-fail .zc-tool-kind{color:var(--color-destructive)}
  /* AskUserQuestion */
  .rf-ask{margin:var(--sp-2) 0;border:1px solid var(--color-border);border-radius:var(--radius-xl);background:var(--color-card);overflow:hidden}
  .rf-ask-h{padding:var(--sp-2) var(--sp-3);font-size:var(--text-ui-sm);font-weight:600;color:var(--color-foreground);border-bottom:1px solid var(--color-border);background:var(--color-surface)}
  .rf-ask-q{padding:var(--sp-2-5) var(--sp-3) var(--sp-1);font-size:var(--text-ui-base);line-height:1.5;color:var(--color-foreground)}
  .rf-ask-opts{display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-2) var(--sp-3) var(--sp-3)}
  .rf-ask-opt{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-0-5);padding:var(--sp-2) var(--sp-2-5);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-background);cursor:pointer;text-align:left;font:inherit;color:inherit}
  .rf-ask-opt:hover{background:var(--color-hover)}
  .rf-ask-opt.on{border-color:var(--color-confirmation);background:color-mix(in oklab,var(--color-confirmation) 8%,var(--color-background));box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--color-confirmation) 35%,transparent)}
  .rf-ask-lab{font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground);display:inline-flex;align-items:center;gap:var(--sp-1-5)}
  .rf-ask-rec{font-size:var(--text-ui-xs);font-weight:600;color:var(--color-confirmation);background:color-mix(in oklab,var(--color-confirmation) 12%,transparent);padding:var(--sp-px) var(--sp-1-5);border-radius:var(--radius-sm)}
  .rf-ask-desc{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);line-height:1.4}
  .a-body{min-width:0}
  /* Turn 底栏动作（对标 Codex）：mt-1.5(6px)、min-h-5(20px)、hover 才显 */
  .a-actions{
    display:flex;align-items:center;gap:var(--sp-1);margin-top:var(--sp-1-5);
    opacity:0;transition:opacity .15s;min-height:var(--size-5);
  }
  .msg:hover .a-actions,
  .msg:focus-within .a-actions,
  .a-turn:hover .a-actions,
  .a-actions:focus-within{opacity:1}
  /* MessageAction ghost icon-sm：20px（Codex min-h-5），图标 size-3.5 */
  .a-act{
    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-subtle);cursor:pointer;padding:0;flex-shrink:0;
  }
  .a-act:hover{background:var(--color-hover);color:var(--color-foreground)}
  .a-act.on{color:var(--color-foreground);background:color-mix(in oklab,var(--color-success) 10%,transparent)}
  .a-act-time{font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest);user-select:none;line-height:1}
  /* Todo pill — 对标 Codex 会话内 todo（pill 不是清单块）
   * 进度环 16px 蓝 + `Step n / m` tabular-nums；hover 浮现完整清单 tooltip（--color-menu 表面） */
  .zc-todo-pill{position:relative;display:inline-flex;margin:-6px 0;padding:6px 0;align-self:flex-start;outline:none}
  .zc-todo-pill-in{display:inline-flex;align-items:center;gap:6px;font-size:var(--text-ui-base);color:var(--color-foreground-subtle);font-variant-numeric:tabular-nums;white-space:nowrap}
  .zc-todo-pill:hover .zc-todo-pill-in,.zc-todo-pill:focus-within .zc-todo-pill-in{color:var(--color-foreground)}
  .zc-todo-ring-w{flex-shrink:0;line-height:0;color:var(--color-icon-blue);display:inline-flex}
  .zc-todo-step{line-height:1.4}
  /* 全部完成：退化为 4px 蓝点 */
  .zc-todo-pill.is-all .zc-todo-dot{width:4px;height:4px;border-radius:var(--radius-full);background:var(--color-icon-blue);align-self:center}
  .zc-todo-tip{
    position:absolute;top:100%;left:0;z-index:60;width:min(24rem,80vw);box-sizing:border-box;
    display:none;flex-direction:column;gap:8px;padding:8px;
    background:var(--color-menu);border:1px solid var(--color-border);border-radius:var(--radius-lg);
    box-shadow:var(--shadow-popover);font-size:var(--text-ui-base);line-height:1.45;color:var(--color-foreground);
  }
  .zc-todo-pill:hover .zc-todo-tip,.zc-todo-pill:focus-within .zc-todo-tip{display:flex}
  .zc-todo-item{display:flex;align-items:flex-start;gap:8px;min-width:0}
  .zc-todo-ico-w{width:16px;height:16px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;line-height:0;color:var(--color-foreground-subtlest)}
  .zc-todo-item.is-in_progress{color:var(--color-foreground)}
  .zc-todo-item.is-in_progress .zc-todo-ico-w{color:var(--color-icon-blue)}
  .zc-todo-item.is-completed{color:var(--color-foreground-subtlest)}  /* 完成态仅 tertiary，无删除线 */
  .zc-todo-txt{min-width:0;word-break:break-word}
  /* 对标 ConversationBackToBottomButton：absolute bottom-full left-1/2 mb-2 -translate-x-1/2 size-7 rounded-full */
  .thread-scroll-btn{
    position:absolute;left:50%;bottom:100%;transform:translateX(-50%);z-index:30;
    margin-bottom:var(--sp-2);width:var(--size-7);height:var(--size-7);border-radius:999px;
    border:1px solid var(--color-border);background:var(--color-card);color:var(--color-foreground);
    box-shadow:var(--shadow-sm);display:none;align-items:center;justify-content:center;cursor:pointer;padding:0;
    pointer-events:auto;
  }
  .thread-scroll-btn.show{display:inline-flex}
  .thread-scroll-btn:hover{background:var(--color-selected,var(--color-surface-hover))}
  /* 对标 ConversationTurnGroup：兄弟条目间距 16px（--conversation-item-gap） */
  .msg{display:flex;gap:0;margin:0 0 var(--sp-4);align-items:flex-start;width:100%}
  .msg.mine{flex-direction:column;align-items:flex-end;justify-content:flex-start;margin-left:auto;margin-bottom:var(--sp-4)}
  .msg .av{display:none}
  .av{width:var(--size-7);height:var(--control-h-7);border-radius:var(--radius-md);flex-shrink:0;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:var(--text-ui-xs);color:var(--color-primary-foreground)}
  .av-u{background:var(--color-foreground-subtlest)}.av-a{background:var(--color-primary)}
  .bubble{padding:0;border-radius:0;font-size:var(--text-ui-base);line-height:1.55;background:transparent;border:none;box-shadow:none;color:var(--color-foreground);max-width:100%;width:100%}
  /* 用户气泡 — 对标 Codex user-message：px-4 py-2.5 rounded-2xl(22px)、max-w-70%、bg text 5% */
  .bubble.u{
    width:fit-content;max-width:70%;margin-left:auto;
    padding:var(--sp-2-5) var(--sp-4);
    background:var(--color-plan-surface);
    border:none;border-radius:var(--radius-bubble);color:var(--color-foreground);
    overflow:hidden;word-break:break-word;
  }
  .quick{display:none}
  .plan{margin-top:var(--sp-2-5);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;background:var(--color-card)}
  .ps-step{display:flex;gap:var(--sp-2-5);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);align-items:flex-start;font-size:var(--text-ui-sm)}
  .ps-step:last-child{border-bottom:none}
  .ps-step .step-num{width:var(--size-4);height:var(--size-4);border-radius:50%;background:var(--color-background);color:var(--color-foreground-subtle);font-size:var(--text-ui-xs);font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:var(--sp-px)}
  .ps-step.done .step-num{background:var(--color-success);color:var(--color-primary-foreground)}
  .ps-step .step-title{font-weight:600}
  .ps-step .desc-text{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);margin-top:var(--sp-px)}
  .tool{margin-top:var(--sp-2);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.5}
  .typing{display:flex;gap:var(--sp-1);padding:var(--sp-3) var(--sp-4)}
  .typing span{width:var(--sp-1-5);height:var(--sp-1-5);border-radius:50%;background:var(--color-foreground-subtlest);animation:bl 1.2s infinite}
  .typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}
  @keyframes bl{0%,60%,100%{opacity:.3}30%{opacity:1;transform:translateY(-3px)}}

  /* ============ V2.35 真实任务流 · 对标 ZCode ToolCallBlocks 行密度 ============ */
  .rf-subhead{display:inline-flex;align-items:center;gap:var(--sp-1-5);font-family:var(--font-mono);font-size:var(--text-ui-sm);font-weight:500;margin:var(--sp-0-5) 0 var(--sp-1-5);color:var(--color-foreground-subtle)}
  .rf-subhead.vs{color:var(--color-icon-blue)}
  .rf-subhead.cw{color:var(--color-destructive)}
  /* 可折叠工具组 — 轻边框 + h-8 头行 */
  .rf-group{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-card);overflow:hidden;margin-top:var(--sp-2)}
  .rf-group.fail{border-color:color-mix(in oklab,var(--color-destructive) 35%,transparent);background:var(--color-destructive-surface)}
  .rf-group-h{display:flex;align-items:center;gap:var(--sp-2);min-height:var(--control-h-8);padding:0 var(--sp-2-5);cursor:pointer;user-select:none;font-size:var(--text-ui-base)}
  .rf-group-h:hover{background:var(--color-hover)}
  .rf-group-h .check-mark{width:var(--size-3-5);height:var(--size-3-5);border-radius:var(--radius-full);display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-ui-xs);color:var(--color-primary-foreground);font-weight:600;flex-shrink:0}
  .rf-group-h .check-mark.ok{background:var(--color-success)}
  .rf-group-h .check-mark.bad{background:var(--color-destructive)}
  .rf-group-h .tt{font-weight:500;color:var(--color-foreground);flex:1;min-width:0}
  .rf-group-h .meta-row{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);font-variant-numeric:tabular-nums;display:inline-flex;align-items:center;gap:var(--sp-1-5);flex-shrink:0}
  .rf-group-h .caret-ind{font-size:var(--text-ui-xs);color:var(--color-foreground-subtlest);transition:transform .15s,opacity .15s;display:inline-block;opacity:.55}
  .rf-group-h:hover .caret-ind{opacity:1}
  .rf-group.collapsed .rf-group-h .caret-ind{transform:rotate(-90deg)}
  .rf-group.collapsed .rf-steps{display:none}
  .rf-steps{border-top:1px solid color-mix(in oklab,var(--color-border) 70%,transparent);background:transparent}
  .rf-group.fail .rf-steps{background:color-mix(in oklab,var(--color-destructive-surface) 60%,transparent)}
  /* 单步行 — 对标 ToolSummaryRow：min-h-7 / gap-2 / 无重分割线 */
  .rf-step{display:flex;align-items:center;gap:var(--sp-2);min-height:var(--control-h-7);padding:0 var(--sp-2-5);border-bottom:none;font-size:var(--text-ui-base)}
  .rf-step:last-child{border-bottom:none}
  .rf-step:hover{background:var(--color-hover)}
  .rf-step .ick{width:var(--size-3-5);height:var(--size-3-5);border-radius:var(--radius-full);display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-ui-xs);color:var(--color-foreground-subtlest);font-weight:600;flex-shrink:0;background:transparent;border:1px solid transparent}
  .rf-step .ick.ok{background:transparent;color:var(--color-foreground-subtlest);border-color:transparent}
  .rf-step .ick.bad{background:var(--color-destructive);color:var(--color-primary-foreground);border-color:transparent}
  .rf-nested{margin-left:var(--sp-2);padding-left:var(--sp-3-5);border-left:1px solid var(--color-border);display:flex;flex-direction:column;gap:var(--sp-2);margin-top:var(--sp-2)}
  .rf-step .act{color:var(--color-foreground);font-weight:400}
  .rf-step .target{color:var(--color-foreground-subtle);font-family:var(--font-mono);font-size:var(--text-ui-sm);margin-left:var(--sp-1)}
  .rf-step .out-summary{flex:1;text-align:right;font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest);font-variant-numeric:tabular-nums}
  .rf-step .out-summary .ico-mark{font-size:var(--text-ui-caption);color:var(--color-foreground-subtlest);margin-left:var(--sp-1-5)}
  .rf-step.fail .act{color:var(--color-destructive)}
  .rf-step.fail .target{color:color-mix(in oklab,var(--color-destructive) 60%,var(--color-foreground))}
  /* 委派行 — 同 ToolSummary 单行 */
  .rf-delegate{display:flex;align-items:center;gap:var(--sp-2);min-height:var(--control-h-8);padding:0 var(--sp-2-5);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-card);font-size:var(--text-ui-base);margin-top:var(--sp-2)}
  .rf-delegate:hover{background:var(--color-hover)}
  .rf-delegate .check-mark{width:var(--size-3-5);height:var(--size-3-5);border-radius:var(--radius-full);background:var(--color-success);color:var(--color-primary-foreground);font-size:var(--text-ui-xs);font-weight:600;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
  .rf-delegate .act{color:var(--color-foreground);font-weight:500}
  .rf-delegate .target{font-family:var(--font-mono);color:var(--color-foreground-subtle);font-size:var(--text-ui-sm)}
  .rf-delegate .spacer{flex:1}
  .rf-delegate .ico-mark{font-size:var(--text-ui-caption);color:var(--color-foreground-subtlest)}
  .rf-warn{font-size:var(--text-ui-base);line-height:1.55;margin:var(--sp-1-5) 0;color:var(--color-foreground)}
  .rf-warn code{font-family:var(--font-mono);font-size:var(--text-ui-sm);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--sp-px) var(--sp-1-5);color:var(--color-foreground)}
  .rf-p{font-size:var(--text-ui-base);line-height:1.55;margin:var(--sp-1-5) 0;color:var(--color-foreground)}
  /* 完成报告区块 — Markdown 正文节奏对标 Codex MarkdownRoot（--markdown-space 3.5px） */
  .rf-report{border-top:1px solid var(--color-border);padding-top:var(--sp-2-5);margin-top:var(--sp-2-5);font-size:var(--text-ui-base)}
  .rf-report h1{font-size:1.5em;font-weight:600;color:var(--color-foreground);margin:14px 0 7px;line-height:1.35}
  .rf-report h2{font-size:1.25em;font-weight:600;color:var(--color-foreground);margin:14px 0 3.5px;line-height:1.35}
  .rf-report h3{font-size:1.125em;font-weight:600;color:var(--color-foreground);margin:14px 0 3.5px;line-height:1.35}
  .rf-report h4{font-size:1em;font-weight:600;color:var(--color-foreground);margin:14px 0 0;line-height:1.35}
  /* 段落：基础 margin 0 0 3.5px；相邻段落 14px；段后接非段落 7px */
  .rf-report p,.rf-report .rf-p{margin:0 0 3.5px;font-size:var(--text-ui-base);line-height:1.55;color:var(--color-foreground)}
  .rf-report p + p{margin-block:14px}
  .rf-report p + :not(p){margin-top:7px}
  .rf-report ol{padding-inline-start:22.75px;margin:3.5px 0;font-size:var(--text-ui-base);line-height:1.85;color:var(--color-foreground)}
  .rf-report ul{padding-inline-start:22.75px;margin:3.5px 0;font-size:var(--text-ui-base);line-height:1.7;color:var(--color-foreground)}
  .rf-report ul li,.rf-report ol li{padding-inline-start:5.25px;margin:0}
  .rf-report ul ul{list-style:circle}
  .rf-report ul ul ul{list-style:square}
  .rf-report hr{border:0;border-top:1px solid var(--color-border-hover);margin:24.5px 0}
  .rf-report strong{font-weight:600;color:var(--color-foreground)}
  /* 行内 code：bg = primary-ghost-hover 60% + text 6%；radius 6px；padding 1px 6px；.92em mono */
  .rf-report code{font-family:var(--font-mono);font-size:.92em;background:color-mix(in oklab, var(--color-menu-hover) 60%, color-mix(in oklab, var(--color-foreground) 6%, transparent));border-radius:6px;padding:1px 6px;color:var(--color-foreground)}
  /* 对话内链接：主题色 blue、下划线 offset .1em、hover 80% 透明 */
  .rf-md-link{color:var(--color-link);text-decoration:underline;text-underline-offset:.1em;text-decoration-color:color-mix(in oklab, var(--color-link) 55%, transparent);border-radius:var(--radius-sm)}
  .rf-md-link:hover{opacity:.8}
  /* 表格：13px tabular-nums；th 7px border-bottom border-medium semibold；td 8.75px 行间 border-subtle；cell padding-inline-end 21px */
  .rf-report table{width:100%;border-collapse:collapse;font-size:var(--text-ui-base);font-variant-numeric:tabular-nums;margin:7px 0}
  .rf-report th{padding:7px 21px 7px 0;border-bottom:1px solid var(--color-border-hover);text-align:left;vertical-align:top;font-weight:600;color:var(--color-foreground)}
  .rf-report td{padding:8.75px 21px 8.75px 0;border-bottom:1px solid var(--color-border);text-align:left;vertical-align:top;color:var(--color-foreground)}
  .rf-report th:last-child,.rf-report td:last-child{padding-inline-end:0}
  /* blockquote：左条 3.5px radius 1.75px bg border-strong */
  .rf-md-quote{padding-block:7px;padding-inline-start:21px;margin:0 0 7px;border-left:3.5px solid var(--color-border-hover);border-radius:1.75px;color:var(--color-foreground-subtle);font-size:var(--text-ui-base);line-height:1.55}
  /* 助手图片交付卡（attachment-image-card）：border strong、radius 12.5、max-width min(30rem,100%)、图注 secondary 13px */
  .rf-img-card{margin:7px 0;border:1px solid var(--color-border-hover);border-radius:12.5px;overflow:hidden;background:var(--color-card);max-width:min(30rem,100%)}
  .rf-img-card img{display:block;width:100%}
  .rf-img-card figcaption{padding:8px 12px;font-size:var(--text-ui-base);color:var(--color-foreground-subtle);border-top:1px solid var(--color-border)}
  /* 对话内代码块 — 对标 Codex markdown CodeBlock：容器 border+radius 10px+bg --color-codeblock；
   * 无语言头栏/行号；copy 钮 absolute 右上 hover 才显；代码 padding 14px 40px 14px 16px、.875em、lh 1.5 */
  .rf-md-code{position:relative;margin:17.5px 0}
  .rf-md-code .rf-md-pre{background:var(--color-codeblock);color:var(--color-foreground);border:1px solid var(--color-border);border-radius:var(--radius-codeblock);padding:14px 40px 14px 16px;font-family:var(--font-mono);font-size:var(--code-font-size,13px);font-weight:var(--code-font-weight);line-height:1.5;overflow:auto;margin:0;white-space:pre}
  .rf-md-code .rf-md-pre code{background:transparent;border:0;padding:0;color:inherit;font-size:inherit}
  .rf-md-code-copy{
    position:absolute;top:0;right:0;padding:10px 10px 0 0;border:0;background:transparent;
    color:var(--color-foreground-subtlest);cursor:pointer;display:inline-flex;line-height:0;
    opacity:0;transition:opacity .15s,color .15s;
  }
  .rf-md-code:hover .rf-md-code-copy{opacity:1}
  .rf-md-code-copy:hover{color:var(--color-foreground)}
  /* 报告中的 key/value 指标表 */
  .rf-tbl{width:100%;border-collapse:collapse;font-size:var(--text-ui-caption);margin:var(--sp-1-5) 0 var(--sp-2-5)}
  .rf-tbl th,.rf-tbl td{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);text-align:left;vertical-align:middle}
  .rf-tbl th{font-size:var(--text-ui-sm);font-weight:600;color:var(--color-foreground-subtle);background:var(--color-surface)}
  .rf-tbl tr:last-child td{border-bottom:none}
  .rf-tbl td.kv-k{color:var(--color-foreground-subtle)}
  .rf-tbl td.kv-v{color:var(--color-foreground);font-variant-numeric:tabular-nums}
  /* 生成的文件树（缩进 + mono） */
  .rf-tree{margin:var(--sp-1-5) 0;border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--sp-2-5) var(--sp-3-5);background:var(--color-surface);font-family:var(--font-mono);font-size:var(--text-ui-sm);line-height:1.85;color:var(--color-foreground);overflow-x:auto;white-space:pre}
  .rf-tree .dir{color:var(--color-foreground-subtle);font-weight:600}
  .rf-tree .file-item{color:var(--color-foreground)}
  .rf-tree .size{color:var(--color-foreground-subtlest);margin-left:var(--sp-2);font-size:var(--text-ui-sm)}
  .rf-tree .desc-line{color:var(--color-foreground-subtle)}
  /* 图文标题 + 占位卡（UMAP、QC 等） */
  .rf-fig{margin:var(--sp-2-5) 0}
  .rf-fig .ftitle{font-size:var(--text-ui-caption);font-weight:600;color:var(--color-foreground);margin-bottom:var(--sp-1-5)}
  .rf-fig .ftitle .fbold{font-weight:600}
  .rf-fig .fcard{border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--sp-2);background:var(--color-card);display:flex;align-items:center;justify-content:center;min-height:var(--content-h-sm)}
  .rf-fig .fcard svg{width:100%;height:auto;max-height:var(--content-h-lg)}
  /* 「生成 N 个文件」摘要条 */
  .rf-filebar{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin-top:var(--sp-2);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
  .rf-filebar .label-num{color:var(--color-foreground);font-weight:600}
  .rf-filebar .path{font-family:var(--font-mono);color:var(--color-foreground)}
  .rf-filebar .link{margin-left:auto;color:var(--color-brand);cursor:pointer;font-weight:600;font-size:var(--text-ui-sm)}
  .rf-chips{display:flex;flex-wrap:wrap;gap:var(--sp-1-5);margin-top:var(--sp-2)}
  .rf-chip{font-size:var(--text-ui-sm);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full);padding:var(--sp-1) var(--sp-2-5);color:var(--color-foreground-subtle)}
  .rf-chip b{color:var(--color-foreground);font-weight:600;font-family:var(--font-mono);font-size:var(--text-ui-sm)}
  /* 展开文件按钮 */
  .rf-filebar .link.fe-toggle{background:var(--color-card);border:0.5px solid transparent;color:var(--color-brand);font:inherit;padding:var(--sp-1) var(--sp-1-5);border-radius:var(--radius-md);cursor:pointer}
  .rf-filebar .link.fe-toggle:hover{background:color-mix(in oklab,var(--color-brand) 6%,transparent);border-color:color-mix(in oklab,var(--color-brand) 20%,transparent)}
  .rf-filebar .link.fe-toggle .arrow-ind{display:inline-block;transition:transform .18s ease;margin-right:var(--sp-0-5)}
  .rf-filebar.show-files .link.fe-toggle .arrow-ind{transform:rotate(90deg)}
  /* 行内展开的分组文件列表 */
  .rf-fileexpand{display:none;margin:var(--sp-2-5) 0 var(--sp-1-5);border:0.5px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);padding:var(--sp-2-5) var(--sp-3-5);animation:rfFilesIn .18s ease-out}
  .rf-filebar.show-files + .rf-fileexpand{display:block}
  @keyframes rfFilesIn{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}
  .rf-fe-group{margin-bottom:var(--sp-2-5)}
  .rf-fe-group:last-child{margin-bottom:0}
  .rf-fe-gname{display:flex;align-items:baseline;gap:var(--sp-2);font-size:var(--text-ui-xs);color:var(--color-foreground-subtlest);text-transform:uppercase;letter-spacing:.06em;font-weight:600;margin-bottom:var(--sp-1);padding-bottom:var(--sp-1);border-bottom:0.5px dashed var(--color-border)}
  .rf-fe-gname .ct{font-family:var(--font-mono);color:var(--color-foreground);font-size:var(--text-ui-xs);letter-spacing:0;text-transform:none}
  .rf-fe-row{display:grid;grid-template-columns:30px 1fr auto auto;gap:var(--sp-2);align-items:baseline;padding:var(--sp-1) var(--sp-1);font-family:var(--font-mono);font-size:var(--text-ui-sm);color:var(--color-foreground);line-height:1.5;border-radius:var(--radius-sm)}
  .rf-fe-row:hover{background:color-mix(in oklab,var(--color-brand) 6%,transparent)}
  .rf-fe-row .idx{color:var(--color-foreground-subtlest);font-size:var(--text-ui-xs)}
  .rf-fe-row .fn{color:var(--color-foreground);word-break:break-all}
  .rf-fe-row .fs{color:var(--color-foreground-subtlest);font-size:var(--text-ui-xs);white-space:nowrap}
  .rf-fe-row .fc{display:inline-block;background:var(--color-card);border:0.5px solid var(--color-border);border-radius:var(--radius-sm);padding:0 var(--sp-1);font-size:var(--text-ui-xs);color:var(--color-foreground-subtle);font-family:var(--font-sans)}
  .rf-fe-more{font-family:var(--font-mono);font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest);text-align:center;padding:var(--sp-1) 0;letter-spacing:.08em}
  .rf-files-hint{font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest);font-family:var(--font-sans);padding:var(--sp-1-5) 0 0;margin-top:var(--sp-2);border-top:0.5px dashed var(--color-border)}
  /* 审阅模块：1处提示 N项检查 */
  .rf-review{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-panel);margin-top:var(--sp-2-5);overflow:hidden}
  .rf-review-h{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3-5);border-bottom:1px solid var(--color-border);font-size:var(--text-ui-caption)}
  .rf-review-h .tag-warn{font-size:var(--text-ui-xs);font-weight:600;color:var(--color-warning);background:var(--color-warning-surface);border-radius:var(--radius-lg);padding:var(--sp-px) var(--sp-2)}
  .rf-review-h .check-mark{color:var(--color-success);font-size:var(--text-ui-base)}
  .rf-review-h .tt{font-weight:600;color:var(--color-foreground)}
  .rf-review-i{padding:var(--sp-3) var(--sp-3-5);border-bottom:1px solid var(--color-border);font-size:var(--text-ui-sm);color:var(--color-foreground);line-height:1.7}
  .rf-review-i:last-child{border-bottom:none}
  .rf-review-i .top{display:flex;align-items:center;gap:var(--sp-2);font-weight:600}
  .rf-review-i .status-badge{font-size:var(--text-ui-xs);font-weight:600;padding:var(--sp-px) var(--sp-2);border-radius:var(--radius-full);color:var(--color-primary-foreground);flex-shrink:0}
  .rf-review-i .status-badge.ok{background:var(--color-success)}
  .rf-review-i .body{color:var(--color-foreground-subtle);margin:var(--sp-1) 0 0 var(--sp-5);font-size:var(--text-ui-sm);line-height:1.7}
  .rf-review-i .meta-row{display:flex;align-items:center;gap:var(--sp-1-5);flex-wrap:wrap;margin-top:var(--sp-1-5);margin-left:var(--sp-5);font-family:var(--font-mono);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
  .rf-review-i .meta-row .mono-pill{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--sp-px) var(--sp-1-5);color:var(--color-foreground)}
  .rf-review-i .meta-row .goref{color:var(--color-brand);cursor:pointer;font-family:inherit;font-weight:600}
  .rf-review-i .meta-row .goref:hover{text-decoration:underline}
  /* V2.43：审阅过程弹窗（reviewer 全程） */
  .rf-rv-mask{position:fixed;inset:0;background:var(--color-overlay);z-index:9998;display:none;align-items:center;justify-content:center;animation:rfRvFade .18s ease-out}
  .rf-rv-mask.show{display:flex}
  @keyframes rfRvFade{from{opacity:0}to{opacity:1}}
  .rf-rv-mask .rf-rv{background:var(--color-panel);border-radius:var(--radius-xl);width:var(--content-max-fluid);max-height:86vh;display:flex;flex-direction:column;box-shadow:var(--shadow-xl);border:1px solid var(--color-border);overflow:hidden;animation:rfRvPop .22s ease-out}
  @keyframes rfRvPop{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
  .rf-rv-h{background:linear-gradient(180deg,var(--color-success-surface) 0%,var(--color-success-surface) 100%);border-bottom:1px solid color-mix(in oklab,var(--color-success) 25%,transparent);padding:var(--sp-3-5) var(--sp-4) var(--sp-3);display:flex;align-items:flex-start;gap:var(--sp-2-5);position:relative}
  .rf-rv-h .ico-wrap{width:var(--size-6);height:var(--size-6);border-radius:var(--radius);background:var(--color-card);border:1px solid color-mix(in oklab,var(--color-success) 30%,transparent);display:inline-flex;align-items:center;justify-content:center;color:var(--color-success);font-size:var(--text-ui-lg);flex-shrink:0}
  .rf-rv-h .title-text{font-size:var(--text-ui-lg);font-weight:600;color:var(--color-foreground);line-height:1.3}
  .rf-rv-h .sub-text{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);margin-top:var(--sp-1);line-height:1.5}
  .rf-rv-h .tag{position:absolute;top:14px;right:54px;background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--sp-1) var(--sp-2-5);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);font-family:var(--font-mono)}
  .rf-rv-h .cls{position:absolute;top:var(--sp-3);right:var(--sp-3-5);width:var(--control-h-7);height:var(--control-h-7);border-radius:var(--radius);background:var(--color-card);border:1px solid var(--color-border);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-foreground-subtle);font-size:var(--text-ui-lg);line-height:1}
  .rf-rv-h .cls:hover{border-color:var(--color-brand);color:var(--color-brand);background:var(--color-surface)}
  .rf-rv-b{padding:var(--sp-4) var(--sp-4);overflow-y:auto;background:var(--color-card);flex:1}
  .rf-rv-intro{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);line-height:1.65;margin-bottom:var(--sp-3-5);padding:var(--sp-2-5) var(--sp-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg)}
  .rf-rv-intro .lbl-text{font-size:var(--text-ui-xs);font-weight:600;color:var(--color-success);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--sp-1);display:flex;align-items:center;gap:var(--sp-1)}
  .rf-rv-intro .lbl-text::before{content:'';width:var(--sp-px);height:var(--sp-2-5);background:var(--color-success);border-radius:var(--radius-sm)}
  .rf-rv-grp{border-radius:var(--radius-lg);margin-bottom:var(--sp-3);overflow:hidden;background:var(--color-card)}
  .rf-rv-grp.pass{border:1px solid color-mix(in oklab,var(--color-success) 30%,transparent);background:linear-gradient(180deg,var(--color-success-surface) 0%,var(--color-success-surface) 100%)}
  .rf-rv-grp.fail{border:1px solid color-mix(in oklab,var(--color-destructive) 30%,transparent);background:linear-gradient(180deg,var(--color-destructive-surface) 0%,var(--color-destructive-surface) 100%)}
  .rf-rv-grp-h{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);font-size:var(--text-ui-sm);cursor:pointer;user-select:none}
  .rf-rv-grp-h .step-state{width:var(--size-4);height:var(--size-4);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-ui-sm);font-weight:600;color:var(--color-primary-foreground);flex-shrink:0}
  .rf-rv-grp.pass .rf-rv-grp-h .step-state{background:var(--color-success)}
  .rf-rv-grp.fail .rf-rv-grp-h .step-state{background:var(--color-destructive)}
  .rf-rv-grp-h .cnt{font-weight:600;color:var(--color-foreground)}
  .rf-rv-grp-h .spc{flex:1}
  .rf-rv-grp-h .step{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);font-family:var(--font-mono);display:inline-flex;align-items:center;gap:var(--sp-1)}
  .rf-rv-grp-h .arrow-ind{font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest);transition:transform .2s}
  .rf-rv-grp.open .rf-rv-grp-h .arrow-ind{transform:rotate(180deg)}
  .rf-rv-grp-b{padding:0 var(--sp-3) var(--sp-2-5);display:none}
  .rf-rv-grp.open .rf-rv-grp-b{display:block}
  .rf-rv-tool{display:grid;grid-template-columns:18px 36px 1fr auto auto;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-2-5);border-radius:var(--radius);margin-bottom:var(--sp-1);font-family:var(--font-mono);font-size:var(--text-ui-sm);color:var(--color-foreground);line-height:1.5;background:var(--color-card);border:1px solid var(--color-border)}
  .rf-rv-tool:last-child{margin-bottom:0}
  .rf-rv-tool .step-state{font-size:var(--text-ui-sm);font-weight:600;color:var(--color-success)}
  .rf-rv-tool .step-state.no{color:var(--color-destructive)}
  .rf-rv-tool .tool-name{font-family:var(--font-sans);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-sm);padding:var(--sp-px) var(--sp-2);justify-self:start}
  .rf-rv-tool .path{color:var(--color-foreground);word-break:break-all;font-size:var(--text-ui-sm)}
  .rf-rv-tool .out-summary{font-size:var(--text-ui-xs);color:var(--color-foreground-subtle);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--sp-px) var(--sp-2);font-family:inherit;white-space:nowrap}
  .rf-rv-tool .out-summary.no{color:var(--color-destructive);border-color:color-mix(in oklab,var(--color-destructive) 30%,transparent);background:var(--color-surface)}
  .rf-rv-tool .go{font-size:var(--text-ui-caption);color:var(--color-foreground-subtle);cursor:pointer;justify-self:end}
  .rf-rv-tool .go:hover{color:var(--color-brand)}
  .rf-rv-foot{padding:var(--sp-2-5) var(--sp-4);border-top:1px solid var(--color-border);display:flex;align-items:center;gap:var(--sp-1-5);background:var(--color-surface);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
  .rf-rv-foot .spc{flex:1}
  .rf-rv-foot .btn{padding:var(--sp-1) var(--sp-3);font-size:var(--text-ui-sm);border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-card);cursor:pointer;color:var(--color-foreground);font-weight:500}
  .rf-rv-foot .btn:hover{border-color:var(--color-brand);color:var(--color-brand)}
  /* V2.46：弹窗底部「关键审阅结果」区（紧跟工具组列表） */
  .rf-rv-summary{margin-top:var(--sp-3-5);padding:var(--sp-3-5) var(--sp-4);border:1px solid color-mix(in oklab,var(--color-success) 30%,transparent);border-radius:var(--radius-lg);background:linear-gradient(180deg,var(--color-success-surface) 0%,var(--color-success-surface) 100%)}
  .rf-rv-summary .sh{display:flex;align-items:center;gap:var(--sp-2);font-weight:600;color:var(--color-foreground);font-size:var(--text-ui-caption)}
  .rf-rv-summary .sh .stat{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);font-weight:500;background:var(--color-card);border:1px solid color-mix(in oklab,var(--color-success) 30%,transparent);border-radius:var(--radius-full);padding:var(--sp-px) var(--sp-2)}
  .rf-rv-summary .item{padding:var(--sp-3) 0;border-top:1px dashed color-mix(in oklab,var(--color-success) 30%,transparent);display:grid;grid-template-columns:60px 1fr;gap:var(--sp-2-5);align-items:start}
  .rf-rv-summary .item:first-of-type{border-top:none}
  .rf-rv-summary .item .status-badge{font-size:var(--text-ui-xs);font-weight:600;padding:var(--sp-0-5) var(--sp-2);border-radius:var(--radius-full);color:var(--color-primary-foreground);justify-self:start;margin-top:var(--sp-px)}
  .rf-rv-summary .item .status-badge.ok{background:var(--color-success)}
  .rf-rv-summary .item .status-badge.warn{background:var(--color-warning)}
  .rf-rv-summary .item .ttl{font-weight:600;color:var(--color-foreground);font-size:var(--text-ui-sm);margin-bottom:var(--sp-1);display:flex;align-items:center;gap:var(--sp-2)}
  .rf-rv-summary .item .desc-line{color:var(--color-foreground-subtle);font-size:var(--text-ui-sm);line-height:1.65}
  .rf-rv-summary .item .desc-line code{font-family:var(--font-mono);background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--sp-px) var(--sp-1);font-size:var(--text-ui-sm);color:var(--color-foreground)}
  .rf-rv-summary .item .src{color:var(--color-foreground-subtlest);font-family:var(--font-mono);font-size:var(--text-ui-sm);margin-top:var(--sp-1)}
  /* V2.46：tool row 可点击态 */
  .rf-rv-tool{cursor:pointer;transition:background .15s,border-color .15s}
  .rf-rv-tool:hover{background:var(--color-surface);border-color:var(--color-brand)}
  .rf-rv-tool .go{transition:color .15s,transform .15s}
  .rf-rv-tool:hover .go{color:var(--color-brand);transform:translate(1px,-1px)}
  /* V2.46：读取 / shell 独立弹窗（沿用同款浅薄荷绿主题） */
  .tr-mask{position:fixed;inset:0;background:var(--color-overlay);z-index:99999;display:none;align-items:center;justify-content:center;backdrop-filter:blur(2px)}
  .tr-mask.show{display:flex}
  .tr-popup{background:var(--color-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);border:1px solid var(--color-border);width:var(--dialog-w-xl);max-width:92vw;max-height:88vh;display:flex;flex-direction:column;overflow:hidden;animation:trpop .2s ease-out}
  @keyframes trpop{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
  .tr-h{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);background:linear-gradient(180deg,var(--color-success-surface) 0%,var(--color-success-surface) 100%);border-bottom:1px solid color-mix(in oklab,var(--color-success) 30%,transparent)}
  .tr-h .ico-wrap{width:var(--control-h-8);height:var(--control-h-8);border-radius:var(--radius-lg);background:var(--color-session-node);color:var(--color-session-node-foreground);display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-ui-lg);font-weight:600;flex-shrink:0}
  .tr-h .ico-wrap.shell{background:color-mix(in oklab,var(--color-brand) 10%,transparent);color:var(--color-brand)}
  .tr-h .main-area{flex:1;min-width:0}
  .tr-h .title-text{font-size:var(--text-ui-lg);font-weight:600;color:var(--color-foreground);display:flex;align-items:center;gap:var(--sp-2)}
  .tr-h .title-text .pill{font-size:var(--text-ui-sm);font-weight:500;color:var(--color-success);background:var(--color-card);border:1px solid color-mix(in oklab,var(--color-success) 30%,transparent);border-radius:var(--radius-full);padding:var(--sp-px) var(--sp-2)}
  .tr-h .sub-text{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);font-family:var(--font-mono);margin-top:var(--sp-0-5);word-break:break-all;line-height:1.5}
  .tr-h .cls{width:var(--control-h-7);height:var(--control-h-7);border-radius:var(--radius);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-foreground-subtle);font-size:var(--text-ui-lg);background:var(--color-card);border:1px solid var(--color-border)}
  .tr-h .cls:hover{border-color:var(--color-brand);color:var(--color-brand)}
  .tr-b{flex:1;overflow:auto;padding:var(--sp-4) var(--sp-5)}
  .tr-sec{margin-bottom:var(--sp-4)}
  .tr-sec:last-child{margin-bottom:0}
  .tr-sec .lbl-text{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);margin-bottom:var(--sp-2);font-weight:600;text-transform:uppercase;letter-spacing:.5px}
  .tr-sec .row{display:flex;gap:var(--sp-2-5);padding:var(--sp-2) var(--sp-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);font-family:var(--font-mono);font-size:var(--text-ui-sm)}
  .tr-sec .row .stat-k{color:var(--color-foreground-subtle);width:calc(var(--sp-16) + var(--sp-4));flex-shrink:0}
  .tr-sec .row .stat-v{color:var(--color-foreground);word-break:break-all}
  .tr-sec pre{margin:0;background:var(--color-foreground);color:var(--color-border);padding:var(--sp-3-5) var(--sp-4);border-radius:var(--radius);font-family:var(--font-mono);font-size:var(--text-ui-sm);line-height:1.7;overflow:auto;max-height:50vh;white-space:pre}
  /* 单步推荐卡：含代码块 + 操作按钮 */
  .rf-next{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-panel);margin-top:var(--sp-2-5);overflow:hidden}
  .rf-next-h{display:flex;align-items:center;gap:var(--sp-2-5);padding:var(--sp-2-5) var(--sp-3-5);border-bottom:1px solid var(--color-border)}
  .rf-next-h .ico-mark{width:var(--control-h-6);height:var(--control-h-6);border-radius:var(--radius);background:color-mix(in oklab,var(--color-brand) 10%,transparent);color:var(--color-brand);display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-ui-caption);flex-shrink:0}
  .rf-next-h .main-area{flex:1;min-width:0}
  .rf-next-h .title-text{font-size:var(--text-ui-caption);font-weight:600;color:var(--color-foreground);display:flex;align-items:center;gap:var(--sp-2)}
  .rf-next-h .sub-text{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);margin-top:var(--sp-px)}
  .rf-next-h .open{width:var(--control-h-7);height:var(--control-h-7);border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-card);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--color-foreground-subtle)}
  .rf-next-h .open:hover{border-color:var(--color-brand);color:var(--color-brand)}
  .rf-next-b{padding:var(--sp-3) var(--sp-3-5)}
  .rf-next-b .rf-p{font-size:var(--text-ui-caption)}
  .rf-next-h2{font-size:var(--text-ui-base);font-weight:600;color:var(--color-foreground);margin:var(--sp-2) 0}
  .rf-codebox{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-5);font-family:var(--font-mono);font-size:var(--text-ui-sm);line-height:1.55;white-space:pre;overflow-x:auto;margin:var(--sp-2) 0}
  .rf-codebox .kw{color:var(--color-syntax-keyword)}
  .rf-codebox .cm{color:var(--color-syntax-comment);font-style:italic}
  .rf-codebox .str{color:var(--color-syntax-string)}
  .rf-codebar{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);margin-bottom:var(--sp-1)}
  .rf-codebar .lang{font-family:var(--font-mono);font-size:var(--text-ui-sm)}
  .rf-codebar .run{margin-left:auto;color:var(--color-success);font-weight:600;display:inline-flex;align-items:center;gap:var(--sp-1);cursor:pointer}
  .rf-codebar .copy{color:var(--color-foreground-subtle);font-size:var(--text-ui-base)}
  .rf-next-act{display:flex;align-items:center;gap:var(--sp-1-5);margin-top:var(--sp-2);flex-wrap:wrap}
  .rf-next-act .btn{padding:var(--sp-1) var(--sp-2-5);font-size:var(--text-ui-sm);border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-card);cursor:pointer;color:var(--color-foreground);display:inline-flex;align-items:center;gap:var(--sp-1);font-weight:500}
  .rf-next-act .btn:hover{border-color:var(--color-brand);color:var(--color-brand)}
  .rf-next-act .expand{margin-left:auto;color:var(--color-foreground-subtle);font-size:var(--text-ui-sm);cursor:pointer}
  .rf-next-act .expand:hover{color:var(--color-foreground)}
  /* 「后续建议」列表（提问底部） */
  .rf-suggest{margin-top:var(--sp-2)}
  .rf-suggest-h{display:flex;align-items:center;gap:var(--sp-1-5);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);margin-bottom:var(--sp-1-5);font-weight:600}
  .rf-suggest-h .refresh{margin-left:auto;cursor:pointer;color:var(--color-foreground-subtlest);font-size:var(--text-ui-base)}
  .rf-suggest-h .refresh:hover{color:var(--color-foreground)}
  .rf-suggest-i{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-2-5);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-card);margin-bottom:var(--sp-1-5);font-size:var(--text-ui-sm);color:var(--color-foreground);cursor:pointer}
  .rf-suggest-i:hover{border-color:var(--color-brand);background:var(--color-surface)}
  .rf-suggest-i .arrow-ind{color:var(--color-foreground-subtle);font-size:var(--text-ui-caption)}
  .rf-suggest-i .tt{flex:1;min-width:0;line-height:1.5}

  /* ============ 审批 — 对标 Codex ApprovalCard（pending-request-item-panel / data-codex-approval-surface） ============ */
  .rf-approval-layer{display:none;margin:0 auto;width:100%;max-width:none;padding:0 var(--sp-4) var(--sp-4);box-sizing:border-box;animation:rfApvIn .22s ease-out;position:relative}
  @container conversation (min-width:864px){
    .rf-approval-layer{width:calc(100% - 6rem);max-width:48rem}
  }
  @container conversation (min-width:1280px){
    .rf-approval-layer{width:calc(100% - 6rem);max-width:48rem}
  }
  .rf-approval-layer.show{display:block}
  .rf-tool-apv-dock{padding-bottom:var(--sp-2)}
  @keyframes rfApvIn{from{opacity:0}to{opacity:1}}
  .wait-badge{display:inline-flex;height:var(--size-5);align-items:center;border-radius:var(--radius-full);background:var(--color-interaction-confirmation-surface);color:var(--color-interaction-confirmation-foreground);padding:0 var(--sp-2);font-size:var(--text-ui-sm);font-weight:500;border:1px solid transparent}

  /* ApprovalCard 壳：rounded-3xl border，卡片表面（搭在 Composer 正上方同宽） */
  .cdx-apv{
    container:approval-card/inline-size;
    display:flex;flex-direction:column;overflow:hidden;outline:none;
    border:1px solid var(--color-border);border-radius:var(--radius-3xl);
    background:var(--color-card);color:var(--color-foreground);box-shadow:var(--elevation-composer);
  }
  .cdx-apv:focus-visible{outline:none}
  /* 内容区：flex-col gap-2 overflow-y-auto px-4 pt-4 pb-3 */
  .cdx-apv-scroll{display:flex;flex-direction:column;gap:var(--sp-2);min-height:0;min-width:0;overflow-y:auto;overscroll-behavior:contain;padding:var(--sp-4) var(--sp-4) var(--sp-3)}
  .cdx-apv-head{display:flex;flex-direction:column;gap:var(--sp-2)}
  /* label 行：icon-sm + text-size-chat-sm text-secondary */
  .cdx-apv-label{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-ui-sm);line-height:1.45;color:var(--color-foreground-subtle)}
  .cdx-apv-label svg{width:var(--size-4);height:var(--size-4);flex-shrink:0}
  .cdx-apv-title{margin:0;font-size:var(--text-ui-base);font-weight:500;line-height:1.45;color:var(--color-foreground)}
  .cdx-apv-sub{margin:0;font-size:var(--text-ui-base);line-height:1.5;color:var(--color-foreground-subtle);overflow-wrap:anywhere}
  .cdx-apv-sub b{font-weight:500;color:var(--color-foreground)}
  /* 命令预览框：rounded-md bg-surface-tertiary text-code，内部 mono 滚动 */
  .cdx-apv-cmd{display:flex;flex-direction:column;width:100%;max-height:20rem;overflow:hidden;border-radius:var(--radius-md);background:var(--color-surface-tertiary)}
  .cdx-apv-cmd-scroll{min-height:0;overflow-y:auto;padding:var(--sp-2);font-size:var(--text-ui-sm);line-height:1.55}
  .cdx-apv-cmd-scroll code{font-family:var(--font-mono);font-weight:500;color:var(--color-foreground);white-space:pre-wrap;overflow-wrap:anywhere}
  /* 查看参数（沿用参数表样式） */
  .cdx-apv-params{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);cursor:pointer;margin:0;display:inline-flex;align-items:center;gap:var(--sp-1);background:none;border:0;padding:0;font-weight:500;min-height:var(--control-h-7);align-self:flex-start}
  .cdx-apv-params:hover{color:var(--color-foreground)}
  .cdx-apv-params .arrow-ind{display:inline-flex;transition:transform .18s ease;color:var(--color-foreground-subtlest);line-height:0}
  .cdx-apv.show-params .cdx-apv-params .arrow-ind{transform:rotate(90deg)}
  .cdx-apv .rf-ta-params-list{display:none;margin:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--sp-1) 0;animation:rfParamsIn .18s ease-out}
  .cdx-apv.show-params .rf-ta-params-list{display:block}
  .rf-ta-params-list table{width:100%;border-collapse:collapse;font-size:var(--text-ui-sm);font-family:var(--font-sans)}
  .rf-ta-params-list th{text-align:left;font-weight:500;color:var(--color-foreground-subtlest);font-size:var(--text-ui-xs);text-transform:none;letter-spacing:0;padding:var(--sp-1) var(--sp-3);border-bottom:1px solid var(--color-border)}
  .rf-ta-params-list td{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);vertical-align:top;color:var(--color-foreground)}
  .rf-ta-params-list tr:last-child td{border-bottom:none}
  .rf-ta-params-list td.pn{font-family:var(--font-mono);font-weight:500;color:var(--color-foreground);white-space:nowrap}
  .rf-ta-params-list td.pn .req{color:var(--color-destructive);margin-left:var(--sp-0-5);font-weight:600}
  .rf-ta-params-list td.pt{white-space:nowrap}
  .rf-ta-params-list td.pt .tchip{display:inline-block;font-family:var(--font-mono);font-size:var(--text-ui-xs);padding:var(--sp-px) var(--sp-1-5);border-radius:var(--radius-sm);background:var(--color-card);border:1px solid var(--color-border);color:var(--color-foreground-subtle)}
  .rf-ta-params-list td.pv{font-family:var(--font-mono);font-size:var(--text-ui-sm);color:var(--color-foreground);word-break:break-all;max-width:var(--content-w-xs)}
  .rf-ta-params-list td.pv .vnull{color:var(--color-foreground-subtlest);font-style:italic}
  .rf-ta-params-list td.pd{color:var(--color-foreground-subtle);font-size:var(--text-ui-sm);line-height:1.45;max-width:var(--popover-w-md)}
  @keyframes rfParamsIn{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}
  /* 底部：form flex items-center gap-2 px-4 pt-2 pb-4；右侧 ms-auto */
  .cdx-apv-foot{display:flex;align-items:center;gap:var(--sp-2);flex-shrink:0;padding:var(--sp-2) var(--sp-4) var(--sp-4)}
  .cdx-apv-foot-r{margin-left:auto;display:flex;align-items:center;gap:var(--sp-2);min-width:0}
  @container approval-card not (width>=28rem){
    .cdx-apv-foot{justify-content:flex-end}
    .cdx-apv-foot>.cdx-btn{display:none}
    .cdx-apv-foot-r{margin-left:0;width:100%;align-items:stretch}
    .cdx-apv-foot-r>.cdx-btn{flex:1;min-width:0;justify-content:center}
    .cdx-apv-foot-r .cdx-split{flex:2;min-width:0}
    .cdx-split>.cdx-btn:first-child{flex:1;min-width:0;justify-content:center}
  }
  /* Button size=composer：h-8 rounded-lg */
  .cdx-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-1);height:var(--control-h-8);padding:0 var(--sp-2-5);border-radius:var(--radius-lg);font-size:var(--text-ui-base);font-weight:500;cursor:pointer;border:1px solid var(--color-border);background:transparent;color:var(--color-foreground);white-space:nowrap}
  .cdx-btn.outline:hover{background:var(--color-hover)}
  .cdx-btn.primary{background:var(--color-brand);color:var(--color-foreground-inverse);border-color:transparent}
  .cdx-btn.primary:hover{background:color-mix(in oklab,var(--color-brand) 80%,transparent)}
  .cdx-btn:focus-visible{outline:2px solid var(--color-input-border-focused);outline-offset:2px}
  .cdx-btn .cdx-btn-t{overflow:hidden;text-overflow:ellipsis}
  /* 分裂钮：primary 主体 + 同高 chevron，中缝 hairline */
  .cdx-split{position:relative;display:inline-flex;min-width:0}
  .cdx-split>.cdx-btn.primary:first-child{border-radius:var(--radius-lg) 0 0 var(--radius-lg)}
  .cdx-split-chev{flex:0 0 var(--size-8);width:var(--size-8);box-sizing:border-box;border-radius:0 var(--radius-lg) var(--radius-lg) 0;padding:0;border-left:1px solid color-mix(in oklab,var(--color-foreground-inverse) 24%,transparent)}
  .cdx-split-chev svg{width:var(--size-3-5);height:var(--size-3-5)}
  /* 审批选项菜单：向上弹出，菜单表面 bg-menu */
  .cdx-apv-menu{position:absolute;bottom:calc(100% + var(--sp-1));right:0;min-width:var(--popover-w-md);display:flex;flex-direction:column;gap:var(--sp-0-5);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);z-index:80}
  .cdx-apv-menu[hidden]{display:none}
  .cdx-apv-mi{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-px);width:100%;padding:var(--sp-1-5) var(--sp-2);border:0;border-radius:var(--radius-md);background:transparent;color:var(--color-foreground);font-size:var(--text-ui-base);cursor:pointer;text-align:left}
  .cdx-apv-mi:hover{background:var(--color-menu-hover)}
  .cdx-apv-mi-d{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
  .cdx-apv.cdx-apv-compact{container-type:normal;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--radius-xl);overflow:visible}
  .cdx-compact-summary{display:flex;flex-direction:column;gap:var(--sp-1);min-width:0;padding:0;border:0;background:transparent;text-align:left;font:inherit;color:var(--color-foreground);cursor:pointer}
  .cdx-compact-label{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-ui-base);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
  .cdx-compact-label svg{width:var(--size-4);height:var(--size-4);flex-shrink:0}
  .cdx-compact-command{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-left:var(--sp-6);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
  .cdx-compact-summary{cursor:default}
  .cdx-compact-command-row{display:flex;align-items:center;gap:var(--sp-2);min-width:0;padding-left:var(--sp-6)}
  .cdx-compact-command-row .cdx-compact-command{min-width:0;padding-left:0}
  .cdx-permission-learn{flex-shrink:0;padding:0;border:0;background:transparent;color:var(--color-foreground-subtle);font:inherit;font-size:var(--text-ui-sm);cursor:pointer;white-space:nowrap}
  .cdx-permission-learn:hover{color:var(--color-foreground);text-decoration:underline}
  .cdx-permission-learn:focus-visible{outline:2px solid var(--color-ring);outline-offset:2px;border-radius:var(--radius-sm)}
  .cdx-apv-compact .cdx-apv-foot-r{margin:0}
  .cdx-apv-compact .cdx-split-chev{position:relative;border-left:0}
  .cdx-apv-compact .cdx-split-chev::before{content:"";position:absolute;left:0;top:25%;height:50%;width:1px;background:color-mix(in srgb,var(--color-foreground-inverse) 35%,transparent);pointer-events:none}
  .cdx-apv-compact kbd{font:inherit;font-size:var(--text-ui-xs);color:var(--color-foreground-subtle);margin-left:var(--sp-1)}
  .cdx-apv-compact .cdx-apv-menu{width:20rem;max-width:calc(100vw - var(--sp-8));padding:var(--sp-2);border-radius:var(--radius-xl)}
  .cdx-apv-mi[aria-checked="true"]{background:var(--color-menu-hover)}
  .cdx-compact-summary:focus-visible{outline:2px solid var(--color-ring);outline-offset:4px;border-radius:var(--radius-sm)}
  @media(max-width:600px){.cdx-apv.cdx-apv-compact{grid-template-columns:minmax(0,1fr)}.cdx-apv-compact .cdx-apv-foot-r{justify-content:flex-end}}

  /* ============ 笔记本 ============ */
  /* ============ 笔记本（表面语言对齐 settings/editor） ============ */
  .nb{display:flex;height:100%;background:var(--color-panel);border-radius:inherit;overflow:hidden}
  .nb-main{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--color-background)}
  .nb-bar{padding:0 var(--sp-4);height:var(--sp-10);border-bottom:1px solid var(--color-border);display:flex;align-items:center;gap:var(--sp-2);background:var(--color-panel);flex-shrink:0}
  .nb-bar .btn{height:var(--control-h-7);padding:0 var(--sp-2-5);font-size:var(--text-ui-sm)}
  .nb-cell{border-bottom:1px solid var(--color-border)}
  .nb-md{padding:var(--sp-3-5) var(--sp-4);font-size:var(--text-ui-base);line-height:1.65;color:var(--color-foreground)}
  .nb-code{display:grid;grid-template-columns:44px 1fr;background:var(--color-code-bg)}
  .nb-gutter{background:color-mix(in oklab,var(--color-code-bg) 88%,var(--color-foreground));color:var(--color-foreground-subtlest);font-size:var(--text-ui-xs);text-align:right;padding:var(--sp-2-5) var(--sp-2);font-family:var(--font-mono)}
  .nb-code pre{margin:0;padding:var(--sp-2-5) var(--sp-3);color:var(--color-code-fg);font-family:var(--font-mono);font-size:var(--text-ui-sm);line-height:1.55;overflow-x:auto;white-space:pre}
  .nb-out{background:var(--color-surface);padding:var(--sp-2-5) var(--sp-4);border-top:1px solid var(--color-border);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
  .nb-out .lab{font-size:var(--text-ui-xs);font-weight:500;color:var(--color-foreground-subtlest);text-transform:none;letter-spacing:0;margin-bottom:var(--sp-1-5)}
  .nb-side{width:var(--content-w-md);border-left:1px solid var(--color-border);background:var(--color-background);display:flex;flex-direction:column}
  .nb-side .sh{padding:0 var(--sp-3);height:var(--sp-10);border-bottom:1px solid var(--color-border);font-weight:500;font-size:var(--text-ui-base);display:flex;align-items:center;gap:var(--sp-2);background:var(--color-panel);color:var(--color-foreground)}
  .cp-body{flex:1;min-height:0;overflow-y:auto;padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-3)}
  .cp-sync-h{display:flex;align-items:center;gap:var(--sp-1-5);font-size:var(--text-ui-xs);color:var(--color-foreground-subtlest);white-space:nowrap}
  .cp-sync-h .dot-mark{width:var(--sp-2);height:var(--sp-2);border-radius:50%;background:var(--color-success);flex-shrink:0}
  .cp-sync-h .live{color:var(--color-success)}
  .cp-msg{display:flex;gap:var(--sp-2);align-items:flex-start;min-width:0}
  .cp-av{width:var(--size-6);height:var(--size-6);border-radius:var(--radius-md);background:var(--color-secondary);color:var(--color-foreground);display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-ui-xs);font-weight:600;flex-shrink:0;line-height:0}
  .cp-bub{min-width:0;flex:1;font-size:var(--text-ui-sm);line-height:1.55;color:var(--color-foreground)}
  .cp-txt{font-size:var(--text-ui-sm);line-height:1.55;color:var(--color-foreground)}
  .nb-cell.run-injected{border-top:2px solid var(--color-warning);border-bottom:1px solid var(--color-border);background:linear-gradient(180deg,color-mix(in oklab,var(--color-warning) 5%,transparent),var(--color-card))}
  .nb-cell.run-injected .nb-code{background:var(--color-code-bg);position:relative}
  .nb-cell.run-injected .nb-tag{position:absolute;top:8px;right:12px;font-size:var(--text-ui-xs);font-weight:600;color:var(--color-warning);background:var(--color-card);border:1px solid color-mix(in oklab,var(--color-warning) 40%,transparent);border-radius:var(--radius-md);padding:var(--sp-px) var(--sp-2)}
  .nb-out.pending{border-top-color:var(--color-brand)}
  .nb-out .ok{color:var(--color-success);font-weight:500}
  .nb-run-empty{color:var(--color-foreground-subtle);font-size:var(--text-ui-sm);line-height:1.7}
  .nb-files{width:var(--content-w-sm);border-right:1px solid var(--color-border);background:var(--color-background);display:flex;flex-direction:column;flex-shrink:0}
  .nb-files-h{padding:0 var(--sp-3);height:var(--sp-10);border-bottom:1px solid var(--color-border);font-weight:500;font-size:var(--text-ui-sm);letter-spacing:0;color:var(--color-foreground-subtlest);text-transform:none;display:flex;align-items:center;gap:var(--sp-1-5);background:var(--color-panel)}
  .nb-files-h .refresh{margin-left:auto;cursor:pointer;font-size:var(--text-ui-base);color:var(--color-foreground-subtle);opacity:.7;border:none;background:transparent;width:var(--size-7);height:var(--control-h-7);border-radius:var(--radius-md);display:inline-flex;align-items:center;justify-content:center}
  .nb-files-h .refresh:hover{opacity:1;color:var(--color-foreground);background:var(--color-hover)}
  .nb-files-b{flex:1;overflow-y:auto;padding:var(--sp-1)}
  .nb-file-item{display:flex;align-items:center;gap:var(--sp-2);min-height:var(--control-h-7);padding:0 var(--sp-2);border-radius:var(--radius-lg);border:1px solid transparent;cursor:pointer;font-size:var(--text-ui-base);color:var(--color-foreground-subtle);transition:background-color .1s,color .1s}
  .nb-file-item:hover{background:var(--color-hover);color:var(--color-foreground)}
  .nb-file-item.active{background:var(--color-selected);color:var(--color-foreground)}
  .nb-file-item .fi-icon{font-size:var(--text-ui-base);width:var(--size-4);text-align:center;flex-shrink:0;color:var(--color-foreground-subtlest)}
  .nb-file-item .fi-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .nb-file-item .fi-meta{font-size:var(--text-ui-xs);color:var(--color-foreground-subtlest);flex-shrink:0}
  .nb-files-search{padding:var(--sp-1-5) var(--sp-2) 0}
  .nb-files-search input{width:100%;height:var(--control-h-7);border:1px solid var(--color-input-border);border-radius:var(--radius-md);padding:0 var(--sp-2);font-size:var(--text-ui-sm);background:var(--color-input);outline:none;color:var(--color-foreground);box-sizing:border-box}
  .nb-files-search input:focus{border-color:var(--color-input-border-focused)}
  .nb-crumbs{padding:var(--sp-1-5) var(--sp-2-5);border-bottom:1px solid var(--color-border);background:var(--color-surface);display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-0-5);font-size:var(--text-ui-sm)}
  .nb-crumb{padding:var(--sp-0-5) var(--sp-1-5);border-radius:var(--radius-md);cursor:pointer;color:var(--color-foreground-subtle);white-space:nowrap}
  .nb-crumb:hover{background:var(--color-hover);color:var(--color-foreground)}
  .nb-crumb.root{color:var(--color-brand);font-weight:500}
  .nb-crumb.cur{color:var(--color-foreground);font-weight:500;cursor:default}
  .nb-crumb.cur:hover{background:transparent;color:var(--color-foreground)}
  .nb-crumb-sep{color:var(--color-foreground-subtlest);font-size:var(--text-ui-xs)}
  .nb-open-fm{margin:var(--sp-2);padding:var(--sp-2) var(--sp-2-5);border:1px dashed var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);cursor:pointer;display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
  .nb-open-fm:hover{border-color:var(--color-border-hover);color:var(--color-foreground);background:var(--color-hover)}
  .nb-open-fm .fm-ic{font-size:var(--text-ui-base)}
  .nb-folder-up{display:flex;align-items:center;gap:var(--sp-2);min-height:var(--control-h-7);padding:0 var(--sp-2);border-radius:var(--radius-lg);cursor:pointer;font-size:var(--text-ui-base);color:var(--color-foreground-subtle);margin-bottom:var(--sp-0-5)}
  .nb-folder-up:hover{background:var(--color-hover);color:var(--color-foreground)}
  .nb-file-item.dir{font-weight:500}
  .nb-file-item.dir .fi-name{color:var(--color-foreground)}
  .nb-file-item .fi-size{font-size:var(--text-ui-xs);color:var(--color-foreground-subtlest);margin-left:auto;flex-shrink:0}
  .nb-cell-h{display:flex;align-items:center;justify-content:space-between;padding:0 var(--sp-3);background:var(--color-surface);border-bottom:1px solid var(--color-border);min-height:var(--control-h-8)}
  .nb-cell-h-left{display:flex;align-items:center;gap:var(--sp-1-5);font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest)}
  .nb-cell-type{padding:var(--sp-px) var(--sp-2);border-radius:var(--radius-full);font-size:var(--text-ui-xs);font-weight:500;cursor:pointer;background:var(--color-tag);color:var(--color-foreground-subtle);height:var(--size-5);display:inline-flex;align-items:center}
  .nb-cell-type.code{background:var(--color-interaction-ask-surface);color:var(--color-interaction-ask-foreground)}
  .nb-cell-type.md{background:color-mix(in oklab,var(--color-skill-node-foreground) 12%,transparent);color:var(--color-skill-node-foreground)}
  .nb-cell-h-right{display:flex;align-items:center;gap:var(--sp-1)}
  .nb-cell-run{width:var(--size-6);height:var(--control-h-6);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-card);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);transition:.12s;flex-shrink:0}
  .nb-cell-run:hover{border-color:color-mix(in oklab,var(--color-success) 40%,transparent);color:var(--color-success);background:var(--color-success-surface)}
  .nb-cell-run.running{background:var(--color-warning);border-color:var(--color-warning);color:var(--color-primary-foreground);animation:nbpulse 1s infinite}
  .nb-cell-run.success{background:var(--color-success);border-color:var(--color-success);color:var(--color-primary-foreground)}
  .nb-cell-run.error{background:var(--color-destructive);border-color:var(--color-destructive);color:var(--color-primary-foreground)}
  .nb-cell[data-status="idle"] .nb-out{display:none}
  .nb-cell[data-status="running"] .nb-out{display:block;border-top-color:var(--color-brand)}
  .nb-cell[data-status="success"] .nb-out{display:block;border-top-style:solid;border-top-color:var(--color-success)}
  .nb-cell[data-status="error"] .nb-out{display:block}
  .nb-main-empty{flex:1;display:flex;align-items:center;justify-content:center;background:var(--color-background)}
  .nb-no-open{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2-5);text-align:center;padding:var(--sp-10) var(--sp-6)}
  .nb-no-ic{font-size:var(--text-display);opacity:.4}
  .price-card .price{font-size:var(--text-display);font-weight:600;margin:var(--sp-2-5) 0 var(--sp-1);color:var(--color-foreground);letter-spacing:-.02em}
  .doc-content h1{font-size:var(--text-display-sm);font-weight:600;color:var(--color-foreground);margin:0 0 var(--sp-1-5);letter-spacing:-.02em}
  .nb-no-t{font-size:var(--text-ui-lg);font-weight:600;color:var(--color-foreground);margin-top:4px}
  .nb-no-d{max-width:var(--content-w-xl);font-size:var(--text-ui-sm);line-height:1.7;color:var(--color-foreground-subtle)}
  .nb-tabs{display:flex;align-items:center;gap:var(--sp-1);padding:var(--sp-2) var(--sp-3) 0;border-bottom:1px solid var(--color-border);background:var(--color-panel)}
  .nb-tab{display:inline-flex;align-items:center;gap:var(--sp-1-5);height:var(--control-h-7);padding:0 var(--sp-2-5);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);background:transparent;border:1px solid transparent;border-radius:var(--radius-md) var(--radius-md) 0 0;cursor:pointer;max-width:var(--popover-w-md)}
  .nb-tab.active{background:var(--color-background);color:var(--color-foreground);border-color:var(--color-border);border-bottom-color:var(--color-background);font-weight:500;position:relative;top:1px}
  .nb-tab-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .nb-tab-close{width:var(--size-4);height:var(--size-4);border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest);opacity:0;transition:.15s;flex-shrink:0;border:none;background:transparent;cursor:pointer}
  .nb-tab:hover .nb-tab-close{opacity:1}
  .nb-tab-close:hover{background:var(--color-hover);color:var(--color-foreground)}
  .nb-tab-new{margin-left:auto;height:var(--control-h-7);padding:0 var(--sp-2-5);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer}
  .nb-tab-new:hover{border-color:var(--color-border-hover);color:var(--color-foreground);background:var(--color-hover)}
  .nb-placeholder{color:var(--color-foreground-subtlest)!important}
  .nb-error{background:var(--color-destructive-surface);border:1px solid color-mix(in oklab,var(--color-destructive) 35%,transparent);border-radius:var(--radius-lg);padding:var(--sp-3);margin:var(--sp-2) var(--sp-3-5);font-family:var(--font-mono);font-size:var(--text-ui-sm);line-height:1.6;color:var(--color-destructive);position:relative}
  .nb-error::before{content:'✕';position:absolute;top:-7px;left:10px;background:var(--color-destructive);color:var(--color-primary-foreground);width:var(--size-4);height:var(--size-4);border-radius:var(--radius-full);font-size:var(--text-ui-xs);display:flex;align-items:center;justify-content:center;font-weight:600}
  .nb-error-title{font-weight:600;font-size:var(--text-ui-sm);margin-bottom:var(--sp-1-5);color:var(--color-destructive);display:flex;align-items:center;gap:var(--sp-1-5)}
  .nb-error-title .err-tag{background:var(--color-destructive);color:var(--color-primary-foreground);padding:var(--sp-px) var(--sp-1-5);border-radius:var(--radius-full);font-size:var(--text-ui-xs);font-weight:600}
  .nb-error-tb{color:color-mix(in oklab,var(--color-destructive) 70%,var(--color-foreground));white-space:pre-wrap;word-break:break-all;font-size:var(--text-ui-xs)}
  .nb-error-file{color:var(--color-warning);font-size:var(--text-ui-xs)}
  .nb-error-line{color:var(--color-destructive);font-weight:600}

  @keyframes nbpulse{0%,100%{opacity:1}50%{opacity:.55}}

  /* ============ 全页视图表面语言（对标 ZCode SettingsSegmentedTabs） ============ */
  /* 分段轨：h-8 surface + h-7 rounded-full pill；active = background */
  .seg-track,.astabs,.stabs,.agent-tabs,.page-tabs,.mtabs-seg,.billing-seg{display:inline-flex;align-items:center;gap:0;height:var(--control-h-8);padding:var(--sp-0-5);border-radius:var(--radius-full);background:var(--color-surface);margin-bottom:var(--sp-5);max-width:100%;box-sizing:border-box}
  .page-tab,.astab,.mtab,.stab,.atab{height:var(--control-h-7);display:inline-flex;align-items:center;gap:var(--sp-1-5);padding:0 var(--sp-2-5);border-radius:var(--radius-full);cursor:pointer;font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground-subtle);border:1px solid transparent;background:transparent;transition:color .12s,background-color .12s;white-space:nowrap}
  .page-tab:hover,.astab:hover,.mtab:hover,.stab:hover,.atab:hover{color:var(--color-foreground);background:transparent}
  .page-tab.on,.astab.on,.mtab.on,.stab.on,.atab.on{color:var(--color-foreground);background:var(--color-background);border-color:transparent;box-shadow:none}
  .astab .label-num{margin-left:var(--sp-1);font-size:var(--text-ui-xs);font-weight:600;padding:var(--sp-px) var(--sp-1-5);border-radius:var(--radius-full);background:var(--color-destructive);color:var(--color-primary-foreground);line-height:1.2}
  /* 管理页：左侧分段 + 右侧主按钮 */
  .mtabs{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-5);flex-wrap:wrap;background:transparent;height:auto;padding:0;border-radius:0}
  .mtabs .mtabs-seg{margin-bottom:0}
  .billing-seg{margin-bottom:var(--sp-5)}
  .billing-seg .chip{height:var(--control-h-7);border:1px solid transparent;border-radius:var(--radius-full);background:transparent;padding:0 var(--sp-3)}
  .billing-seg .chip:hover{background:transparent;border-color:transparent;color:var(--color-foreground)}
  .billing-seg .chip.on{background:var(--color-background);border-color:transparent;color:var(--color-foreground);font-weight:500}
  .plans-lead{text-align:center;margin-bottom:var(--sp-5);color:var(--color-foreground-subtle);font-size:var(--text-ui-sm);line-height:1.55;max-width:42rem;margin-left:auto;margin-right:auto}

  /* 管理统计条 */
  .mstat{display:flex;gap:var(--sp-3);margin-bottom:var(--sp-5);flex-wrap:wrap}
  .mstat .stat-s{background:var(--color-card);border:1px solid var(--color-card-border);border-radius:var(--radius-xl);padding:var(--sp-3) var(--sp-4);min-width:var(--kbd-min)}
  .mstat .stat-s .stat-v{font-size:var(--text-ui-xl);font-weight:600;color:var(--color-foreground);line-height:1.2}
  .mstat .stat-s .stat-l{font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest);margin-top:var(--sp-1)}

  /* 表格统一 */
  .mtable,.utable{width:100%;border-collapse:collapse;font-size:var(--text-ui-base)}
  .mtable th,.utable th{text-align:left;padding:var(--sp-2-5) var(--sp-3);font-size:var(--text-ui-sm);font-weight:500;color:var(--color-foreground-subtlest);border-bottom:1px solid var(--color-border);background:var(--color-surface)}
  .mtable td,.utable td{padding:var(--sp-2-5) var(--sp-3);border-bottom:1px solid var(--color-border);vertical-align:middle;color:var(--color-foreground)}
  .mtable tr:hover td,.utable tr:hover td{background:var(--color-hover)}
  .table-wrap{border:1px solid var(--color-border);border-radius:var(--radius-xl);overflow:hidden;background:var(--color-card)}

  .mbadge{display:inline-flex;align-items:center;font-size:var(--text-ui-xs);font-weight:500;padding:var(--sp-0-5) var(--sp-2);border-radius:var(--radius-full);white-space:nowrap;height:var(--size-5)}
  .mbadge.admin{background:var(--color-destructive-surface);color:var(--color-destructive)}
  .mbadge.researcher{background:var(--color-interaction-ask-surface);color:var(--color-interaction-ask-foreground)}
  .mbadge.student{background:var(--color-success-surface);color:var(--color-success)}
  .mbadge.guest{background:var(--color-surface);color:var(--color-foreground-subtle)}
  .mbadge.active{background:var(--color-success-surface);color:var(--color-success)}
  .mbadge.archived{background:var(--color-surface);color:var(--color-foreground-subtlest)}
  /* 等待审批 = confirmation 绿（AGENTS.md；禁 warning 橙） */
  .mbadge.pending{background:var(--color-interaction-confirmation-surface);color:var(--color-interaction-confirmation-foreground)}
  .mbtn{font-size:var(--text-ui-sm);height:var(--control-h-7);padding:0 var(--sp-2-5);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-card);cursor:pointer;color:var(--color-foreground-subtle);display:inline-flex;align-items:center}
  .mbtn:hover{border-color:var(--color-border-hover);color:var(--color-foreground);background:var(--color-surface-hover)}
  .mbtn.danger:hover{border-color:color-mix(in oklab,var(--color-destructive) 40%,transparent);color:var(--color-destructive);background:var(--color-destructive-surface)}
  .mact{display:flex;gap:var(--sp-1-5)}

  /* 用量概览 */
  .uoverview{display:flex;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-5)}
  .uocard{background:var(--color-card);border:1px solid var(--color-card-border);border-radius:var(--radius-xl);padding:var(--sp-4);flex:1;min-width:var(--popover-w-sm)}
  .uocard .stat-l{font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest);margin-bottom:var(--sp-1-5);font-weight:500}
  .uocard .stat-v{font-size:var(--text-ui-xl);font-weight:600;color:var(--color-foreground);letter-spacing:-.02em}
  .uocard .stat-v .unit{font-size:var(--text-ui-sm);font-weight:500;color:var(--color-foreground-subtle);margin-left:4px}
  .uprogress{height:var(--sp-2);border-radius:var(--radius-full);background:var(--color-hover);overflow:hidden;margin:var(--sp-2-5) 0 var(--sp-1)}
  .ubar{height:100%;border-radius:var(--radius-full);background:var(--color-brand)}
  .upct{font-size:var(--text-ui-xs);color:var(--color-foreground-subtlest);margin-bottom:var(--sp-3)}

  .team-sel{border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--sp-3);margin-bottom:var(--sp-3);background:var(--color-card);display:flex;align-items:center;gap:var(--sp-2-5);cursor:pointer}
  .team-sel.on{border-color:transparent;background:var(--color-selected)}
  .team-sel .ico-wrap{width:var(--size-8);height:var(--control-h-8);border-radius:var(--radius-lg);background:var(--color-surface);display:flex;align-items:center;justify-content:center;font-size:var(--text-ui-base)}
  .team-sel .tt{font-weight:500;font-size:var(--text-ui-base)}
  .team-sel .td{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}

  /* 智能体布局 */
  .agents-layout{display:grid;grid-template-columns:264px 1fr;gap:var(--sp-5);align-items:start}
  .side-card{background:var(--color-card);border:1px solid var(--color-card-border);border-radius:var(--radius-xl);padding:var(--sp-3) var(--sp-3-5);box-shadow:none}
  .side-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-2)}
  .side-title{font-weight:500;font-size:var(--text-ui-base);letter-spacing:0;color:var(--color-foreground)}
  .btn-link{background:none;border:none;color:var(--color-foreground-subtlest);font-size:var(--text-ui-sm);cursor:pointer;padding:0}
  .btn-link:hover{color:var(--color-foreground)}
  .side-desc{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);line-height:1.55;margin-bottom:var(--sp-3)}
  .side-team{display:flex;flex-direction:column;gap:var(--sp-1-5)}
  .team-row{display:flex;align-items:center;gap:var(--sp-2-5);padding:var(--sp-2) var(--sp-2-5);border:1px solid transparent;border-radius:var(--radius-lg);background:var(--color-surface);cursor:pointer;transition:background-color .12s,border-color .12s}
  .team-row:hover{background:var(--color-surface-hover);box-shadow:none}
  .row-dot{width:var(--sp-2);height:var(--sp-2);border-radius:var(--radius-full);background:var(--color-border);flex-shrink:0}
  .row-dot.on{background:var(--color-success);box-shadow:0 0 0 3px color-mix(in oklab,var(--color-success) 15%,transparent)}
  .row-main{flex:1;min-width:0}
  .row-name{font-weight:500;font-size:var(--text-ui-base);line-height:1.3;color:var(--color-foreground)}
  .row-role{font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest);margin-top:1px;line-height:1.3}
  .team-empty{padding:var(--sp-5) var(--sp-2);text-align:center;color:var(--color-foreground-subtlest);font-size:var(--text-ui-sm)}

  .sel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-1-5)}
  .sel-title{font-size:var(--text-ui-xl);font-weight:600;color:var(--color-foreground);letter-spacing:-.01em}
  .sel-actions{display:flex;gap:var(--sp-2)}
  .sel-desc{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);line-height:1.55;margin-bottom:var(--sp-5)}
  .plugin-store-body{max-width:960px}
  .plugin-search-row{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4)}
  .plugin-search{flex:1}
  .plugin-installed-strip{margin-bottom:var(--sp-4);padding:var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-xl);background:var(--color-surface)}
  .plugin-strip-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-2);font-size:var(--text-ui-sm);font-weight:500;color:var(--color-foreground-subtle)}
  .plugin-strip-list{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
  .plugin-chip{display:inline-flex;align-items:center;gap:var(--sp-1-5);height:var(--control-h-7);padding:0 var(--sp-2-5) 0 var(--sp-1-5);border:1px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-card);cursor:pointer;font-size:var(--text-ui-sm);color:var(--color-foreground)}
  .plugin-chip:hover{background:var(--color-surface-hover)}
  .plugin-chip-av{width:var(--size-5);height:var(--size-5);border-radius:var(--radius-md);background:var(--color-selected);display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-ui-xs);font-weight:600}
  .plugin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--sp-3)}
  .plugin-grid.stacked{grid-template-columns:1fr}
  .plugin-card{display:flex;align-items:flex-start;gap:var(--sp-3);border:1px solid var(--color-card-border);border-radius:var(--radius-xl);background:var(--color-card);padding:var(--sp-3) var(--sp-3-5);cursor:pointer;transition:border-color .12s,background-color .12s}
  .plugin-card:hover{border-color:var(--color-border-hover);background:var(--color-surface)}
  .plugin-avatar{width:var(--size-9);height:var(--size-9);border-radius:var(--radius-lg);background:var(--color-selected);display:flex;align-items:center;justify-content:center;font-weight:600;flex-shrink:0;color:var(--color-foreground)}
  .plugin-avatar.lg{width:var(--sp-14);height:var(--sp-14);font-size:var(--text-ui-xl)}
  .plugin-main{flex:1;min-width:0}
  .plugin-title{font-weight:600;font-size:var(--text-ui-base);color:var(--color-foreground);display:inline-flex;align-items:center;flex-wrap:wrap;gap:var(--sp-0-5)}
  .plugin-title.lg{font-size:var(--text-ui-xl)}
  .plugin-desc{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);line-height:1.5;margin-top:var(--sp-1)}
  .plugin-meta{font-size:var(--text-ui-xs);color:var(--color-foreground-subtlest);margin-top:var(--sp-1)}
  .plugin-foot{margin-left:auto;flex-shrink:0}
  .plugin-switch{display:inline-flex;align-items:center;gap:var(--sp-1-5);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);margin-right:var(--sp-2)}
  .plugin-detail{display:flex;gap:var(--sp-4);align-items:flex-start;margin-top:var(--sp-3)}
  .plugin-detail-acts{display:flex;gap:var(--sp-2);margin-top:var(--sp-3);flex-wrap:wrap}
  .plugin-back{margin-bottom:var(--sp-2)}
  .btn-link{border:0;background:transparent;color:var(--color-foreground-subtle);cursor:pointer;font-size:var(--text-ui-sm);padding:0}
  .btn-link:hover{color:var(--color-foreground)}

  .cat-section{margin-bottom:var(--sp-5)}
  .cat-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-2-5);padding-bottom:var(--sp-2);border-bottom:1px solid var(--color-border)}
  .cat-name{font-weight:500;font-size:var(--text-ui-base);color:var(--color-foreground)}
  .cat-count{font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest)}
  .agent-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--sp-3)}

  .agent-card{border:1px solid var(--color-card-border);border-radius:var(--radius-xl);background:var(--color-card);padding:var(--sp-3) var(--sp-3-5);cursor:pointer;transition:border-color .12s,background-color .12s;display:flex;flex-direction:column;box-shadow:none}
  .agent-card:hover{border-color:var(--color-border-hover);background:var(--color-surface);transform:none;box-shadow:none}
  .card-head{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-1-5)}
  .card-icon{width:var(--size-4-5);height:var(--size-4-5);display:flex;align-items:center;justify-content:center;color:var(--color-foreground-subtlest);font-size:var(--text-ui-base);line-height:1;flex-shrink:0}
  .card-title{font-weight:500;font-size:var(--text-ui-base);flex:1;min-width:0;line-height:1.3;color:var(--color-foreground)}
  .card-role{font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest);font-style:normal;margin-bottom:var(--sp-2);line-height:1.3}
  .card-desc{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);line-height:1.55;margin-bottom:var(--sp-2);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
  .card-suit{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);line-height:1.55;margin-bottom:var(--sp-2-5);padding:var(--sp-2);background:var(--color-surface);border-radius:var(--radius-md);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
  .card-suit b{color:var(--color-foreground);font-weight:500}
  .card-foot{display:flex;align-items:center;justify-content:space-between;margin-top:auto;padding-top:var(--sp-2);border-top:1px solid var(--color-border);gap:var(--sp-2)}
  .card-foot .btn{padding:0 var(--sp-3);height:var(--control-h-7);font-size:var(--text-ui-sm)}
  .card-meta{font-size:var(--text-ui-xs);color:var(--color-foreground-subtlest)}
  .card-meta-btn{display:inline-flex;align-items:center;gap:var(--sp-1);padding:0 var(--sp-2-5);height:var(--control-h-7);border-radius:var(--radius-md);border:1px solid var(--color-border);background:transparent;font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);cursor:pointer;transition:border-color .12s,color .12s,background-color .12s}
  .card-meta-btn:hover{border-color:var(--color-border-hover);color:var(--color-foreground);background:var(--color-hover)}
  .card-meta-btn.on{border-color:transparent;color:var(--color-interaction-confirmation-foreground);background:var(--color-interaction-confirmation-surface)}
  .card-meta-btn .caret-ind{font-size:var(--text-ui-xs);transition:transform .15s}
  .card-meta-btn.on .caret-ind{transform:rotate(180deg)}
  .card-examples{display:none;flex-direction:column;gap:var(--sp-1-5);margin-top:var(--sp-2-5);padding-top:var(--sp-2-5);border-top:1px solid var(--color-border)}
  .agent-card.ex-open .card-examples{display:flex}
  .card-example{padding:var(--sp-2) var(--sp-2-5);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);font-size:var(--text-ui-sm);line-height:1.55;color:var(--color-foreground);cursor:pointer;transition:border-color .12s,background-color .12s;text-align:left}
  .card-example:hover{background:var(--color-surface-hover);border-color:var(--color-border-hover)}
  .card-example:active{background:var(--color-selected)}

  /* 技能页 */
  .skill-recipe{border:1px dashed var(--color-border);border-radius:var(--radius-xl);background:var(--color-surface);padding:var(--sp-3) var(--sp-4);font-family:var(--font-mono);font-size:var(--text-ui-sm);line-height:1.6;color:var(--color-foreground);margin-bottom:var(--sp-4)}
  .skill-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--sp-3)}
  .skill-card{border:1px solid var(--color-card-border);border-radius:var(--radius-xl);padding:var(--sp-3);background:var(--color-card);cursor:pointer;transition:border-color .12s,background-color .12s}
  .skill-card:hover{border-color:var(--color-border-hover);background:var(--color-surface)}
  .skill-card.locked{opacity:.72}
  .skill-card.locked:hover{border-color:var(--color-border-hover)}
  .skill-card .skill-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-2);margin-bottom:var(--sp-1)}
  .skill-card .title-text{font-weight:500;font-size:var(--text-ui-base);margin-bottom:0}
  .skill-card .desc-text{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);line-height:1.45}

  /* 工具页 */
  .tool-tabs{display:flex;gap:var(--sp-1);border-bottom:1px solid var(--color-border);margin-bottom:0;padding:var(--sp-2)}
  .ttab{height:var(--control-h-7);padding:0 var(--sp-3);display:inline-flex;align-items:center;cursor:pointer;font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground-subtle);border-radius:var(--radius-md);border:1px solid transparent}
  .ttab.on{color:var(--color-foreground);background:var(--color-selected)}
  .tool-body{display:flex;height:calc(100% - var(--sp-12))}
  .tool-side{width:var(--sidebar-w);border-right:1px solid var(--color-border);background:var(--color-panel);padding:var(--sp-3);overflow-y:auto}
  .tool-main{flex:1;background:var(--color-background);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--sp-3)}

  /* 终端（保持暗色代码面） */
  /* 笔记本输出区；Side Pane 追溯见 .trace-body .term-line */
  .nb-out .term-line,.nb-term .term-line,.nb-cell .term-line{background:var(--color-code-bg);color:var(--color-code-fg);font-family:var(--font-mono);font-size:var(--text-ui-sm);padding:var(--sp-4);line-height:1.7;height:100%;overflow:auto;white-space:pre;border:1px solid var(--color-code-border);border-radius:var(--radius-lg)}

  /* 变量 */
  .var-grid{display:grid;grid-template-columns:240px 1fr;gap:0;height:100%}
  .var-list{border-right:1px solid var(--color-border);background:var(--color-panel);overflow-y:auto}
  .var-item{padding:var(--sp-2-5) var(--sp-3);border-bottom:1px solid var(--color-border);cursor:pointer;font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
  .var-item:hover{background:var(--color-hover);color:var(--color-foreground)}
  .var-item.on{background:var(--color-selected);color:var(--color-foreground);font-weight:500}
  .var-detail{padding:var(--sp-5);background:var(--color-background)}

  /* 订阅价卡 */
  .price-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-3)}
  .price-card{border:1px solid var(--color-card-border);border-radius:var(--radius-xl);background:var(--color-card);padding:var(--sp-5);position:relative;box-shadow:none}
  .price-card.hot{border-color:color-mix(in oklab,var(--color-interaction-confirmation-foreground) 45%,transparent);box-shadow:0 0 0 1px color-mix(in oklab,var(--color-interaction-confirmation-foreground) 20%,transparent)}
  .price-card .name{font-weight:600;font-size:var(--text-ui-lg);color:var(--color-foreground)}
  .price-card .price span{font-size:var(--text-ui-sm);font-weight:500;color:var(--color-foreground-subtle)}
  .price-card .price-note{font-size:var(--text-ui-xs);color:var(--color-foreground-subtlest);margin-top:2px}
  .price-card ul{list-style:none;margin-top:var(--sp-3)}
  .price-card li{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);padding:var(--sp-1) 0;display:flex;gap:var(--sp-2)}
  .price-card li::before{content:"✓";color:var(--color-interaction-confirmation-foreground);font-weight:600}
  .addon-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-3);margin-top:var(--sp-3)}
  .addon-card{border:1px solid var(--color-card-border);border-radius:var(--radius-xl);background:var(--color-card);padding:var(--sp-3) var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-2)}
  .addon-card .addon-name{font-weight:500;font-size:var(--text-ui-base);color:var(--color-foreground)}
  .addon-card .addon-desc{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);line-height:1.45}
  .addon-card .addon-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);margin-top:var(--sp-1)}
  .addon-card .addon-price{font-weight:600;font-size:var(--text-ui-base);color:var(--color-foreground)}
  .addon-card .addon-credits{font-size:var(--text-ui-sm);color:var(--color-brand);font-weight:500}

  /* 设置 */
  .set-row{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--color-border)}
  .set-row:last-child{border-bottom:none}
  .set-row .stat-l{font-weight:500;font-size:var(--text-ui-base);color:var(--color-foreground)}
  .set-row .desc-text{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);margin-top:2px}
  .radio{display:flex;gap:var(--sp-2);flex-wrap:wrap}
  .radio .opt{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--sp-2) var(--sp-3);cursor:pointer;font-size:var(--text-ui-sm);font-weight:500;color:var(--color-foreground-subtle);height:var(--control-h-7);display:inline-flex;align-items:center;box-sizing:border-box}
  .radio .opt.on{border-color:transparent;background:var(--color-selected);color:var(--color-foreground)}
  .switch{width:var(--sp-10);height:var(--size-5-5);border-radius:var(--radius-full);background:var(--color-success);position:relative;cursor:pointer;flex-shrink:0}
  .switch::after{content:"";position:absolute;width:var(--size-4);height:var(--size-4);border-radius:var(--radius-full);background:var(--color-card);top:var(--sp-0-5);right:var(--sp-0-5)}
  .switch.off{background:var(--color-border)}.switch.off::after{right:21px}

  /* 命令面板 → 对标 ZCode Command Center（顶部浮层，非居中） */
  .overlay{position:fixed;inset:0;background:color-mix(in oklab,var(--color-overlay) 55%,transparent);z-index:90;display:none;align-items:flex-start;justify-content:center;padding:var(--sp-16) var(--sp-4) var(--sp-4)}
  .overlay.show{display:flex}
  .palette{width:36rem;max-width:min(36rem,92vw);margin-top:0;background:var(--color-popover);border:1px solid var(--color-popover-border);border-radius:var(--radius-2xl);box-shadow:var(--shadow-md);overflow:hidden;max-height:min(32rem,calc(100dvh - 6rem));display:flex;flex-direction:column}
  .palette .ph{display:flex;align-items:center;gap:var(--sp-2);height:var(--sp-12);padding:0 var(--sp-3);border-bottom:1px solid var(--color-border);flex-shrink:0}
  .palette .ph .pal-ico{color:var(--color-foreground-subtlest);display:inline-flex;flex-shrink:0}
  .palette .ph input{flex:1;border:none;outline:none;height:var(--control-h-8);font-size:var(--text-ui-base);line-height:1.25;background:transparent;color:var(--color-foreground)}
  .palette .ph input::placeholder{color:var(--color-foreground-subtlest)}
  .pl{flex:1;min-height:0;max-height:min(27.5rem,calc(100dvh - 15rem));overflow-y:auto;padding:var(--sp-1)}
  .pc-group-h{padding:var(--sp-1-5) var(--sp-2-5);font-size:var(--text-ui-sm);font-weight:500;color:var(--color-foreground-subtle)}
  .pc{display:flex;align-items:center;gap:var(--sp-2);min-height:var(--control-h-8);padding:var(--sp-1-5) var(--sp-2-5);border-radius:var(--radius-xl);cursor:pointer;font-size:var(--text-ui-base);color:var(--color-foreground);user-select:none}
  .pc:hover,.pc.active,.pc[data-selected="true"]{background:var(--color-menu-hover);color:var(--color-foreground)}
  .pc .pi{width:var(--size-4);height:var(--size-4);border-radius:0;background:transparent;display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-ui-base);color:var(--color-foreground-subtle);flex-shrink:0}
  .pc[data-selected="true"] .pi,.pc.active .pi{color:var(--color-foreground)}
  .pc .pc-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--sp-px)}
  .pc .pc-t{font-weight:500;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .pc .pd{font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest);line-height:1.3}
  .pc .pc-meta{margin-left:auto;flex-shrink:0;font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest);font-variant-numeric:tabular-nums}
  .pc .pc-kbd{margin-left:auto;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;height:var(--size-4);min-width:var(--size-7);padding:0 var(--sp-1);border-radius:var(--radius-sm);background:var(--color-surface);font-size:var(--text-ui-base);line-height:1;color:var(--color-foreground-subtle);font-family:var(--font-sans);letter-spacing:0}
  .pc-empty{padding:var(--sp-6) var(--sp-3);text-align:center;font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest)}

  /* 侧栏 Nav：新建任务 + 搜索（对标 ZCode WorkspaceSidebar） */
  .aside-nav{display:flex;flex-direction:column;gap:var(--sp-1);padding:0 0 var(--sp-1);flex-shrink:0}

  /* Toast — 对标 ZCode components/ui/toast.tsx：top-center / bg-toast/60 / backdrop-blur-xl / shadow-lg / rounded-2xl */
  #zcode-toast-host{pointer-events:none}
  #zcode-toast-host .zc-toast{pointer-events:auto}
  .zc-toast-stack{position:fixed;z-index:9999;display:flex;flex-direction:column;gap:var(--sp-2);pointer-events:none}
  .zc-toast-stack--top-center{top:var(--sp-16);left:50%;transform:translateX(-50%);align-items:center}
  .zc-toast-stack--top-right{top:var(--sp-16);right:var(--sp-4);align-items:flex-end;max-width:calc(100vw - var(--sp-8))}
  .zc-toast-stack--bottom-left{bottom:calc(var(--sp-4) + env(safe-area-inset-bottom,0px));left:var(--sp-4);align-items:flex-start}
  .zc-toast-stack--bottom-center{bottom:calc(var(--sp-4) + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);align-items:center}
  .zc-toast{
    border-radius:var(--radius-2xl);
    border:1px solid var(--color-border);
    background:color-mix(in oklab,var(--color-toast) 60%,transparent);
    color:var(--color-foreground);
    font-size:var(--text-ui-base);
    line-height:1.55;
    box-shadow:var(--shadow-lg);
    backdrop-filter:blur(24px);
    -webkit-backdrop-filter:blur(24px);
    transition:transform .2s cubic-bezier(.77,0,.175,1),opacity .2s cubic-bezier(.77,0,.175,1);
    will-change:transform,opacity;
  }
  @media (prefers-reduced-motion:reduce){
    .zc-toast{transition:opacity .2s ease;transform:none!important}
  }
  .zc-toast--default{padding:var(--sp-3) var(--sp-4);white-space:pre-line}
  .zc-toast--notice{width:min(536px,calc(100vw - var(--sp-8)));padding:0}
  .zc-toast--update{
    width:min(300px,calc(100vw - var(--sp-4)));
    max-width:min(300px,calc(100vw - var(--sp-4)));
    border-color:var(--color-popover-border);
    transform-origin:bottom left;
    padding:0;
  }
  .zc-toast--from-top.is-hidden{opacity:0;transform:translateY(-4px) scale(.98)}
  .zc-toast--from-top.is-visible{opacity:1;transform:translateY(0) scale(1)}
  .zc-toast--from-bottom.is-hidden{opacity:0;transform:translateY(4px) scale(.98)}
  .zc-toast--from-bottom.is-visible{opacity:1;transform:translateY(0) scale(1)}
  .zc-toast--from-right.is-hidden{opacity:0;transform:translateX(calc(100% + var(--sp-4)))}
  .zc-toast--from-right.is-visible{opacity:1;transform:translateX(0)}
  .zc-toast-notice{display:flex;align-items:center;gap:var(--sp-4);min-width:0;padding:0 var(--sp-4)}
  .zc-toast-ico{width:var(--size-4);height:var(--size-4);flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:var(--color-foreground-subtle)}
  .zc-toast-ico--warning{color:var(--color-warning)}
  .zc-toast-ico--success{color:var(--color-success)}
  .zc-toast-ico--danger{color:var(--color-destructive)}
  .zc-toast-ico svg{width:var(--size-4);height:var(--size-4)}
  .zc-toast-notice-body{display:flex;align-items:flex-start;gap:var(--sp-4);flex:1 0 0;min-width:0;padding:var(--sp-3) 0;font-size:var(--text-ui-sm)}
  .zc-toast-notice-copy{min-width:0;flex:1;line-height:1.25rem}
  .zc-toast-notice-title{color:var(--color-foreground)}
  .zc-toast-notice-sub{margin-top:var(--sp-0-5);white-space:pre-line;color:var(--color-foreground-subtle)}
  .zc-toast-notice-action{max-width:50%;align-self:center;flex-shrink:0;border:0;background:transparent;padding:0;cursor:pointer;font:inherit;font-weight:500;line-height:1.375;text-align:left;white-space:normal;overflow-wrap:anywhere;color:var(--color-foreground);text-decoration:underline;text-underline-offset:2px}
  .zc-toast-notice-action:hover{color:var(--color-foreground-subtle)}
  .zc-toast-dismiss{display:inline-flex;align-items:center;justify-content:center;width:var(--size-6);height:var(--size-6);flex-shrink:0;border:0;border-radius:var(--radius-md);background:transparent;color:var(--color-foreground-subtle);cursor:pointer;padding:0}
  .zc-toast-dismiss:hover{background:var(--color-hover);color:var(--color-foreground)}
  .zc-toast-dismiss-ico,.zc-toast-dismiss-ico svg{width:var(--size-3-5);height:var(--size-3-5)}
  .zc-toast-update{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--sp-2);min-width:0;padding:var(--sp-2) var(--sp-2-5)}
  .zc-toast-dot{width:var(--sp-2);height:var(--sp-2);border-radius:var(--radius-full);background:color-mix(in oklab,var(--color-primary) 80%,transparent);box-shadow:0 0 0 4px var(--color-accent);flex-shrink:0}
  .zc-toast-update-main{min-width:0;flex:1}
  .zc-toast-update-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;color:var(--color-foreground)}
  .zc-toast-update-body{margin-top:var(--sp-0-5);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1rem;color:var(--color-foreground-subtle)}
  .zc-toast-update-action{height:var(--control-h-7);max-width:3.5rem;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:0;border-radius:var(--radius-md);background:var(--color-secondary);padding:0 var(--sp-2);font:inherit;font-weight:500;color:var(--color-foreground);cursor:pointer}
  .zc-toast-update-action:hover{background:var(--color-hover)}
  /* 旧选择器兜底（防残留） */
  .toasts{display:none!important}

  .empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--sp-10) var(--sp-5);text-align:center;color:var(--color-foreground-subtlest);font-size:var(--text-ui-base)}
  .empty .ei{font-size:var(--text-display);margin-bottom:var(--sp-2-5);opacity:.5}
  .empty .et{font-size:var(--text-ui-lg);font-weight:500;color:var(--color-foreground);margin-bottom:var(--sp-1)}
  .empty .ed{font-size:var(--text-ui-sm);max-width:28rem;line-height:1.55;color:var(--color-foreground-subtle)}
  .hlbox{background:var(--color-interaction-ask-surface);border:1px solid color-mix(in oklab,var(--color-interaction-ask-foreground) 28%,transparent);border-radius:var(--radius-xl);padding:var(--sp-3) var(--sp-4);font-size:var(--text-ui-sm);color:var(--color-interaction-ask-foreground);line-height:1.6}
  .note{background:var(--color-warning-surface);border:1px solid color-mix(in oklab,var(--color-warning) 30%,transparent);border-radius:var(--radius-xl);padding:var(--sp-3) var(--sp-4);font-size:var(--text-ui-sm);color:var(--color-warning);line-height:1.6}
  .sec-t{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-5)}

  /* SVG */
  svg{display:block}

  /* ============ 项目与对话列表（对齐：图标共轴 / 文字共轴 / 树线居中） ============ */
  /* 行网格对标 banner-gen：p-2 + gap-2 + size-4 行首槽；行距 gap-0.5 避免圆角底粘连 */
  .np-inline{display:none!important}
  .pfolder-wrap{display:flex;flex-direction:column;gap:var(--sp-0-5);margin-bottom:var(--sp-0-5);overflow:visible}
  .pfolder{
    display:flex;align-items:center;gap:var(--sp-2);
    min-height:36px;padding:4px 12px;box-sizing:border-box;
    border-radius:var(--radius-lg);border:1px solid transparent;
    cursor:pointer;color:var(--color-foreground-subtle);font-size:var(--text-ui-base);font-weight:400;
    margin-bottom:0;transition:background-color .12s,border-color .12s,color .12s
  }
  .pfolder:hover{background:var(--color-surface-hover);color:var(--color-foreground)}
  .pfolder.on{background:var(--color-selected);color:var(--color-foreground)}
  .pfolder.renaming{cursor:default}
  .pfolder .ico-wrap{
    width:var(--size-4);height:var(--size-4);flex-shrink:0;
    display:inline-flex;align-items:center;justify-content:center;
    color:inherit;font-size:var(--text-ui-base);
    /* 遮罩竖线：与 aside 同色，勿用 panel 白（会显色块） */
    position:relative;z-index:1;background:var(--color-background);border-radius:var(--radius-sm)
  }
  /* hover/选中：遮罩用不透明混色贴合行底，避免半透明叠两层显色块 */
  .pfolder:hover .ico-wrap{background:color-mix(in oklab,var(--color-foreground) 5%,var(--color-background))}
  .pfolder.on .ico-wrap{background:color-mix(in oklab,var(--color-foreground) 5%,var(--color-background))}
  /* 选中/hover 只改行底，图标色与线宽保持与未选中一致 */
  .pfolder:hover .ico-wrap,.pfolder.on .ico-wrap{color:var(--color-foreground)}
  .pfolder .ico-wrap svg.lucide{stroke-width:1.5}
  .pfolder-title{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:400;color:inherit;line-height:1.25}
  .pfolder-rename{flex:1;min-width:0;height:var(--control-h-6);border:1px solid var(--color-input-border-focused);border-radius:var(--radius-md);padding:0 var(--sp-1-5);font-size:var(--text-ui-base);font-weight:500;background:var(--color-input);color:var(--color-foreground);outline:none}
  .pfolder .label-num{display:none}
  .pfolder-rail{margin-left:auto;display:inline-flex;align-items:center;gap:var(--sp-0-5);flex-shrink:0}
  .pfolder-add{opacity:0;width:var(--size-5);height:var(--size-5);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;transition:opacity .12s,background-color .12s,color .12s}
  .pfolder:hover .pfolder-add,.pfolder:focus-within .pfolder-add,.pfolder-wrap:hover .pfolder-add{opacity:1}
  .pfolder-add:hover{background:var(--color-hover);color:var(--color-foreground)}
  .pfolder.drop-target{background:var(--color-selected);border-color:var(--color-border-hover)}
  /* 子任务：无额外左缩进；行间 gap-0.5；树线由容器贯通并接到文件夹图标下沿 */
  .pchildren{margin:0;padding:0;display:none}
  .pchildren.open{
    display:flex;flex-direction:column;gap:var(--sp-0-5);
    position:relative;overflow:visible
  }
  .pchildren.open::before{
    content:"";position:absolute;z-index:0;pointer-events:none;
    /* 与 .pfolder / .pchat 的 1px 边 + padding + size-4 槽中心共轴 */
    left:calc(1px + 12px + var(--size-4) / 2);
    width:0.5px;
    /* 比 border 略深，选中行底上仍能看见接到文件夹 */
    background:color-mix(in oklab,var(--color-foreground) 22%,transparent);
    transform:translateX(-50%);
    /* 上接到文件夹图标下沿：wrap gap + (行高−图标)/2；下收到末行 leading 中心 */
    top:calc(-1 * (var(--sp-0-5) + (36px - var(--size-4)) / 2));
    bottom:20px
  }
  .pchat{
    display:flex;align-items:stretch;gap:0;
    min-height:36px;padding:0;margin:0;
    border-radius:var(--radius-lg);border:1px solid transparent;
    cursor:pointer;color:var(--color-foreground-subtle);font-size:var(--text-ui-base);line-height:1.25;
    transition:opacity .12s,background-color .12s,color .12s;box-sizing:border-box
  }
  .pchat:hover{background:var(--color-surface-hover);color:var(--color-foreground)}
  .pchat.on{background:var(--color-selected);color:var(--color-foreground)}
  .pchat.dragging{opacity:0;cursor:grabbing}
  .pchat-line{
    display:flex;align-items:center;gap:var(--sp-2);
    width:100%;min-width:0;height:var(--control-h-8);min-height:var(--control-h-8);
    padding:var(--sp-1-5) var(--sp-2);box-sizing:border-box
  }
  .pchat .pchat-title{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:400;color:inherit;line-height:1.25}
  .pchat .pchat-meta{margin-left:auto;display:flex;align-items:center;gap:var(--sp-1);flex-shrink:0;font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);font-variant-numeric:tabular-nums}
  .pchat.on .pchat-meta{color:var(--color-foreground-subtle)}
  .pchat .pchat-meta .pchat-time{margin-right:0}
  /* 置顶无常驻标记；hover 操作区统一线框 pin */
  /* 等待确认：占据时间槽位（盖住时间），不与时间并排 */
  .pchat-pending{display:inline-flex;align-items:center;justify-content:center;height:var(--size-5);min-width:4.5em;padding:0 var(--sp-2);border-radius:var(--radius-full);border:1px solid transparent;background:var(--color-interaction-confirmation-surface);color:var(--color-interaction-confirmation-foreground);font-size:var(--text-ui-sm);font-weight:500;white-space:nowrap;flex-shrink:0}
  /* NewTaskButtonGroup：Codex sidebar-item 几何（min-h 36 / px-3 / rounded-lg） */
  .padd{display:inline-flex;align-items:center;gap:var(--sp-2);width:100%;min-height:36px;padding:6px 12px;border-radius:var(--radius-lg);cursor:pointer;color:var(--color-foreground);font-size:var(--text-ui-base);font-weight:400;box-sizing:border-box;margin-bottom:0;border:none;background:transparent}
  .padd:hover{background:var(--color-surface-hover);color:var(--color-foreground)}
  .padd .padd-ico{display:inline-flex;flex-shrink:0;color:var(--color-foreground)}
  .padd:hover .padd-ico,.padd.on .padd-ico{color:var(--color-foreground)}
  .padd .padd-ico svg.lucide{stroke-width:1.5}
  .padd .padd-ico .tb-ico{display:block}
  .padd .padd-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
  .padd .padd-kbd{display:none}

  /* V2.44：文档预览面板（点 REPORT.md 打开，与对话流平行） */
  .doc-pane{position:absolute;inset:0;background:var(--color-card);z-index:6;display:flex;flex-direction:column;overflow:hidden;border-radius:inherit}
  .doc-pane[hidden]{display:none}
  .doc-tabs{display:flex;align-items:flex-end;padding:0 var(--sp-4);background:var(--color-background);border-bottom:1px solid var(--color-border);height:calc(var(--control-h-9) + var(--sp-0-5));gap:0}
  .doc-tab{padding:var(--sp-1-5) var(--sp-3-5);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);cursor:pointer;border-radius:var(--radius-md) var(--radius-md) 0 0;display:inline-flex;align-items:center;gap:var(--sp-1-5);margin-top:var(--sp-1-5);border:1px solid transparent;border-bottom:0;line-height:1.2}
  .doc-tab:hover{color:var(--color-foreground)}
  .doc-tab.active{background:var(--color-card);color:var(--color-foreground);font-weight:600;border-color:var(--color-border);position:relative;top:1px}
  .doc-tab .tab-ico{font-size:var(--text-ui-caption);opacity:.85}
  .doc-tab .tab-x{display:inline-flex;align-items:center;justify-content:center;width:var(--size-4);height:var(--size-4);border-radius:50%;color:var(--color-foreground-subtle);font-size:var(--text-ui-caption);line-height:1;margin-left:2px}
  .doc-tab .tab-x:hover{background:var(--color-background);color:var(--color-brand)}
  .doc-toolbar{display:flex;align-items:center;padding:var(--sp-2-5) var(--sp-4);border-bottom:1px solid var(--color-border);gap:var(--sp-2-5);background:var(--color-card)}
  .doc-fname{font-size:var(--text-ui-caption);font-weight:600;color:var(--color-foreground);display:flex;align-items:center;gap:var(--sp-1-5);flex:0 0 auto}
  .doc-fname .fico{font-size:var(--text-ui-base);color:var(--color-success)}
  .doc-spacer{flex:1}
  .doc-toggle{display:flex;border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}
  .doc-toggle button{padding:var(--sp-1) var(--sp-3);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);background:var(--color-card);border:0;cursor:pointer;font-family:inherit;font-weight:500}
  .doc-toggle button.on{background:var(--color-success);color:var(--color-primary-foreground);font-weight:600}
  .doc-actions{display:flex;gap:var(--sp-0-5);margin-left:var(--sp-1-5)}
  .doc-actions button{width:var(--size-7);height:var(--control-h-7);border:0;background:transparent;color:var(--color-foreground-subtle);cursor:pointer;border-radius:var(--radius-md);font-size:var(--text-ui-base);display:inline-flex;align-items:center;justify-content:center}
  .doc-actions button:hover{background:var(--color-background);color:var(--color-foreground)}
  .doc-content{flex:1;overflow-y:auto;padding:var(--sp-8) var(--sp-12) var(--sp-16);font-size:var(--text-ui-caption);color:var(--color-foreground);line-height:1.75;max-width:var(--dialog-w-2xl);margin:0 auto;width:100%}
  .doc-content h1::after{content:"";display:block;height:var(--sp-px);background:linear-gradient(90deg,var(--color-success),var(--color-success) 35%,transparent);margin-top:var(--sp-2-5);border-radius:var(--radius-sm)}
  .doc-content h2{font-size:var(--text-ui-xl);font-weight:600;margin:var(--sp-8) 0 var(--sp-3);color:var(--color-foreground);letter-spacing:-.2px}
  .doc-content h3{font-size:var(--text-ui-base);font-weight:600;margin:var(--sp-5) 0 var(--sp-2-5);color:var(--color-foreground)}
  .doc-content p{margin:0 0 var(--sp-3-5)}
  .doc-content table{width:100%;border-collapse:collapse;margin:var(--sp-3-5) 0 var(--sp-6);font-size:var(--text-ui-sm)}
  .doc-content thead th{background:var(--color-surface);text-align:left;padding:var(--sp-2-5) var(--sp-3-5);font-weight:600;font-size:var(--text-ui-sm);color:var(--color-foreground);border-bottom:1px solid var(--color-border)}
  .doc-content tbody td{padding:var(--sp-2) var(--sp-3-5);border-bottom:1px solid var(--color-border);color:var(--color-foreground)}
  .doc-content tbody tr:last-child td{border-bottom:1px solid var(--color-border)}
  .doc-content tbody tr:hover{background:var(--color-hover)}
  .doc-content code{font-family:var(--font-mono);background:var(--color-surface);padding:var(--sp-px) var(--sp-1-5);border-radius:var(--radius-sm);font-size:var(--text-ui-sm);color:var(--color-foreground);border:1px solid var(--color-border)}
  .doc-content img.fig{max-width:100%;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-card);display:block;margin:var(--sp-3-5) 0}
  .doc-content ul,.doc-content ol{padding-left:var(--sp-6);margin:0 0 var(--sp-4)}
  .doc-content li{margin:var(--sp-1) 0}
  .doc-content hr{border:0;border-top:1px solid var(--color-border);margin:var(--sp-6) 0}
  .doc-content .figure-card{margin:var(--sp-4) 0 var(--sp-7);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;background:var(--color-card)}
  .doc-content .figure-card .cap{padding:var(--sp-2) var(--sp-3-5);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);border-top:1px solid var(--color-border);background:var(--color-surface)}
  .doc-content .figure-card img{display:block;width:100%;background:var(--color-card)}
  .doc-link{color:var(--color-brand);cursor:pointer;font-weight:600;text-decoration:none;border-radius:var(--radius-sm);padding:0 var(--sp-0-5)}
  .doc-link:hover{background:color-mix(in oklab,var(--color-brand) 8%,transparent)}

  /* ============================================================
     Lucide 图标尺寸控制
     lucide.createIcons();document.querySelectorAll("svg.lucide").forEach(s=>{s.removeAttribute("width");s.removeAttribute("height")}) 把 <i data-lucide> 替换为 <svg>
     SVG 默认 width=24 height=24，用 CSS 覆盖为 1em（继承 font-size）
     ============================================================ */
  /* 对标 ZCode LucideProvider strokeWidth=1.5（勿用 2，会显粗） */
  svg.lucide{width:1em !important;height:1em !important;display:inline-block;flex-shrink:0;stroke-width:1.5}
  [data-lucide]{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
  i[data-lucide]{font-style:normal;line-height:0}

  /* ============ banner-gen 侧栏逻辑 + ZCode token：历史分段 / 生成物 / 分享 / PreviewPane ============ */
  .aside-search.on{background:var(--color-selected);color:var(--color-foreground)}
  .aside-filter-wrap{position:relative;display:inline-flex}
  .aside-filter-dot{position:absolute;right:var(--sp-1);top:var(--sp-1);width:var(--sp-1-5);height:var(--sp-1-5);border-radius:50%;background:var(--color-brand);pointer-events:none}
  .task-sec{margin-top:var(--sp-1)}
  .task-sec.pinned{margin-top:var(--sp-0-5)}
  .task-sec.flat,.task-sec.pinned,.task-sec.archived-threads{display:flex;flex-direction:column;gap:var(--sp-0-5)}
  .task-sec-h{display:flex;align-items:center;gap:var(--sp-1);padding:var(--sp-1) var(--sp-1);min-height:var(--control-h-7)}
  .task-sec-h.has-right{justify-content:space-between}
  .task-sec-toggle{display:inline-flex;align-items:center;gap:var(--sp-1);min-width:0;flex:1;border:0;background:transparent;padding:var(--sp-1) var(--sp-1-5);border-radius:var(--radius-md);cursor:pointer;color:var(--color-foreground-subtle);font-size:var(--text-ui-base);font-weight:400;text-align:left}
  .task-sec-toggle:hover{background:var(--color-surface-hover);color:var(--color-foreground)}
  .task-sec-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground-subtle)}
  .task-sec-chev{display:inline-flex;flex-shrink:0;transition:transform .15s;opacity:.7}
  .task-sec-chev.is-collapsed{transform:rotate(-90deg)}
  .task-sec-right{position:relative;display:inline-flex;align-items:center;flex-shrink:0}
  .task-view-trigger{opacity:0}
  .task-sec-h:hover .task-view-trigger,.task-sec-h:focus-within .task-view-trigger,.task-view-trigger:focus{opacity:1}
  .task-view-menu{position:absolute;right:0;top:calc(100% + var(--sp-1));z-index:45;min-width:13.75rem;padding:var(--sp-2);background:var(--color-menu);border:1px solid var(--color-popover-border);border-radius:var(--radius-2xl);box-shadow:var(--shadow-md)}
  .task-menu-ico{display:inline-flex;width:var(--size-4);height:var(--size-4);align-items:center;justify-content:center;flex-shrink:0;color:var(--color-foreground)}
  .task-menu-check{display:inline-flex;width:var(--size-4);height:var(--size-4);align-items:center;justify-content:center;flex-shrink:0;color:var(--color-foreground)}
  .task-filter-check-slot{display:inline-block;width:var(--size-4);height:var(--size-4);flex-shrink:0}
  .flex-1{flex:1 1 0%;min-width:0}
  .task-sec-h .n{font-variant-numeric:tabular-nums;font-weight:500}
  .task-sec-clear{margin-left:auto;border:0;background:transparent;color:var(--color-foreground-subtle);font-size:var(--text-ui-sm);cursor:pointer;text-transform:none;letter-spacing:0;font-weight:500;padding:var(--sp-0-5) var(--sp-1-5);border-radius:var(--radius-md)}
  .task-sec-clear:hover:not(:disabled){background:var(--color-hover);color:var(--color-foreground)}
  .task-sec-clear:disabled{opacity:.4;cursor:default}
  .aside-task-search{flex:1;min-width:0;height:var(--control-h-7);border:1px solid var(--color-input-border);border-radius:var(--radius-lg);padding:0 var(--sp-2);font-size:var(--text-ui-sm);background:var(--color-input);color:var(--color-foreground);outline:none}
  .aside-task-search:focus{border-color:var(--color-input-border-focused)}
  .task-toolbar{display:none}
  .task-org-tabs{display:inline-flex;align-items:center;gap:var(--sp-0-5);height:var(--control-h-7);padding:var(--sp-0-5);border-radius:var(--radius-full);background:var(--color-surface)}
  .task-org-tab{height:var(--control-h-6);border:0;background:transparent;border-radius:var(--radius-full);padding:0 var(--sp-2);font-size:var(--text-ui-sm);font-weight:500;color:var(--color-foreground-subtle);cursor:pointer}
  .task-org-tab.on{background:var(--color-background);color:var(--color-foreground)}
  .task-toolbar-r{position:relative;display:flex;align-items:center}
  .task-filter-menu{position:absolute;right:0;top:calc(100% + var(--sp-1));z-index:45;min-width:15rem;padding:var(--sp-2);background:var(--color-menu);border:1px solid var(--color-popover-border);border-radius:var(--radius-2xl);box-shadow:var(--shadow-md)}
  .task-filter-label{padding:var(--sp-1) var(--sp-2);font-size:var(--text-ui-xs);color:var(--color-foreground-subtle);font-weight:500}
  .task-filter-opt{width:100%;display:flex;align-items:center;gap:var(--sp-2);border:0;background:transparent;text-align:left;padding:0 var(--sp-2);height:var(--control-h-8);border-radius:var(--radius-lg);font-size:var(--text-ui-base);font-weight:400;line-height:1.25;color:var(--color-foreground);cursor:pointer}
  .task-filter-opt:hover,.task-filter-opt.on{background:var(--color-surface-hover)}
  .task-filter-opt.disabled,.task-filter-opt:disabled{opacity:.45;cursor:default}
  .task-filter-reset{margin-top:var(--sp-1)}
  .task-empty{padding:var(--sp-3) var(--sp-2);font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest)}
  /* Task row leading：size-4 槽与文件夹图标共轴；树线/状态点共轴居中
     对标 banner TaskTreeLine + TaskRunningDot / TaskStatusDot */
  .pchat{position:relative}
  .pchat .pchat-actions{display:none;align-items:center;gap:var(--sp-0-5);flex-shrink:0;margin-left:auto}
  .pchat:hover .pchat-actions,.pchat:focus-within .pchat-actions,.pchat.on .pchat-actions{display:inline-flex}
  .pchat:hover .pchat-meta,.pchat:focus-within .pchat-meta,.pchat.on .pchat-meta{display:none}
  .pchat-leading{
    display:inline-flex;align-items:center;justify-content:center;
    width:var(--size-4);height:var(--size-4);flex-shrink:0;
    color:var(--color-foreground-subtle);position:relative;z-index:1
  }
  .pchat-marker{color:var(--color-foreground-subtle)}
  .pchat:hover .pchat-leading,.pchat.on .pchat-leading,
  .pchat:hover .pchat-marker,.pchat.on .pchat-marker{color:var(--color-foreground-subtle)}
  .pchat-leading svg.lucide,.pchat-marker svg.lucide{stroke-width:1.5}
  /* 行内不再画竖线（由 .pchildren.open::before 贯通到文件夹）；槽位叠状态点遮罩 */
  .pchat-leading.tree-line{align-self:center;position:relative}
  /* 遮罩铺满 size-4，盖住贯通竖线；与文件夹 / 竖线共轴；底色跟 aside，勿用 panel 白 */
  .pchat-tree-overlay{
    position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;
    width:var(--size-4);height:var(--size-4);border-radius:var(--radius-sm);
    background:var(--color-background)
  }
  /* 与行底同色（不透明），勿再叠 surface-hover/selected 半透明 */
  .pchat:hover .pchat-tree-overlay{background:color-mix(in oklab,var(--color-foreground) 5%,var(--color-background))}
  .pchat.on .pchat-tree-overlay{background:color-mix(in oklab,var(--color-foreground) 5%,var(--color-background))}
  .pchat-marker{display:inline-flex;align-items:center;justify-content:center;width:var(--size-4);height:var(--size-4);flex-shrink:0;color:var(--color-foreground-subtle)}
  /* TaskRunningDot：空心环 — 同板块统一用 foreground-subtle，状态靠形状区分 */
  .pchat-marker.run-ring .pchat-ring{
    width:var(--sp-2);height:var(--sp-2);border-radius:50%;border:1.5px solid currentColor;box-sizing:border-box
  }
  .pchat-marker.run-ring{color:var(--color-foreground-subtle)}
  /* TaskRunningDot：旋转环 — 同板块统一色；图标在槽内居中 */
  .pchat-marker.run-dot{color:var(--color-foreground-subtle)}
  .pchat-marker.run-dot svg{animation:spin 1s linear infinite;display:block;margin:0 auto}
  .pchat-marker.run-dot[data-state="recovering"] svg{animation-duration:1.6s}
  /* TaskStatusDot：实心点 — 同板块统一色；在 size-4 槽内水平垂直居中 */
  .pchat-marker.status-dot{
    display:inline-flex;align-items:center;justify-content:center
  }
  .pchat-marker.status-dot .pchat-solid{
    width:var(--sp-1-5);height:var(--sp-1-5);border-radius:50%;display:inline-block;
    background:var(--color-foreground-subtle);flex-shrink:0
  }
  .pchat-marker.status-dot[data-kind="unread"] .pchat-solid,
  .pchat-marker.status-dot[data-kind="error"] .pchat-solid{background:var(--color-foreground-subtle)}
  /* 兼容旧类名 */
  .pchat-marker.idle-ring{width:var(--sp-2);height:var(--sp-2);border-radius:50%;border:1.5px solid var(--color-border);box-sizing:border-box}
  .pchat-marker.fail-dot{width:var(--sp-2);height:var(--sp-2);border-radius:50%;background:var(--color-foreground-subtle)}
  .pchat.running .pchat-leading svg,.pchat.running .pchat-marker svg{animation:spin 1s linear infinite}
  .pchat .unread-dot,.pchat-marker.unread-dot{width:var(--sp-1-5);height:var(--sp-1-5);border-radius:50%;background:var(--color-foreground-subtle);display:inline-block}
  .pchat-rename{flex:1;min-width:0;height:var(--control-h-6);border:1px solid var(--color-input-border-focused);border-radius:var(--radius-md);padding:0 var(--sp-1-5);font-size:var(--text-ui-base);background:var(--color-input);color:var(--color-foreground);outline:none}
  .pchat-sub{display:flex;align-items:center;gap:var(--sp-1-5);padding:0 0 var(--sp-1);font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest);min-width:0}
  .pchat-sub .trunc{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .pchat-sub .ico-wrap{display:inline-flex;flex-shrink:0;color:var(--color-foreground-subtlest)}
  .pchat.archived-row{min-height:36px}
  .pchat-act{width:var(--size-5);height:var(--size-5);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}
  .pchat-act:hover{background:var(--color-hover);color:var(--color-foreground)}
  .pchat-act.danger:hover{color:var(--color-destructive);background:var(--color-destructive-surface)}
  @keyframes spin{to{transform:rotate(360deg)}}
  .task-ctx-menu{position:fixed;z-index:200;min-width:14rem;max-width:16rem;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);color:var(--color-foreground)}
  .task-ctx-item{display:flex;align-items:center;gap:var(--sp-2);width:100%;height:var(--control-h-8);padding:0 var(--sp-2);border:0;background:transparent;border-radius:var(--radius-md);color:inherit;font-size:var(--text-ui-base);cursor:pointer;text-align:left}
  .task-ctx-item:hover:not(:disabled){background:var(--color-surface-hover)}
  .task-ctx-item:disabled,.task-ctx-item.disabled{opacity:.45;cursor:default}
  .task-ctx-item.danger{color:var(--color-destructive)}
  .task-ctx-ico{display:inline-flex;width:var(--size-4);justify-content:center;flex-shrink:0}
  .task-ctx-item.has-sub{justify-content:space-between}
  .task-ctx-chev{color:var(--color-foreground-subtlest)}
  .task-ctx-sep{height:var(--sp-px);margin:var(--sp-1) 0;background:var(--color-border)}
  .task-ctx-sub{position:relative}
  .task-ctx-flyout{display:none;position:absolute;left:calc(100% - var(--sp-1));top:calc(var(--sp-1) * -1);min-width:13rem;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);z-index:1}
  .task-ctx-sub:hover .task-ctx-flyout{display:block}
  .task-ctx-dot{width:var(--sp-2);height:var(--sp-2);border-radius:50%;background:var(--color-foreground-subtlest);flex-shrink:0}
  .task-ctx-item .trunc{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

  .share-banner{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-4);border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0}
  .share-banner .sb-ico{color:var(--color-foreground-subtle);display:inline-flex}
  .share-banner .sb-main{display:flex;flex-direction:column;gap:var(--sp-px);min-width:0;flex:1}
  .share-banner .sb-main b{font-size:var(--text-ui-base);font-weight:600}
  .share-banner .sb-main span{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
  .share-success-dock{margin:0 var(--sp-4) var(--sp-3);border:1px solid var(--color-border);background:var(--color-input);border-radius:var(--radius-2xl);overflow:hidden;flex-shrink:0}
  .share-success-dock .ssd-h{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-4) var(--sp-2);font-size:var(--text-ui-base)}
  .share-success-dock .ssd-url{padding:0 var(--sp-4) var(--sp-2);font-family:var(--font-mono);font-size:var(--text-ui-sm);color:var(--color-foreground);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .share-success-dock .ssd-actions{display:flex;justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4) var(--sp-3);border-top:1px solid var(--color-border)}

  .art-strip{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1-5);margin:var(--sp-2) 0}
  .art-pill{display:inline-flex;align-items:center;gap:var(--sp-1);height:var(--control-h-7);padding:0 var(--sp-2-5);border:1px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-card);color:var(--color-foreground);font-size:var(--text-ui-sm);cursor:pointer}
  .art-pill:hover{background:var(--color-hover);border-color:var(--color-border-hover)}
  .art-pill-ico{display:inline-flex;color:var(--color-foreground-subtle)}
  .art-more{font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest);padding:0 var(--sp-1)}
  .art-complete-row{margin:var(--sp-1) 0 var(--sp-2)}
  .preview-cards{display:flex;flex-direction:column;gap:var(--sp-3);margin-top:var(--sp-3);width:100%}
  .preview-card{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-3) var(--sp-4) var(--sp-3) var(--sp-3);border:1px solid var(--color-card-border,var(--color-border));border-radius:var(--radius-xl);background:var(--color-card);color:var(--color-foreground);cursor:pointer;text-align:left;animation:pvCardIn .28s ease both;animation-delay:var(--delay,0ms)}
  .preview-card:hover{background:var(--color-hover)}
  @keyframes pvCardIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
  .preview-card .pc-ico{width:var(--size-11,2.75rem);height:var(--size-11,2.75rem);border-radius:var(--radius-md);background:var(--color-background);color:var(--color-foreground-subtle);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
  .preview-card .pc-body{min-width:0;flex:1;display:flex;flex-direction:column;gap:var(--sp-0-5)}
  .preview-card .pc-t{font-size:var(--text-ui-base);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .preview-card .pc-s{font-size:var(--text-ui-base);color:var(--color-foreground-subtlest);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .preview-card .pc-open{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);flex-shrink:0}

  .thread-wrap.conv-split{display:flex;flex-direction:row;align-items:stretch}
  .thread-wrap.conv-split .ws-header,
  .thread-wrap.conv-split .share-banner,
  .thread-wrap.conv-split .share-success-dock,
  .thread-wrap.conv-split .composer-dock{grid-column:1 / -1}
  .thread-wrap.has-preview{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,42%);grid-template-rows:auto auto 1fr auto}
  .thread-wrap.has-preview .ws-header{grid-column:1 / -1;grid-row:1}
  .thread-wrap.has-preview .share-banner{grid-column:1 / -1;grid-row:2}
  .thread-wrap.has-preview .conv-timeline{grid-column:1;grid-row:3;min-width:0}
  .thread-wrap.has-preview .composer-dock,
  .thread-wrap.has-preview .share-success-dock{grid-column:1;grid-row:4}
  .thread-wrap.has-preview .preview-pane{grid-column:2;grid-row:3 / span 2;border-left:1px solid var(--color-border);min-width:0}
  .preview-pane{display:flex;flex-direction:column;background:var(--color-background);min-height:0;overflow:hidden}
  .preview-pane[hidden]{display:none}
  .pv-header{display:flex;align-items:center;gap:var(--sp-2);height:var(--sp-12);padding:0 var(--sp-3);border-bottom:1px solid color-mix(in oklab,var(--color-border) 50%,transparent);flex-shrink:0}
  .pv-crumb{flex:1;min-width:0;display:flex;align-items:center;gap:var(--sp-1);font-size:var(--text-ui-sm);color:var(--color-foreground);overflow:hidden}
  .pv-crumb .dim{color:var(--color-foreground-subtle);flex-shrink:0}
  .pv-crumb .sep{color:var(--color-foreground-subtlest);flex-shrink:0}
  .pv-crumb .file{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .pv-actions{display:flex;align-items:center;gap:var(--sp-1);flex-shrink:0}
  .pv-toolbar{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);flex-shrink:0}
  .pv-path{font-family:var(--font-mono);font-size:var(--text-ui-xs);color:var(--color-foreground-subtlest);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .pv-body{flex:1;overflow:auto;padding:var(--sp-4);min-height:0}
  .pv-code{margin:0;white-space:pre-wrap;font-family:var(--font-mono);font-size:var(--text-ui-sm);line-height:1.55;color:var(--color-code-surface-fg);background:var(--color-code-surface);border:1px solid var(--color-code-surface-border);border-radius:var(--radius-lg);padding:var(--sp-3)}
  .pv-image-ph{display:flex;flex-direction:column;gap:var(--sp-2)}
  .pv-image-box{aspect-ratio:16/10;border-radius:var(--radius-lg);border:1px solid var(--color-border);background:linear-gradient(135deg,color-mix(in oklab,var(--color-session-node) 40%,var(--color-surface)),var(--color-surface));display:flex;align-items:center;justify-content:center;color:var(--color-foreground-subtle);font-size:var(--text-ui-sm)}
  .pv-cap{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}

  .composer-dock[hidden],.share-banner[hidden],.share-success-dock[hidden],.preview-pane[hidden]{display:none!important}

  /* ============ 组件脚手架 zc-*（对标 ZCode button.tsx） ============ */
  .zc-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-1);height:var(--control-h-8);padding:0 var(--sp-3);border-radius:var(--radius-lg);border:1px solid transparent;font-size:var(--text-ui-base);font-weight:500;cursor:pointer;background:var(--color-primary);color:var(--color-primary-foreground);transition:background-color .12s,color .12s,border-color .12s}
  .zc-btn:hover{filter:brightness(.96)}
  .zc-btn:disabled{opacity:.4;pointer-events:none}
  .zc-btn-ghost{background:transparent;color:var(--color-foreground-subtle);border-color:transparent}
  .zc-btn-ghost:hover,.zc-btn-ghost.on{background:var(--color-hover);color:var(--color-foreground)}
  .zc-btn-outline{background:transparent;border-color:var(--color-border);color:var(--color-foreground)}
  .zc-btn-outline:hover{background:var(--color-hover);border-color:var(--color-border-hover)}
  .zc-btn-brand{background:var(--color-brand);color:var(--color-foreground-inverse)}
  .zc-btn-destructive{background:var(--color-destructive);color:var(--color-destructive-foreground)}
  .zc-btn-sm{height:var(--control-h-7);padding:0 var(--sp-2-5);font-size:var(--text-ui-sm)}
  .zc-btn-md{height:var(--control-h-8)}
  .zc-btn-lg{height:var(--control-h-9);padding:0 var(--sp-4)}
  .zc-btn-icon{width:var(--size-7);height:var(--control-h-7);padding:0}
  .zc-btn-label{white-space:nowrap}

  /* Plugin Store — paid badge（对标 PluginStorePaidPlanBadge） */
  .plugin-paid-badge{display:inline-flex;align-items:center;gap:var(--sp-0-5);margin-left:var(--sp-1-5);padding:var(--sp-0-5) var(--sp-1-5);border-radius:var(--radius-full);background:var(--color-plugin-paid-plan-badge);color:var(--color-plugin-paid-plan-badge-foreground);font-size:var(--text-ui-sm);font-weight:500;line-height:1;vertical-align:middle}

  /* ============ OccupationOnboarding（对标 ZCode onboarding/*） ============ */
  body.ob-open{overflow:hidden}
  #obRoot{position:fixed;inset:0;z-index:300;display:block}
  #obRoot[hidden]{display:none!important}
  .ob-root{position:relative;display:flex;flex-direction:column;height:100dvh;width:100%;min-height:0;overflow:hidden;background:var(--color-background);color:var(--color-foreground)}
  .ob-shell{position:relative;display:grid;grid-template-columns:1fr;gap:0;min-height:0;flex:1}
  .ob-left{display:flex;flex-direction:column;min-height:0;padding-top:var(--sp-12)}
  .ob-header{position:relative;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:var(--sp-14);flex-shrink:0;padding:0 var(--sp-6)}
  .ob-back{display:inline-flex;align-items:center;gap:var(--sp-1);justify-self:start;height:var(--control-h-9);padding:0 var(--sp-2);border:none;border-radius:var(--radius-xl);background:transparent;color:var(--color-foreground-subtle);font-size:var(--text-ui-sm);cursor:pointer}
  .ob-back:hover{background:var(--color-hover);color:var(--color-foreground)}
  .ob-steps{grid-column:2;display:flex;align-items:center;gap:var(--sp-2);width:7rem;margin:0;padding:0;list-style:none}
  .ob-step{min-width:0;flex:1}
  .ob-step-bar{height:var(--sp-1);border-radius:var(--radius-full);background:var(--color-border);transition:background-color .15s}
  .ob-step.on .ob-step-bar{background:var(--color-primary)}
  .ob-close{grid-column:3;justify-self:end;width:var(--size-9);height:var(--control-h-9);display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius-xl);background:transparent;color:var(--color-foreground-subtle);cursor:pointer}
  .ob-close:hover{background:var(--color-hover);color:var(--color-foreground)}
  .ob-scroll{flex:1;min-height:0;overflow-y:auto;padding:var(--sp-4) var(--sp-6);display:flex;flex-direction:column}
  .ob-panel{width:100%;max-width:32rem;margin:auto;flex-shrink:0}
  .ob-section{display:flex;flex-direction:column;width:100%}
  .ob-title{margin:0;text-align:center;font-size:var(--text-ui-xl);font-weight:600;letter-spacing:-.01em;color:var(--color-foreground)}
  .ob-desc{margin:var(--sp-3) auto 0;max-width:28rem;text-align:center;font-size:var(--text-ui-base);line-height:1.6;color:var(--color-foreground-subtle)}
  .ob-grid{margin-top:var(--sp-8);display:grid;grid-template-columns:1fr;gap:var(--sp-3)}
  .ob-card{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--sp-12);padding:var(--sp-3);border:1px solid var(--color-card-border,var(--color-border));border-radius:var(--radius-xl);background:var(--color-card);color:var(--color-foreground);text-align:left;font-size:var(--text-ui-base);cursor:pointer;transition:background-color .12s,border-color .12s}
  .ob-card:hover{background:var(--color-surface-hover,var(--color-hover));border-color:var(--color-border-hover)}
  .ob-card.on{border-color:color-mix(in oklab,var(--color-foreground) 60%,transparent);background:var(--color-card-selected)}
  .ob-card-ico{flex-shrink:0;color:var(--color-foreground-subtle)}
  .ob-card.on .ob-card-ico{color:var(--color-foreground)}
  .ob-card-label{flex:1;min-width:0}
  .ob-radio{display:inline-flex;align-items:center;justify-content:center;width:var(--size-4);height:var(--size-4);flex-shrink:0;border-radius:var(--radius-full);border:1px solid var(--color-border);background:transparent}
  .ob-radio.on{border-color:var(--color-primary);background:var(--color-primary);color:var(--color-primary-foreground)}
  .ob-radio-check{font-size:var(--size-3)!important;width:var(--size-3);height:var(--size-3)}
  .ob-modes{margin-top:var(--sp-8);display:flex;flex-direction:column;gap:var(--sp-3)}
  .ob-mode{display:flex;align-items:flex-start;gap:var(--sp-4);width:100%;padding:var(--sp-5);border:1px solid var(--color-card-border,var(--color-border));border-radius:var(--radius-xl);background:var(--color-card);text-align:left;cursor:pointer;transition:background-color .12s,border-color .12s}
  .ob-mode:hover{background:var(--color-surface-hover,var(--color-hover));border-color:var(--color-border-hover)}
  .ob-mode.on{border-color:color-mix(in oklab,var(--color-foreground) 60%,transparent);background:var(--color-card-selected)}
  .ob-mode-ico{margin-top:var(--sp-0-5);flex-shrink:0;color:var(--color-foreground-subtle)}
  .ob-mode-body{flex:1;min-width:0;display:flex;flex-direction:column}
  .ob-mode-title{font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground)}
  .ob-mode-desc{margin-top:var(--sp-2);font-size:var(--text-ui-sm);line-height:1.55;color:var(--color-foreground-subtle)}
  .ob-prefs{margin-top:var(--sp-8);display:flex;flex-direction:column;gap:var(--sp-3)}
  .ob-pref{position:relative;display:grid;grid-template-columns:auto 1fr;align-items:center;column-gap:var(--sp-4);row-gap:var(--sp-2);padding:var(--sp-5);border:1px solid var(--color-card-border,var(--color-border));border-radius:var(--radius-xl);background:var(--color-card);cursor:pointer;transition:background-color .12s}
  .ob-pref:hover{background:var(--color-surface-hover,var(--color-hover))}
  .ob-pref-chk{position:absolute;opacity:0;pointer-events:none}
  .ob-pref-box{width:var(--size-4);height:var(--size-4);border-radius:var(--radius-sm);border:1px solid var(--color-border);display:inline-flex;align-items:center;justify-content:center;background:var(--color-background);color:var(--color-primary-foreground)}
  .ob-pref-chk:checked + .ob-pref-box{background:var(--color-primary);border-color:var(--color-primary)}
  .ob-pref-check{font-size:var(--size-3)!important;width:var(--size-3);height:var(--size-3)}
  .ob-pref-text{display:flex;flex-direction:column;gap:var(--sp-1);grid-column:2}
  .ob-pref-title{font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground)}
  .ob-pref-desc{font-size:var(--text-ui-sm);font-weight:400;color:var(--color-foreground-subtle)}
  .ob-footer{margin-top:var(--sp-6);display:flex;flex-direction:column;gap:var(--sp-3)}
  .ob-footer-main{display:flex;width:100%;gap:var(--sp-3)}
  .ob-primary{flex:1;height:2.75rem;padding:0 var(--sp-5);border:none;border-radius:var(--radius-xl);background:var(--color-primary);color:var(--color-primary-foreground);font-size:var(--text-ui-base);font-weight:500;cursor:pointer}
  .ob-primary:hover{filter:brightness(.96)}
  .ob-primary:disabled{opacity:.4;pointer-events:none}
  .ob-skip{align-self:center;height:var(--control-h-9);padding:0 var(--sp-3);border:none;border-radius:var(--radius-xl);background:transparent;color:var(--color-foreground-subtle);font-size:var(--text-ui-base);cursor:pointer}
  .ob-skip:hover{color:var(--color-foreground)}
  .ob-skip:disabled{opacity:.4;pointer-events:none}
  .ob-visual{position:relative;display:none;min-height:0;flex-direction:column;align-items:center;overflow:hidden;padding:clamp(2rem,4vw,4.5rem) clamp(4rem,4vw,4.5rem);background:
    radial-gradient(circle at 18% 20%,rgba(255,255,255,.9),transparent 24%),
    radial-gradient(circle at 82% 14%,rgba(11,127,255,.2),transparent 26%),
    radial-gradient(circle at 70% 84%,rgba(128,190,255,.2),transparent 30%),
    linear-gradient(180deg,#ffffff 0%,#f8f8f8 42%,#ebf4ff 100%);border-radius:var(--panel-radius,var(--radius-xl));border:1px solid var(--color-border)}
  .ob-visual-glow{pointer-events:none;position:absolute;inset:0}
  .ob-visual-inner{position:relative;margin:auto 0;display:flex;width:100%;max-width:40rem;flex-direction:column;align-items:flex-start;container-type:inline-size}
  .ob-logo{position:relative;margin-bottom:var(--sp-10);width:6rem;height:6rem;border-radius:1.5rem;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#000 0%,#151718 100%);color:#fff;box-shadow:var(--shadow-xl)}
  .ob-logo::before{content:'';position:absolute;inset:0;border-radius:inherit;border:1px solid rgba(255,255,255,.1);pointer-events:none}
  .ob-logo-mark{width:3.5rem;height:auto;color:currentColor}
  .ob-logo-sweep{position:absolute;inset:0;border-radius:inherit;padding:1px;overflow:hidden;pointer-events:none;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
  .ob-logo-sweep>div{position:absolute;inset:-50%;background:conic-gradient(from 0deg,transparent 0deg 240deg,rgb(255 255 255 / 8%) 280deg,rgb(255 255 255 / 65%) 350deg,transparent 360deg);animation:ob-logo-sweep 5s linear infinite}
  @keyframes ob-logo-sweep{to{transform:rotate(360deg)}}
  .ob-hero-title{margin:0;white-space:nowrap;font-size:clamp(var(--text-ui-xl),7cqw,var(--text-display));line-height:1.15;font-weight:600;letter-spacing:-.035em;color:#0d0d0d}
  .ob-hero-desc{margin:var(--sp-6) 0 0;width:100%;white-space:pre-line;font-size:var(--text-ui-lg);line-height:1.6;color:#5c5c5c}
  .dark .ob-visual{background:
    radial-gradient(circle at 18% 18%,rgba(64,153,255,.18),transparent 24%),
    radial-gradient(circle at 82% 12%,rgba(128,190,255,.2),transparent 26%),
    radial-gradient(circle at 66% 84%,rgba(153,199,255,.16),transparent 28%),
    linear-gradient(180deg,#161616 0%,#202020 42%,#001d3d 100%);border-color:var(--color-border)}
  .dark .ob-hero-title{color:#f8f8f8}
  .dark .ob-hero-desc{color:#adadad}
  .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
  @media (min-width:1024px){
    .ob-shell{grid-template-columns:1fr 1fr;gap:var(--sp-1);padding:var(--sp-1)}
    .ob-visual{display:flex}
    .ob-scroll{padding-left:var(--sp-10);padding-right:var(--sp-10)}
    .ob-header{padding-left:var(--sp-10);padding-right:var(--sp-10)}
    .ob-grid{grid-template-columns:1fr 1fr}
  }
  @media (max-height:740px){
    .ob-left{padding-top:var(--sp-10)}
    .ob-header{height:var(--sp-10)}
    .ob-grid{margin-top:var(--sp-5);gap:var(--sp-2)}
    .ob-card{min-height:var(--control-h-11,2.75rem);padding-top:var(--sp-2);padding-bottom:var(--sp-2)}
    .ob-footer{margin-top:var(--sp-4);gap:var(--sp-1)}
  }
  @media (prefers-reduced-motion:reduce){
    .ob-logo-sweep{display:none}
  }

  /* ============ WelcomeScreen 连接账号（对标 ZCode WelcomeScreen；登录方式=手机号） ============ */
  body.ws-login-open{overflow:hidden}
  #wsLoginRoot{position:fixed;inset:0;z-index:310;display:block}
  #wsLoginRoot[hidden]{display:none!important}
  .ws-login{position:relative;display:flex;align-items:center;justify-content:center;min-height:100dvh;width:100%;overflow:hidden;padding:var(--sp-6) var(--sp-4);background:var(--color-background);color:var(--color-foreground);box-sizing:border-box}
  .ws-login-hero{position:absolute;inset:0;pointer-events:none;background:
    radial-gradient(circle at 18% 20%,rgba(255,255,255,.9),transparent 24%),
    radial-gradient(circle at 82% 14%,rgba(11,127,255,.2),transparent 26%),
    radial-gradient(circle at 70% 84%,rgba(128,190,255,.2),transparent 30%),
    linear-gradient(180deg,#ffffff 0%,#f8f8f8 42%,#ebf4ff 100%)}
  .dark .ws-login-hero{background:
    radial-gradient(circle at 18% 18%,rgba(64,153,255,.18),transparent 24%),
    radial-gradient(circle at 82% 12%,rgba(128,190,255,.2),transparent 26%),
    radial-gradient(circle at 66% 84%,rgba(153,199,255,.16),transparent 28%),
    linear-gradient(180deg,#161616 0%,#202020 42%,#001d3d 100%)}
  .ws-login-stack{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:var(--sp-6);width:100%;max-width:24rem}
  .ws-login-card{width:100%;display:flex;flex-direction:column;gap:var(--sp-10);padding:var(--sp-8);border:1px solid var(--color-popover-border);border-radius:var(--radius-2xl);background:var(--color-background);box-shadow:var(--shadow-md);box-sizing:border-box}
  @media (min-width:640px){
    .ws-login-card{padding:var(--sp-10)}
  }
  .ws-login-header{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);text-align:center}
  .ws-login-logo{position:relative;margin-bottom:var(--sp-1);width:4rem;height:4rem;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-2xl);background:linear-gradient(180deg,#000 0%,#151718 100%);color:#fff;box-shadow:var(--shadow-md)}
  .ws-login-logo::before{content:'';position:absolute;inset:0;border-radius:inherit;border:1px solid rgba(255,255,255,.1);pointer-events:none}
  .ws-login-mark{width:2.5rem;height:auto;color:currentColor}
  .ws-login-heading{display:flex;flex-direction:column;align-items:center;gap:var(--sp-1);text-align:center}
  .ws-login-title{margin:0;font-size:var(--text-display);line-height:1.2;font-weight:600;letter-spacing:-.025em;color:var(--color-foreground)}
  .ws-login-desc{margin:0;font-size:var(--text-ui-base);line-height:1.6;color:var(--color-foreground-subtle)}
  .ws-login-body{display:flex;flex-direction:column;gap:var(--sp-6)}
  .ws-login-fields{display:flex;flex-direction:column;gap:var(--sp-2)}
  .ws-login-field{display:flex;align-items:center;height:var(--control-h-10,2.5rem);padding:0 var(--sp-3);border:1px solid var(--color-input-border);border-radius:var(--radius-lg);background:var(--color-input);box-sizing:border-box}
  .ws-login-field:focus-within{border-color:var(--color-border-hover);outline:none;box-shadow:none}
  .ws-login-prefix{flex-shrink:0;margin-right:var(--sp-2);font-size:var(--text-ui-base);color:var(--color-foreground);font-weight:500}
  .ws-login-input{flex:1;min-width:0;height:100%;border:none!important;background:transparent;font-size:var(--text-ui-base);color:var(--color-foreground);outline:none!important;box-shadow:none!important;-webkit-appearance:none;appearance:none}
  .ws-login-input:focus,.ws-login-input:focus-visible{
    outline:none!important;border:none!important;box-shadow:none!important;
  }
  .ws-login-input::placeholder{color:var(--color-foreground-subtlest)}
  .ws-login-input:-webkit-autofill,
  .ws-login-input:-webkit-autofill:hover,
  .ws-login-input:-webkit-autofill:focus{
    -webkit-text-fill-color:var(--color-foreground);
    -webkit-box-shadow:0 0 0 1000px var(--color-input) inset;
    box-shadow:0 0 0 1000px var(--color-input) inset;
    transition:background-color 99999s ease-in-out 0s;
  }
  .ws-login-field-code{padding-right:var(--sp-2)}
  .ws-login-sep{width:1px;height:1rem;margin:0 var(--sp-2);background:var(--color-border);flex-shrink:0}
  .ws-login-send{flex-shrink:0;border:none;background:transparent;padding:0 var(--sp-1);font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground-subtle);cursor:pointer;white-space:nowrap}
  .ws-login-send:hover:not(:disabled){color:var(--color-foreground)}
  .ws-login-send:disabled{opacity:.45;cursor:default}
  .ws-login-error{margin:var(--sp-1) 0 0;font-size:var(--text-ui-sm);color:var(--color-destructive)}
  .ws-login-actions{display:flex;flex-direction:column;gap:var(--sp-2)}
  .ws-login-primary{height:var(--control-h-10,2.5rem);width:100%;border:none;border-radius:var(--radius-lg);background:var(--color-primary);color:var(--color-primary-foreground);font-size:var(--text-ui-base);font-weight:500;cursor:pointer}
  .ws-login-primary:hover:not(:disabled){filter:brightness(.96)}
  .ws-login-primary:disabled{opacity:.4;pointer-events:none}
  .ws-login-secondary{height:var(--control-h-10,2.5rem);width:100%;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:transparent;color:var(--color-foreground);font-size:var(--text-ui-base);font-weight:500;cursor:pointer}
  .ws-login-secondary:hover:not(:disabled){background:var(--color-hover);border-color:var(--color-border-hover)}
  .ws-login-secondary:disabled{opacity:.4;pointer-events:none}
  .ws-login-skip{height:var(--control-h-7);width:100%;border:none;border-radius:var(--radius-lg);background:transparent;color:var(--color-foreground-subtle);font-size:var(--text-ui-base);cursor:pointer}
  .ws-login-skip:hover:not(:disabled){color:var(--color-foreground)}
  .ws-login-skip:disabled{opacity:.4;pointer-events:none}
  .ws-login-legal{margin:0;text-align:center;font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);line-height:1.5}
  .ws-login-link{border:none;background:transparent;padding:0;font:inherit;color:var(--color-foreground-subtle);text-decoration:underline;text-underline-offset:2px;cursor:pointer}
  .ws-login-link:hover{color:var(--color-foreground)}

  /* ============ GitPane / 审查 — 对标 ZCode GitPane + GitPaneChangeCard + LightweightDiffPreview ============ */
  .text-diff-added{color:var(--color-diff-added)}
  .text-diff-removed{color:var(--color-diff-removed)}
  .git-pane{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--color-background)}
  .git-pane-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3);flex-shrink:0}
  .git-pane-toolbar-r{display:flex;align-items:center;gap:var(--sp-2);flex-shrink:0}
  .git-source-wrap{position:relative;min-width:0;max-width:100%}
  .git-source-trigger{
    display:inline-flex;align-items:center;gap:var(--sp-1);height:var(--control-h-8);
    max-width:100%;padding:0 var(--sp-2) 0 var(--sp-3);border:1px solid var(--color-input-border);
    border-radius:var(--radius-lg);background:var(--color-input);color:var(--color-foreground);
    font-size:var(--text-ui-base);cursor:pointer;box-sizing:border-box;
  }
  .git-source-trigger:hover{border-color:var(--color-input-border-hover);background:var(--color-hover)}
  .git-source-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .git-source-chev{display:inline-flex;flex-shrink:0;line-height:0;color:var(--color-foreground-subtle)}
  .git-source-menu{
    position:absolute;top:calc(100% + var(--sp-1));left:0;z-index:80;min-width:11rem;
    display:none;flex-direction:column;gap:var(--sp-0-5);padding:var(--sp-1);
    background:var(--color-menu);border:1px solid var(--color-popover-border);
    border-radius:var(--radius-lg);box-shadow:var(--shadow-md);
  }
  .git-source-menu.show{display:flex}
  .git-source-di{
    position:relative;display:flex;align-items:center;gap:var(--sp-2);width:100%;
    padding:var(--sp-2) var(--sp-8) var(--sp-2) var(--sp-3);border:0;background:transparent;
    border-radius:var(--radius-md);cursor:pointer;text-align:left;font:inherit;color:var(--color-foreground);
  }
  .git-source-di:hover{background:var(--color-menu-hover)}
  .git-source-check{position:absolute;right:var(--sp-2);display:inline-flex;color:var(--color-foreground-subtle)}
  .git-refresh-btn{
    display:inline-flex;align-items:center;gap:var(--sp-1-5);height:var(--control-h-8);
    padding:0 var(--sp-2-5);border:0;border-radius:var(--radius-lg);background:transparent;
    color:var(--color-foreground);font-size:var(--text-ui-base);cursor:pointer;
  }
  .git-refresh-btn:hover{background:var(--color-hover)}
  .git-refresh-btn svg{width:var(--size-3-5);height:var(--size-3-5);flex-shrink:0}
  .git-pane-body{flex:1;min-height:0;overflow:auto}
  .git-change-list{display:flex;flex-direction:column;min-width:0}
  .git-change{width:100%;min-width:0}
  .git-change-row{
    position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:var(--sp-3);
    width:100%;height:var(--control-h-8);padding:0 var(--sp-3);border:0;background:var(--color-background);
    text-align:left;cursor:pointer;box-sizing:border-box;transition:background-color .12s;
  }
  .git-change-row:hover,.git-change-row.open{background:var(--color-surface-hover)}
  @supports (backdrop-filter:blur(0)){
    .git-change-row{backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
  }
  .git-change-main{flex:1;min-width:0;overflow:hidden}
  .git-file-inline{display:inline-flex;align-items:center;gap:var(--sp-2);min-width:0;max-width:100%}
  .git-file-inline .git-file-ico,.git-file-inline .zc-file-ico{width:16px;height:16px;flex-shrink:0}
  .git-file-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-base);color:var(--color-foreground)}
  .git-file-path{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-base);color:var(--color-foreground-subtlest)}
  .git-change-meta{display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-3);padding-left:var(--sp-3);flex-shrink:0}
  .git-change-stats{flex-shrink:0;white-space:nowrap;font-size:var(--text-ui-base)}
  .git-change-stats .text-diff-removed{margin-left:var(--sp-2)}
  .git-change-chev{display:inline-flex;flex-shrink:0;line-height:0;color:var(--color-foreground-subtle);transition:transform .15s}
  .git-change-chev svg{width:var(--size-4);height:var(--size-4)}
  .git-change-chev.open{transform:rotate(180deg)}
  .git-change-diff{width:100%;min-width:0;overflow-x:auto;overflow-y:hidden;background:var(--color-background)}
  .git-change-diff-empty{padding:var(--sp-3) var(--sp-4);font-size:var(--text-ui-base);color:var(--color-foreground-subtle)}
  .git-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:0 var(--sp-6);text-align:center;color:var(--color-foreground-subtlest)}
  .git-empty-t{margin:var(--sp-3) 0 0;font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground)}
  .git-empty-d{margin:var(--sp-1) 0 0;font-size:var(--text-ui-base);color:var(--color-foreground-subtle)}
  /* LightweightDiffPreview */
  .lw-diff{width:100%;min-width:0;overflow:auto;background:var(--color-background)}
  .lw-diff-scroll{min-width:100%;font-family:var(--font-mono);line-height:1.625;color:var(--color-foreground)}
  .lw-diff-scroll.nowrap{width:max-content}
  .lw-diff-row{display:flex;min-width:100%;width:100%}
  .lw-diff-ln{
    position:sticky;left:0;z-index:1;width:3rem;flex-shrink:0;user-select:none;
    border-right:1px solid var(--color-border);padding:0 var(--sp-2);text-align:right;
    font-variant-numeric:tabular-nums;box-sizing:border-box;
  }
  .lw-diff-code{display:block;flex:1;padding:0 var(--sp-3);white-space:pre;font-family:inherit;font-size:inherit;background:transparent}
  .lw-diff-code.wrap{white-space:pre-wrap;word-break:break-word}

  /* ============ Settings（对标 ZCode SettingsPage + AppearanceSectionContent） ============ */
  .zc-settings-page{
    display:grid;grid-template-columns:68px minmax(0,1fr);grid-template-rows:minmax(0,1fr);
    height:100%;min-height:0;width:100%;position:relative;
  }
  @media (min-width:1024px){
    .zc-settings-page{grid-template-columns:268px minmax(0,1fr)}
  }
  .zc-settings-aside{min-width:0}
  .zc-settings-aside-inner{display:flex;flex-direction:column;height:100%;min-height:0}
  .zc-settings-aside-drag{height:var(--sp-12);flex-shrink:0}
  .zc-settings-back-wrap{padding:0 var(--sp-2) var(--sp-3);padding-top:var(--sp-3)}
  .zc-settings-back{
    display:flex;align-items:center;justify-content:flex-start;gap:var(--sp-2);
    width:calc(100% - var(--sp-2));margin:var(--sp-1);height:var(--control-h-9);
    padding:0 var(--sp-1-5);border:none;border-radius:var(--radius-xl);
    background:transparent;color:var(--color-foreground-subtle);cursor:pointer;
    font-size:var(--text-ui-base);font-weight:500;text-align:left;
  }
  .zc-settings-back:hover{background:var(--color-surface-hover);color:var(--color-foreground)}
  .zc-settings-back span{white-space:nowrap}
  .zc-settings-nav{flex:1;min-height:0;overflow-y:auto;padding:0 var(--sp-2) var(--sp-3)}
  .zc-settings-nav-groups{display:flex;flex-direction:column;gap:var(--sp-4)}
  .zc-settings-nav-group{display:flex;flex-direction:column;gap:var(--sp-1)}
  .zc-settings-nav-group-title{
    padding:0 var(--sp-2-5) var(--sp-1);font-size:var(--text-ui-sm);font-weight:500;
    color:var(--color-foreground-subtlest);
  }
  .zc-settings-nav-btn{
    display:flex;align-items:center;gap:var(--sp-2);width:100%;height:var(--control-h-8);
    padding:0 var(--sp-2-5);border:none;border-radius:var(--radius-xl);background:transparent;
    color:var(--color-foreground-subtle);cursor:pointer;text-align:left;transition:background-color .12s,color .12s;
  }
  .zc-settings-nav-btn:hover{background:var(--color-surface-hover);color:var(--color-foreground)}
  .zc-settings-nav-btn.is-active{background:var(--color-surface-hover);color:var(--color-foreground)}
  .zc-settings-nav-ico{display:inline-flex;width:var(--size-4);height:var(--size-4);align-items:center;justify-content:center;flex-shrink:0;color:var(--color-foreground)}
  .zc-settings-nav-label{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-base);color:var(--color-foreground)}
  .zc-settings-onboarding{margin-top:var(--sp-4);border:1px dashed var(--color-border)}
  .zc-settings-onboarding:hover{border-color:var(--color-border-hover)}
  .zc-settings-aside-foot{
    display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3) var(--sp-3);
    flex-shrink:0;
  }
  .zc-settings-foot-avatar{
    width:var(--size-7);height:var(--control-h-7);border-radius:var(--radius-full);border:none;
    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;cursor:pointer;
  }
  .zc-settings-foot-gear{
    width:var(--size-7);height:var(--control-h-7);border-radius:var(--radius-lg);border:none;
    background:transparent;color:var(--color-foreground-subtle);display:inline-flex;align-items:center;
    justify-content:center;cursor:pointer;
  }
  .zc-settings-foot-gear:hover{background:var(--color-hover);color:var(--color-foreground)}
  @media (max-width:1023px){
    .zc-settings-back span,.zc-settings-nav-group-title,.zc-settings-nav-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
    .zc-settings-back{width:var(--sp-10);height:var(--sp-10);margin:var(--sp-1) auto;justify-content:center;padding:0}
    .zc-settings-nav-btn{width:var(--sp-10);height:var(--sp-10);margin:0 auto;justify-content:center;padding:0}
    .zc-settings-nav-group.has-sep{border-top:1px solid var(--color-border);padding-top:var(--sp-3)}
    .zc-settings-aside-foot{display:none}
  }

  .zc-settings-content-frame{display:flex;flex-direction:column;min-height:0;padding:0}
  .zc-settings-panel{
    position:relative;display:flex;flex-direction:column;min-height:0;height:100%;
    border:1px solid var(--color-border);background:var(--color-background);border-radius:var(--radius-xl);
  }
  .zc-settings-panel-top{height:var(--sp-12);flex-shrink:0}
  .zc-settings-main{flex:1;min-height:0;overflow-y:auto;scrollbar-gutter:stable}
  .zc-settings-frame{
    margin:0 auto;width:100%;max-width:var(--page-settings-max);padding:0 var(--sp-4) var(--sp-8);
    display:flex;flex-direction:column;gap:var(--sp-8);
  }
  @media (min-width:1024px){
    .zc-settings-frame{padding:0 var(--sp-8) var(--sp-10)}
  }
  .zc-settings-title-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-3)}
  .zc-settings-title{
    margin:0;font-size:var(--text-display-sm);font-weight:600;letter-spacing:-.02em;color:var(--color-foreground);line-height:1.2;
  }
  @media (min-width:1024px){
    .zc-settings-title{font-size:var(--text-display)}
  }
  .zc-settings-section-body{display:flex;flex-direction:column;gap:var(--sp-8)}
  .zc-settings-stack{display:flex;flex-direction:column;gap:var(--sp-8);min-width:0}
  .zc-settings-block{display:flex;flex-direction:column;gap:var(--sp-3);min-width:0}
  .zc-settings-block-lg{display:flex;flex-direction:column;gap:var(--sp-6)}
  .zc-settings-h3{margin:0;font-size:var(--text-ui-lg);font-weight:600;color:var(--color-foreground)}
  .zc-settings-h3.is-sm{font-size:var(--text-ui-base)}
  .zc-settings-lead{margin:var(--sp-1) 0 0;font-size:var(--text-ui-base);line-height:1.5;color:var(--color-foreground-subtle)}
  .zc-settings-card{
    border:1px solid var(--color-border);background:var(--color-card);border-radius:var(--radius-xl);
    box-shadow:none;overflow:hidden;
  }
  .zc-settings-card-body{padding:0}
  .zc-settings-row{border-top:1px solid var(--color-border);padding:var(--sp-3) var(--sp-4)}
  .zc-settings-row:first-child{border-top:none}
  .zc-settings-row-grid{
    display:grid;grid-template-columns:minmax(0,1fr) 192px;align-items:center;gap:var(--sp-4);
  }
  .zc-settings-row-grid.is-wide{grid-template-columns:minmax(0,1fr) 280px}
  .zc-settings-row-label{font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground)}
  .zc-settings-row-desc{margin-top:var(--sp-1);font-size:var(--text-ui-base);line-height:1.5;color:var(--color-foreground-subtle)}
  .zc-settings-row-control{display:flex;width:100%;flex-wrap:nowrap;align-items:center;justify-content:flex-end;gap:var(--sp-2)}

  .zc-select-wrap{position:relative;display:inline-flex;max-width:100%}
  .zc-select-trigger{
    display:inline-flex;align-items:center;justify-content:space-between;gap:var(--sp-1-5);
    height:var(--control-h-8);padding:0 var(--sp-2) 0 var(--sp-3);border:1px solid var(--color-input-border);
    border-radius:var(--radius-lg);background:var(--color-input);color:var(--color-foreground);
    font-size:var(--text-ui-base);cursor:pointer;white-space:nowrap;min-width:0;box-sizing:border-box;
  }
  .zc-select-trigger:hover{border-color:var(--color-input-border-hover,var(--color-border-hover))}
  .zc-select-trigger.w-260{width:260px;max-width:100%}
  .zc-select-trigger.w-64{width:16rem;max-width:100%}
  .zc-select-value{display:inline-flex;align-items:center;gap:var(--sp-2);min-width:0;overflow:hidden}
  .zc-select-value>span{overflow:hidden;text-overflow:ellipsis}
  .zc-select-caret{color:var(--color-foreground-subtle);flex-shrink:0}
  .zc-select-menu{
    display:none;position:absolute;top:calc(100% + var(--sp-1));right:0;z-index:60;min-width:100%;
    max-height:16rem;overflow:auto;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);
  }
  .zc-select-menu.show{display:flex;flex-direction:column;gap:var(--sp-0-5)}
  .zc-select-item{
    display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-2-5);
    border-radius:var(--radius-md);cursor:pointer;font-size:var(--text-ui-base);color:var(--color-foreground);
  }
  .zc-select-item:hover,.zc-select-item.is-selected{background:var(--color-menu-hover)}
  .zc-select-check{margin-left:auto;color:var(--color-foreground-subtle)}

  .zc-font-size{position:relative;width:7rem}
  .zc-font-size-input{
    width:100%;height:var(--control-h-8);padding:0 var(--sp-8) 0 var(--sp-2);border:1px solid var(--color-input-border);
    border-radius:var(--radius-lg);background:var(--color-input);color:var(--color-foreground);
    font-size:var(--text-ui-base);text-align:right;font-variant-numeric:tabular-nums;outline:none;
    box-sizing:border-box;-moz-appearance:textfield;
  }
  .zc-font-size-input::-webkit-inner-spin-button,.zc-font-size-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
  .zc-font-size-unit{
    pointer-events:none;position:absolute;inset:0 var(--sp-2) 0 auto;display:flex;align-items:center;
    font-size:var(--text-ui-lg);color:var(--color-foreground-subtle);
  }

  /* 对标 ZCode Switch：checked=primary，unchecked=primary/30 */
  .zc-switch{
    position:relative;display:inline-flex;align-items:center;width:32px;height:18px;padding:1px;
    border:none;border-radius:var(--radius-full);background:color-mix(in oklab,var(--color-primary) 30%,transparent);
    cursor:pointer;flex-shrink:0;outline:none;
  }
  .zc-switch.is-on{background:var(--color-primary)}
  .zc-switch-thumb{
    display:block;width:var(--size-4);height:var(--size-4);border-radius:var(--radius-full);
    background:var(--color-primary-foreground);transform:translateX(0);transition:transform .15s ease;
  }
  .zc-switch.is-on .zc-switch-thumb{transform:translateX(calc(100% - 2px))}

  .zc-settings-preview-block{display:flex;flex-direction:column;gap:var(--sp-4);min-width:0}
  .zc-theme-preview-grid{display:grid;gap:var(--sp-4)}
  @media (min-width:640px){
    .zc-theme-preview-grid{grid-template-columns:1fr 1fr}
  }
  .zc-theme-preview{
    overflow:hidden;border-radius:var(--radius-xl);border:1px solid var(--color-border);background:var(--color-card);
  }
  .zc-theme-preview-h{
    display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);
    padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--color-border);
  }
  .zc-theme-preview-title{font-size:var(--text-ui-base);font-weight:600;color:var(--color-foreground)}
  .zc-theme-preview-sub{font-size:var(--text-ui-base);color:var(--color-foreground-subtle)}
  .zc-theme-preview-badge{
    border-radius:var(--radius-md);padding:var(--sp-1) var(--sp-2-5);font-size:var(--text-ui-xs);
    font-weight:500;background:var(--color-surface);color:var(--color-foreground-subtle);
  }
  .zc-theme-preview-badge.is-active{background:var(--color-selected);color:var(--color-foreground)}
  .zc-theme-preview-body{padding:var(--sp-2)}
  .zc-code-block{
    margin:0;overflow:hidden;border-radius:var(--radius-lg);padding:var(--sp-3) 0;
    font-family:var(--font-mono,ui-monospace,SFMono-Regular,Menlo,monospace);line-height:1.55;
  }
  .zc-code-block.mode-light{background:#f8f8f8;color:#0d0d0d;box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}
  .zc-code-block.mode-dark{background:#161616;color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
  .zc-code-line{display:flex;align-items:flex-start;padding:0 var(--sp-3);white-space:pre}
  .zc-code-line.is-wrap{white-space:pre-wrap;word-break:break-word}
  .zc-code-ln{
    width:2rem;flex-shrink:0;margin-right:var(--sp-3);text-align:right;opacity:.45;
    font-variant-numeric:tabular-nums;user-select:none;
  }
  .zc-code-src{flex:1;min-width:0}
  .zc-code-block.mode-light .zc-tok-kw{color:#cf222e}
  .zc-code-block.mode-light .zc-tok-var{color:#953800}
  .zc-code-block.mode-light .zc-tok-type{color:#0550ae}
  .zc-code-block.mode-light .zc-tok-key{color:#0550ae}
  .zc-code-block.mode-light .zc-tok-str{color:#0a3069}
  .zc-code-block.mode-light .zc-tok-num{color:#0550ae}
  .zc-code-block.mode-light .zc-tok-pun{color:#24292f}
  .zc-code-block.mode-dark .zc-tok-kw{color:#ff7b72}
  .zc-code-block.mode-dark .zc-tok-var{color:#ffa657}
  .zc-code-block.mode-dark .zc-tok-type{color:#79c0ff}
  .zc-code-block.mode-dark .zc-tok-key{color:#79c0ff}
  .zc-code-block.mode-dark .zc-tok-str{color:#a5d6ff}
  .zc-code-block.mode-dark .zc-tok-num{color:#79c0ff}
  .zc-code-block.mode-dark .zc-tok-pun{color:#c9d1d9}
  .zc-settings-placeholder{padding:var(--sp-2) 0}
  .zc-settings-placeholder-title{font-size:var(--text-ui-lg);font-weight:600;color:var(--color-foreground)}
  .zc-settings-stack.is-tight{gap:var(--sp-4)}
  .zc-settings-stack.is-mid{gap:var(--sp-5)}
  .zc-settings-title-cluster{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3);min-width:0}
  .zc-settings-head-badges{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-1)}
  .zc-settings-badge{
    display:inline-flex;align-items:center;border-radius:var(--radius-md);padding:var(--sp-1) var(--sp-2-5);
    font-size:var(--text-ui-base);font-weight:500;background:var(--color-surface);color:var(--color-foreground-subtle);
  }
  .zc-settings-section-label{font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground-subtle);margin-bottom:var(--sp-2)}
  .zc-settings-row-detail{margin-top:var(--sp-3)}
  .zc-settings-input{
    width:100%;max-width:520px;height:var(--control-h-9);padding:0 var(--sp-3);border:1px solid var(--color-input-border);
    border-radius:var(--radius-xl);background:var(--color-input);color:var(--color-foreground);font-size:var(--text-ui-base);
    outline:none;box-sizing:border-box;
  }
  .zc-settings-input.is-mono{font-family:var(--font-mono,ui-monospace,SFMono-Regular,Menlo,monospace)}
  .zc-databasedir-actions{display:flex;align-items:center;gap:var(--sp-2)}
  .zc-switch.is-disabled{opacity:.45;pointer-events:none}
  .zc-btn.is-destructive{color:var(--color-destructive);border-color:color-mix(in oklab,var(--color-destructive) 35%,var(--color-border))}
  .zc-btn.is-destructive:hover{background:color-mix(in oklab,var(--color-destructive) 8%,transparent)}
  .zc-settings-hint{
    padding:var(--sp-3) var(--sp-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);
    background:var(--color-surface);color:var(--color-foreground-subtle);font-size:var(--text-ui-base);
  }

  /* 对标 PluginsSection / SubagentsSection 顶栏：flex gap-3，search sm:ml-auto sm:w-64 */
  .zc-res-header{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3);min-width:0}
  .zc-res-header-left{display:flex;min-width:0;flex-wrap:wrap;align-items:center;gap:var(--sp-3)}
  .zc-res-scope{
    display:inline-flex;align-items:center;gap:var(--sp-1-5);height:var(--control-h-8);padding:0 var(--sp-3);
    border:1px solid var(--color-input-border);border-radius:var(--radius-full);background:var(--color-input);
    color:var(--color-foreground);cursor:pointer;font-size:var(--text-ui-base);font-weight:500;box-sizing:border-box;
  }
  .zc-res-scope:hover{background:var(--color-hover)}
  .zc-res-scope-label{max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .zc-res-scope-caret{color:var(--color-foreground-subtlest);flex-shrink:0}
  .zc-res-sep{display:none;width:1px;height:var(--size-4);background:var(--color-border);flex-shrink:0}
  @media (min-width:640px){.zc-res-sep{display:block}}
  .zc-res-title-wrap{
    display:inline-flex;align-items:center;gap:var(--sp-1);height:var(--control-h-7);padding:0 var(--sp-3);
    font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground);
  }
  .zc-res-title{font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground)}
  .zc-res-count{font-size:var(--text-ui-sm);font-weight:400;color:var(--color-foreground-subtle)}
  .zc-res-count-plain{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);flex-shrink:0}
  /* SettingsSearchInput：h-9 rounded-xl pl-9；默认 sm:w-64 */
  .zc-res-search{position:relative;display:block;width:100%;min-width:0}
  .zc-res-search.is-w64{width:100%}
  @media (min-width:640px){
    .zc-res-search.is-w64{width:16rem}
    .zc-res-search.is-ml-auto{margin-left:auto}
  }
  .zc-res-search.is-grow{flex:1;width:auto;min-width:0}
  .zc-res-search-ico{
    position:absolute;left:var(--sp-3);top:50%;transform:translateY(-50%);
    color:var(--color-foreground-subtle);pointer-events:none;
  }
  .zc-res-search-input{
    width:100%;height:var(--control-h-9);padding:0 var(--sp-3) 0 var(--size-9);border:1px solid var(--color-input-border);
    border-radius:var(--radius-xl);background:var(--color-input);color:var(--color-foreground);font-size:var(--text-ui-base);
    outline:none;box-sizing:border-box;
  }
  .zc-res-search-input.has-clear{padding-right:var(--size-9)}
  .zc-res-search-input.is-shortcut{padding-right:2.5rem;font-family:var(--font-mono,ui-monospace,Menlo,monospace)}
  .zc-res-search-input.is-shortcut.has-clear{padding-right:4rem}
  .zc-res-search-input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}
  .zc-res-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-7);height:var(--size-7);
    border:none;border-radius:var(--radius-full);background:transparent;color:var(--color-foreground-subtle);cursor:pointer;
  }
  .zc-res-search.is-grow .zc-res-search-clear{right:2.25rem}
  .zc-res-search-clear:hover{color:var(--color-foreground)}
  .zc-res-search-keybtn{
    position:absolute;right:var(--sp-2-5);top:50%;transform:translateY(-50%);
    display:inline-flex;align-items:center;justify-content:center;padding:var(--sp-1);
    border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-foreground-subtle);cursor:pointer;
  }
  .zc-res-search-keybtn:hover,.zc-res-search-keybtn.is-on{color:var(--color-foreground)}
  .zc-res-group{display:flex;flex-direction:column;gap:var(--sp-4)}
  .zc-res-group-h{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:0 var(--sp-1)}
  .zc-res-group-title{display:inline-flex;min-width:0;align-items:baseline;gap:var(--sp-2);font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground)}
  .zc-res-group-title-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .zc-shortcut-bind-item{display:inline-flex;align-items:center;gap:var(--sp-1-5)}
  .zc-res-group-count{flex-shrink:0;font-weight:400;color:var(--color-foreground-subtlest)}
  .zc-res-group-actions{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}
  .zc-btn-icon-md{
    width:var(--size-7)!important;min-width:var(--size-7)!important;height:var(--size-7)!important;padding:0!important;
    border-radius:var(--radius-lg);
  }
  .zc-btn-new{border-radius:var(--radius-lg)}
  .zc-res-list{overflow:hidden;border-radius:var(--radius-xl);background:var(--color-surface)}
  .zc-res-row{
    display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--sp-3);
    padding:var(--sp-3) var(--sp-4);border-top:1px solid color-mix(in oklab,var(--color-border) 50%,transparent);
  }
  .zc-res-row:first-child{border-top:none}
  .zc-res-row:hover{background:var(--color-hover)}
  .zc-res-row.is-agent{grid-template-columns:auto minmax(0,1fr) auto}
  .zc-res-ico{
    position:relative;width:var(--size-9);height:var(--size-9);border-radius:var(--radius-xl);background:var(--color-background);
    display:inline-flex;align-items:center;justify-content:center;color:var(--color-foreground);flex-shrink:0;
  }
  .zc-res-main{min-width:0}
  .zc-res-name{font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground)}
  .zc-res-name-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1-5)}
  .zc-res-sub{margin-top:2px;font-size:var(--text-ui-base);color:var(--color-foreground-subtle);line-height:1.45}
  .zc-res-empty{padding:var(--sp-8) var(--sp-4);text-align:center;font-size:var(--text-ui-base);color:var(--color-foreground-subtle)}
  .zc-res-actions{display:inline-flex;align-items:center;gap:var(--sp-1-5);flex-shrink:0}
  .zc-chip{
    display:inline-flex;align-items:center;height:var(--control-h-6);padding:0 var(--sp-2);border-radius:var(--radius-md);
    background:var(--color-background);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);
  }
  .zc-chip.is-std{background:color-mix(in oklab,var(--color-link) 14%,transparent);color:var(--color-link)}
  .zc-chip.is-adv{background:color-mix(in oklab,var(--color-warning) 16%,transparent);color:var(--color-warning)}
  .zc-chip.is-inherit{background:color-mix(in oklab,var(--color-success) 14%,transparent);color:var(--color-success)}
  .zc-status-dot{position:absolute;right:2px;bottom:2px;width:8px;height:8px;border-radius:var(--radius-full);border:1.5px solid var(--color-background)}
  .zc-status-dot.is-ok{background:var(--color-success)}
  .zc-status-dot.is-busy{background:var(--color-warning)}
  .zc-status-dot.is-off{background:var(--color-foreground-subtlest)}
  .zc-icon-ghost{
    display:inline-flex;align-items:center;justify-content:center;width:var(--size-7);height:var(--control-h-7);
    border:none;border-radius:var(--radius-md);background:transparent;color:var(--color-foreground-subtle);cursor:pointer;
  }
  .zc-icon-ghost:hover{background:var(--color-hover);color:var(--color-foreground)}
  .zc-text-btn{
    display:inline-flex;align-items:center;gap:var(--sp-1);border:none;background:transparent;color:var(--color-foreground-subtle);
    cursor:pointer;font-size:var(--text-ui-base);
  }
  .zc-text-btn:hover{color:var(--color-foreground)}
  .zc-memory-viewer{display:flex;flex-direction:column;gap:var(--sp-4)}
  .zc-memory-files-h{
    display:flex;min-height:var(--control-h-7);flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-3);
    font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground);
  }

  /* ShortcutSearchBar：flex gap-2；键盘按钮在 input 内 absolute right */
  .zc-shortcut-toolbar{display:flex;align-items:center;gap:var(--sp-2)}
  .zc-shortcut-table{overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-xl)}
  .zc-shortcut-head,.zc-shortcut-row{
    display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 80px 72px;align-items:center;gap:var(--sp-2);
    padding:var(--sp-3) var(--sp-4);
  }
  .zc-shortcut-head{background:var(--color-surface);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
  .zc-shortcut-row{border-top:1px solid var(--color-border);font-size:var(--text-ui-base);color:var(--color-foreground)}
  .zc-shortcut-row:hover{background:var(--color-hover)}
  .zc-shortcut-bind{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1-5)}
  .zc-shortcut-scope{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
  .zc-shortcut-actions{display:flex;justify-content:flex-end}
  .zc-shortcut-unset{color:var(--color-foreground-subtlest)}
  .zc-shortcut-empty{border-top:1px solid var(--color-border);padding:var(--sp-8) var(--sp-4);text-align:center;font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
  .zc-kbd-group{display:inline-flex;align-items:center;gap:var(--sp-1)}
  .zc-kbd{
    pointer-events:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-1);
    height:var(--size-5);min-width:var(--size-5);width:fit-content;padding:0 var(--sp-1);
    border:none;border-radius:var(--radius-sm);background:var(--color-surface);
    font-family:var(--font-sans);font-size:var(--text-ui-xs);font-weight:500;
    color:var(--color-foreground-subtle);user-select:none;
  }

  /* SegmentPill：inactive 透明；active = bg-selected */
  .zc-usage-tabs{display:inline-flex;align-items:center;gap:var(--sp-1-5)}
  .zc-seg-pill{
    border:none;border-radius:var(--radius-full);padding:var(--sp-1) var(--sp-3);background:transparent;
    color:var(--color-foreground-subtle);font-size:var(--text-ui-base);font-weight:500;cursor:pointer;
    transition:background-color .12s,color .12s;
  }
  .zc-seg-pill:hover{background:var(--color-hover);color:var(--color-foreground)}
  .zc-seg-pill.is-on{background:var(--color-selected);color:var(--color-foreground)}
  .zc-usage-strip{
    display:flex;flex-direction:column;overflow:hidden;border-radius:var(--radius-xl);background:var(--color-surface);
  }
  @media (min-width:640px){
    .zc-usage-strip{flex-direction:row;align-items:center}
  }
  .zc-usage-stat{min-width:0;flex:1;padding:var(--sp-3) var(--sp-4);text-align:center}
  .zc-usage-stat-sep{display:none;width:1px;height:var(--control-h-7);background:var(--color-border);flex-shrink:0}
  @media (min-width:640px){.zc-usage-stat-sep{display:block}}
  .zc-usage-stat-v{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-lg);font-weight:500;color:var(--color-foreground)}
  .zc-usage-stat-l{margin-top:var(--sp-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-base);color:var(--color-foreground-subtle)}
  .zc-usage-block{display:flex;flex-direction:column;gap:var(--sp-3)}
  .zc-usage-block-h{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}
  .zc-usage-block-title{font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground)}
  /* USAGE_STATS_TABS：h-7 surface p-0.5；trigger h-6 px-2.5 active=bg-background */
  .zc-usage-range{
    display:inline-flex;align-items:center;gap:0;height:var(--control-h-7);padding:2px;
    border-radius:var(--radius-full);background:var(--color-surface);flex-shrink:0;
  }
  .zc-range-pill{
    height:var(--control-h-6);padding:0 var(--sp-2-5);border:none;border-radius:var(--radius-full);background:transparent;
    color:var(--color-foreground-subtle);font-size:var(--text-ui-sm);font-weight:500;cursor:pointer;
  }
  .zc-range-pill.is-on{background:var(--color-background);color:var(--color-foreground)}
  /* UsageHeatmap：surface 卡 + 52 周 × 7 行 */
  .zc-heat-card{border-radius:var(--radius-xl);background:var(--color-surface);padding:var(--sp-3)}
  .zc-heat-card-h{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-3)}
  .zc-heat{
    display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,minmax(0,1fr));
    grid-template-columns:repeat(52,minmax(0,1fr));gap:2px;width:100%;
  }
  .zc-heat-cell{aspect-ratio:1;min-width:0;border-radius:2px;background:color-mix(in oklab,var(--color-foreground) 8%,transparent)}
  .zc-heat-cell.lv-1{background:color-mix(in oklab,var(--color-foreground) 22%,transparent)}
  .zc-heat-cell.lv-2{background:color-mix(in oklab,var(--color-foreground) 40%,transparent)}
  .zc-heat-cell.lv-3{background:color-mix(in oklab,var(--color-foreground) 62%,transparent)}
  .zc-heat-cell.lv-4{background:var(--color-foreground)}
  .zc-chart-stack{display:flex;flex-direction:column;gap:var(--sp-4)}
  .zc-chart-placeholder{
    min-height:240px;border:1px solid var(--color-border);border-radius:var(--radius-xl);background:var(--color-card);
    display:flex;align-items:center;justify-content:center;color:var(--color-foreground-subtlest);font-size:var(--text-ui-base);
  }
  .zc-usage-foot{display:flex;justify-content:flex-end}
  .zc-quota-grid{display:flex;flex-direction:column;gap:var(--sp-3)}
  @media (min-width:1024px){.zc-quota-grid{flex-direction:row}}
  .zc-quota-card{
    flex:1;padding:var(--sp-4);border:1px solid var(--color-border);border-radius:var(--radius-xl);background:var(--color-card);
  }
  .zc-quota-label{font-size:var(--text-ui-base);color:var(--color-foreground-subtle)}
  .zc-quota-value{margin-top:var(--sp-2);font-size:var(--text-ui-lg);font-weight:600;color:var(--color-foreground)}
  .zc-quota-sub{margin-top:var(--sp-1);font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest)}
  .zc-quota-bar{margin-top:var(--sp-3);height:6px;border-radius:var(--radius-full);background:var(--color-surface);overflow:hidden}
  .zc-quota-bar>i{display:block;height:100%;background:var(--color-brand);border-radius:inherit}

  /* ============ ConversationStatusPanel — 对标 ZCode v4/ConversationStatusPanel + conversationLayout.ts ============ */
  /* host 绝对铺满，零占位，展开/收起不挤正文流 */
  #zcConversationStatusPanel{
    position:absolute;inset:0;pointer-events:none;z-index:35;
  }
  .zc-csp-anchor{
    /* SessionPane：header 外；本 DEMO header 在 thread-wrap 内 → top=h-12，再 pt-4 / right-4 */
    pointer-events:none;position:absolute;top:var(--sp-12);right:0;z-index:35;
    display:flex;justify-content:flex-end;padding-top:0;max-width:calc(100% - var(--sp-4));
  }
  .zc-csp-shell{
    pointer-events:auto;position:relative;overflow:hidden;
    border:1px solid var(--color-popover-border);background:var(--color-popover);
    color:var(--color-foreground);border-radius:var(--radius-2xl);box-shadow:var(--shadow-md);
    transition:border-radius .3s ease,background-color .3s ease,box-shadow .3s ease;
  }
  .zc-csp-shell.is-mini{
    display:inline-flex;flex-direction:column;max-height:calc(var(--control-h-8) + 2px);
    max-width:min(20rem,calc(100vw - 1.5rem));overflow:hidden;
  }
  .zc-csp-shell.is-panel{
    display:flex;flex-direction:column;width:20rem;max-width:100%;
    max-height:min(64dvh,32rem);overflow:hidden;
  }
  .zc-csp-mini-btn{
    display:inline-flex;width:max-content;max-width:20rem;cursor:pointer;flex-direction:column;
    align-items:stretch;text-align:left;border:0;background:transparent;padding:0;
    color:var(--color-foreground);border-radius:inherit;
    transition:background-color .12s;
  }
  .zc-csp-mini-btn:hover{background:var(--color-menu-hover)}
  .zc-csp-mini-btn:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-input-border-focused)}
  .zc-csp-metric{
    display:flex;height:var(--control-h-8);width:max-content;max-width:20rem;min-width:0;
    align-items:center;gap:var(--sp-1-5);padding:0 var(--sp-2-5) 0 var(--sp-2);
    font-size:var(--text-ui-base);color:var(--color-foreground);
  }
  .zc-csp-metric-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .zc-csp-metric .text-diff-added,.zc-csp-metric .text-diff-removed{
    flex-shrink:0;font-family:var(--font-mono);font-variant-numeric:tabular-nums;line-height:1;
  }
  .zc-csp-metric-ico{position:relative;width:var(--size-4);height:var(--size-4);flex-shrink:0}
  .zc-csp-metric-ico-main,.zc-csp-metric-ico-expand{
    position:absolute;inset:0;display:inline-flex;align-items:center;justify-content:center;
    color:var(--color-foreground);transition:opacity .12s;line-height:0;
  }
  .zc-csp-metric-ico-expand{opacity:0}
  .zc-csp-mini-btn:hover .zc-csp-metric-ico-main,
  .zc-csp-mini-btn:focus-visible .zc-csp-metric-ico-main{opacity:0}
  .zc-csp-mini-btn:hover .zc-csp-metric-ico-expand,
  .zc-csp-mini-btn:focus-visible .zc-csp-metric-ico-expand{opacity:1}

  /* 工具钮 absolute right-3 top-3 — 对标 ConversationStatusPanel 展开壳 */
  .zc-csp-panel-tools{
    position:absolute;right:var(--sp-3);top:var(--sp-3);z-index:10;
    display:flex;align-items:center;gap:var(--sp-1);flex-shrink:0;
  }
  .zc-csp-tool-icon{
    display:inline-flex;align-items:center;justify-content:center;
    width:var(--size-6);height:var(--size-6);border:0;border-radius:var(--radius-md);
    background:transparent;color:var(--color-foreground-subtle);cursor:pointer;line-height:0;
    outline:none!important;box-shadow:none!important;
  }
  .zc-csp-tool-icon:hover,.zc-csp-tool-icon:focus,.zc-csp-tool-icon:focus-visible{
    background:var(--color-hover);color:var(--color-foreground);
    outline:none!important;box-shadow:none!important;
  }
  .zc-csp-panel-scroll{
    display:flex;flex:1;flex-direction:column;gap:var(--sp-2);min-height:0;
    overflow-x:hidden;overflow-y:auto;padding:var(--sp-2);
  }
  .zc-csp-section{min-width:0;flex:none}
  .zc-csp-section-h{
    /* StatusSectionHeader：h-8 px-2 pr-8 mb-0.5（为 absolute 工具钮留白） */
    display:flex;height:var(--control-h-8);min-width:0;flex-shrink:0;
    align-items:center;gap:var(--sp-1-5);padding:0 var(--sp-8) 0 var(--sp-2);margin-bottom:var(--sp-0-5);
  }
  .zc-csp-section-trig{
    display:flex;min-width:0;align-items:center;gap:var(--sp-1);
    border:0;background:transparent;padding:0;cursor:default;text-align:left;
  }
  .zc-csp-section-title{font-size:var(--text-ui-base);color:var(--color-foreground-subtle);flex-shrink:0;line-height:1.2}
  .zc-csp-section-body{display:flex;flex-direction:column;gap:0}
  .zc-csp-section-body[hidden]{display:none}
  .csp-task-section{border-bottom:1px solid var(--color-border);padding-bottom:var(--sp-2)}
  .zc-csp-section[data-status-section="environment"]{border-bottom:1px solid var(--color-border);padding-bottom:var(--sp-2)}
  .csp-task-section[data-status-section="deliverables"]{border-bottom:0;padding-bottom:0}
  .csp-task-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);width:100%;height:var(--control-h-8);padding:0 var(--sp-2);border:0;background:transparent;color:var(--color-foreground-subtle);font:inherit;font-size:var(--text-ui-base);cursor:pointer}

  .csp-task-empty{padding:var(--sp-1) var(--sp-2);font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest)}
  .csp-progress-row{display:flex;align-items:center;gap:var(--sp-2);min-height:var(--control-h-8);padding:var(--sp-1) var(--sp-2);font-size:var(--text-ui-base)}
  .csp-progress-marker{display:inline-flex;align-items:center;justify-content:center;width:var(--size-5);height:var(--size-5);flex-shrink:0;border-radius:var(--radius-full);background:var(--color-hover);font-size:var(--text-ui-sm)}
  .csp-progress-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .csp-progress-row.is-done{color:var(--color-foreground-subtlest)}
  .csp-progress-row.is-done .csp-progress-text{text-decoration:line-through}
  .csp-progress-row.is-done .csp-progress-marker{background:var(--color-foreground-subtle);color:var(--color-background)}
  .csp-progress-row.is-pending{color:var(--color-foreground-subtle)}
  .csp-delivery-folder{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
  .csp-delivery-row .zc-csp-row-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .zc-csp-section-trig{cursor:pointer}
  .zc-csp-row{
    display:flex;height:var(--control-h-8);width:100%;min-width:0;align-items:center;gap:var(--sp-2);
    padding:0 var(--sp-2);border:0;border-radius:var(--radius-lg);background:transparent;
    color:var(--color-foreground);font-size:var(--text-ui-base);text-align:left;cursor:pointer;
    box-sizing:border-box;transition:background-color .12s,color .12s;
    outline:none!important;box-shadow:none!important;
  }
  .zc-csp-row:hover{background:var(--color-hover)}
  .zc-csp-row:focus,.zc-csp-row:focus-visible{
    background:var(--color-hover);outline:none!important;box-shadow:none!important;
  }
  .zc-csp-row.is-open,.zc-csp-branch-trigger.is-open{background:var(--color-hover)}
  .zc-csp-row-ico{display:inline-flex;flex-shrink:0;line-height:0;color:var(--color-foreground)}
  .zc-csp-row-label{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .zc-csp-row-stats{
    display:inline-flex;align-items:center;gap:var(--sp-1);flex-shrink:0;
    font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--text-ui-base);line-height:1;
  }
  .zc-csp-row-chev{display:inline-flex;flex-shrink:0;line-height:0;color:var(--color-foreground-subtle)}
  /* 分支触发器仅占位；Popover portal 到 body（对标 Radix Popover） */
  .zc-csp-branch-wrap{position:relative;width:100%}
  .zc-csp-branch-portal{position:fixed;z-index:120;pointer-events:none}
  .zc-csp-branch-pop{
    /* GitBranchSwitcher：w-72 / bg-menu / p-0 / side=left */
    pointer-events:auto;position:fixed;z-index:121;width:18rem;
    max-width:calc(100vw - 2rem);max-height:min(24rem,calc(100dvh - 1rem));
    display:flex;flex-direction:column;gap:0;padding:0;
    background:var(--color-menu);border:1px solid var(--color-popover-border);
    border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden;
  }
  /* CommandInput：p-1 border-b，透明底，非描边卡 */
  .zc-csp-branch-search{
    display:flex;align-items:center;gap:var(--sp-2);height:auto;
    margin:0;padding:var(--sp-1);border:0;border-bottom:1px solid var(--color-border);
    border-radius:0;background:transparent;flex-shrink:0;
  }
  .zc-csp-branch-search-ico{display:inline-flex;color:var(--color-foreground-subtlest);line-height:0;flex-shrink:0}
  .zc-csp-branch-input{
    flex:1;min-width:0;height:var(--control-h-8);border:0;background:transparent;outline:none;
    font:inherit;font-size:var(--text-ui-base);color:var(--color-foreground);
    box-shadow:none!important;
  }
  .zc-csp-branch-input:focus,.zc-csp-branch-input:focus-visible{
    outline:none!important;box-shadow:none!important;border-color:transparent;
  }
  .zc-csp-branch-input::placeholder{color:var(--color-foreground-subtlest)}
  .zc-csp-branch-list{
    max-height:14rem;overflow-y:auto;padding:var(--sp-1);
    display:flex;flex-direction:column;gap:2px;min-height:0;flex:1;
  }
  .zc-csp-branch-heading{
    /* cmdk-group-heading：px-3 py-2 text-ui-base font-medium */
    padding:var(--sp-2) var(--sp-3);font-size:var(--text-ui-base);font-weight:500;
    color:var(--color-foreground-subtle);
  }
  .zc-csp-branch-empty{padding:var(--sp-5) var(--sp-4);color:var(--color-foreground-subtle);font-size:var(--text-ui-base)}
  .zc-csp-branch-item{
    display:flex;align-items:flex-start;gap:var(--sp-3);width:100%;
    padding:var(--sp-2) var(--sp-3);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;outline:none!important;box-shadow:none!important;
  }
  .zc-csp-branch-item:hover,.zc-csp-branch-item.is-current,.zc-csp-branch-item:focus-visible{
    background:var(--color-menu-hover);outline:none!important;box-shadow:none!important;
  }
  .zc-csp-branch-ico{display:inline-flex;margin-top:2px;flex-shrink:0;line-height:0;color:var(--color-foreground-subtle)}
  .zc-csp-branch-meta{min-width:0;flex:1;display:flex;flex-direction:column;gap:0;text-align:left}
  .zc-csp-branch-name{font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.3}
  .zc-csp-branch-dirty{padding-top:2px;font-size:var(--text-ui-base);color:var(--color-foreground-subtle);line-height:1.35}
  .zc-csp-branch-check{display:inline-flex;margin-left:auto;flex-shrink:0;align-self:center;color:var(--color-foreground-subtle);line-height:0}
  .zc-csp-branch-foot{border-top:1px solid var(--color-border);padding:var(--sp-1);display:flex;flex-direction:column;gap:0;flex-shrink:0}
  .zc-csp-branch-foot-btn{
    display:flex;width:100%;align-items:center;justify-content:flex-start;gap:var(--sp-2);
    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-base);
    cursor:pointer;text-align:left;box-sizing:border-box;
    outline:none!important;box-shadow:none!important;
  }
  .zc-csp-branch-foot-btn:hover,.zc-csp-branch-foot-btn:focus-visible{
    background:var(--color-menu-hover);outline:none!important;box-shadow:none!important;
  }
  .zc-csp-branch-foot-btn .zc-csp-branch-ico{margin-top:0}

  /* Summary is an absolute overlay; opening it never reflows the reading column. */

/* Codex conversation polish: shared reading column, quiet controls, keyboard hints.
   Reference: installed OpenAI.Codex 26.1002.7124 webview resources. */
.composer-key-hint{font-size:var(--text-ui-xs);color:var(--color-foreground-subtlest);text-align:center;padding-top:var(--sp-2);user-select:none}
.ask-box:focus-within{border-color:var(--color-input-border-focused)}
button.atb-plus{border:0;background:transparent;padding:0;cursor:pointer;color:inherit}
.conv-timeline{overscroll-behavior-y:contain;scrollbar-gutter:stable;overflow-anchor:none}
/* Codex thread-scroll-layout：滚动容器顶部 16px 渐隐（--edge-fade-distance:1rem） */
.conv-timeline{-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 16px);mask-image:linear-gradient(to bottom,transparent 0,#000 16px)}
.conv-timeline .bubble{line-height:1.7;overflow-wrap:anywhere}
/* Codex user-message：bg=文字 6%、四角 22px、padding 8/16、max-width 70%（--user-chat-width） */
.conv-timeline .bubble.u{max-width:70%;padding:var(--sp-2-5) var(--sp-4);border-radius:var(--radius-bubble);background:var(--color-plan-surface);white-space:pre-wrap}
/* Codex：用户消息 hover 浮现复制（group-hover/user-message），右对齐 */
.msg.mine .a-actions{justify-content:flex-end;margin-top:var(--sp-1-5)}
.msg.mine .a-actions-u{opacity:0;pointer-events:none;transition:opacity .15s}
.msg.mine:hover .a-actions-u,.msg.mine .a-actions-u:has(:focus-visible){opacity:1;pointer-events:auto}
/* Codex User Message Navigation Rail（快捷体验：左侧 marker + hover 预览卡） */
.thread-wrap.has-umnav{position:relative}
.umnav-rail{
  position:absolute;top:50%;left:var(--sp-3);z-index:20;transform:translateY(-50%);
  display:flex;flex-direction:column;align-items:center;pointer-events:auto;
}
.umnav-rail[hidden]{display:none!important}
.umnav-list{
  display:flex;flex-direction:column;align-items:stretch;
  max-height:min(70vh,40rem);overflow-y:auto;scrollbar-width:none;
  mask-image:linear-gradient(to bottom,transparent,#000 12px,#000 calc(100% - 12px),transparent);
  -webkit-mask-image:linear-gradient(to bottom,transparent,#000 12px,#000 calc(100% - 12px),transparent);
}
.umnav-list::-webkit-scrollbar{display:none}
.umnav-item{
  position:relative;display:flex;align-items:center;justify-content:center;
  width:2.25rem;height:0.625rem;padding:0;border:0;background:transparent;cursor:pointer;
  flex-shrink:0;outline:none;
}
.umnav-marker{
  display:block;width:0.75rem;height:2px;border-radius:999px;
  background:color-mix(in oklab,var(--color-foreground) 22%,transparent);
  transition:width .12s ease,background-color .12s ease,opacity .12s ease;
}
.umnav-item:hover .umnav-marker,
.umnav-item.is-hover .umnav-marker,
.umnav-item:focus-visible .umnav-marker,
.umnav-item[data-scrub-target] .umnav-marker,
.umnav-item.is-current .umnav-marker{
  width:1.1rem;background:color-mix(in oklab,var(--color-foreground) 55%,transparent);
}
.umnav-item.is-current .umnav-marker{background:var(--color-foreground)}
.umnav-item.is-bookmarked .umnav-marker{
  background:color-mix(in oklab,var(--color-foreground) 40%,transparent);
}
.umnav-dot{
  display:none;position:absolute;left:8px;top:50%;transform:translateY(-50%);
  width:3px;height:2px;border-radius:0;
  background:var(--color-foreground-subtle);opacity:.5;pointer-events:none;
  transition:left .16s ease,opacity .16s ease;
}
.umnav-item.is-bookmarked .umnav-dot{display:block}
.umnav-item:is(:hover,.is-hover,:focus-visible,[data-scrub-target]) .umnav-dot{left:28px;opacity:.75}
.umnav-preview{
  position:fixed;z-index:240;width:min(20rem,calc(100vw - 2rem));
  padding:var(--sp-3);border:1px solid var(--color-popover-border);
  border-radius:var(--radius-2xl,1rem);background:var(--color-menu);
  box-shadow:var(--shadow-md);color:var(--color-foreground);
  pointer-events:auto;
}
.umnav-preview[hidden]{display:none!important}
.umnav-preview-hd{display:flex;align-items:flex-start;gap:var(--sp-2);margin-bottom:var(--sp-1)}
.umnav-preview-title{
  flex:1;min-width:0;font-size:var(--text-ui-sm);font-weight:600;line-height:1.35;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.umnav-bookmark{
  width:var(--size-7);height:var(--control-h-7);flex-shrink:0;border:0;border-radius:var(--radius-md);
  background:transparent;color:var(--color-foreground-subtle);cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;padding:0;
}
.umnav-bookmark:hover,.umnav-bookmark.on{color:var(--color-foreground);background:var(--color-hover)}
.umnav-preview-body{
  margin:0;font-size:var(--text-ui-sm);line-height:1.45;color:var(--color-foreground-subtle);
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.umnav-preview-chips{display:flex;flex-wrap:wrap;gap:var(--sp-1);margin-top:var(--sp-2)}
.umnav-chip{
  display:inline-flex;align-items:center;gap:var(--sp-1);height:var(--control-h-6,1.5rem);
  padding:0 var(--sp-2);border-radius:var(--radius-full);
  background:color-mix(in oklab,var(--color-foreground) 6%,transparent);
  color:var(--color-foreground-subtle);font-size:var(--text-ui-xs);
}
.umnav-chip svg{width:12px;height:12px}
.msg.mine.umnav-flash .bubble.u{
  animation:umnavFlash .85s ease;
}
@keyframes umnavFlash{
  0%{background:color-mix(in oklab,var(--color-foreground) 14%,transparent)}
  100%{background:var(--color-plan-surface)}
}
@media (max-width:720px){
  .umnav-rail{display:none}
  .umnav-preview{display:none!important}
}
.conv-timeline .msg:last-child{padding-bottom:var(--sp-8)}
/* 仅最新助手回合动作栏常显；用户气泡动作保持 hover 浮现 */
.conv-timeline .msg:last-child .a-turn>.a-actions{opacity:1}
.a-actions .a-act-time{margin-left:var(--sp-2);opacity:0;transition:opacity .15s}
.a-actions:hover .a-act-time,.a-actions:focus-within .a-act-time{opacity:1}
.a-act:focus-visible,.thread-scroll-btn:focus-visible,.atb-plus:focus-visible{outline:2px solid var(--color-input-border-focused);outline-offset:2px}
/* Codex --conversation-item-gap:16px */
.conv-timeline .msg,.conv-timeline .msg.mine{margin-bottom:var(--sp-4)}
/* Codex 会话 Composer：22px 圆角 + hairline 软阴影（--elevation-composer），替代硬边框 */
.thread-wrap .ask-box{
  border-color:transparent!important;border-radius:var(--radius-composer);
  box-shadow:var(--elevation-composer);
}
.thread-wrap .ask-box:focus-within{
  border-color:transparent!important;background:var(--color-input);
  box-shadow:0 0 0 1px color-mix(in oklab,var(--color-foreground) 24%,transparent),
    0 2px 8px 0 rgba(0,0,0,.04),0 4px 80px 8px rgba(0,0,0,.024);
}
.dark .thread-wrap .ask-box:focus-within{
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.35);
}
/* Codex blue-500 链接色 */
.conv-timeline a{color:var(--color-link);text-decoration:none}
.conv-timeline a:hover{text-decoration:underline}
/* Codex --agent-activity-summary-color：状态行 60% 文字色，hover 升全色 */
.a-worked{transition:color .15s}
.a-worked:hover{color:var(--color-foreground)}
/* Codex workingTextShimmer：运行中状态行扫光 */
.a-worked.is-running .a-worked-t{
  background:linear-gradient(90deg,var(--color-foreground-subtlest) 0%,var(--color-foreground) 40%,var(--color-foreground-subtlest) 80%);
  background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;
  animation:aReasonShine 2.4s linear infinite;
}
@media (hover:none){.a-actions{opacity:1}.a-act{width:var(--size-9);height:var(--size-9)}}
@media (prefers-reduced-motion:reduce){.a-actions,.a-act-time{transition:none}.draft-sug,.a-reason-streaming,.a-worked.is-running .a-worked-t{animation:none}}

.figure-unavailable{padding:var(--sp-10) var(--sp-5);text-align:center;color:var(--color-foreground-subtle);font-size:var(--text-ui-sm);border:1px dashed var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface)}


  /* ============ Codex 对话内交付物（docs/Codex渲染规格摘录.md） ============ */

  /* —— Diff 交付卡（pierre/diffs + FileDiff） —— */
  .zc-diff{width:100%;min-width:0;display:flex;flex-direction:column;gap:8px}
  /* 汇总行：N files changed +A −B（tabular-nums） */
  .zc-diff-sum{display:flex;align-items:baseline;gap:8px;font-size:var(--text-ui-base);line-height:1.4}
  .zc-diff-sum .n{color:var(--color-foreground-subtle);font-variant-numeric:tabular-nums}
  .zc-diff-sum .add,.zc-diff-stats .add{color:var(--diff-added-fg)}
  .zc-diff-sum .del,.zc-diff-stats .del{color:var(--diff-deleted-fg)}
  .zc-diff-sum .add,.zc-diff-sum .del{font-variant-numeric:tabular-nums}
  /* 卡壳：rounded-lg border border-default bg-surface-elevated-secondary */
  .zc-diff-card{border:1px solid var(--color-border);border-radius:12.5px;background:var(--diff-surface);overflow:hidden}
  /* 头行 h-9 px-4：文件名 truncate + 右侧 +N/−N */
  .zc-diff-head{
    display:flex;width:100%;height:36px;align-items:center;gap:8px;padding:4px 16px;box-sizing:border-box;
    border:0;border-bottom:1px solid transparent;background:transparent;cursor:pointer;text-align:left;
    font:inherit;font-size:var(--text-ui-base);color:var(--color-foreground);
  }
  .zc-diff-card.is-open .zc-diff-head{border-bottom-color:var(--color-border)}
  .zc-diff-fname{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .zc-diff-stats{display:inline-flex;gap:4px;line-height:1;font-variant-numeric:tabular-nums;flex-shrink:0}
  .zc-diff-chev{flex-shrink:0;opacity:0;color:var(--color-foreground-subtlest);line-height:0;display:inline-flex;transition:transform .2s ease-out,opacity .2s ease-out}
  .zc-diff-head:hover .zc-diff-chev{opacity:1}
  .zc-diff-card.is-open .zc-diff-chev{transform:rotate(90deg)}
  .zc-diff-body{display:none}
  .zc-diff-card.is-open .zc-diff-body{display:block}
  /* 体：mono 13px、行高 ×1.8、横向滚动；行底/行号列底/hover = lab color-mix（token 内置百分比） */
  .zc-diff-scroll{overflow-x:auto;padding:8px 0;font-family:var(--font-mono);font-size:var(--text-ui-base);line-height:1.8;color:var(--color-foreground)}
  .zc-diff-row{display:flex;min-width:max-content;align-items:stretch}
  .zc-diff-row.is-add{background:var(--diff-add-row-bg)}
  .zc-diff-row.is-del{background:var(--diff-del-row-bg)}
  .zc-diff-row.is-add:hover{background:var(--diff-add-row-bg-hover)}
  .zc-diff-row.is-del:hover{background:var(--diff-del-row-bg-hover)}
  /* 行号列：每行原行号/新行号，列宽 ≥4ch 右对齐 tertiary */
  .zc-diff-ln{
    min-width:4ch;padding:0 8px 0 4px;text-align:right;flex-shrink:0;user-select:none;
    color:var(--color-foreground-subtlest);font-variant-numeric:tabular-nums;
  }
  /* 行号列底 + 内侧 3px 色条（bars） */
  .zc-diff-row.is-add .zc-diff-ln{background:var(--diff-add-gutter-bg);box-shadow:inset -3px 0 0 var(--diff-added-fg)}
  .zc-diff-row.is-del .zc-diff-ln{background:var(--diff-del-gutter-bg);box-shadow:inset -3px 0 0 var(--diff-deleted-fg)}
  .zc-diff-code{flex:1;padding:0 12px;white-space:pre;background:transparent;border:0;font:inherit;color:inherit}
  /* hunk 分隔行：特殊底色圆角 8px */
  .zc-diff-hunk{display:inline-block;margin:2px 12px;padding:0 8px;border-radius:8px;background:color-mix(in oklab, var(--color-foreground) 6%, transparent);color:var(--color-foreground-subtlest);white-space:pre}

  /* —— 终端执行卡（活动行 + 终端卡） —— */
  .zc-exec{width:100%;min-width:0;display:flex;flex-direction:column;align-items:flex-start}
  .zc-exec-sum{max-width:100%}
  .zc-exec-txt{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  /* 运行中摘要 shimmer（简化版 cadenced 扫光） */
  .zc-exec-shimmer{
    background:linear-gradient(90deg, currentColor 0%, var(--color-foreground) 40%, currentColor 80%);
    background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;
    animation:aReasonShine 2.4s linear infinite;
  }
  /* 展开体：ps-6(24px) 缩进，gap-2 pt-2 pb-1 */
  .zc-exec-body{display:none;width:100%;box-sizing:border-box;padding-left:24px;padding-top:8px;padding-bottom:4px}
  .zc-exec.is-open .zc-exec-body{display:block}
  .zc-exec-card{
    position:relative;display:flex;flex-direction:column;overflow:hidden;min-width:0;
    border:1px solid var(--color-border-hover);border-radius:var(--radius-lg);background:var(--color-surface);
  }
  /* 命令行：$ 前缀 tertiary me-1ch；13px mono；line-clamp-2，点击展开全文 */
  .zc-exec-cmdrow{position:relative;padding:8px 8px 0;display:flex;align-items:flex-start;gap:0}
  .zc-exec-dollar{flex-shrink:0;font-family:var(--font-mono);font-size:var(--text-ui-base);line-height:1.5;color:var(--color-foreground-subtlest);margin-right:1ch;user-select:none}
  .zc-exec-cmd{
    flex:1;min-width:0;border-radius:var(--radius-md);cursor:pointer;
    font-family:var(--font-mono);font-size:var(--text-ui-base);line-height:1.5;color:var(--color-foreground-subtlest);
    white-space:pre-wrap;word-break:break-all;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  }
  .zc-exec-cmd.is-expanded{display:block;-webkit-line-clamp:unset}
  /* 输出区：max-h 144px 滚动、边缘 2rem 渐隐、p-2、13px mono */
  .zc-exec-outrow{position:relative;min-height:20px}
  .zc-exec-out{
    max-height:144px;overflow:auto;box-sizing:border-box;padding:8px;white-space:pre;
    font-family:var(--font-mono);font-weight:500;font-size:var(--text-ui-base);line-height:1.5;color:var(--color-foreground-subtlest);
    -webkit-mask-image:linear-gradient(180deg, transparent 0, #000 16px, #000 calc(100% - 16px), transparent 100%);
    mask-image:linear-gradient(180deg, transparent 0, #000 16px, #000 calc(100% - 16px), transparent 100%);
  }
  .zc-exec-noout{opacity:.7}
  /* copy 钮：hover 才显（icon-2xs） */
  .zc-exec-copy{
    position:absolute;top:6px;right:6px;border:0;background:transparent;padding:2px;
    color:var(--color-foreground-subtlest);cursor:pointer;display:inline-flex;line-height:0;
    opacity:0;transition:opacity .15s,color .15s;z-index:2;
  }
  .zc-exec-card:hover .zc-exec-copy{opacity:1}
  .zc-exec-copy:hover{color:var(--color-foreground)}
  /* Footer：成功 ms-auto 图标+Success / 失败 Exit code N / running 空占位 */
  .zc-exec-foot{display:flex;align-items:center;gap:8px;min-height:20px;padding:2px 10px 4px;font-size:var(--text-ui-base);line-height:1.4;color:var(--color-foreground-subtlest)}
  .zc-exec-ok{margin-left:auto;display:inline-flex;align-items:center;gap:4px}
  .zc-exec-ok svg,.zc-exec-ok .lucide{color:var(--color-success)}
  .zc-exec-err{color:var(--color-destructive)}

  /* —— Plan 卡（proposed-plan） —— */
  .zc-plan{position:relative;border-radius:var(--radius-lg);background:var(--color-plan-surface);overflow:hidden}
  .zc-plan-h{display:flex;height:40px;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;box-sizing:border-box}
  /* 标题 font-semibold 偏大选 --text-ui-lg（摘录 text-base 偏小一档） */
  .zc-plan-title{display:inline-flex;align-items:center;gap:8px;min-width:0;font-size:var(--text-ui-lg);font-weight:600;color:var(--color-foreground);line-height:1.3}
  .zc-plan-writing{
    font-weight:600;
    background:linear-gradient(90deg, var(--color-foreground-subtlest) 0%, var(--color-foreground) 40%, var(--color-foreground-subtlest) 80%);
    background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;
    animation:aReasonShine 2.4s linear infinite;
  }
  .zc-plan-acts{display:inline-flex;align-items:center;gap:2px;flex-shrink:0}
  .zc-plan-act{
    width:24px;height:24px;border:0;border-radius:var(--radius-md);background:transparent;padding:0;
    color:var(--color-foreground-subtlest);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:0;
  }
  .zc-plan-act:hover{background:var(--color-menu-hover);color:var(--color-foreground)}
  .zc-plan-b{padding:12px 16px;font-size:var(--text-ui-base);line-height:1.55;color:var(--color-foreground)}
  /* 折叠：height 320px；底部 h-40 渐隐 + 居中 primary「展开计划」 */
  .zc-plan.is-collapsed .zc-plan-b{height:320px;overflow:hidden}
  .zc-plan-fade{
    position:absolute;left:0;right:0;bottom:0;height:160px;display:none;align-items:flex-end;justify-content:center;
    padding-bottom:24px;box-sizing:border-box;
    background:linear-gradient(to top, var(--color-plan-surface) 30%, color-mix(in oklab, var(--color-foreground) 2%, transparent) 70%, transparent);
  }
  .zc-plan.is-collapsed .zc-plan-fade{display:flex}
  .zc-plan-expand{
    border:0;border-radius:var(--radius-md);background:var(--color-primary);color:var(--color-primary-foreground);
    padding:4px 12px;font:inherit;font-size:var(--text-ui-base);font-weight:500;cursor:pointer;line-height:1.5;
  }
  .zc-plan-expand:hover{opacity:.85}

/* Product identity: flat black Liuhu artwork; preserve existing layout dimensions. */
.ob-logo,.ws-login-logo{background:transparent;box-shadow:none}
.ob-logo::before,.ws-login-logo::before{display:none}
.ob-logo-mark,.ws-login-mark{width:100%;height:100%;object-fit:contain;border-radius:inherit;display:block}
.draft-brand-mark{width:100%;height:100%;object-fit:contain;border-radius:var(--radius-2xl);display:block}
.ws-login-logo{width:6rem;height:6rem}
.ws-login-title{font-size:var(--text-ui-xl);line-height:1.4}

/* Shared product and account avatar artwork. */
.nav-avatar img,.zc-settings-foot-avatar img,.cp-av img{display:block;width:100%;height:100%;object-fit:contain;border-radius:inherit}

/* Liuhu static approval: bottom anchor fixed to composer rim. */
.liuhu-perch{position:absolute;right:var(--sp-4);bottom:calc(100% - var(--sp-1));width:7rem;height:7rem;z-index:30;pointer-events:none}
.liuhu-perch>img{display:block;width:100%;height:100%;object-fit:contain}
.liuhu-tip{position:absolute;right:calc(100% + var(--sp-3));bottom:var(--sp-5);width:max-content;max-width:13rem;padding:var(--sp-3);border-radius:var(--radius-xl);border:1px solid var(--color-border);background:var(--color-popover);color:var(--color-foreground);box-shadow:var(--shadow-md);font-size:var(--text-ui-sm)}
.chat-center-body:has(.liuhu-perch)>.draft-empty{padding-right:8rem;box-sizing:border-box}
@media(max-width:640px){.liuhu-perch{width:5rem;height:5rem;right:var(--sp-2)}.liuhu-tip{max-width:9rem;font-size:var(--text-ui-xs)}.chat-center-body:has(.liuhu-perch)>.draft-empty{padding-right:5.5rem}}

/* Leave bubble clear of greeting and seat the transparent hand baseline on rim. */
.liuhu-perch{bottom:calc(100% - var(--sp-3))}
.chat-center-body:has(.liuhu-tip)>.draft-empty{margin-bottom:7rem}

/* Banner homepage composition: left greeting, 116px IP inset 56px, compact rim gap. */
.chat-center-body:has(.liuhu-perch)>.draft-empty,.chat-center-body:has(.liuhu-tip)>.draft-empty{align-items:flex-start;justify-content:flex-start;min-height:6rem;padding-right:11rem;margin-bottom:var(--sp-4);text-align:left}
.liuhu-perch{right:3.5rem;width:7.25rem;height:7.25rem}
.liuhu-tip{right:calc(100% + var(--sp-2));bottom:var(--sp-4);font-size:var(--text-ui-xs);line-height:1.5;padding:var(--sp-2) var(--sp-3);max-width:12rem}
.liuhu-tip::after{content:'';position:absolute;right:calc(var(--sp-1) * -1);top:60%;width:var(--sp-2);height:var(--sp-2);background:var(--color-popover);border-right:1px solid var(--color-border);border-top:1px solid var(--color-border);transform:rotate(45deg)}
@media(max-width:767px){.liuhu-perch{right:2.5rem;width:5.75rem;height:5.75rem}.liuhu-tip{right:var(--sp-2);bottom:calc(100% + var(--sp-2));max-width:12rem}.liuhu-tip::after{right:var(--sp-6);top:auto;bottom:calc(var(--sp-1) * -1);transform:rotate(135deg)}.chat-center-body:has(.liuhu-perch)>.draft-empty{padding-right:8rem;min-height:6rem}}
/* AppSidebar visual parity — banner-gen sidebarTypeTokens / sidebarMenuButtonVariants.
   科研入口与项目语义保留；主行 32px、gutter 12px、行内 8px、主图标 16px。 */
:is(.analysis,.unified-task-slot) .aside-h{height:var(--sp-12);min-height:var(--sp-12);margin-top:0;padding:0 var(--sp-3);box-sizing:border-box}
:is(.analysis,.unified-task-slot) .aside-brand-label{padding:0 var(--sp-2)}
:is(.analysis,.unified-task-slot) .aside-search{width:var(--size-8);height:var(--size-8);border-radius:var(--radius-full)}
:is(.analysis,.unified-task-slot) .aside-fixed-nav{padding:var(--sp-2) var(--sp-3) 0;flex-shrink:0}
:is(.analysis,.unified-task-slot) .aside-h{flex-shrink:0}
:is(.analysis,.unified-task-slot) .aside-s{padding:var(--sp-2) var(--sp-3) 0;min-height:0}
:is(.analysis,.unified-task-slot) .aside-nav{gap:var(--sp-1);padding-bottom:0}
:is(.analysis,.unified-task-slot) .padd,:is(.analysis,.unified-task-slot) .pfolder,:is(.analysis,.unified-task-slot) .pchat{min-height:var(--control-h-8);padding:var(--sp-2);border:0;border-radius:var(--radius-lg);font-size:var(--text-ui-base);font-weight:400;color:var(--color-foreground)}
:is(.analysis,.unified-task-slot) .padd{height:var(--control-h-8)}
:is(.analysis,.unified-task-slot) .padd svg.lucide,:is(.analysis,.unified-task-slot) .pfolder svg.lucide{width:var(--size-4);height:var(--size-4);stroke-width:1.5}
:is(.analysis,.unified-task-slot) .pchat{padding:0}
:is(.analysis,.unified-task-slot) .pchat-title,:is(.analysis,.unified-task-slot) .pfolder-title{color:var(--color-foreground);font-weight:400;line-height:var(--sp-5)}

:is(.analysis,.unified-task-slot) .padd:hover,:is(.analysis,.unified-task-slot) .pfolder:hover,:is(.analysis,.unified-task-slot) .pchat:hover,:is(.analysis,.unified-task-slot) .pfolder.on,:is(.analysis,.unified-task-slot) .pchat.on{background:var(--color-surface-hover);color:var(--color-foreground);font-weight:400}
:is(.analysis,.unified-task-slot) .task-sec-h{min-height:var(--control-h-8);padding:0 var(--sp-2);border-radius:var(--radius-lg)}
:is(.analysis,.unified-task-slot) .task-sec-toggle{gap:var(--sp-1);padding:var(--sp-1) 0;font-weight:400;color:var(--color-foreground-subtlest)}
:is(.analysis,.unified-task-slot) .task-sec-h{box-sizing:border-box;gap:var(--sp-1);transition:background-color .12s ease}
:is(.analysis,.unified-task-slot) .task-sec-h:hover{background:var(--color-surface-hover)}
:is(.analysis,.unified-task-slot) .task-sec-h .task-sec-toggle{min-height:var(--control-h-8);padding:0;background:transparent;line-height:1.4}
:is(.analysis,.unified-task-slot) .task-sec-h .task-sec-toggle:hover{background:transparent}
:is(.analysis,.unified-task-slot) .task-sec-h .task-view-trigger{width:var(--size-7);min-width:var(--size-7);height:var(--control-h-7);padding:0;border-radius:var(--radius-md);background:transparent;box-shadow:none}
:is(.analysis,.unified-task-slot) .task-sec-h .task-view-trigger:hover{background:transparent;color:var(--color-foreground)}
:is(.analysis,.unified-task-slot) .task-sec-h :is(.task-sec-toggle,.task-view-trigger):focus-visible{outline:2px solid var(--color-ring);outline-offset:2px}
:is(.analysis,.unified-task-slot) .task-sec-chev{opacity:0}
:is(.analysis,.unified-task-slot) .task-sec-h:hover .task-sec-chev,:is(.analysis,.unified-task-slot) .task-sec-h:focus-within .task-sec-chev,:is(.analysis,.unified-task-slot) .task-sec-chev.is-collapsed{opacity:1}
:is(.analysis,.unified-task-slot) .pchildren.open{gap:var(--sp-0-5)}
:is(.analysis,.unified-task-slot) .pchildren.open::before{left:calc(var(--sp-2) + var(--size-4)/2);top:calc(-1 * (var(--sp-0-5) + (var(--control-h-8) - var(--size-4))/2));bottom:var(--sp-4);background:var(--color-border)}
/* Static approval controls are only rendered with ?mascot=. */
.liuhu-perch{pointer-events:auto}
.liuhu-tip{pointer-events:none}
.liuhu-preview{position:fixed;right:var(--sp-4);bottom:var(--sp-4);z-index:100;display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--color-popover);border:1px solid var(--color-border);border-radius:var(--radius-xl);font-size:var(--text-ui-xs);color:var(--color-foreground);box-shadow:var(--shadow-md)}
.liuhu-preview button{padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-md);background:transparent;color:inherit;font:inherit;cursor:pointer}
.liuhu-preview button[aria-pressed="true"]{background:var(--color-foreground);color:var(--color-background)}
/* Banner HomeInputBarWithMascot: greeting shares the input's left edge. */
.chat-center-body:has(.liuhu-perch) .draft-greeting{padding:0;text-align:left}
.liuhu-tip{pointer-events:auto;box-sizing:border-box;display:flex;flex-direction:column;gap:var(--sp-1);width:14.25rem;max-width:14.25rem;right:calc(100% + var(--sp-2));bottom:26%;padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-xl);font-size:var(--text-ui-xs);line-height:1.5;text-align:left;white-space:normal}
.liuhu-tip::after{top:var(--sp-4)}
.liuhu-tip-header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2)}
.liuhu-tip-header strong{display:inline-flex;align-items:center;gap:var(--sp-2);font-weight:600}
.liuhu-tip-dot{width:var(--sp-1);height:var(--sp-1);border-radius:50%;background:var(--color-success)}
.liuhu-tip-header button{border:0;background:transparent;color:var(--color-foreground);font:inherit;cursor:pointer;padding:0 var(--sp-1)}
.liuhu-tip p{margin:0;color:var(--color-foreground-subtle)}
.liuhu-tip-action{align-self:flex-start;min-height:var(--sp-6);padding:0 var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-popover);color:var(--color-foreground);font:inherit;cursor:pointer}
@media(max-width:767px){.liuhu-tip{right:var(--sp-2);bottom:calc(100% + var(--sp-2));width:12rem;max-width:12rem}.liuhu-tip::after{top:auto}.liuhu-preview{max-width:calc(100vw - var(--sp-8))}}
.liuhu-tip{font-size:var(--text-ui-sm)}
/* Tip above the mascot on all viewport sizes. */
.liuhu-perch .liuhu-tip{right:50%;transform:translateX(50%);bottom:calc(100% + var(--sp-2))}
.liuhu-perch .liuhu-tip::after{top:auto;right:calc(50% - var(--sp-1));bottom:calc(var(--sp-1) * -1);border-top:0;border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);transform:rotate(45deg)}
/* Compact greeting-to-composer spacing; retain the perched IP anchor. */
.chat-center-body:has(.liuhu-perch)>.draft-empty{min-height:0;margin-bottom:var(--sp-4)}
/* Keep the mascot closer to the input's right edge. */
.liuhu-perch{right:var(--sp-4)}
/* Align the tip to the mascot's right edge inside the composer. */
.liuhu-perch .liuhu-tip{right:0;transform:none}
.liuhu-perch .liuhu-tip::after{right:calc(3.625rem - var(--sp-1))}
@media(max-width:767px){.liuhu-perch .liuhu-tip::after{right:calc(2.875rem - var(--sp-1))}}
/* One silhouette shadow for the bubble and its tail; compensate PNG headroom. */
.liuhu-perch .liuhu-tip{bottom:calc(100% - var(--sp-2));box-shadow:none;filter:drop-shadow(0 var(--sp-1) var(--sp-2) var(--color-border))}
.liuhu-perch .liuhu-tip::after{bottom:calc(var(--sp-1) * -1 + 1px);box-shadow:none}
/* Balance the mascot scale and tip breathing room. */
.liuhu-perch{width:6.5rem;height:6.5rem}
.liuhu-perch .liuhu-tip{bottom:100%}
.liuhu-perch .liuhu-tip::after{right:calc(3.25rem - var(--sp-1))}
@media(max-width:767px){.liuhu-perch{width:5.75rem;height:5.75rem}.liuhu-perch .liuhu-tip::after{right:calc(2.875rem - var(--sp-1))}}
/* Final desktop size; tip shares the composer's outer right edge. */
.liuhu-perch{width:100px;height:100px}
.liuhu-perch .liuhu-tip{right:calc(-1 * (var(--sp-4) + 1px))}
.liuhu-perch .liuhu-tip::after{right:calc(50px + var(--sp-4) + 1px - var(--sp-1))}
@media(max-width:767px){.liuhu-perch{width:5.75rem;height:5.75rem}.liuhu-perch .liuhu-tip::after{right:calc(2.875rem + var(--sp-4) + 1px - var(--sp-1))}}

  /* ===== Tooltip（对标 Codex TooltipContent）===== */
  .zc-tip{position:fixed;z-index:9999;max-width:320px;padding:5px 12px;border-radius:var(--radius-xl);
    background:var(--color-tooltip);color:var(--color-tooltip-foreground);
    font-size:var(--text-ui-base);line-height:18px;letter-spacing:-.15px;text-align:center;
    white-space:normal;overflow-wrap:break-word;box-shadow:0 8px 18px rgba(15,23,42,.2);
    opacity:0;pointer-events:none;transition:opacity .12s ease;user-select:none}
  .zc-tip.is-open{opacity:1}
  .zc-tip.zc-tip-detail{max-width:min(560px,calc(100vw - var(--sp-4)));max-height:calc(100vh - var(--sp-4));padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-lg);white-space:pre-wrap;overflow-wrap:anywhere;text-align:left;line-height:1.5;overflow:auto}
/* Lightweight native motion: fixed hand baseline, soft pose crossfades. */
.liuhu-motion{position:relative;width:100%;height:100%;transform-origin:50% 94%;animation:liuhu-breathe 4.8s ease-in-out infinite;transition:transform 280ms ease}
.liuhu-motion img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity 200ms ease;pointer-events:none}
.liuhu-motion img.is-active{opacity:1}
.liuhu-perch[data-mascot-state="hover"] .liuhu-motion{animation:none;transform:rotate(1deg)}
.liuhu-perch[data-mascot-state="ipHover"] .liuhu-motion{animation:liuhu-greet 650ms ease-out 1}
.liuhu-tip{animation:liuhu-tip-enter 180ms ease-out both}
@keyframes liuhu-breathe{0%,100%{transform:scaleY(1)}50%{transform:scaleY(1.012)}}
@keyframes liuhu-greet{0%{transform:rotate(0)}35%{transform:rotate(-3deg) scaleY(1.025)}70%{transform:rotate(1deg)}100%{transform:rotate(0)}}
@keyframes liuhu-tip-enter{from{opacity:0;translate:0 4px}to{opacity:1;translate:0 0}}
@media(prefers-reduced-motion:reduce){.liuhu-motion,.liuhu-tip{animation:none!important;transition:none!important}.liuhu-motion img{transition:none}}
/* 首页宽度对齐 banner-gen HomeInputBarWithMascot（sm:px-3）。 */
.chat-center-body>.draft-empty,
.chat-center-body>.composer-region,
.chat-center-body>.draft-suggestions{max-width:calc(var(--layout-home-max) - var(--sp-3) * 2)}
@media(min-width:1681px){:root{--layout-home-max:960px}}
@media(max-width:767px){
 .chat-center-body{padding-left:var(--sp-4);padding-right:var(--sp-4)}
 .chat-center-body>.draft-empty,.chat-center-body>.composer-region,.chat-center-body>.draft-suggestions{max-width:100%}
}
/* Articulated mascot: stationary hands, continuous head and independent eyes. */
.liuhu-perch .liuhu-motion{animation:none;transform:none}
.liuhu-head{position:absolute;inset:0;transform-origin:50% 82%;transition:transform 250ms cubic-bezier(.2,.65,.3,1);animation:liuhu-head-breathe 5s ease-in-out infinite}
.liuhu-motion .liuhu-head-base,.liuhu-motion .liuhu-hands{opacity:1;transition:none;position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.liuhu-head-base{clip-path:polygon(0 0,100% 0,100% 73%,88% 73%,85% 85%,28% 85%,26% 73%,0 73%)}
.liuhu-hands{clip-path:polygon(0 73%,26% 73%,29% 86%,85% 86%,88% 73%,100% 73%,100% 100%,0 100%);z-index:2}
.liuhu-eyes{position:absolute;inset:0;transition:translate 250ms ease}
.liuhu-eyes svg{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 0 3px cyan)}
.liuhu-eye-open{fill:#a1ffff}
.liuhu-eye-smile{fill:none;stroke:#a1ffff;stroke-width:55;stroke-linecap:round;opacity:0}
.liuhu-eye-left,.liuhu-eye-right{transform-box:fill-box;transform-origin:center}
.liuhu-perch[data-mascot-state="tip"] .liuhu-head{animation:none;transform:rotate(-7deg)}
.liuhu-perch[data-mascot-state="tip"] .liuhu-eyes{translate:-3% 0}
.liuhu-perch[data-mascot-state="hover"] .liuhu-head{animation:none;transform:perspective(300px) rotateX(-12deg) translateY(1px)}
.liuhu-perch[data-mascot-state="hover"] .liuhu-eyes{translate:0 3%}
.liuhu-perch[data-mascot-state="ipHover"] .liuhu-head{animation:liuhu-head-response 550ms ease-out 1}
.liuhu-perch[data-mascot-state="ipHover"] .liuhu-eye-open{opacity:0}
.liuhu-perch[data-mascot-state="ipHover"] .liuhu-eye-smile{opacity:1}
.liuhu-perch.is-blinking .liuhu-eye-left,.liuhu-perch.is-blinking .liuhu-eye-right{animation:liuhu-blink 160ms ease-in-out}
.liuhu-perch.is-typing .liuhu-head{animation:none}
@keyframes liuhu-blink{0%,100%{transform:scaleY(1)}45%,55%{transform:scaleY(.06)}}
@keyframes liuhu-head-breathe{0%,100%{transform:scaleY(1)}50%{transform:scaleY(1.012)}}
@keyframes liuhu-head-response{0%{transform:rotate(0)}40%{transform:rotate(-2deg)}100%{transform:rotate(0)}}
.liuhu-page-hidden .liuhu-head,.liuhu-page-hidden .liuhu-tip,.liuhu-page-hidden .liuhu-eye-left,.liuhu-page-hidden .liuhu-eye-right{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.liuhu-head,.liuhu-eyes,.liuhu-eye-left,.liuhu-eye-right{animation:none!important;transition:none!important}}
/* Separate hand cutouts exclude the duplicate lower face rim. */
.liuhu-hand-left{clip-path:polygon(0 73%,25% 73%,29% 85%,29% 100%,0 100%)}
.liuhu-hand-right{clip-path:polygon(87% 73%,100% 73%,100% 100%,70% 100%,70% 85%)}
.liuhu-head{transition:transform 280ms 55ms cubic-bezier(.2,.65,.3,1)}
.liuhu-eyes{transition:translate 170ms ease}
.liuhu-eyes svg{filter:drop-shadow(0 0 1px rgba(90,235,246,.65))}
.liuhu-eye-open{fill:#a1f7fa}
.liuhu-eye-smile{stroke:#a1f7fa;stroke-width:45}
.liuhu-perch[data-mascot-state="tip"] .liuhu-head{transform:rotate(-4deg)}
.liuhu-perch[data-mascot-state="hover"] .liuhu-head{transform:perspective(300px) rotateX(-8deg) translateY(.5px)}
.liuhu-perch[data-mascot-state="hover"] .liuhu-eyes{translate:0 2%}
@keyframes liuhu-head-response{0%{transform:rotate(0)}40%{transform:rotate(-1.5deg)}100%{transform:rotate(0)}}
/* Hand silhouettes contain no face rim or connector fragments. */
.liuhu-hand-left{clip-path:ellipse(15% 9% at 17% 82%)}
.liuhu-hand-right{clip-path:ellipse(15% 9% at 83% 82%)}
/* Complete head plate removes the straight cut across the chin. */
.liuhu-head-base{clip-path:none}
/* During a conversation, only the compact mascot is retained. */
.liuhu-thread{z-index:10}

/* History pagination — banner-gen TaskList More rows. */
:is(.analysis,.unified-task-slot) .task-history-more{display:flex;align-items:center;gap:8px;width:100%;height:30px;padding:0 10px 0 8px;border:0;border-radius:var(--radius-lg);background:transparent;color:var(--color-foreground-subtlest);font:inherit;font-size:var(--text-ui-base);text-align:left;cursor:pointer}
:is(.analysis,.unified-task-slot) .task-history-more:hover{background:var(--color-hover);color:var(--color-foreground)}
:is(.analysis,.unified-task-slot) .task-history-more.is-project-thread{padding-left:32px}
/* Distinct composer attention, with stationary hands. */
.liuhu-perch[data-mascot-state="hover"] .liuhu-head{transform:perspective(300px) rotateX(-17deg) rotate(2deg) translateY(2px)}
.liuhu-perch[data-mascot-state="hover"] .liuhu-eyes{translate:-1% 5%}
.liuhu-perch[data-mascot-state="hover"] .liuhu-eye-open{transform:scaleY(.88);transform-box:fill-box;transform-origin:center}
.liuhu-perch.is-typing .liuhu-head{animation:liuhu-focus-nod 420ms ease-out 1}
.liuhu-perch.is-typing .liuhu-eyes{translate:-2% 6%}
@keyframes liuhu-focus-nod{0%{transform:perspective(300px) rotateX(-17deg) rotate(2deg) translateY(2px)}45%{transform:perspective(300px) rotateX(-21deg) rotate(2deg) translateY(3px)}100%{transform:perspective(300px) rotateX(-17deg) rotate(2deg) translateY(2px)}}
@media(prefers-reduced-motion:reduce){.liuhu-perch.is-typing .liuhu-head{animation:none!important}}

/* Single-row research tabs with measured overflow menu. */
.science-home .science-home-tabs{flex-wrap:nowrap;overflow:visible;padding-bottom:0;min-width:0}
.science-home-tabs [hidden]{display:none!important}
.science-home-overflow{position:relative;flex-shrink:0}
.science-home-overflow-menu{position:absolute;right:0;top:calc(100% + 4px);z-index:30;min-width:160px;padding:var(--sp-1);background:var(--color-menu);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--elevation-composer)}
.science-home-overflow-menu button{display:flex;align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2);border:0;border-radius:var(--radius-lg);background:transparent;color:var(--color-foreground);font:inherit;text-align:left;white-space:nowrap;cursor:pointer}
.science-home-overflow-menu button:hover{background:var(--color-menu-hover)}
/* Keep the chin seated behind both hands; express attention primarily with eyes. */
.liuhu-perch[data-mascot-state="hover"] .liuhu-head{transform:translateY(1px);animation:none}
.liuhu-perch[data-mascot-state="hover"] .liuhu-eyes{translate:0 3%}
.liuhu-perch.is-typing .liuhu-head{animation:none;transform:translateY(1px)}
.liuhu-perch.is-typing .liuhu-eyes{translate:0 4%}
.liuhu-perch[data-mascot-state="hover"] .liuhu-eye-open{transform:scaleY(.92)}
/* Whole-character frames replace the separated chin/hand motion. */
.liuhu-frame{position:absolute;inset:0;background-image:url('../assets/brand/mascot/left-down-sheet.png');background-size:4100% 100%;background-position:0 0;opacity:0;pointer-events:none}
.liuhu-perch .liuhu-head{transform:none!important;animation:none!important;transition:opacity 160ms ease}
.liuhu-perch[data-mascot-state="hover"] .liuhu-head{opacity:1}
.liuhu-perch[data-mascot-state="hover"] .liuhu-frame{opacity:1}
.liuhu-perch .liuhu-eyes{translate:0 0!important;transition:translate 320ms cubic-bezier(.22,.61,.36,1)}
.liuhu-perch[data-mascot-state="hover"] .liuhu-eyes{translate:var(--liuhu-gaze-x,-7%) var(--liuhu-gaze-y,4%)!important}
.liuhu-perch.is-tracking .liuhu-eyes{transition:translate 100ms ease-out}
.liuhu-eye-open,.liuhu-eye-smile{transition:opacity 140ms ease}
.liuhu-accessory{position:absolute;inset:0;pointer-events:none;z-index:3}
.liuhu-accessory svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.liuhu-perch.has-production .liuhu-head,.liuhu-perch.has-production .liuhu-accessory,.liuhu-perch.has-production .liuhu-pose-hover,.liuhu-perch.has-production .liuhu-pose-smile{display:none!important}
.liuhu-production{position:absolute;inset:0;z-index:3;pointer-events:none}
.liuhu-perch .liuhu-production img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity 120ms ease}
.liuhu-perch[data-mascot-state="idle"] .liuhu-production-idle,.liuhu-perch[data-mascot-state="hover"] .liuhu-production-hover,.liuhu-perch[data-mascot-state="ipHover"] .liuhu-production-smile{opacity:1!important}
.liuhu-perch[data-mascot-state="tip"] .liuhu-production{opacity:0}
.liuhu-production-eyelids{position:absolute;inset:0;width:100%;height:100%;opacity:0;pointer-events:none}
.liuhu-perch[data-mascot-state="idle"].is-blinking .liuhu-production-eyelids{opacity:1}
.liuhu-production-lid{transform-box:fill-box;transform-origin:center}
.liuhu-perch.is-blinking .liuhu-production-lid{animation:liuhu-raster-blink 160ms ease-in-out both}
@keyframes liuhu-raster-blink{0%,100%{transform:scaleY(.01);opacity:0}45%,55%{transform:scaleY(1);opacity:1}}
.liuhu-perch[data-mascot-state="hover"] .liuhu-production{animation:liuhu-attention-enter 300ms ease-out 1}
.liuhu-perch[data-mascot-state="ipHover"] .liuhu-production{animation:liuhu-smile-enter 360ms ease-out 1}
.liuhu-perch.is-typing .liuhu-production{animation:none}
@media(prefers-reduced-motion:reduce){.liuhu-production,.liuhu-production img,.liuhu-production-lid{animation:none!important;transition:none!important}}
.liuhu-perch .liuhu-tip{width:clamp(220px,22vw,280px);max-width:calc(100vw - 7rem);padding:var(--sp-3);border-radius:var(--radius-xl);line-height:1.5}
.liuhu-perch .liuhu-tip p{margin:0}
.science-home-panel[hidden]{display:none!important}
@media(max-height:700px){
 .liuhu-perch .liuhu-tip{width:240px;padding:var(--sp-2) var(--sp-3);gap:var(--sp-1)}
 .liuhu-perch .liuhu-tip p{display:none}
 .science-home:not(.is-expanded){margin-top:var(--sp-4)}
 .chat-center-body:has(.science-home.is-expanded):has(.liuhu-perch){justify-content:flex-start;overflow-y:auto;padding-top:var(--science-expanded-top,90px)}
 .chat-center-body:has(.science-home.is-expanded)>.draft-empty,.chat-center-body:has(.science-home.is-expanded)>.composer-region,.chat-center-body:has(.science-home.is-expanded)>.draft-suggestions{flex-shrink:0}
}
@media(max-width:640px){.liuhu-perch .liuhu-tip{width:220px}}
@media(max-height:500px){
 .liuhu-perch .liuhu-tip{flex-direction:row;align-items:center;justify-content:space-between;padding:var(--sp-2);gap:var(--sp-2)}
 .liuhu-tip-header{gap:var(--sp-1)}
 .liuhu-tip-action{white-space:nowrap;padding:var(--sp-1) var(--sp-2)}
}
/* Keep the draft usable when the desktop window is narrow. */
@media(max-width:640px){
 .analysis:has(.liuhu-perch)>.aside{display:none}
 .analysis:has(.liuhu-perch) .chat-center-body>.draft-empty{padding-right:7rem}
 .analysis:has(.liuhu-perch) .draft-greeting{max-width:100%;white-space:normal;overflow-wrap:break-word}
 .liuhu-perch .liuhu-tip{width:min(12rem,calc(100vw - 7rem));max-width:calc(100vw - 7rem)}
}
.liuhu-perch[data-mascot-state="hover"] .liuhu-eye-open{transform:none}
.liuhu-perch[data-mascot-state="tip"] .liuhu-eyes{translate:-6% -4%!important}
.liuhu-perch.is-typing .liuhu-frame{filter:brightness(1.025)}
.liuhu-perch.is-frame-motion .liuhu-head{opacity:0}
.liuhu-perch.is-frame-motion .liuhu-frame{opacity:1}
.liuhu-perch .liuhu-motion .liuhu-pose-tip{opacity:0;transition:opacity 160ms ease}
.liuhu-perch[data-mascot-state="tip"]:not(.is-frame-motion) .liuhu-pose-tip{opacity:1}
.liuhu-perch[data-mascot-state="tip"] .liuhu-head{opacity:0}
.liuhu-perch[data-mascot-state="tip"] .liuhu-accessory{opacity:0}
.liuhu-perch .liuhu-accessory{transition:opacity 160ms ease}
.liuhu-perch .liuhu-motion .liuhu-pose-tip{z-index:4;transition:opacity 90ms ease;object-fit:contain;transform:translateY(1.5%) scale(1.035);transform-origin:50% 88%;filter:saturate(.88) brightness(.98)}
.liuhu-perch .liuhu-head{transition:opacity 90ms ease}
/* Independent approved artwork per state; never warp the front head. */
.liuhu-perch .liuhu-motion .liuhu-pose-hover,.liuhu-perch .liuhu-motion .liuhu-pose-smile{z-index:2;opacity:0;transition:opacity 120ms ease;object-fit:contain;transform-origin:50% 90%}
.liuhu-perch .liuhu-motion .liuhu-pose-hover{transform:translateY(1%) scale(1.025)}
.liuhu-perch .liuhu-motion .liuhu-pose-smile{transform:translateY(-.5%)}
.liuhu-perch[data-mascot-state="hover"] .liuhu-head,.liuhu-perch[data-mascot-state="ipHover"] .liuhu-head{opacity:0}
.liuhu-perch[data-mascot-state="hover"] .liuhu-pose-hover,.liuhu-perch[data-mascot-state="ipHover"] .liuhu-pose-smile{opacity:1!important}
.liuhu-perch[data-mascot-state="hover"] .liuhu-pose-hover{animation:liuhu-attention-enter 300ms ease-out 1}
.liuhu-perch[data-mascot-state="ipHover"] .liuhu-pose-smile{animation:liuhu-smile-enter 360ms ease-out 1}
.liuhu-perch.is-typing .liuhu-pose-hover{animation:none}
.liuhu-accessory{z-index:3;transform-origin:52% 63%;transition:opacity 120ms ease,transform 180ms ease}
.liuhu-perch[data-mascot-state="hover"][data-accessory="glasses"] .liuhu-accessory,.liuhu-perch[data-mascot-state="hover"][data-accessory="goggles"] .liuhu-accessory{transform:translate(-10%,1%) rotate(16deg) scale(.86)}
@keyframes liuhu-attention-enter{from{translate:0 -1px}to{translate:0 0}}
@keyframes liuhu-smile-enter{0%,100%{translate:0 0}45%{translate:0 -1px}}
@media(prefers-reduced-motion:reduce){.liuhu-perch .liuhu-motion img{animation:none!important;transition:none!important}.liuhu-perch .liuhu-accessory{transition:none!important}}
.liuhu-perch[data-mascot-state="idle"]:not(.is-frame-motion) .liuhu-motion{animation:liuhu-whole-breathe 5s ease-in-out infinite;transform-origin:50% 90%}
@keyframes liuhu-whole-breathe{0%,100%{transform:scaleY(1)}50%{transform:scaleY(1.006)}}
.liuhu-page-hidden .liuhu-motion{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.liuhu-perch .liuhu-motion{animation:none!important}}

/* Account menu identity: name and membership above navigation. */
.account-menu-profile{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-2-5)}
[data-account-management-icon]{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--size-4);height:var(--size-4);line-height:0}
[data-account-management-icon] svg{display:block;width:100%;height:100%}
.account-menu-profile .nav-avatar{flex-shrink:0;width:40px;height:40px}
.account-menu-identity{display:flex;flex-direction:column;gap:var(--sp-0-5);min-width:0}
.account-menu-name{font-size:var(--text-ui-base);color:var(--color-foreground);line-height:1.5}
.account-menu-plan{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);line-height:1.5}
.account-theme-tabs{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-2-5)}
.account-theme-title{display:flex;align-items:center;gap:var(--sp-2);flex-shrink:0;white-space:nowrap;font-size:var(--text-ui-base);color:var(--color-foreground)}
.account-theme-title svg{flex-shrink:0}
/* Octop dashboard ThemeSwitcher.tsx: compact: 26px buttons, 14px icons, 2px inset. */
.account-theme-tabs .seg-track{display:inline-flex;flex:0 0 auto;gap:var(--sp-0-5);width:auto;min-width:0;margin-left:auto;margin-bottom:0;height:30px;padding:var(--sp-0-5);border-radius:var(--radius-full);background:var(--color-hover)}
.account-theme-tabs .page-tab{flex:0 0 26px;display:flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;gap:0;border:0;border-radius:var(--radius-full);background:transparent;color:var(--color-foreground-subtle);font-family:inherit;cursor:pointer;transition:background-color .2s ease,color .2s ease,box-shadow .2s ease}
.account-theme-tabs .page-tab svg{width:14px;height:14px;stroke-width:1.8}
.account-theme-tabs .page-tab.on{background:var(--color-background);color:var(--color-foreground);box-shadow:0 1px 3px color-mix(in srgb,var(--color-foreground) 10%,transparent)}
.account-theme-tabs .page-tab:focus-visible{outline:2px solid var(--color-ring);outline-offset:2px}
@media(prefers-reduced-motion:reduce){.account-theme-tabs .page-tab{transition:none}}

/* Settings lives beside the persistent product navigation. */
.zc-settings-page{background:var(--color-background);border:1px solid var(--panel-frame-border);border-radius:var(--panel-radius);overflow:hidden;box-sizing:border-box}
.zc-settings-aside{border-right:1px solid var(--color-border)}
.zc-settings-sidebar-title{padding:var(--sp-4) var(--sp-4) var(--sp-5);font-size:var(--text-ui-xl);font-weight:600;color:var(--color-foreground)}

.zc-settings-search{display:flex;align-items:center;gap:var(--sp-2);margin:0 var(--sp-2) var(--sp-4);padding:0 var(--sp-3);min-height:var(--control-h-9);border-radius:var(--radius-full);background:var(--color-surface-hover);color:var(--color-foreground-subtle);min-width:0}
.zc-settings-search svg{flex-shrink:0}
.zc-settings-search input{width:100%;min-width:0;border:0;outline:none;background:transparent;color:var(--color-foreground);font:inherit;font-size:var(--text-ui-base)}
.zc-settings-search:focus-within{box-shadow:inset 0 0 0 1px var(--color-border-hover)}
.zc-settings-aside [hidden]{display:none!important}
.zc-settings-search-empty{padding:var(--sp-3);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}

/* Codex usage: flat section surfaces and blue activity scale. */
[data-active-section="usage"] .zc-usage-strip{background:transparent;border:0;border-radius:0}
[data-active-section="usage"] .zc-usage-stat{text-align:left;padding:var(--sp-3)}
[data-active-section="usage"] .zc-usage-stat-v{font-size:var(--text-ui-xl);font-weight:600}
[data-active-section="usage"] .zc-usage-stat-l{font-size:var(--text-ui-sm)}
.zc-heat-card{background:transparent;padding:var(--sp-4) 0;border-radius:0}
.zc-heat-card-h{margin-bottom:var(--sp-5)}
.zc-heat-scroll{overflow-x:auto;padding-bottom:var(--sp-1)}
.zc-heat{min-width:600px;gap:4px}
.zc-heat-cell{border-radius:var(--radius-sm);background:var(--color-surface-tertiary)}
.zc-heat-cell.lv-1{background:var(--color-usage-heatmap-1)}
.zc-heat-cell.lv-2{background:var(--color-usage-heatmap-2)}
.zc-heat-cell.lv-3{background:var(--color-usage-heatmap-3)}
.zc-heat-cell.lv-4{background:var(--color-usage-heatmap-4)}
.zc-heat-months{display:flex;justify-content:space-between;min-width:600px;margin-top:var(--sp-3);font-size:var(--text-ui-sm);color:var(--color-foreground-subtlest)}
.zc-heat-legend{display:flex;justify-content:space-between;align-items:center;margin-top:var(--sp-3);font-size:var(--text-ui-xs);color:var(--color-foreground-subtlest)}
.zc-heat-legend-scale{display:flex;align-items:center;gap:var(--sp-1)}
.zc-heat-legend-scale .zc-heat-cell{display:block;width:var(--size-3);height:var(--size-3)}

/* Usage summary matches the five-column reference card. */
[data-active-section="usage"] .zc-usage-strip{display:flex;flex-direction:row;align-items:center;border:1px solid var(--color-border);border-radius:var(--radius-2xl);background:var(--color-card);padding:var(--sp-4) 0;overflow-x:auto}
[data-active-section="usage"] .zc-usage-stat{flex:1 0 120px;min-width:120px;text-align:center;padding:0 var(--sp-3)}
[data-active-section="usage"] .zc-usage-stat-v{font-size:var(--text-ui-lg);font-weight:400;line-height:1.5}
[data-active-section="usage"] .zc-usage-stat-l{font-size:var(--text-ui-lg);line-height:1.5;margin-top:var(--sp-1);color:var(--color-foreground-subtle)}
[data-active-section="usage"] .zc-usage-stat-sep{display:block;height:var(--sp-10);width:1px;background:var(--color-border)}

/* Message shortcuts only in the full-width conversation. */
.app-body:has(#rightPane:not(.collapsed)) .umnav-rail,
.app-body:has(#rightPane:not(.collapsed)) #umnavPreview{display:none!important}

/* Codex electron floating rail: left-4, 26px marker scaled to 6px. */
.umnav-rail{left:var(--sp-4);top:50%;transform:translateY(-50%)}
.umnav-list{align-items:flex-start;mask-image:none;-webkit-mask-image:none;max-height:calc(100vh - 160px)}
.umnav-item{width:26px;height:10px;justify-content:flex-start}
.umnav-marker{width:26px;height:2px;border-radius:0;transform:scaleX(.2308);transform-origin:left center;background:var(--color-foreground-subtle);opacity:.4;transition:transform .16s ease,opacity .16s ease}
.umnav-item.is-current .umnav-marker{width:26px;transform:scaleX(.4615);background:var(--color-foreground);opacity:.9}
.umnav-item.is-current .umnav-dot{left:14px;opacity:.65}
.umnav-preview{cursor:pointer}
.umnav-preview:focus-visible{outline:2px solid var(--color-ring);outline-offset:2px}
.umnav-item:hover .umnav-marker,.umnav-item.is-hover .umnav-marker,.umnav-item:focus-visible .umnav-marker,.umnav-item[data-scrub-target] .umnav-marker{width:26px;transform:scaleX(1);background:var(--color-foreground);opacity:1}
/* Reserve the full 26px hover target plus its left inset and breathing room. */
@media (min-width:721px){
 .app-body:not(:has(#rightPane:not(.collapsed))) .thread-wrap.has-umnav{--conversation-nav-gutter:var(--sp-12)}
 .thread-wrap.has-umnav .conv-timeline{padding-inline:var(--conversation-nav-gutter,0px);box-sizing:border-box}
 :root[data-conversation-width] .thread-wrap.has-umnav .composer-dock{padding-inline:var(--conversation-nav-gutter,0px)}
 .thread-wrap.has-umnav #rfApprovalLayerAnchor{padding-inline:var(--conversation-nav-gutter,0px);box-sizing:border-box}
}
.model-option{position:relative}
.model-dropdown .model-di{align-items:center;min-height:var(--control-h-9)}
.model-di.on{background:var(--color-menu-hover)}
.model-tier-icon{display:inline-flex;flex-shrink:0}
.model-rate{color:var(--color-foreground-subtle);font-size:var(--text-ui-sm)}
.ask-box .plus-menu{left:0;right:0;bottom:calc(100% + var(--sp-1));width:auto;min-width:0;max-height:min(24rem,50vh);overflow-y:auto;padding:var(--sp-2);border-radius:var(--radius-2xl);background:var(--color-menu)}
.plus-menu .plus-sec{font-size:var(--text-ui-base);font-weight:400;padding:var(--sp-2)}
.plus-menu .plus-mi{min-height:var(--control-h-9);font-weight:400;border-radius:var(--radius-full);gap:var(--sp-2)}
.plus-mi img{width:var(--size-4-5);height:var(--size-4-5);object-fit:contain;flex-shrink:0}
.plus-mi>span:not(.plus-desc){white-space:nowrap}
.plus-desc{color:var(--color-foreground-subtle);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.plus-empty{padding:var(--sp-2);color:var(--color-foreground-subtle);font-size:var(--text-ui-sm)}
.model-trigger-icon{display:inline-flex;flex-shrink:0;line-height:0}
.model-dropdown{width:26rem;max-width:calc(100vw - var(--sp-8))}
.model-dropdown .model-di{align-items:flex-start;padding-top:var(--sp-3);padding-bottom:var(--sp-3)}
.model-dropdown .model-tier-icon,.model-dropdown .model-rate{margin-top:var(--sp-0-5)}
/* 分类式添加菜单与二级选择面板 */
.ask-box .plus-menu{right:auto;width:15rem;max-height:calc(100vh - var(--sp-8));padding:var(--sp-2)}
.plus-category>svg:last-child{margin-left:auto}
.plus-category.on{background:var(--color-menu-hover)}
.plus-divider{height:1px;background:var(--color-border);margin:var(--sp-2) var(--sp-1);flex-shrink:0}
.plus-submenu{position:fixed;z-index:100;width:min(22.5rem,calc(100vw - 24px));max-height:calc(100vh - 24px);display:flex;flex-direction:column;padding:var(--sp-2);border:1px solid var(--color-popover-border);border-radius:var(--radius-2xl);background:var(--color-menu);box-shadow:var(--shadow-md);box-sizing:border-box}
.plus-submenu[hidden]{display:none}
.plus-search{width:100%;border:0;border-radius:var(--radius-lg);padding:var(--sp-3);background:var(--color-surface);color:var(--color-foreground);font:inherit;flex-shrink:0;box-sizing:border-box}
.plus-results{overflow-y:auto;max-height:19rem;min-height:0;margin-top:var(--sp-2)}
.plus-submenu .plus-plugin-row{border-radius:var(--radius-lg);padding:var(--sp-2);align-items:flex-start}
.plus-plugin-text{display:flex;flex-direction:column;gap:var(--sp-1);min-width:0;flex:1}
.plus-plugin-text .plus-desc{font-size:var(--text-ui-sm)}
.plus-connect{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);margin-left:auto}

.plus-search-field{position:relative;flex-shrink:0}
.plus-search-field>svg{position:absolute;left:var(--sp-3);top:50%;transform:translateY(-50%);color:var(--color-foreground-subtle);pointer-events:none}
.plus-search-field .plus-search{padding-inline-start:calc(var(--sp-3) + var(--size-4) + var(--sp-2))}
.plus-search-field .plus-search::placeholder{color:var(--color-foreground-subtlest);opacity:1}
#avatarMenu{width:min(18.5rem,calc(100vw - 80px));min-width:0;max-height:calc(100vh - var(--sp-8));overflow-y:auto}
.account-assets{padding:var(--sp-3);margin:var(--sp-2);background:var(--color-surface);border:0;border-radius:var(--radius-xl)}
.account-assets-head{display:flex;justify-content:space-between;gap:var(--sp-2);font-size:var(--text-ui-sm);color:var(--color-foreground)}
.account-assets-head>span{font-size:var(--text-ui-xs);color:var(--color-foreground-subtle)}
.account-assets-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2);margin:var(--sp-3) 0}
.account-asset{display:flex;flex-direction:column;gap:var(--sp-1);padding:0;border:0;background:transparent;text-align:left;font:inherit;color:var(--color-foreground)}
button.account-asset{cursor:pointer}
.account-asset>span{font-size:var(--text-ui-xs);color:var(--color-foreground-subtle)}
.account-asset>strong{font-size:var(--text-ui-base);font-weight:600}
.account-assets-actions{display:flex;gap:var(--sp-2)}
.account-assets-actions>button{flex:1;justify-content:center}
.general-section h2{font-size:var(--text-ui-base);font-weight:400;color:var(--color-foreground-subtle);margin:0 0 var(--sp-3);padding-left:var(--sp-2)}
.general-settings .zc-settings-row{padding-top:var(--sp-4);padding-bottom:var(--sp-4)}
.general-font{width:16rem;max-width:100%}
.general-font input{width:100%;accent-color:var(--color-foreground)}
.general-font>div{display:flex;justify-content:space-between;color:var(--color-foreground-subtle);font-size:var(--text-ui-sm)}
.general-path input{width:100%}
.general-demo-note{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
.memory-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap}
.memory-reset{color:var(--color-destructive)!important;border-color:var(--color-destructive)!important}
.memory-content{border-top:1px solid var(--color-border);margin-top:var(--sp-3);padding-top:var(--sp-4)}
.memory-prose{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8;font-size:var(--text-ui-base)}
.memory-empty,.memory-note{color:var(--color-foreground-subtle);font-size:var(--text-ui-base);line-height:1.6}
.memory-note{text-align:center;font-size:var(--text-ui-sm)}
.memory-editor{width:100%;min-height:16rem;max-height:50vh;resize:vertical;border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--sp-3);background:var(--color-input);color:var(--color-foreground);font:inherit;line-height:1.7;box-sizing:border-box}
.memory-edit-footer{display:flex;justify-content:flex-end;margin-top:var(--sp-3)}
.memory-import-step{padding:var(--sp-3);background:var(--color-surface);border-radius:var(--radius-xl);margin-bottom:var(--sp-3)}
.memory-import-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}
.memory-import-step p{line-height:1.7;max-height:10rem;overflow-y:auto}
.memory-import-step textarea{margin-top:var(--sp-3)}
/* WorkBuddy 本机源码：分区 16/20 间距、224px 六档滑块、小开关。 */
.general-settings .zc-settings-card,.memory-evolution .zc-settings-card{border:0;border-radius:var(--radius-xl);background:var(--color-background)}
.general-settings .zc-settings-row,.memory-evolution .zc-settings-row{padding:var(--sp-4) var(--sp-5)}
.general-settings .zc-settings-row-label,.memory-evolution .zc-settings-row-label{font-weight:500}
.general-settings .zc-switch,.memory-evolution .zc-switch{min-width:32px;width:32px;height:18px}
.general-settings .zc-switch-thumb,.memory-evolution .zc-switch-thumb{width:14px;height:14px}
.general-settings .general-font{width:224px}
.memory-content{padding:var(--sp-4) var(--sp-5);margin:0 var(--sp-5)}
.memory-evolution .memory-content:has(.memory-editor){max-height:50vh;overflow-y:auto}
.memory-change-bar{display:flex;align-items:center;gap:var(--sp-2);margin:var(--sp-3) var(--sp-5);padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-xl)}
.memory-change-bar input{flex:1;min-width:0;padding:var(--sp-2);border:0;background:transparent;color:var(--color-foreground);font:inherit}
.memory-prose h3{font-size:var(--text-ui-base);font-weight:600;margin:var(--sp-3) 0 var(--sp-1)}
.ui-dialog:has(#demoMemoryImport){width:min(42rem,calc(100vw - var(--sp-8)));max-height:90vh}
.ui-dialog:has(#demoMemoryImport) .ui-dialog-body{overflow-y:auto;max-height:65vh}
/* Six width stops; WorkBuddy 5.7.7 uses an 832px base chat column. */
:root[data-conversation-width] :is(.conv-col,.conv-timeline .msg,.thread-wrap .thread .msg,.composer-dock-content){width:100%;max-width:var(--conversation-max-width,832px)}
:root[data-conversation-width] .composer-dock{padding-inline:var(--conversation-nav-gutter,0px)}
:root[data-conversation-width] .rf-approval-layer{width:calc(100% - var(--conversation-nav-gutter,0px) * 2);max-width:var(--conversation-max-width,832px);transform:none}
:root[data-conversation-width] .conv-timeline{scrollbar-width:none;scrollbar-gutter:auto}
:root[data-conversation-width] .conv-timeline::-webkit-scrollbar{display:none}
.conversation-scrollbar{position:absolute;right:0;width:var(--size-3-5);z-index:25;pointer-events:auto}
.conversation-scrollbar[hidden]{display:none}
.conversation-scrollbar-thumb{width:100%;border:3px solid transparent;border-radius:var(--radius-full);background:var(--color-border);background-clip:padding-box;cursor:default;touch-action:none}
.conversation-scrollbar-thumb:hover{background-color:var(--color-border-hover)}
:root[data-conversation-width] .chat-center-body>:is(.draft-empty,.composer-region,.draft-suggestions){max-width:var(--conversation-max-width,832px)}
.general-font.wb-font-slider{width:224px;max-width:100%}
.wb-font-slider .font-slider-track{display:block;position:relative;width:100%;height:var(--sp-5)}
.font-slider-line{position:absolute;left:0;right:0;top:50%;height:2px;background:linear-gradient(to right,var(--color-foreground) 0 var(--font-progress),var(--color-foreground-subtle) var(--font-progress) 100%)}
.font-slider-tick{position:absolute;top:calc(50% - 3px);width:1px;height:7px;background:var(--color-foreground-subtle);transform:translateX(-50%)}
.font-slider-track input[type=range]{position:absolute;inset:0;width:100%;height:100%;margin:0;background:transparent;appearance:none;cursor:pointer}
.font-slider-track input::-webkit-slider-runnable-track{height:1px;background:transparent}
.font-slider-track input::-webkit-slider-thumb{appearance:none;width:10px;height:20px;margin-top:-10px;border:1px solid var(--color-foreground-subtle);border-radius:var(--radius-full);background:var(--color-background);box-shadow:var(--shadow-sm)}
.font-slider-track input::-moz-range-track{height:1px;background:transparent}
.font-slider-track input::-moz-range-thumb{width:10px;height:20px;border:1px solid var(--color-foreground-subtle);border-radius:var(--radius-full);background:var(--color-background);box-shadow:var(--shadow-sm)}
.wb-font-slider .font-slider-labels{display:block;position:relative;height:var(--sp-5);margin-top:var(--sp-1);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
.font-slider-labels span{position:absolute;top:0;transform:translateX(-50%)}
.font-slider-labels span:first-child{left:0}
.font-slider-labels span:nth-child(2){left:20%}
.font-slider-labels span:last-child{left:100%}
/* 管理记忆：操作保持一行，正文与标题对齐。 */
.memory-evolution .zc-settings-row-grid:has(.memory-actions){grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-4)}
.memory-actions{flex-wrap:nowrap;white-space:nowrap}
.memory-actions .zc-btn{min-width:var(--sp-16);padding-left:var(--sp-3);padding-right:var(--sp-3)}
.memory-evolution .memory-content{padding:var(--sp-4) 0;margin:0 var(--sp-5)}
.memory-evolution .memory-empty{padding:var(--sp-2) 0;color:var(--color-foreground-subtle)}
@media(max-width:600px){.memory-evolution .zc-settings-row-grid:has(.memory-actions){grid-template-columns:1fr}.memory-evolution .zc-settings-row-control:has(.memory-actions){justify-content:flex-start}}
.ui-dialog footer .memory-reset-cancel,.ui-dialog footer .memory-reset-confirm{height:var(--control-h-9);padding:0 var(--sp-4);border-radius:var(--radius-lg);font-weight:500}
.ui-dialog footer .memory-reset-cancel{background:transparent;color:var(--color-foreground);border:1px solid var(--color-border)}
.ui-dialog footer .memory-reset-cancel:hover{background:var(--color-hover)}
.ui-dialog footer .memory-reset-confirm{background:var(--color-destructive);color:var(--color-destructive-foreground);border:1px solid var(--color-destructive)}
.ui-dialog footer .memory-reset-confirm:hover{filter:brightness(.94)}

.account-assets-grid{grid-template-columns:repeat(2,1fr);margin:0}

.workspace-search{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border)}
.workspace-search svg{flex-shrink:0;color:var(--color-foreground-subtle)}
.workspace-search input{min-width:0;flex:1;border:0;background:transparent;color:var(--color-foreground);font:inherit;padding:var(--sp-1);outline:none}
.workspace-no-results{padding:var(--sp-3);color:var(--color-foreground-subtle)}
.ws-dropdown .ws-di[hidden],.workspace-no-results[hidden]{display:none}
.composer-ctx .ws-dropdown,.composer-ctx .composer-env-menu{top:auto;bottom:calc(100% + var(--sp-2));max-width:calc(100vw - var(--sp-8));max-height:50vh;overflow-y:auto}
.composer-env-mi{display:flex;align-items:center;gap:var(--sp-2)}
.composer-env-mi>svg:last-child{margin-left:auto}
/* 环境与工作空间菜单：统一密度与层级 */
.composer-ctx .ws-dropdown{width:20rem;padding:var(--sp-1);border-radius:var(--radius-xl);box-shadow:var(--shadow-md)}
.composer-ctx .workspace-search{padding:var(--sp-2) var(--sp-2-5);margin-bottom:var(--sp-1);gap:var(--sp-2)}
.composer-ctx .ws-di{margin:var(--sp-0-5) 0;padding:var(--sp-2) var(--sp-2-5);border-radius:var(--radius-lg);gap:var(--sp-2)}
.composer-ctx .ws-di.on{background:var(--color-selected)}
.composer-ctx .ws-info{gap:var(--sp-0-5);min-width:0}
.composer-ctx .ws-info .ws-path{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.composer-ctx .ws-di .check{color:var(--color-foreground-subtle)}
.composer-ctx .ws-dempty,.composer-ctx .workspace-no-results{padding:var(--sp-4) var(--sp-2-5);font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
.composer-ctx .ws-dadd{margin:var(--sp-1) 0 0;padding:var(--sp-2) var(--sp-2-5);border-top:1px solid var(--color-border);font-size:var(--text-ui-base);font-weight:400}
.composer-ctx .composer-env-menu{min-width:10rem;padding:var(--sp-1);border-radius:var(--radius-xl)}
.composer-ctx .composer-env-menu .ws-dh{font-size:var(--text-ui-sm);font-weight:400;padding:var(--sp-2) var(--sp-2-5);color:var(--color-foreground-subtle)}
.composer-ctx .composer-env-mi{padding:var(--sp-2) var(--sp-2-5);min-height:var(--control-h-8);border-radius:var(--radius-lg)}

/* Approval and Composer share one column, including the reserved side panel. */
:root[data-conversation-width] .thread-wrap.has-csp-panel .composer-dock-content > .rf-approval-layer, :root .thread-wrap .composer-dock-content > .rf-approval-layer{width:100%;max-width:none;margin:0;padding:0 0 var(--sp-2);transform:none;box-sizing:border-box}

/* Home upgrade entry: centered near the top of the conversation pane. */
.chat-center:has(.home-upgrade-pill){position:relative}
.home-upgrade-pill{position:absolute;top:24px;left:50%;transform:translateX(-50%);z-index:5;display:flex;align-items:center;gap:4px;padding:6px 10px 6px 14px;border-radius:var(--radius-full);background:color-mix(in srgb,var(--color-icon-blue) 12%,var(--color-background));color:var(--color-icon-blue)}
.home-upgrade-pill button{display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;font-size:var(--text-ui-base);border-radius:var(--radius-full)}
.home-upgrade-link{gap:8px;padding:4px 0}
.home-upgrade-dismiss{width:28px;height:28px;padding:0}
.home-upgrade-pill button:hover{color:color-mix(in srgb,var(--color-icon-blue) 80%,var(--color-foreground))}
.home-upgrade-dismiss:hover{background:color-mix(in srgb,var(--color-icon-blue) 12%,transparent)}
.home-upgrade-pill button:focus-visible{outline:2px solid var(--color-icon-blue);outline-offset:3px}


/* Account upgrade sits at the right edge of the identity row. */
.account-menu-identity{flex:1}
.account-profile-upgrade{margin-left:auto;flex-shrink:0;height:32px;padding:0 12px;gap:6px;white-space:nowrap;border-radius:var(--radius-full)}
.account-profile-upgrade svg{width:16px;height:16px;flex-shrink:0}

/* Account artwork supplies its own background; avoid a colored rim. */
.nav-foot .nav-avatar,#avatarMenu .nav-avatar{background:var(--color-surface-hover);border:0;box-shadow:none;overflow:hidden;isolation:isolate}
.nav-foot .nav-avatar img,#avatarMenu .nav-avatar img{display:block;border:0;box-shadow:none;object-fit:cover;transform:scale(1.04);transform-origin:center}
