:root{--bg: #f0eee6;--glass: rgba(255, 255, 255, .93);--glass-2: rgba(60, 54, 46, .05);--hairline: rgba(60, 54, 46, .14);--hairline-2: rgba(60, 54, 46, .1);--input: rgba(255, 255, 255, .75);--text: rgba(41, 38, 33, .95);--muted: rgba(60, 54, 46, .62);--faint: rgba(60, 54, 46, .4);--dim: rgba(60, 54, 46, .5);--icon: rgba(60, 54, 46, .48);--accent: #c96442;--accent-soft: #d99a80;--accent-strong: rgba(201, 100, 66, .8);--accent-wash: rgba(201, 100, 66, .14);--accent-glow: rgba(201, 100, 66, .4);--ok: #6b9a72;--warn: #c1913f;--danger: #c26b5f;--panel-shadow: none;--float-shadow: none;--hover-wash: rgba(60, 54, 46, .06);--hover-wash-2: rgba(60, 54, 46, .1);--hover-border: rgba(60, 54, 46, .2);--sep: rgba(60, 54, 46, .1);--card-bg: rgba(255, 255, 255, .62);--card-bg-hover: rgba(255, 255, 255, .85);--card-border-hover: rgba(60, 54, 46, .16);--scroll-thumb: rgba(60, 54, 46, .1);--btn-grad-1: #d67a5a;--btn-grad-2: #bf5733;--btn-shadow: 0 6px 18px rgba(191, 87, 51, .3);--drop-border: rgba(60, 54, 46, .18);--drop-bg: rgba(255, 255, 255, .5);--footbar-bg: rgba(250, 249, 244, .94);--footbar-key: var(--accent);--badge-preview-bg: rgba(201, 100, 66, .12);--badge-preview-border: rgba(201, 100, 66, .4);--badge-preview-fg: var(--accent);--code-text: rgba(60, 54, 46, .7);--edit-text: rgba(41, 38, 33, .88);--xt: #a05532;--xa: #b07d28;--xs: #4d8a5c;--panel: #faf9f4;--panel-2: rgba(60, 54, 46, .05);--border: rgba(60, 54, 46, .14)}:root[data-theme=dark]{--bg: #37342e;--glass: rgba(24, 22, 20, .94);--glass-2: rgba(0, 0, 0, .24);--hairline: rgba(255, 255, 255, .17);--hairline-2: rgba(255, 255, 255, .12);--input: rgba(0, 0, 0, .36);--text: rgba(249, 246, 241, .97);--muted: rgba(241, 237, 230, .74);--faint: rgba(241, 237, 230, .44);--dim: rgba(255, 255, 255, .52);--icon: rgba(255, 255, 255, .46);--accent: #c96442;--accent-soft: #d99a80;--accent-strong: rgba(201, 100, 66, .9);--accent-wash: rgba(201, 100, 66, .18);--accent-glow: rgba(201, 100, 66, .5);--ok: #85b98e;--warn: #dcb15c;--danger: #d98a7b;--panel-shadow: none;--float-shadow: none;--hover-wash: rgba(255, 255, 255, .1);--hover-wash-2: rgba(255, 255, 255, .14);--hover-border: rgba(255, 255, 255, .24);--sep: rgba(255, 255, 255, .14);--card-bg: rgba(0, 0, 0, .22);--card-bg-hover: rgba(0, 0, 0, .32);--card-border-hover: rgba(255, 255, 255, .24);--scroll-thumb: rgba(255, 255, 255, .16);--btn-grad-1: #d67a5a;--btn-grad-2: #bf5733;--btn-shadow: 0 6px 18px rgba(191, 87, 51, .5);--drop-border: rgba(255, 255, 255, .18);--drop-bg: rgba(0, 0, 0, .18);--footbar-bg: rgba(22, 20, 18, .95);--footbar-key: var(--accent-soft);--badge-preview-bg: rgba(201, 100, 66, .2);--badge-preview-border: rgba(201, 100, 66, .55);--badge-preview-fg: var(--accent-soft);--code-text: rgba(255, 255, 255, .66);--edit-text: rgba(255, 255, 255, .9);--xt: #d99a80;--xa: #dcb15c;--xs: #93bd9a;--panel: #211f1c;--panel-2: rgba(0, 0, 0, .24);--border: rgba(255, 255, 255, .17)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,SF Pro Text,Inter,Segoe UI,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text);overflow:hidden;font-size:13px;-webkit-font-smoothing:antialiased}input,select,button,pre{font-variant-numeric:tabular-nums}.app{display:flex;height:100%;width:100%}.root{height:100vh;display:flex;flex-direction:column;position:relative}.tabbar{position:absolute;top:0;left:0;right:0;z-index:26;display:flex;gap:4px;align-items:center;background:transparent;border-bottom:none;padding:8px 14px;pointer-events:none}.tabbar>*{pointer-events:auto}.brand-logo{height:20px;width:auto;margin-right:12px;flex-shrink:0;color:var(--text)}.tab{background:none;border:1px solid transparent;color:var(--muted);cursor:pointer;padding:6px 15px;font-size:12.5px;border-radius:15px;font-family:inherit;font-weight:500;transition:background .15s,color .15s,transform .15s}.tab:hover{color:var(--text)}.tab.active{color:#fff;font-weight:600}.tab-body{flex:1;min-height:0}.tab-group{position:relative;display:grid;grid-template-columns:1fr 1fr;background:var(--glass-2);border:1px solid var(--hairline-2);border-radius:18px;padding:3px;box-shadow:inset 0 1px 3px #00000024}.tab-group .tab{position:relative;z-index:1;white-space:nowrap;text-align:center}.tab-group .tab:hover{background:none}.tab-indicator{position:absolute;top:3px;bottom:3px;left:3px;width:calc(50% - 3px);background:var(--accent);border-radius:15px;z-index:0}.tab-group[data-active=assembly] .tab-indicator{transform:translate(100%)}.tab-group.animated[data-active=single] .tab-indicator{animation:jelly-l .5s}.tab-group.animated[data-active=assembly] .tab-indicator{animation:jelly-r .5s}@keyframes jelly-r{0%{transform:translate(0) scale(1)}50%{transform:translate(104%) scale(1.1,.82)}72%{transform:translate(98%) scale(.94,1.08)}88%{transform:translate(101%) scale(1.03,.97)}to{transform:translate(100%) scale(1)}}@keyframes jelly-l{0%{transform:translate(100%) scale(1)}50%{transform:translate(-4%) scale(1.1,.82)}72%{transform:translate(2%) scale(.94,1.08)}88%{transform:translate(-1%) scale(1.03,.97)}to{transform:translate(0) scale(1)}}.contact{margin-left:auto;margin-right:6px;position:relative}.contact-btn{background:var(--glass);color:var(--muted);border:1px solid var(--hairline);border-radius:12px;padding:8px 14px;font-size:12.5px;font-weight:500;font-family:inherit;white-space:nowrap;cursor:pointer;transition:color .15s,border-color .15s,transform .15s}.contact-btn:hover,.contact:focus-within .contact-btn{color:var(--text);border-color:var(--hover-border)}.contact-fold{position:absolute;top:100%;right:0;padding-top:8px;perspective:700px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .18s ease,visibility .18s}.contact:hover .contact-fold,.contact:focus-within .contact-fold{opacity:1;visibility:visible;pointer-events:auto}.contact-sheet{min-width:214px;padding:12px 14px 11px;background:var(--glass);border:1px solid var(--hairline);border-radius:14px;transform-origin:top center;transform:rotateX(-92deg);transition:transform .24s cubic-bezier(.2,.9,.3,1.1)}.contact:hover .contact-sheet,.contact:focus-within .contact-sheet{transform:rotateX(0)}.contact-title{font-size:12.5px;font-weight:600;color:var(--text)}.contact-qq{display:flex;align-items:center;gap:7px;margin-top:8px;padding:6px 9px;background:var(--card-bg);border:1px solid var(--hairline-2);border-radius:10px}.contact-label{font-size:11px;color:var(--faint)}.contact-qq b{font-size:14px;color:var(--accent);letter-spacing:.3px;font-variant-numeric:tabular-nums}.contact-copy{margin-left:auto;padding:3px 9px;font-size:11px;font-family:inherit;color:var(--muted);background:transparent;border:1px solid var(--hairline);border-radius:8px;cursor:pointer;transition:color .15s,border-color .15s}.contact-copy:hover{color:var(--text);border-color:var(--hover-border)}.contact-note{margin-top:8px;font-size:11px;color:var(--faint);line-height:1.5}.theme-toggle{width:34px;height:34px;padding:0;display:grid;place-items:center;background:linear-gradient(180deg,#555047,#332f29);color:#fff;border:1px solid rgba(255,255,255,.25);cursor:pointer;font-size:15px;line-height:1;border-radius:12px;font-family:inherit;transition:filter .15s,transform .15s}:root[data-theme=dark] .theme-toggle{background:linear-gradient(180deg,var(--btn-grad-1),var(--btn-grad-2))}.theme-toggle:hover{filter:brightness(1.15)}.app-canvas{position:relative;display:block;height:100%;width:100%}.app-canvas .viewer-wrap.full{position:absolute;top:0;right:0;bottom:0;left:0}.viewer-wrap{position:relative}.viewer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.viewer canvas{display:block;width:100%;height:100%}.app-canvas .viewer-wrap.full:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;background:radial-gradient(52% 46% at 10% 4%,rgba(214,170,130,.08),transparent 68%),radial-gradient(46% 42% at 92% 96%,rgba(190,150,120,.05),transparent 68%)}.topbar{position:absolute;top:7px;left:50%;transform:translate(-50%);display:flex;gap:2px;align-items:center;flex-wrap:wrap;justify-content:center;background:var(--glass);border:1px solid var(--hairline);border-radius:12px;padding:4px 5px;z-index:27;max-width:calc(100% - 820px);box-shadow:var(--panel-shadow)}.topbar-sep{width:1px;height:16px;background:var(--sep);margin:0 3px}.chip{background:transparent;color:var(--muted);border:1px solid transparent;border-radius:12px;padding:7px 15px;font-size:12.5px;cursor:pointer;white-space:nowrap;font-family:inherit;font-weight:500;transition:background .15s,color .15s,transform .15s}.chip:hover{color:var(--text);background:var(--hover-wash)}.chip.on{color:#fff;font-weight:600;background:var(--accent);border-color:transparent}.chip:hover,.tab:hover,.mini-btn:hover:not(:disabled),.hud-btn:hover,.preview-btn:hover,.theme-toggle:hover,.export-btn:hover:not(:disabled),.contact-btn:hover{transform:translateY(-1px)}.chip:active,.tab:active,.mini-btn:active:not(:disabled),.hud-btn:active,.preview-btn:active,.theme-toggle:active{transform:translateY(0) scale(.96)}.corner-actions{position:absolute;top:7px;right:172px;z-index:27;display:flex;gap:8px}.corner-actions .export-btn{width:auto;margin:0;padding:9px 18px;font-size:12.5px}.export-btn{width:100%;margin-top:10px;padding:10px;background:linear-gradient(180deg,var(--btn-grad-1),var(--btn-grad-2));color:#fff;font-weight:600;border:1px solid rgba(255,255,255,.22);border-radius:22px;cursor:pointer;font-size:13px;font-family:inherit;box-shadow:var(--btn-shadow);transition:filter .15s,transform .15s}.export-btn:hover{filter:brightness(1.12)}.export-btn:active{transform:translateY(0) scale(.97)}.export-btn:disabled{opacity:.5;cursor:default;box-shadow:none}.preview-btn{width:100%;margin-top:6px;padding:8px;background:var(--glass-2);color:var(--text);border:1px solid var(--hairline);border-radius:10px;cursor:pointer;font-size:12px;font-family:inherit;transition:border-color .15s,transform .15s}.preview-btn:hover{border-color:var(--accent)}.panel-col{position:absolute;top:60px;bottom:54px;z-index:15;display:flex;flex-direction:column;gap:12px;pointer-events:none}.panel-col.left{left:16px;width:296px}.panel-col.right{right:16px;width:348px}.fpanel{position:relative;background:var(--glass);border:1px solid var(--hairline);border-radius:16px;pointer-events:auto;display:flex;flex-direction:column;min-height:0;flex-shrink:1;overflow:hidden;box-shadow:var(--panel-shadow)}.fpanel-rz{position:absolute;z-index:5;touch-action:none;border-radius:4px;transition:background .15s}.fpanel-rz.l{left:-2px;top:14px;bottom:14px;width:7px;cursor:ew-resize}.fpanel-rz.r{right:-2px;top:14px;bottom:14px;width:7px;cursor:ew-resize}.fpanel-rz.b{bottom:-2px;left:14px;right:14px;height:7px;cursor:ns-resize}.fpanel-rz:hover{background:var(--accent-wash)}.fpanel.floating{max-height:82vh;box-shadow:var(--float-shadow)}.fpanel-head{display:flex;align-items:center;gap:8px;padding:11px 13px 11px 15px;cursor:grab;-webkit-user-select:none;user-select:none;font-size:13px;font-weight:600;flex-shrink:0;touch-action:none;color:var(--text)}.fpanel-head:active{cursor:grabbing}.fpanel.open>.fpanel-head{border-bottom:1px solid var(--hairline-2)}.fpanel-grip{color:var(--faint);font-size:11px}.fpanel-title{flex:1}.fpanel-caret{color:var(--icon);font-size:18px;line-height:1}.fpanel-x{background:none;border:none;color:var(--icon);cursor:pointer;font-size:30px;line-height:1;padding:0 4px;font-family:inherit;transition:color .15s,transform .15s}.fpanel-x:hover{color:var(--text);transform:translateY(-1px)}.fpanel-body{overflow-y:auto;padding:14px 15px 16px;min-height:0}.fpanel-body .section:last-child{margin-bottom:0}.fpanel-body::-webkit-scrollbar{width:8px}.fpanel-body::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border-radius:4px}.scroll-list{max-height:min(300px,38vh);overflow-y:auto;padding-right:4px;margin-right:-4px}.scroll-list.joints{max-height:min(460px,52vh)}.scroll-list::-webkit-scrollbar{width:8px}.scroll-list::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border-radius:4px}.section{margin-bottom:16px}.section>.head{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--dim);margin-bottom:8px;font-weight:600}.card{background:var(--card-bg);border:1px solid var(--hairline-2);border-radius:13px;padding:11px 13px;margin-bottom:9px;transition:border-color .15s,background .15s}.card:hover{border-color:var(--card-border-hover);background:var(--card-bg-hover)}.card .row{display:flex;justify-content:space-between;align-items:center;font-size:12.5px;gap:8px}.card .name{font-weight:600;color:var(--text)}.card .sub{font-size:11px;color:var(--muted);margin-top:3px;font-variant-numeric:tabular-nums}.swatch{width:12px;height:12px;border-radius:4px;border:1px solid var(--hover-border);display:inline-block;vertical-align:middle;margin-right:6px}.card.hl{border-color:var(--accent);background:var(--accent-wash);box-shadow:0 0 0 1px var(--accent-glow)}.unit-toggle{display:inline-flex;flex-shrink:0;border:1px solid var(--hairline);border-radius:9px;overflow:hidden}.unit-toggle button{background:transparent;border:none;color:var(--muted);cursor:pointer;font-size:10px;padding:3px 9px;font-family:inherit;font-weight:500;line-height:1}.unit-toggle button.on{background:var(--accent);color:#fff;font-weight:600}.badge{font-size:10.5px;padding:3px 9px;border-radius:20px;background:var(--glass-2);border:1px solid var(--hairline-2);color:var(--muted);font-weight:500;white-space:nowrap}.badge.warn{background:#ddb45e29;border-color:#ddb45e6b;color:var(--warn)}.badge.ok{background:#6fc08829;border-color:#6fc0886b;color:var(--ok)}.badge.preview{background:var(--badge-preview-bg);border-color:var(--badge-preview-border);color:var(--badge-preview-fg)}select,.mini{width:100%;background:var(--input);color:var(--text);border:1px solid var(--hairline-2);border-radius:10px;padding:7px 10px;font-size:12px;font-family:inherit;transition:border-color .15s,background .15s}select:hover,.mini:hover{border-color:var(--hover-border)}select:focus,.mini:focus{outline:none;border-color:var(--accent-strong)}select option{background:var(--panel)}.col{flex:1;min-width:0}.joint-card .assign,.assign{display:flex;gap:8px;margin-top:8px}.joint-card label,.assign label{font-size:10px;color:var(--muted);display:block;margin-bottom:3px;font-weight:500}.refframes{margin-top:14px;padding-top:10px;border-top:1px solid var(--hairline)}.refframes .section-title{font-size:11px;font-weight:600;color:var(--text);margin-bottom:2px}.refframes .refrow{display:flex;align-items:center;gap:8px;margin-top:6px}.refframes .refname{flex:1;min-width:0;font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.refframes .refarrow{color:var(--muted);font-size:11px}.refframes .refrow select{width:118px;flex:none}.refframes .hint{font-size:10px;color:var(--muted);display:block;margin-top:2px;line-height:1.5}.refframes .hint code{font-family:ui-monospace,Consolas,monospace;font-size:10px;color:var(--text)}.mini-btn{background:var(--glass-2);color:var(--text);border:1px solid var(--hairline);border-radius:10px;padding:6px 10px;cursor:pointer;font-size:11.5px;font-family:inherit;font-weight:500;transition:background .15s,border-color .15s,transform .15s}.mini-btn:hover{background:var(--hover-wash-2);border-color:var(--hover-border)}.mini-btn:disabled{opacity:.45;cursor:default}.vec-row{display:flex;gap:7px;margin-top:6px}.vec-cell{flex:1;display:flex;align-items:center;gap:4px;background:var(--input);border:1px solid var(--hairline-2);border-radius:8px;padding:0 0 0 8px;min-width:0;transition:border-color .15s}.vec-cell:hover{border-color:var(--hover-border)}.vec-cell:focus-within{border-color:var(--accent-strong)}.vec-cell .mini:hover{border:none}.vec-cell>span{font-size:9.5px;color:var(--icon);flex-shrink:0;font-weight:600}.vec-cell .mini{border:none;background:transparent;padding:6px 4px;border-radius:0}.vec-cell .mini:focus{border:none}.slider{width:100%;margin:8px 0 4px;accent-color:var(--accent)}.drop{border:1.2px dashed var(--drop-border);border-radius:14px;background:var(--drop-bg);padding:24px 14px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;margin-bottom:14px;display:block}.drop:hover,.drop.over{border-color:var(--accent-strong);background:var(--accent-wash)}.drop input{display:none}.drop .t{font-size:13px;font-weight:500;color:var(--text)}.drop .s{font-size:11px;color:var(--dim);margin-top:5px}.hud{display:flex;gap:12px;align-items:center;background:var(--glass);border:1px solid var(--hairline);border-radius:22px;padding:9px 16px;font-size:11.5px;box-shadow:var(--panel-shadow);color:var(--text)}.hud label{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:4px}.hud-btn{background:var(--glass-2);color:var(--text);border:1px solid var(--hairline);border-radius:8px;padding:3px 10px;cursor:pointer;font-size:12px;font-family:inherit;transition:border-color .15s,transform .15s}.hud-btn:hover{border-color:var(--accent)}.footbar{position:absolute;left:50%;transform:translate(-50%);bottom:10px;z-index:19;display:flex;gap:22px;justify-content:center;align-items:center;flex-wrap:wrap;width:max-content;max-width:calc(100% - 32px);padding:8px 22px;background:var(--footbar-bg);border:1px solid var(--hairline-2);border-radius:20px;box-shadow:inset 0 1px 3px #00000024;font-size:11.5px;color:var(--muted);pointer-events:none;white-space:nowrap}.footbar b{color:var(--footbar-key);font-weight:600;margin-right:5px}.bottom-hints{position:absolute;bottom:54px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;align-items:center;z-index:18;pointer-events:none}.bottom-hints .hud{pointer-events:auto}.viewer-tip{position:absolute;z-index:30;pointer-events:none;background:var(--glass);border:1px solid var(--hairline);border-radius:10px;padding:7px 11px;font-size:11.5px;line-height:1.7;color:var(--text);white-space:nowrap;font-variant-numeric:tabular-nums}.viewer-tip b{color:var(--accent-soft);font-weight:600;margin-right:6px}.viewer-hint{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;color:var(--muted);pointer-events:none;text-align:center;background:#00000038}.viewer-hint .big{font-size:17px;color:var(--text);font-weight:600;letter-spacing:-.01em}.drop-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:999;background:#08090cbd;display:flex;align-items:center;justify-content:center;pointer-events:none}.drop-overlay-box{border:1.5px dashed var(--accent-strong);border-radius:22px;padding:44px 68px;font-size:18px;color:var(--text);font-weight:600;background:var(--glass);box-shadow:var(--panel-shadow)}.urdf-pre{background:var(--input);border:1px solid var(--hairline-2);border-radius:12px;padding:11px 13px;font-size:10.5px;line-height:1.55;max-height:300px;overflow:auto;white-space:pre;color:var(--code-text);font-family:SF Mono,Consolas,Cascadia Mono,monospace}.urdf-edit{width:100%;height:130px;resize:vertical;display:block;background:var(--input);color:var(--edit-text);border:1px solid var(--hairline-2);border-radius:12px;padding:10px 12px;white-space:pre;overflow:auto;font:10.5px/1.55 SF Mono,Consolas,Cascadia Mono,monospace}.urdf-edit:focus{outline:none;border-color:var(--accent-strong)}.urdf-edit::-webkit-scrollbar,.treegraph-wrap::-webkit-scrollbar,.tree-zoom-body::-webkit-scrollbar{width:8px;height:8px}.urdf-edit::-webkit-scrollbar-thumb,.treegraph-wrap::-webkit-scrollbar-thumb,.tree-zoom-body::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border-radius:4px}.urdf-edit::-webkit-scrollbar-corner,.treegraph-wrap::-webkit-scrollbar-corner,.tree-zoom-body::-webkit-scrollbar-corner{background:transparent}.xmlview{position:relative}.xmlview .urdf-pre{max-height:none;margin:0}.xml-copy{position:absolute;top:6px;right:6px;z-index:2}.xt{color:var(--xt)}.xa{color:var(--xa)}.xs{color:var(--xs)}.ai-chat{display:flex;flex-direction:column;gap:8px;max-height:min(380px,44vh);overflow-y:auto;padding:2px 4px 2px 2px;margin-right:-4px}.ai-chat::-webkit-scrollbar{width:8px}.ai-chat::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border-radius:4px}.ai-msg{max-width:94%;border-radius:13px;padding:8px 11px;font-size:12px;line-height:1.55;color:var(--text);white-space:pre-wrap;word-break:break-word}.ai-msg.user{align-self:flex-end;background:var(--accent-wash);border:1px solid var(--badge-preview-border)}.ai-msg.assistant{align-self:flex-start;background:var(--card-bg);border:1px solid var(--hairline-2)}.ai-msg.ai-busy{color:var(--muted);animation:ai-pulse 1.2s ease-in-out infinite}@keyframes ai-pulse{0%,to{opacity:.55}50%{opacity:1}}.ai-mimic-item{font-family:SF Mono,Consolas,Cascadia Mono,monospace;font-size:10.5px;margin-top:4px;font-variant-numeric:tabular-nums}.ai-apply{display:block;margin-top:8px;width:100%;padding:7px;color:var(--accent);border-color:var(--badge-preview-border)}.ai-apply:hover{background:var(--accent-wash);border-color:var(--accent-strong)}.ai-inrow{display:flex;gap:8px;margin-top:10px;align-items:stretch}.ai-inrow textarea{flex:1;resize:none;height:56px;min-width:0;background:var(--input);color:var(--text);border:1px solid var(--hairline-2);border-radius:10px;padding:8px 10px;font-size:12px;font-family:inherit;line-height:1.5}.ai-inrow textarea:focus{outline:none;border-color:var(--accent-strong)}.ai-inrow textarea:disabled{opacity:.55}.ai-key-row{display:flex;gap:6px;align-items:center}.ai-key-row .mini{flex:1}.privacy-note{position:fixed;right:14px;bottom:12px;z-index:18;font-size:10.5px;color:var(--faint);background:var(--footbar-bg);border:1px solid var(--hairline-2);border-radius:14px;padding:5px 12px;white-space:nowrap;-webkit-user-select:none;user-select:none;cursor:help;transition:color .15s}.privacy-note:hover{color:var(--muted)}.crash{width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px;color:var(--text)}.crash-title{font-size:17px;font-weight:700}.crash-msg{max-width:min(640px,90%);overflow:auto;white-space:pre-wrap;font-size:11.5px;color:var(--danger);background:var(--glass-2);border:1px solid var(--hairline-2);border-radius:10px;padding:10px 14px}.err{color:var(--danger);font-size:12px;margin-top:8px;white-space:pre-wrap}.loading{color:var(--muted);font-size:12px}.tree{font-size:12px;line-height:1.7}.tree-row{white-space:nowrap}.tree-joint{color:var(--muted);font-size:11px}.treegraph-wrap{overflow:auto;cursor:zoom-in;padding:2px}.treegraph{--tg-gap: 12px;display:inline-block;min-width:100%}.treegraph ul{display:flex;justify-content:center;margin:0;padding:0}.treegraph li{list-style:none;position:relative;display:flex;flex-direction:column;align-items:center;padding:var(--tg-gap) 4px 0}.treegraph li:before,.treegraph li:after{content:"";position:absolute;top:0;right:50%;width:50%;height:var(--tg-gap);border-top:1px solid var(--hairline)}.treegraph li:after{right:auto;left:50%;border-left:1px solid var(--hairline)}.treegraph li:only-child:before,.treegraph li:only-child:after{display:none}.treegraph li:only-child{padding-top:0}.treegraph li:first-child:before,.treegraph li:last-child:after{border:0 none}.treegraph li:last-child:before{border-right:1px solid var(--hairline);border-radius:0 6px 0 0}.treegraph li:first-child:after{border-radius:6px 0 0}.treegraph ul ul{position:relative;padding-top:var(--tg-gap)}.treegraph ul ul:before{content:"";position:absolute;top:0;left:50%;width:0;height:var(--tg-gap);border-left:1px solid var(--hairline)}.tg-node{border:1px solid var(--hairline);background:var(--glass-2);border-radius:6px;padding:2px 7px;font-size:9px;font-weight:600;color:var(--text);white-space:nowrap}.tg-joint{font-size:8px;color:var(--muted);white-space:nowrap;margin-bottom:2px;font-variant-numeric:tabular-nums}.tree-zoom-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#00000085;display:flex;align-items:center;justify-content:center}.tree-zoom{width:66.7vw;height:66.7vh;min-width:320px;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--hairline);border-radius:16px;box-shadow:var(--panel-shadow);overflow:hidden}.tree-zoom-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;font-size:13px;font-weight:600;color:var(--text);border-bottom:1px solid var(--hairline-2);flex-shrink:0}.tree-zoom-body{flex:1;overflow:auto;padding:24px}.tree-zoom-body .treegraph{--tg-gap: 22px;display:block;width:max-content;min-width:0;margin:0 auto}.tree-zoom .tg-node{font-size:13px;padding:5px 13px;border-radius:9px}.tree-zoom .tg-joint{font-size:11px;margin-bottom:3px}.sidebar{width:340px;flex-shrink:0;background:var(--panel);border-left:1px solid var(--hairline-2);display:flex;flex-direction:column;overflow:hidden}.sidebar h1{font-size:14px;margin:0;padding:14px 16px;border-bottom:1px solid var(--hairline-2);font-weight:600}.sidebar-scroll{overflow-y:auto;padding:14px 16px;flex:1}
