:root{--bg:#0d1117;--bg-panel:#161c26;--bg-panel-2:#1b2331;--bg-hover:#222c3d;--border:#263042;--text:#d7dee9;--text-dim:#8b97a8;--text-faint:#5c6879;--accent:#4f8cff;--accent-soft:#4f8cff24;--good:#3fb96a;--warn:#e0a832;--bad:#e05656;--radius:8px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;--mono:"SF Mono", "Cascadia Code", Consolas, monospace}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}body{background:var(--bg);color:var(--text);font-family:var(--font);user-select:none;font-size:13px}#app{flex-direction:column;height:100vh;display:flex}#topbar{background:var(--bg-panel);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:14px;height:46px;padding:0 12px;display:flex}.brand{color:var(--accent);white-space:nowrap;align-items:center;gap:8px;display:flex}.brand b{color:var(--text);font-size:14px}.brand span{color:var(--text-faint);font-size:12px}.toolbar{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.spacer{flex:1}.btn{appearance:none;border:1px solid var(--border);background:var(--bg-panel-2);color:var(--text);font:inherit;cursor:pointer;white-space:nowrap;border-radius:6px;padding:5px 12px;transition:background .12s,border-color .12s}.btn:hover:not(:disabled){background:var(--bg-hover);border-color:#33415a}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:#6b9eff}.btn.wide{width:100%;margin-top:10px}.btn.toggle.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.btn-row{gap:8px;margin-top:10px;display:flex}.btn-row .btn{flex:1}.seg{border:1px solid var(--border);border-radius:6px;display:flex;overflow:hidden}.seg button{appearance:none;background:var(--bg-panel-2);color:var(--text-dim);font:inherit;cursor:pointer;border:none;padding:5px 10px}.seg button+button{border-left:1px solid var(--border)}.seg button.active{background:var(--accent-soft);color:var(--accent)}main{flex:1;min-height:0;display:flex}aside{background:var(--bg-panel);flex-direction:column;flex-shrink:0;width:280px;min-height:0;display:flex}#left{border-right:1px solid var(--border)}#right{border-left:1px solid var(--border);width:320px}.panel-tabs{border-bottom:1px solid var(--border);flex-shrink:0;display:flex}.panel-tabs button{appearance:none;color:var(--text-dim);font:inherit;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:9px 14px}.panel-tabs button.active{color:var(--text);border-bottom-color:var(--accent)}.tab-body{flex:1;min-height:0;padding:10px;overflow-y:auto}#viewport{background:var(--bg);flex:1;min-width:0;position:relative}#viewport canvas{outline:none;display:block}#drop-hint{z-index:5;backdrop-filter:blur(2px);background:#0d111799;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}#drop-hint[hidden]{display:none}.drop-card{text-align:center;border:1px dashed var(--border);border-radius:12px;padding:40px 48px}.drop-icon{color:var(--accent);margin-bottom:12px;font-size:44px}.drop-title{margin-bottom:8px;font-size:16px;font-weight:600}.drop-sub{color:var(--text-faint);max-width:340px;margin-bottom:18px;font-size:12px}#viewport.dragover:after{content:"松开以导入模型";z-index:9;border:2px dashed var(--accent);background:var(--accent-soft);color:var(--accent);pointer-events:none;border-radius:10px;justify-content:center;align-items:center;font-size:15px;font-weight:600;display:flex;position:absolute;inset:10px}#compare-labels{z-index:4;pointer-events:none;display:flex;position:absolute;top:10px;left:0;right:0}#compare-labels[hidden]{display:none}#compare-labels span{text-align:center;color:var(--text-dim);background:#161c26bf;border-radius:4px;flex:1;margin:0 12%;padding:3px 8px;font-size:12px}#view-badge{z-index:4;color:var(--text-dim);background:#161c26bf;border-radius:4px;padding:3px 10px;font-size:12px;position:absolute;bottom:10px;left:10px}#view-badge[hidden]{display:none}.card{background:var(--bg-panel-2);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:10px;padding:12px}.card h3{color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px;font-size:12px;font-weight:600}.kv{grid-template-columns:1fr auto;gap:6px 10px;display:grid}.kv .k{color:var(--text-dim)}.kv .v{color:var(--text);text-align:right}.kv .v.mono{font-family:var(--mono);font-size:12px}.chips{flex-wrap:wrap;gap:4px;margin-top:8px;display:flex}.chip{background:var(--accent-soft);color:var(--accent);border-radius:10px;padding:2px 7px;font-size:11px}.chip.warn{color:var(--warn);background:#e0a8321f}.empty-note{color:var(--text-faint);text-align:center;padding:14px 6px;font-size:12px}.row{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.row>label,.sub{cursor:pointer;color:var(--text);align-items:center;gap:7px;display:flex}.row.col{gap:8px}.hint{color:var(--text-faint);font-size:11.5px;line-height:1.5}.slider-row{align-items:center;gap:10px;padding-left:23px;display:flex}.mono{font-family:var(--mono)}input[type=range]{accent-color:var(--accent);flex:1}input[type=checkbox],input[type=radio]{accent-color:var(--accent);flex-shrink:0;width:14px;height:14px}.radios{flex-direction:column;gap:6px;padding-left:2px;display:flex}.radios label{cursor:pointer;align-items:center;gap:7px;display:flex}.grid2{grid-template-columns:1fr 1fr;gap:8px;padding-left:23px;display:grid}select{appearance:none;border:1px solid var(--border);background:var(--bg-panel);color:var(--text);font:inherit;cursor:pointer;border-radius:6px;width:100%;padding:5px 8px}.param-row{flex-direction:column;gap:5px;margin-bottom:10px;display:flex}.param-row .param-head{color:var(--text-dim);justify-content:space-between;display:flex}.param-row .param-head .mono{color:var(--text)}input[type=color]{border:1px solid var(--border);background:var(--bg-panel);cursor:pointer;border-radius:6px;width:100%;height:26px;padding:0}#shader-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.shader-card{border:1px solid var(--border);border-radius:var(--radius);text-align:center;cursor:pointer;background:var(--bg-panel);padding:10px 8px;transition:border-color .12s,background .12s}.shader-card:hover{background:var(--bg-hover)}.shader-card.active{border-color:var(--accent);background:var(--accent-soft)}.shader-card .sc-icon{margin-bottom:4px;font-size:20px}.shader-card .sc-name{color:var(--text);font-size:12.5px}.shader-card .sc-desc{color:var(--text-faint);margin-top:2px;font-size:11px}.tree{font-size:12.5px}.tree ul{padding-left:14px;list-style:none}.tree>ul{padding-left:0}.tree .node{cursor:pointer;color:var(--text-dim);white-space:nowrap;border-radius:4px;align-items:center;gap:6px;padding:3px 6px;display:flex}.tree .node:hover{background:var(--bg-hover);color:var(--text)}.tree .node.selected{background:var(--accent-soft);color:var(--accent)}.tree .node .ico{text-align:center;opacity:.8;flex-shrink:0;width:14px}.tree .node .meta{color:var(--text-faint);font-size:11px;font-family:var(--mono);margin-left:auto}.tex-item{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel-2);flex-direction:column;gap:3px;margin-bottom:8px;padding:8px 10px;display:flex}.tex-item .t-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tex-item .t-meta{color:var(--text-faint);gap:10px;font-size:11.5px;display:flex}#statusbar{background:var(--bg-panel);border-top:1px solid var(--border);height:30px;color:var(--text-dim);flex-shrink:0;align-items:center;gap:14px;padding:0 12px;font-size:12px;display:flex}#st-progress{flex:1;align-items:center;gap:8px;display:flex}#st-progress[hidden]{display:none}#st-progress .bar{background:var(--bg-hover);border-radius:2px;width:160px;height:4px;overflow:hidden}#st-progress .fill{background:var(--accent);border-radius:2px;width:30%;height:100%;animation:1.2s ease-in-out infinite indet}@keyframes indet{0%{margin-left:-30%}to{margin-left:100%}}#st-render{margin-left:auto}#toasts{z-index:100;flex-direction:column;gap:8px;max-width:340px;display:flex;position:fixed;top:56px;right:14px}.toast{background:var(--bg-panel-2);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:6px;padding:10px 14px;font-size:12.5px;animation:.18s ease-out slide-in;box-shadow:0 6px 24px #0006}.toast.ok{border-left-color:var(--good)}.toast.warn{border-left-color:var(--warn)}.toast.err{border-left-color:var(--bad)}@keyframes slide-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:none}}.delta-row{grid-template-columns:1fr auto;gap:4px 10px;margin-bottom:6px;display:grid}.delta-row .d-k{color:var(--text-dim)}.delta-row .d-v{text-align:right;font-family:var(--mono);font-size:12px}.delta-row .d-v .arrow{color:var(--text-faint);margin:0 4px}.delta-row .d-v .pct{margin-left:8px;font-weight:600}.pct.down{color:var(--good)}.pct.up{color:var(--bad)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#2b3648;border-radius:4px}::-webkit-scrollbar-track{background:0 0}
