/* v0.6.0 PS 式标注工作台：选项栏 / 工具栏 / 画布铺满 / 状态栏 / 右侧图层与对象。加载在最后，用 html body #workbenchApp.ps 前缀覆盖旧版布局。 */
html body #workbenchApp.ps{--ps-brand:#5235F5;--ps-brand2:#4F8FF2;--ps-soft:#EEEBFF;--ps-soft-line:#CFC7FF;--ps-ink:#1F2140;--ps-ink2:#4A4E6A;--ps-muted:#8A8EA6;--ps-line:#E7E8F0;--ps-line2:#F0F1F6;--ps-ws:#2A2B30;--ps-ok:#22A06B;--ps-warn:#E8A23A;
 display:grid;grid-template-rows:56px 48px minmax(0,1fr);grid-template-columns:minmax(0,1fr);height:100vh;overflow:hidden;background:#F6F6FC;color:var(--ps-ink)}
html body #workbenchApp.ps>*{grid-column:1;margin:0}
html body #workbenchApp.ps>#workbenchHeader{grid-row:1}
html body #workbenchApp.ps .ps-i{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
html body #workbenchApp.ps kbd{font:11px/1 ui-monospace,Consolas,monospace;color:var(--ps-muted);background:var(--ps-line2);border-radius:4px;padding:2px 5px;border:0}
html body #workbenchApp.ps .ps-vsep{display:block;width:1px;height:22px;background:var(--ps-line);flex:none}
html body #workbenchApp.ps .ps-spacer{flex:1;min-width:8px}

