:root{--bg: #f5f6f8;--panel: #ffffff;--line: #e4e7ec;--line-soft: #eef0f3;--text: #101828;--muted: #667085;--faint: #98a2b3;--accent: #2b6cff;--accent-soft: #eef3ff;--warn: #b54708;--warn-soft: #fff8f0;--ok: #067647;--radius: 10px;--shadow: 0 1px 2px rgba(16, 24, 40, .05), 0 1px 3px rgba(16, 24, 40, .06)}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font:13px/1.55 -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased}.topbar{height:56px;display:flex;align-items:center;gap:18px;padding:0 18px;background:var(--panel);border-bottom:1px solid var(--line);position:relative;z-index:20}.brand{display:flex;align-items:baseline;gap:8px;flex:none}.logo{color:var(--accent);font-size:17px}.brand-name{font-weight:650;letter-spacing:-.01em}.brand-sub{color:var(--faint);font-size:12px}.file-info{display:flex;align-items:center;gap:8px;min-width:0;flex:1}.file-name{font-weight:550;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip{font-size:11.5px;color:var(--muted);background:var(--line-soft);border-radius:5px;padding:1px 7px;white-space:nowrap}.chip.accent{color:var(--accent);background:var(--accent-soft)}.chip.warn{color:var(--warn);background:var(--warn-soft)}.actions{display:flex;gap:8px;margin-left:auto;flex:none}.btn{font:inherit;font-size:12.5px;padding:6px 14px;border-radius:7px;border:1px solid var(--line);background:var(--panel);color:var(--text);cursor:pointer;transition:background .12s,border-color .12s;white-space:nowrap}.btn:hover{background:#f9fafb;border-color:#d0d5dd}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:#1f5be0}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.ghost{color:var(--text)}.btn.is-done{background:#f2f4f7;border-color:var(--line);color:var(--faint);opacity:1}.btn.active{background:var(--accent-soft);border-color:#c9d8ff;color:var(--accent);font-weight:550}.ph-right{display:flex;align-items:center;gap:7px;min-width:0}.ph-select{font:inherit;font-size:11px;font-weight:400;padding:1px 2px;border-radius:5px;border:1px solid var(--line);background:#fbfbfc;color:var(--muted);width:84px;flex:none;cursor:pointer;outline:none}.ph-select:hover{border-color:#d0d5dd;color:var(--text)}.panel-x{border:0;background:transparent;color:var(--faint);font-size:15px;line-height:1;padding:2px 5px;border-radius:4px;cursor:pointer}.panel-x:hover{background:#f2f4f7;color:var(--text)}.layout{height:calc(100vh - 56px);display:grid;grid-template-columns:288px minmax(0,1fr) 336px;gap:0}.layout.no-left{grid-template-columns:minmax(0,1fr) 336px}.layout.no-right{grid-template-columns:288px minmax(0,1fr)}.layout.no-left.no-right{grid-template-columns:minmax(0,1fr)}.panel{background:var(--panel);display:flex;flex-direction:column;min-height:0;overflow:hidden}.panel.left{border-right:1px solid var(--line)}.panel.right{border-left:1px solid var(--line)}.panel-head{height:40px;flex:none;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 10px 0 14px;font-size:12px;font-weight:600;color:var(--muted);letter-spacing:.02em;border-bottom:1px solid var(--line-soft)}.panel-head>span:first-child{white-space:nowrap;flex:none}.panel-head .count{color:var(--faint);font-weight:400;white-space:nowrap;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis}.tree-search{padding:9px 12px;border-bottom:1px solid var(--line-soft)}.tree-search input{width:100%;font:inherit;font-size:12.5px;padding:5px 9px;border-radius:6px;border:1px solid var(--line);background:#fbfbfc;color:var(--text);outline:none}.tree-search input:focus{border-color:var(--accent);background:#fff}.tree-body{flex:1;overflow:auto;padding:6px 0 40px;font-size:12.5px;scrollbar-width:thin}.tree-body::-webkit-scrollbar{width:9px}.tree-body::-webkit-scrollbar-thumb{background:#d8dce2;border-radius:6px}.node-item{display:block}.node{display:flex;align-items:center;gap:5px;height:24px;padding-right:8px;cursor:default;user-select:none;white-space:nowrap}.node:hover{background:#f7f8fa}.node.selected{background:var(--accent-soft)}.node.selected .node-name{color:var(--accent);font-weight:550}.node-caret{width:14px;flex:none;text-align:center;color:var(--faint);font-size:9px;transition:transform .12s;cursor:pointer}.node-caret.open{transform:rotate(90deg)}.node-caret.leaf{visibility:hidden}.node-icon{flex:none;font-size:10px;color:var(--faint);width:12px;text-align:center}.node-icon.mesh{color:var(--accent)}.node-icon.group{color:#b0b7c3}.node-name{overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}.node.is-group .node-name{color:#475467;font-weight:550}.node-meta{color:var(--faint);font-size:11px;flex:none;font-variant-numeric:tabular-nums}.node-more{color:var(--faint);font-size:11.5px;cursor:default}.node-more:hover{background:transparent}.node-children{display:none}.node-children.open{display:block}.tree-empty{padding:22px 16px;color:var(--faint);text-align:center;font-size:12.5px}.stage{position:relative;min-width:0;background:#eef0f4;overflow:hidden}#canvas{display:block;width:100%;height:100%}.dropzone{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#eef0f4;transition:background .15s}.dropzone.hover{background:#e3ecff}.dropzone.hidden{display:none}.dz-inner{border:1.5px dashed #c3cad6;border-radius:16px;padding:52px 72px;text-align:center;background:#ffffffb3;transition:border-color .15s,background .15s}.dropzone.hover .dz-inner{border-color:var(--accent);background:#fff}.dz-icon{font-size:40px;color:#b9c1cf;line-height:1;margin-bottom:14px}.dz-inner h1{margin:0 0 8px;font-size:19px;font-weight:600;letter-spacing:-.01em}.dz-sub{margin:0 0 20px;color:var(--muted);font-size:13px}.dz-hint{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}.dz-hint span{font-size:11.5px;color:var(--muted);background:var(--line-soft);border-radius:5px;padding:2px 8px}.hud{position:absolute;top:14px;left:14px;background:#fffffff0;backdrop-filter:blur(6px);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:10px 12px;min-width:158px;font-size:12px}.hud .row{display:flex;justify-content:space-between;gap:14px;padding:1.5px 0;color:var(--muted)}.hud .row b{color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}.view-tools{position:absolute;top:14px;right:14px;display:flex;gap:6px;z-index:10}.vt-btn{font:inherit;font-size:12px;padding:5px 10px;border-radius:7px;border:1px solid var(--line);background:#fffffff0;backdrop-filter:blur(6px);box-shadow:var(--shadow);color:var(--muted);cursor:pointer;transition:color .12s,border-color .12s}.vt-btn:hover{color:var(--text);border-color:#d0d5dd}.vt-btn.on{color:var(--accent);border-color:#c9d8ff;background:#fff}.progress-card{position:absolute;left:50%;bottom:22px;transform:translate(-50%);width:min(560px,calc(100% - 40px));background:#fffffff7;backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 28px #10182824;padding:13px 16px}.pc-head{display:flex;justify-content:space-between;font-size:12.5px;font-weight:600;margin-bottom:9px}.pc-pct{color:var(--accent);font-variant-numeric:tabular-nums}.pc-bar{height:4px;background:var(--line-soft);border-radius:3px;overflow:hidden}.pc-fill{height:100%;width:0%;background:var(--accent);border-radius:3px;transition:width .25s ease}.pc-log{margin-top:9px;max-height:84px;overflow:auto;font:11.5px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted);white-space:pre-wrap}.prop-body{flex:1;overflow:auto;padding:4px 0 40px}.prop-body::-webkit-scrollbar{width:9px}.prop-body::-webkit-scrollbar-thumb{background:#d8dce2;border-radius:6px}.prop-section{border-bottom:1px solid var(--line-soft)}.prop-section-title{padding:9px 14px 6px;font-size:11px;font-weight:600;color:var(--faint);letter-spacing:.04em;text-transform:uppercase}.prop-row{display:grid;grid-template-columns:44% 56%;gap:8px;padding:3.5px 14px;font-size:12px;align-items:baseline}.prop-row:hover{background:#fafbfc}.prop-key{color:var(--muted);overflow-wrap:anywhere}.prop-val{color:var(--text);overflow-wrap:anywhere}.prop-val.num{font-variant-numeric:tabular-nums}.empty{padding:26px 18px;color:var(--faint);text-align:center;font-size:12.5px;line-height:1.7}.toast-wrap{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:8px;z-index:100;pointer-events:none}.toast{background:#1d2939;color:#fff;padding:9px 14px;border-radius:8px;font-size:12.5px;box-shadow:0 6px 20px #10182838;animation:toast-in .18s ease;max-width:380px}.toast.err{background:#b42318}.toast.ok{background:#067647}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