/* ── 选项栏 ── */
html body #workbenchApp.ps>.topbar.ps-optbar{grid-row:2;display:flex;align-items:center;gap:10px;height:48px;min-height:48px;padding:0 12px 0 8px;background:#fff;border:0;border-top:1px solid var(--ps-line);border-bottom:1px solid var(--ps-line);border-radius:0;box-shadow:none;min-width:0;position:relative;z-index:20}
html body #workbenchApp.ps #openProject{height:32px;min-height:32px;padding:0 8px;border:0;background:none;box-shadow:none;border-radius:8px;font-size:14px;font-weight:600;color:var(--ps-ink);max-width:260px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:block;flex:none}
html body #workbenchApp.ps #openProject:hover{background:var(--ps-line2)}
html body #workbenchApp.ps .ps-opts{display:flex;align-items:center;gap:10px;min-width:0}
html body #workbenchApp.ps.ps-readonly .ps-opts{display:none}
html body #workbenchApp.ps .ps-dyn{display:flex;align-items:center;gap:10px;min-width:0}
html body #workbenchApp.ps .ps-cur{display:flex;align-items:center;gap:6px;height:30px;padding:0 10px 0 8px;border-radius:8px;background:var(--ps-line2);font-weight:600;font-size:13px;white-space:nowrap;flex:none}
html body #workbenchApp.ps .ps-grp{display:flex;align-items:center;gap:6px;flex:none}
html body #workbenchApp.ps .ps-grp>label{color:var(--ps-muted);font-size:12px;margin:0 2px 0 0;font-weight:400}
html body #workbenchApp.ps .ps-tp{position:relative;flex:none}
html body #workbenchApp.ps .ps-tp-btn{display:flex;align-items:center;gap:8px;height:30px;min-width:150px;padding:0 8px 0 10px;border:1px solid var(--ps-line);border-radius:8px;background:#fff;color:var(--ps-ink);font-size:13px;cursor:pointer}
html body #workbenchApp.ps .ps-tp-btn:hover,html body #workbenchApp.ps .ps-tp.open .ps-tp-btn{border-color:var(--ps-soft-line)}
html body #workbenchApp.ps .ps-tp-btn:disabled{opacity:.55;cursor:not-allowed}
html body #workbenchApp.ps .ps-tp-btn b{flex:1;text-align:left;font-weight:600;max-width:130px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
html body #workbenchApp.ps .ps-tp-btn .ps-i{color:var(--ps-muted);transition:transform .15s}
html body #workbenchApp.ps .ps-tp.open .ps-tp-btn .ps-i{transform:rotate(180deg)}
html body #workbenchApp.ps .ps-sw{display:inline-block;width:10px;height:10px;border-radius:3px;flex:none}
html body #workbenchApp.ps .ps-tp-pop{position:absolute;top:36px;left:0;width:252px;max-height:380px;overflow:auto;background:#fff;border:1px solid var(--ps-line);border-radius:12px;box-shadow:0 14px 36px rgba(20,22,50,.16);padding:6px;display:none;z-index:60}
html body #workbenchApp.ps .ps-tp.open .ps-tp-pop{display:block}
html body #workbenchApp.ps .ps-tp-row{display:grid;grid-template-columns:10px minmax(0,1fr) auto 24px;gap:10px;align-items:center;width:100%;height:34px;padding:0 10px;border:0;border-radius:8px;background:none;text-align:left;color:var(--ps-ink);font-size:13px;cursor:pointer}
html body #workbenchApp.ps .ps-tp-row:hover{background:var(--ps-line2)}
html body #workbenchApp.ps .ps-tp-row.on{background:var(--ps-soft);color:var(--ps-brand);font-weight:600}
html body #workbenchApp.ps .ps-tp-row span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
html body #workbenchApp.ps .ps-tp-row small{color:var(--ps-muted);font-size:12px;font-weight:400}
html body #workbenchApp.ps .ps-tp-row kbd:empty{background:none}
html body #workbenchApp.ps .ps-tp-f{border-top:1px solid var(--ps-line2);margin-top:4px;padding:8px 10px 4px;font-size:12px;color:var(--ps-muted)}
html body #workbenchApp.ps .ps-seg{display:flex;background:var(--ps-line2);border-radius:8px;padding:2px;height:30px;flex:none}
html body #workbenchApp.ps .ps-seg button{padding:0 10px;border:0;border-radius:6px;background:none;color:var(--ps-ink2);font-size:12px;cursor:pointer;white-space:nowrap}
html body #workbenchApp.ps .ps-seg button.on{background:#fff;color:var(--ps-ink);font-weight:600;box-shadow:0 1px 2px rgba(20,22,50,.12)}
html body #workbenchApp.ps .ps-switch{display:flex;align-items:center;gap:7px;height:30px;padding:0 4px;border:0;background:none;color:var(--ps-ink2);font-size:13px;white-space:nowrap;cursor:pointer;flex:none}
html body #workbenchApp.ps .ps-switch i{width:30px;height:18px;border-radius:9px;background:#C9CBD8;position:relative;transition:.15s}
html body #workbenchApp.ps .ps-switch i:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:.15s;box-shadow:0 1px 2px rgba(0,0,0,.2)}
html body #workbenchApp.ps .ps-switch.on i{background:var(--ps-brand)}
html body #workbenchApp.ps .ps-switch.on i:after{left:14px}
html body #workbenchApp.ps .ps-range input{width:96px;accent-color:var(--ps-brand)}
html body #workbenchApp.ps .ps-range b{font-weight:500;min-width:46px;font-variant-numeric:tabular-nums;font-size:13px}
html body #workbenchApp.ps .ps-lnk{display:flex;align-items:center;gap:6px;height:30px;padding:0 10px;border:0;border-radius:8px;background:none;color:var(--ps-ink2);font-size:13px;cursor:pointer;white-space:nowrap}
html body #workbenchApp.ps .ps-lnk:hover{background:var(--ps-line2);color:var(--ps-ink)}
html body #workbenchApp.ps .ps-hint{width:18px;height:18px;border-radius:50%;border:1px solid #C9CBD8;color:var(--ps-muted);font-size:11px;display:grid;place-items:center;position:relative;cursor:help;flex:none}
html body #workbenchApp.ps .ps-hint:hover:after,html body #workbenchApp.ps .ps-hint:focus:after{content:attr(data-tip);position:absolute;top:26px;left:50%;transform:translateX(-50%);white-space:pre;background:#23243A;color:#fff;font-size:12px;line-height:1.7;padding:8px 12px;border-radius:8px;z-index:70;box-shadow:0 8px 24px rgba(0,0,0,.2)}
html body #workbenchApp.ps .ps-roi{display:flex;align-items:center;gap:10px}
html body #workbenchApp.ps .ps-roi[hidden]{display:none}
html body #workbenchApp.ps .ps-readout{color:var(--ps-ink2);font-size:13px;white-space:nowrap}
html body #workbenchApp.ps .ps-pending{display:flex;align-items:center;gap:6px}
html body #workbenchApp.ps .ps-pending .btn,html body #workbenchApp.ps .ps-roi .btn{height:30px;min-height:30px;padding:0 10px;font-size:13px;border-radius:8px;white-space:nowrap}
html body #workbenchApp.ps .ps-pending .btn[hidden]{display:none}
html body #workbenchApp.ps:not([data-annotation-mode=region]) :is(#regionFinish,#regionCancel),html body #workbenchApp.ps:not([data-annotation-mode=instance]) :is(#instanceFinish,#instanceCancel){display:none}
html body #workbenchApp.ps .ps-ro{display:flex;align-items:center;gap:10px;color:var(--ps-ink2);font-size:13px;min-width:0}
html body #workbenchApp.ps:not(.ps-readonly) .ps-ro{display:none}
html body #workbenchApp.ps .ps-ro-tag{display:none}
html body #workbenchApp.ps .ps-ro #editingNotice{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;color:var(--ps-ink2)}
html body #workbenchApp.ps .ps-ro .btn{height:32px;min-height:32px;padding:0 14px;border-radius:8px;font-size:13px;white-space:nowrap}
html body #workbenchApp.ps .ps-ro .btn[hidden]{display:none}
html body #workbenchApp.ps .ps-actions{display:flex;align-items:center;gap:10px;flex:none}
html body #workbenchApp.ps.ps-readonly .ps-actions #saveState{display:none}
html body #workbenchApp.ps .ps-actions #saveState{display:flex;align-items:center;gap:6px;color:var(--ps-muted);font-size:12px;max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0}
html body #workbenchApp.ps .ps-actions .btn{height:32px;min-height:32px;padding:0 14px;border-radius:8px;font-size:13px;font-weight:500;white-space:nowrap;display:flex;align-items:center;gap:6px}
html body #workbenchApp.ps .ps-actions .btn[hidden]{display:none}
html body #workbenchApp.ps .ps-actions #aiPredict{border:1px solid var(--ps-line);background:#fff;color:var(--ps-ink)}
html body #workbenchApp.ps .ps-actions #aiPredict svg{color:var(--ps-brand)}
html body #workbenchApp.ps .ps-actions #completeNext{border:0;color:#fff;background:linear-gradient(90deg,var(--ps-brand),var(--ps-brand2));box-shadow:0 4px 12px rgba(82,53,245,.25)}
html body #workbenchApp.ps .ps-actions #completeNext:disabled{opacity:.45;box-shadow:none}
html body #workbenchApp.ps .ps-more{position:relative}
html body #workbenchApp.ps .ps-icon-btn{width:32px;height:32px;border:0;border-radius:8px;background:none;display:grid;place-items:center;color:var(--ps-ink2);cursor:pointer}
html body #workbenchApp.ps .ps-icon-btn:hover,html body #workbenchApp.ps .ps-more.open .ps-icon-btn{background:var(--ps-line2);color:var(--ps-ink)}
html body #workbenchApp.ps .ps-menu{position:absolute;right:0;top:38px;width:210px;background:#fff;border:1px solid var(--ps-line);border-radius:12px;box-shadow:0 12px 32px rgba(20,22,50,.14);padding:6px;display:none;z-index:60}
html body #workbenchApp.ps .ps-more.open .ps-menu{display:block}
html body #workbenchApp.ps .ps-menu>button,html body #workbenchApp.ps .ps-menu>label{display:flex;align-items:center;gap:10px;width:100%;height:36px;min-height:36px;padding:0 10px;border:0;border-radius:8px;background:none;box-shadow:none;color:var(--ps-ink);font-size:13px;text-align:left;justify-content:flex-start;margin:0;cursor:pointer}
html body #workbenchApp.ps .ps-menu>button:hover,html body #workbenchApp.ps .ps-menu>label:hover{background:var(--ps-line2)}
html body #workbenchApp.ps .ps-menu>button[hidden],html body #workbenchApp.ps .ps-menu>label[hidden]{display:none}
html body #workbenchApp.ps .ps-menu>button:disabled{opacity:.45;cursor:not-allowed}
html body #workbenchApp.ps .ps-menu svg{color:var(--ps-ink2)}

/* ── 主体：工具栏 | 画布 | 面板，状态栏在画布下方 ── */
html body #workbenchApp.ps>#workspace{grid-row:3;display:grid;grid-template-columns:48px minmax(0,1fr) 292px;grid-template-rows:minmax(0,1fr) 34px;gap:0;padding:0;margin:0;min-height:0;height:auto;background:var(--ps-ws);border:0}
html body #workbenchApp.ps>#workspace.inspector-collapsed{grid-template-columns:48px minmax(0,1fr) 0}
html body #workbenchApp.ps>#workspace.inspector-collapsed>#inspector{visibility:hidden;border:0}
html body #workbenchApp.ps .ps-strip{grid-column:1;grid-row:1/3;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0;background:#fff;border-right:1px solid var(--ps-line);z-index:15}
html body #workbenchApp.ps .ps-tool{width:36px;height:36px;border:0;border-radius:9px;background:none;display:grid;place-items:center;color:var(--ps-ink2);position:relative;cursor:pointer;padding:0}
html body #workbenchApp.ps .ps-tool:hover{background:var(--ps-line2);color:var(--ps-ink)}
html body #workbenchApp.ps .ps-tool.on{background:var(--ps-soft);color:var(--ps-brand)}
html body #workbenchApp.ps .ps-tool.off,html body #workbenchApp.ps .ps-tool.locked{color:#CDCFDA;cursor:not-allowed}
html body #workbenchApp.ps .ps-tool.off:hover,html body #workbenchApp.ps .ps-tool.locked:hover{background:none;color:#CDCFDA}
html body #workbenchApp.ps .ps-tool.locked.on{background:none}
html body #workbenchApp.ps .ps-tool .ps-k{position:absolute;right:3px;bottom:2px;font:9px ui-monospace,Consolas,monospace;color:var(--ps-muted);opacity:0;transition:opacity .12s}
html body #workbenchApp.ps .ps-strip:hover .ps-tool:not(.off) .ps-k{opacity:.85}
html body #workbenchApp.ps .ps-tool[data-tip]:hover:after{content:attr(data-tip);position:absolute;left:44px;top:50%;transform:translateY(-50%);white-space:nowrap;background:#23243A;color:#fff;font-size:12px;padding:5px 10px;border-radius:7px;z-index:70;pointer-events:none}
html body #workbenchApp.ps .ps-tool.off[data-tip]:hover:after{background:#4A4C66}
html body #workbenchApp.ps .ps-tsep{display:block;width:22px;height:1px;background:var(--ps-line);margin:6px 0}
html body #workbenchApp.ps .ps-grow{flex:1}
html body #workbenchApp.ps #stage{grid-column:2;grid-row:1;position:relative;overflow:hidden;background:var(--ps-ws);border:0;border-radius:0;margin:0;box-shadow:none;min-width:0;min-height:0}
html body #workbenchApp.ps #stage .loading{background:var(--ps-ws);color:#C9CBD8}
html body #workbenchApp.ps #psHelp{position:absolute;left:8px;bottom:8px;width:310px;background:#fff;border:1px solid var(--ps-line);border-radius:12px;box-shadow:0 16px 40px rgba(20,22,50,.25);padding:14px 16px;display:none;z-index:40}
html body #workbenchApp.ps #psHelp.open{display:block}
html body #workbenchApp.ps #psHelp h5{font-size:13px;margin:0 0 8px}
html body #workbenchApp.ps #psHelp dl{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:12px;margin:0}
html body #workbenchApp.ps #psHelp dt kbd{color:var(--ps-ink);border:1px solid var(--ps-line);border-bottom-width:2px}
html body #workbenchApp.ps #psHelp dd{color:var(--ps-ink2);margin:0}

/* ── 状态栏 ── */
html body #workbenchApp.ps .ps-status{grid-column:2;grid-row:2;display:flex;align-items:center;gap:6px;height:34px;padding:0 10px;background:#fff;border-top:1px solid var(--ps-line);color:var(--ps-ink2);font-size:12px;min-width:0;position:relative;z-index:25}
html body #workbenchApp.ps .ps-imgs{position:relative;flex:none}
html body #workbenchApp.ps .ps-imgs-btn{display:flex;align-items:center;gap:7px;height:26px;padding:0 10px 0 8px;border:0;border-radius:7px;background:var(--ps-line2);color:var(--ps-ink);font-weight:600;font-size:12px;cursor:pointer}
html body #workbenchApp.ps .ps-imgs-btn small{font-weight:400;color:var(--ps-muted);font-variant-numeric:tabular-nums}
html body #workbenchApp.ps .ps-imgs-btn:hover,html body #workbenchApp.ps .ps-imgs.open .ps-imgs-btn{background:var(--ps-soft);color:var(--ps-brand)}
html body #workbenchApp.ps .ps-imgs-pop{position:absolute;left:0;bottom:30px;width:420px;background:#fff;border:1px solid var(--ps-line);border-radius:14px;box-shadow:0 16px 40px rgba(20,22,50,.22);padding:12px;display:none;z-index:60}
html body #workbenchApp.ps .ps-imgs.open .ps-imgs-pop{display:block}
html body #workbenchApp.ps .ps-imgs-pop #imageQueue{display:block;height:auto;margin:0;padding:0;border:0;background:none;box-shadow:none;grid-row:auto}
html body #workbenchApp.ps .ps-imgs-pop .queue-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:0 0 10px;margin:0;border:0;background:none;height:auto;min-height:0}
html body #workbenchApp.ps .ps-imgs-pop .queue-toolbar>b{font-size:14px;color:var(--ps-ink)}
html body #workbenchApp.ps .ps-imgs-pop #projectProgress{color:var(--ps-muted);font-size:12px;margin-right:auto}
html body #workbenchApp.ps .ps-imgs-pop #queueFilter,html body #workbenchApp.ps .ps-imgs-pop #toggleQueue,html body #workbenchApp.ps .ps-imgs-pop #addImages,html body #workbenchApp.ps .ps-imgs-pop .queue-toolbar .spacer{display:none}
html body #workbenchApp.ps .ps-imgs-pop #refreshQueue{height:26px;min-height:26px;padding:0 8px;font-size:12px;border:0;background:none;color:var(--ps-ink2)}
html body #workbenchApp.ps .ps-imgs-pop #queueUpdateHint{font-size:12px;color:var(--ps-warn)}
html body #workbenchApp.ps .ps-imgs-pop .ps-qseg{height:28px}
html body #workbenchApp.ps .ps-imgs-pop .queue-list{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;max-height:320px;overflow:auto;padding:2px;margin:0;height:auto}
html body #workbenchApp.ps .ps-imgs-pop .queue-image{display:flex;flex-direction:column;align-items:stretch;gap:4px;min-width:0;width:auto;height:auto;padding:4px;border:1px solid transparent;border-radius:10px;background:none;text-align:left;cursor:pointer}
html body #workbenchApp.ps .ps-imgs-pop .queue-image:hover{background:var(--ps-line2)}
html body #workbenchApp.ps .ps-imgs-pop .queue-image.selected{border-color:var(--ps-soft-line);background:var(--ps-soft)}
html body #workbenchApp.ps .ps-imgs-pop .queue-image img{width:100%;aspect-ratio:1.41;height:auto;object-fit:cover;border-radius:7px;display:block;background:#E4E5EA}
html body #workbenchApp.ps .ps-imgs-pop .queue-image span{font-size:12px;color:var(--ps-ink);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
html body #workbenchApp.ps .ps-imgs-pop .queue-image small{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--ps-muted)}
html body #workbenchApp.ps .ps-imgs-pop .queue-image small:before{content:"";width:7px;height:7px;border-radius:50%;background:#C3C5D3;flex:none}
html body #workbenchApp.ps .ps-imgs-pop .queue-image small[data-state=completed]:before{background:var(--ps-ok)}
html body #workbenchApp.ps .ps-imgs-pop .queue-image small[data-state=in_progress]:before{background:var(--ps-warn)}
html body #workbenchApp.ps .ps-imgs-pop #openLibrary{display:block;margin:10px 0 0 auto;padding:0;height:auto;min-height:0;border:0;background:none;color:var(--ps-brand);font-size:12px}
html body #workbenchApp.ps #currentImageName{max-width:280px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--ps-ink);font-size:13px;margin-left:4px}
html body #workbenchApp.ps .ps-status #imageStatus{display:flex;align-items:center;gap:5px;padding:0;border:0;background:none;color:var(--ps-muted);font-size:12px;font-weight:400;height:auto;min-height:0}
html body #workbenchApp.ps .ps-status #imageStatus:before{content:"";width:7px;height:7px;border-radius:50%;background:#C3C5D3}
html body #workbenchApp.ps .ps-status #imageStatus[data-state=completed]:before{background:var(--ps-ok)}
html body #workbenchApp.ps .ps-status #imageStatus[data-state=in_progress]:before{background:var(--ps-warn)}
html body #workbenchApp.ps .ps-status #previousImage,html body #workbenchApp.ps .ps-status #nextImage,html body #workbenchApp.ps .ps-nb{width:26px;height:26px;min-height:26px;padding:0;border:0;border-radius:7px;background:none;display:grid;place-items:center;color:var(--ps-ink2);box-shadow:none;cursor:pointer}
html body #workbenchApp.ps .ps-status #previousImage:hover,html body #workbenchApp.ps .ps-status #nextImage:hover,html body #workbenchApp.ps .ps-nb:hover{background:var(--ps-line2)}
html body #workbenchApp.ps .ps-status #previousImage:disabled,html body #workbenchApp.ps .ps-status #nextImage:disabled{opacity:.35;cursor:default}
html body #workbenchApp.ps .ps-msg{color:var(--ps-muted);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0;margin-left:8px;opacity:0;transition:opacity .2s}
html body #workbenchApp.ps .ps-msg.on{opacity:1}
html body #workbenchApp.ps .ps-meas{display:flex;align-items:center;gap:8px;color:var(--ps-muted);font-variant-numeric:tabular-nums;margin-right:12px;white-space:nowrap;flex:none}
html body #workbenchApp.ps .ps-meas #stPos,html body #workbenchApp.ps .ps-meas #stSize{color:var(--ps-ink);white-space:pre}
html body #workbenchApp.ps .ps-meas #stPos{min-width:118px}
html body #workbenchApp.ps .ps-meas .ps-vsep{height:14px}
html body #workbenchApp.ps .ps-zoom{display:flex;align-items:center;gap:2px;flex:none}
html body #workbenchApp.ps .ps-zoom #zoomLbl{min-width:46px;text-align:center;color:var(--ps-ink);font-size:12px;font-variant-numeric:tabular-nums;background:none;border:0;padding:0}
html body #workbenchApp.ps .ps-zoom #btnFit,html body #workbenchApp.ps .ps-zoom #btn11{height:26px;min-height:26px;padding:0 8px;border:0;border-radius:7px;background:none;color:var(--ps-ink2);font-size:12px;box-shadow:none}
html body #workbenchApp.ps .ps-zoom #btnFit:hover,html body #workbenchApp.ps .ps-zoom #btn11:hover{background:var(--ps-line2)}
html body #workbenchApp.ps .ps-zoom #btnFit svg,html body #workbenchApp.ps .ps-zoom #btn11 svg{display:none}

/* ── 右侧面板：图层 / 对象 ── */
html body #workbenchApp.ps #inspector{grid-column:3;grid-row:1/3;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;padding:0;margin:0;background:#fff;border:0;border-left:1px solid var(--ps-line);border-radius:0;box-shadow:none;gap:0}
html body #workbenchApp.ps #inspector>.inspector-tabs{display:flex;gap:22px;padding:0 16px;height:44px;min-height:44px;align-items:stretch;border:0;border-bottom:1px solid var(--ps-line);background:none;margin:0;flex:none}
html body #workbenchApp.ps #inspector>.inspector-tabs button{display:flex;align-items:center;gap:6px;height:100%;padding:0;border:0;border-radius:0;background:none;color:var(--ps-ink2);font-size:14px;position:relative;box-shadow:none}
html body #workbenchApp.ps #inspector>.inspector-tabs button small{font-size:11px;color:var(--ps-muted)}
html body #workbenchApp.ps #inspector>.inspector-tabs button[aria-selected=true]{color:var(--ps-ink);font-weight:600}
html body #workbenchApp.ps #inspector>.inspector-tabs button[aria-selected=true]:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;border-radius:2px;background:var(--ps-brand)}
html body #workbenchApp.ps #inspector>#aiPanel{margin:10px 12px 0;flex:none}
html body #workbenchApp.ps #objectsPanel,html body #workbenchApp.ps #layersPanel{flex:1;min-height:0;display:flex;flex-direction:column;padding:0;margin:0;overflow:hidden}
html body #workbenchApp.ps #objectsPanel[hidden],html body #workbenchApp.ps #layersPanel[hidden]{display:none}
html body #workbenchApp.ps #objectsPanel>.summary{display:none}
html body #workbenchApp.ps .ps-frow{display:flex;gap:8px;margin:12px 12px 8px;flex:none}
html body #workbenchApp.ps .ps-find{display:flex;align-items:center;gap:8px;height:32px;flex:1;min-width:0;padding:0 10px;border:1px solid var(--ps-line);border-radius:8px;color:var(--ps-muted);margin:0;transition:border-color .15s,box-shadow .15s}
html body #workbenchApp.ps .ps-find input{border:0!important;outline:0;box-shadow:none!important;flex:1;min-width:0;height:28px;padding:0;font-size:13px;color:var(--ps-ink);background:none}
html body #workbenchApp.ps .ps-find:focus-within{border-color:var(--ps-soft-line);box-shadow:0 0 0 3px rgba(82,53,245,.08)}
html body #workbenchApp.ps .ps-find.miss{border-color:#F3C2C2}
html body #workbenchApp.ps .ps-tf[hidden]{display:none}
html body #workbenchApp.ps .ps-tf .ps-tp-btn{min-width:0;width:122px;height:32px}
html body #workbenchApp.ps .ps-tf .ps-tp-btn b{font-weight:500}
html body #workbenchApp.ps .ps-tf .ps-tp-pop{left:auto;right:0}
html body #workbenchApp.ps #objs{flex:1;min-height:0;overflow:auto;padding:2px 6px 6px;margin:0;scrollbar-width:thin;scrollbar-color:#D5D7E2 transparent;display:block}
html body #workbenchApp.ps #objs>.obj{display:flex;align-items:center;gap:8px;height:34px;min-height:34px;padding:0 8px 0 6px;margin:0;border:0;border-radius:7px;background:none;box-shadow:none;cursor:pointer}
html body #workbenchApp.ps #objs>.obj[hidden]{display:none}
html body #workbenchApp.ps #objs>.obj:hover{background:var(--ps-line2)}
html body #workbenchApp.ps #objs>.obj.sel{background:var(--ps-soft)}
html body #workbenchApp.ps #objs>.obj .h{display:flex;align-items:center;gap:8px;flex:1;min-width:0;margin:0;padding:0}
html body #workbenchApp.ps #objs>.obj .sw{width:4px;height:16px;border-radius:2px;flex:none}
html body #workbenchApp.ps #objs>.obj .t{display:flex;align-items:center;gap:6px;min-width:0;font-size:13px;color:var(--ps-ink);font-weight:400;white-space:nowrap}
html body #workbenchApp.ps #objs>.obj .t small{font-size:10px;padding:1px 5px;border-radius:4px;background:#F1EEFF;color:var(--ps-brand);margin:0}
html body #workbenchApp.ps #objs>.obj .ui-readonly-grade{display:none}
html body #workbenchApp.ps #objs>.obj select{display:none}
html body #workbenchApp.ps #objs>.obj .del{display:none;width:24px;height:24px;padding:0;border:0;border-radius:6px;background:none;color:var(--ps-muted);place-items:center;flex:none}
html body #workbenchApp.ps #objs>.obj:hover .del,html body #workbenchApp.ps #objs>.obj.sel .del{display:grid}
html body #workbenchApp.ps #objs>.obj .del:hover{color:#D64545;background:#FDEDED}
html body #workbenchApp.ps #objs>.obj .m{font-size:12px;color:var(--ps-muted);white-space:nowrap;font-variant-numeric:tabular-nums;margin:0;padding:0}
html body #workbenchApp.ps #objs>.obj .m em{display:none}
html body #workbenchApp.ps #objs>.obj.sel .t{font-weight:600}
html body #workbenchApp.ps #objs>.empty,html body #workbenchApp.ps #objs .empty{padding:28px 16px;color:var(--ps-muted);text-align:center;font-size:13px;border:0;background:none}
html body #workbenchApp.ps #objs .field-note{display:none}
html body #workbenchApp.ps #pointEditor{flex:none;border-top:1px solid var(--ps-line);background:#FBFBFE;padding:12px 14px 14px;margin:0}
html body #workbenchApp.ps #pointEditor[hidden]{display:none}
html body #workbenchApp.ps .pe-h{display:flex;align-items:center;gap:8px;font-size:14px;margin-bottom:10px}
html body #workbenchApp.ps .pe-bar{width:4px;height:14px;border-radius:2px}
html body #workbenchApp.ps .pe-h small{margin-left:auto;font-size:11px;padding:2px 7px;border-radius:10px;background:var(--ps-line2);color:var(--ps-ink2)}
html body #workbenchApp.ps .pe-h small[data-source=model]{background:#F1EEFF;color:var(--ps-brand)}
html body #workbenchApp.ps .pe-h small[data-source=model_edited]{background:#E7F6EE;color:var(--ps-ok)}
html body #workbenchApp.ps .pe-kv{display:grid;grid-template-columns:40px 1fr;align-items:center;row-gap:8px;column-gap:10px;margin:0}
html body #workbenchApp.ps .pe-kv dt{color:var(--ps-muted);font-size:12px;margin:0}
html body #workbenchApp.ps .pe-kv dd{display:flex;align-items:center;gap:6px;margin:0;font-size:13px;color:var(--ps-ink)}
html body #workbenchApp.ps .pe-kv select{flex:1;height:30px;min-height:30px;border:1px solid var(--ps-line);border-radius:8px;padding:0 8px;font-size:13px;background:#fff}
html body #workbenchApp.ps .pe-kv input{width:76px;height:30px;min-height:30px;border:1px solid var(--ps-line);border-radius:8px;padding:0 8px;font-size:13px;font-variant-numeric:tabular-nums}
html body #workbenchApp.ps .pe-kv dd span{color:var(--ps-muted)}
html body #workbenchApp.ps .pe-kv dd small{margin-left:auto;font-size:11px;color:var(--ps-muted)}
html body #workbenchApp.ps .pe-acts{display:flex;gap:8px;margin-top:12px}
html body #workbenchApp.ps .pe-acts .btn{flex:1;height:30px;min-height:30px;border-radius:8px;font-size:13px;justify-content:center}
html body #workbenchApp.ps .pe-acts .pe-del:hover{border-color:#F3C2C2;color:#D64545}
html body #workbenchApp.ps .ps-sum[hidden]{display:none}
html body #workbenchApp.ps .ps-sum{flex:none;display:flex;justify-content:space-between;padding:9px 14px;border-top:1px solid var(--ps-line2);color:var(--ps-muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html body #workbenchApp.ps #layersPanel{padding:8px 6px;overflow:auto}
html body #workbenchApp.ps #layersPanel .section-note,html body #workbenchApp.ps #layersPanel .field-note{display:none}
html body #workbenchApp.ps #layersPanel .layer{display:flex;flex-direction:row-reverse;justify-content:flex-end;align-items:center;gap:10px;height:42px;padding:0 10px 0 6px;margin:0;border:0;border-radius:8px;background:none}
html body #workbenchApp.ps #layersPanel .layer:hover{background:var(--ps-line2)}
html body #workbenchApp.ps #layersPanel .layer .k{font-size:13px;color:var(--ps-ink)}
html body #workbenchApp.ps #layersPanel .layer .switch{width:28px;height:28px;margin:0;position:relative;display:grid;place-items:center;border-radius:7px;cursor:pointer}
html body #workbenchApp.ps #layersPanel .layer .switch input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
html body #workbenchApp.ps #layersPanel .layer .switch i{width:18px;height:18px;border-radius:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23C3C5D3' stroke-width='1.8' stroke-linecap='round'%3E%3Cpath d='M3 3l18 18M10.6 5.6A9.7 9.7 0 0 1 12 5.5c6 0 9.5 6.5 9.5 6.5a16 16 0 0 1-3 3.7M6.2 6.9C3.9 8.6 2.5 12 2.5 12S6 18.5 12 18.5c1.6 0 3-.4 4.2-1'/%3E%3C/svg%3E") center/18px no-repeat;box-shadow:none;border:0}
html body #workbenchApp.ps #layersPanel .layer .switch i:after,html body #workbenchApp.ps #layersPanel .layer .switch i:before{display:none}
html body #workbenchApp.ps #layersPanel .layer .switch input:checked+i{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234A4E6A' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12z'/%3E%3Ccircle cx='12' cy='12' r='2.8'/%3E%3C/svg%3E")}
html body #workbenchApp.ps #layersPanel .layer .switch input:disabled+i{opacity:.4}
html body #workbenchApp.ps #layersPanel .opacity-field{display:flex;align-items:center;gap:10px;padding:10px 10px 4px;margin:6px 0 0;border-top:1px solid var(--ps-line2);font-size:12px;color:var(--ps-ink2)}
html body #workbenchApp.ps #layersPanel .opacity-field input{flex:1;accent-color:var(--ps-brand)}
html body #workbenchApp.ps #layersPanel .opacity-field[hidden]{display:none}
html body #workbenchApp.ps #objs>.obj{font-size:13px;color:var(--ps-ink)}
html body #workbenchApp.ps #objs>.obj.sel{font-weight:600}
html body #workbenchApp.ps #objs>.obj .h,html body #workbenchApp.ps #objs>.obj .t{display:contents}
html body #workbenchApp.ps #objs>.obj .sw{order:-1}
html body #workbenchApp.ps #objs>.obj .m{order:1;margin-left:auto}
html body #workbenchApp.ps #objs>.obj .t small{order:2;font-weight:400}
html body #workbenchApp.ps #objs>.obj .t small.src-model_edited{background:#E7F6EE;color:var(--ps-ok)}
html body #workbenchApp.ps #objs>.obj .t small:is(.src-manual,.src-snap){background:none;color:var(--ps-muted)}
html body #workbenchApp.ps #objs>.obj .del{order:3}
html body #workbenchApp.ps .ps-imgs-pop .queue-toolbar:has(#queueUpdateHint[hidden]) #refreshQueue{display:none}
html body #workbenchApp.ps:not([data-annotation-mode=line]) .ps-frow{display:none}
html body #workbenchApp.ps #layersPanel .ps-ai-layer{background:#F7F5FF;border:1px solid var(--ps-soft-line);margin-bottom:6px}
html body #workbenchApp.ps #layersPanel .ps-ai-layer[hidden]{display:none}
html body #workbenchApp.ps #layersPanel .ps-ai-layer .k{display:flex;flex-direction:column;line-height:1.3;font-weight:600;color:var(--ps-brand)}
html body #workbenchApp.ps #layersPanel .ps-ai-layer .k small{font-weight:400;font-size:11px;color:var(--ps-muted)}
html body #workbenchApp.ps .ps-ai-acts{display:flex;gap:6px;margin-left:auto}
html body #workbenchApp.ps .ps-ai-btn{height:26px;padding:0 10px;border:1px solid var(--ps-line);border-radius:7px;background:#fff;font-size:12px;color:var(--ps-ink2);cursor:pointer}
html body #workbenchApp.ps .ps-ai-btn.primary{border-color:var(--ps-brand);background:var(--ps-brand);color:#fff}
html body #workbenchApp.ps .ps-ai-btn:disabled{opacity:.45;cursor:not-allowed}
html body #workbenchApp.ps .ps-confirm{border:1px solid var(--ps-soft-line);color:var(--ps-brand);font-weight:600}
html body #workbenchApp.ps .ps-confirm kbd{margin-left:4px}
html body #workbenchApp.ps .ps-actions{min-width:0;flex-shrink:1}
html body #workbenchApp.ps .ps-actions #saveState{min-width:0;flex-shrink:1;max-width:130px}
html body #workbenchApp.ps .ps-range input{width:80px}
/* AI 候选生成后作为图层管理：收起整块 AI 面板，恢复图层 / 对象页签 */
html body #workbenchApp.ps #inspector.ps-ai-preview.ps-ai-preview.ps-ai-preview>#aiPanel{display:none!important}
html body #workbenchApp.ps #inspector.ps-ai-preview.ps-ai-preview.ps-ai-preview>.inspector-tabs{display:flex!important}
html body #workbenchApp.ps #inspector.ps-ai-preview.ps-ai-preview.ps-ai-preview>#objectsPanel:not([hidden]),html body #workbenchApp.ps #inspector.ps-ai-preview.ps-ai-preview.ps-ai-preview>#layersPanel:not([hidden]){display:flex!important}
/* v0.6.2 AI 候选列在对象页顶部：可定位、改类型、去掉；合并在图层页 */
html body #workbenchApp.ps .ps-ai-list{flex:none;max-height:42%;display:flex;flex-direction:column;margin:0 6px 6px;border:1px solid var(--ps-soft-line);border-radius:10px;background:#F9F8FF;overflow:hidden}
html body #workbenchApp.ps .ps-ai-list[hidden]{display:none}
html body #workbenchApp.ps .ps-ai-head{display:flex;align-items:baseline;gap:8px;padding:8px 10px 6px;flex:none}
html body #workbenchApp.ps .ps-ai-head b{font-size:13px;color:var(--ps-brand)}
html body #workbenchApp.ps .ps-ai-head span{font-size:11px;color:var(--ps-muted)}
html body #workbenchApp.ps .ps-ai-rows{overflow:auto;padding:0 4px 4px;scrollbar-width:thin}
html body #workbenchApp.ps .ps-ai-row{display:flex;align-items:center;gap:8px;height:32px;padding:0 6px;border-radius:7px;font-size:13px;color:var(--ps-ink);cursor:pointer}
html body #workbenchApp.ps .ps-ai-row:hover{background:#EFEBFF}
html body #workbenchApp.ps .ps-ai-row.on{background:#E6E0FF;font-weight:600}
html body #workbenchApp.ps .ps-ai-bar{width:0;height:16px;border-left:3px dashed;flex:none}
html body #workbenchApp.ps .ps-ai-id{color:var(--ps-muted);font-size:12px;font-variant-numeric:tabular-nums;min-width:30px}
html body #workbenchApp.ps .ps-ai-type{flex:1}
html body #workbenchApp.ps .ps-ai-row select{flex:1;min-width:0;height:26px;min-height:26px;border:1px solid var(--ps-soft-line);border-radius:6px;padding:0 6px;font-size:12px;background:#fff}
html body #workbenchApp.ps .ps-ai-len{margin-left:auto;font-size:12px;color:var(--ps-muted);font-variant-numeric:tabular-nums;font-weight:400}
html body #workbenchApp.ps .ps-ai-del{width:24px;height:24px;padding:0;border:0;border-radius:6px;background:none;color:var(--ps-muted);display:grid;place-items:center;cursor:pointer;flex:none}
html body #workbenchApp.ps .ps-ai-del:hover{color:#D64545;background:#FDEDED}
