:root{--radius-lg:14px;--radius:10px;--radius-sm:6px;--radius-xs:4px;--sans:system-ui, -apple-system, "Segoe UI Variable Text", "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", sans-serif;--mono:ui-monospace, "SF Mono", "Cascadia Mono", "Segoe UI Mono", Menlo, Consolas, "Liberation Mono", monospace;--accent:#f59e0b;--warn:#fbbf24;--danger:#f87171;--ok:#60a5fa;--accent-soft:color-mix(in srgb, var(--accent) 14%, transparent);--accent-line:color-mix(in srgb, var(--accent) 45%, transparent);--accent-text:var(--accent);--t-fast:.12s;--t-base:.19s;--ease:cubic-bezier(.32, .72, 0, 1)}:root[data-theme=dark]{--bg:#111823;--surface-1:#17212e;--surface-2:#1c2836;--surface-3:#223140;--surface-hover:#212f3e;--surface-active:#1d3440;--topbar:linear-gradient(180deg, #1a2634 0%, #151f2b 100%);--border:#27374a;--border-strong:#3a4f66;--input-bg:#131c27;--text:#cfdeed;--text-dim:#8aa1b6;--text-bright:#f2f8ff;--text-code:#9fd6ea;--overlay:#0c121ad1;--shadow:0 10px 30px #040a128c;--shadow-sm:0 3px 10px #040a1266;--canvas-shell:#0e141d;--badge-bg:#1d3a44;--badge-text:#fbbf24}:root[data-theme=light]{--bg:#edf1f6;--surface-1:#fff;--surface-2:#f7fafc;--surface-3:#eef3f8;--surface-hover:#eef4fa;--surface-active:#e2f1f5;--topbar:linear-gradient(180deg, #fff 0%, #f4f7fb 100%);--border:#d9e2ec;--border-strong:#b8c7d8;--input-bg:#fff;--text:#26333f;--text-dim:#5c7285;--text-bright:#0f1a24;--text-code:#a1531a;--overlay:#ffffffe0;--shadow:0 10px 26px #1c344e24;--shadow-sm:0 2px 8px #1c344e1a;--canvas-shell:#fbfcfe;--badge-bg:#d7f0ec;--badge-text:#92400e;--accent:#b45309;--warn:#b45309;--danger:#dc2626;--ok:#2563eb;--accent-text:color-mix(in srgb, var(--accent) 40%, var(--text))}:root[data-theme=contrast]{--bg:#fff;--surface-1:#fff;--surface-2:#fff;--surface-3:#f2f2f2;--surface-hover:#eaeaea;--surface-active:#ddd;--topbar:#fff;--border:#000;--border-strong:#000;--input-bg:#fff;--text:#000;--text-dim:#2b2b2b;--text-bright:#000;--text-code:#000;--overlay:#fffffff0;--shadow:0 0 0 1px #000;--shadow-sm:0 0 0 1px #000;--canvas-shell:#fff;--badge-bg:#000;--badge-text:#fff;--accent:#000;--warn:#000;--danger:#000;--ok:#000;--accent-text:var(--text);--on-accent:#1a1206}*{box-sizing:border-box}:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 62%, var(--text-bright));outline-offset:2px;border-radius:var(--radius-xs)}.mono,.hud-chip,.readout-grid .v,.readout-grid .k,.entity-item,.tool,.time-scale-input,input[type=number]{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}h1,h2,h3,.section-head h3{text-wrap:balance}p,.desc,.tool .desc,.stability-body{text-wrap:pretty}@media (prefers-reduced-motion:no-preference){.btn,.mini,.tool,.entity-item,.field-pill,.panel-toggle,.seg button,select{transition:background var(--t-base) var(--ease), border-color var(--t-base) var(--ease), color var(--t-base) var(--ease)}.btn:active,.mini:active,.tool:active,.field-pill:active,.seg button:active{transform:translateY(1px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}html,body,#root{background:var(--bg);height:100%;color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:13px;line-height:1.45}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);background-clip:content-box;border:2px solid #0000;border-radius:5px}::-webkit-scrollbar-thumb:hover{background:var(--text-dim);background-clip:content-box}::-webkit-scrollbar-track{background:0 0}.app{grid-template-rows:auto 1fr auto;height:100%;display:grid;overflow:hidden}.topbar{background:var(--topbar);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:4px 16px;min-width:0;min-height:52px;padding:0 16px;display:flex}.brand{white-space:nowrap;cursor:pointer;border-radius:var(--radius-sm);align-items:center;gap:9px;padding:4px 6px;transition:background .15s;display:flex}.brand:hover{background:var(--surface-hover)}.brand .mark{background:linear-gradient(135deg, color-mix(in srgb, var(--accent) 82%, #fff) 0%, var(--accent) 100%);width:26px;height:26px;color:var(--on-accent);border-radius:7px;place-items:center;font-size:13px;font-weight:700;display:grid}.brand .name{color:var(--text-bright);letter-spacing:.2px;font-size:14px;font-weight:600}.brand .sub{color:var(--text-dim);font-size:10.5px;font-family:var(--mono)}.seg{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--input-bg);display:inline-flex;overflow:hidden}.seg button{color:var(--text-dim);cursor:pointer;white-space:nowrap;background:0 0;border:0;padding:6px 13px;transition:background .15s,color .15s}.seg button.active{background:var(--surface-active);color:var(--accent-text);font-weight:500}.btn{border:1px solid var(--border);background:var(--surface-1);color:var(--text);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;padding:6px 13px;transition:background .15s,border-color .15s,color .15s,transform 80ms}.btn:hover{background:var(--surface-hover);border-color:var(--border-strong)}.btn:active{transform:translateY(1px)}.btn.primary:hover{background:color-mix(in srgb, var(--accent) 22%, transparent)}.btn.ghost{color:var(--text-dim);background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--surface-hover);color:var(--text)}.btn.danger:hover{background:color-mix(in srgb, var(--danger) 16%, transparent);border-color:color-mix(in srgb, var(--danger) 45%, transparent);color:var(--danger)}.btn.icon{text-align:center;min-width:32px;padding:6px 9px}.btn.sm{padding:4px 9px;font-size:12px}:root{--left-w:clamp(206px, 17vw, 276px);--right-w:clamp(248px, 21vw, 330px);--bottom-h:auto}.main{grid-template-columns:var(--left-w) minmax(0, 1fr) var(--right-w);min-height:0;display:grid;position:relative;overflow:hidden}.main.focus-left,.main.focus-right{grid-template-columns:0px minmax(0, 1fr) var(--right-w)}.main.focus-right{grid-template-columns:var(--left-w) minmax(0, 1fr) 0px}.main.focus-both{grid-template-columns:0 minmax(0,1fr) 0}.resizer{z-index:60;background:0 0;border:none;padding:0;position:absolute}.resizer.vertical{cursor:col-resize;width:7px;top:0;bottom:0}.resizer.vertical.left{left:calc(var(--left-w) - 3px)}.resizer.vertical.right{right:calc(var(--right-w) - 3px)}.resizer.vertical:after{content:"";position:absolute;top:0;bottom:0}.resizer.vertical.left:after{left:0;right:-17px}.resizer.vertical.right:after{left:-17px;right:0}.resizer:hover,.resizer.dragging{background:color-mix(in srgb, var(--accent) 46%, transparent)}@media (max-width:1180px){:root{--left-w:214px;--right-w:258px}}.panel{background:var(--surface-1);border-right:1px solid var(--border);flex-direction:column;min-height:0;display:flex;overflow:hidden}.panel.right{border-right:0;border-left:1px solid var(--border)}.panel-scroll{flex:1;min-height:0;overflow:hidden auto}.section-head{cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--surface-2);justify-content:space-between;align-items:center;gap:8px;padding:10px 14px;transition:background .15s;display:flex}.section-head h3{letter-spacing:.8px;text-transform:uppercase;color:var(--text-dim);margin:0;font-size:11px;font-weight:600}.section-head .chev{color:var(--text-dim);font-size:9px;transition:transform .18s}.section-head.open .chev{transform:rotate(90deg)}.viewport-column{background:var(--canvas-shell);flex-direction:column;min-width:0;min-height:0;display:flex}.viewport{background:var(--canvas-shell);flex:1;min-width:0;min-height:0;position:relative;overflow:hidden}.stability-warning{background:color-mix(in srgb, var(--warn) 14%, var(--surface-1));border:1px solid color-mix(in srgb, var(--warn) 55%, transparent);border-radius:var(--radius-sm);z-index:50;max-width:min(560px,100% - 110px);box-shadow:var(--shadow);border-left-width:4px;padding:10px 13px;position:absolute;bottom:60px;left:14px}.stability-title{color:var(--warn);margin-bottom:5px;font-size:12.5px;font-weight:600}.stability-body{color:var(--text);margin-bottom:9px;font-size:12px;line-height:1.6}.stability-note{background:var(--overlay);border:1px solid var(--border);border-left:3px solid var(--accent-line);border-radius:var(--radius-sm);max-width:min(620px,100% - 110px);font-size:11.5px;font-family:var(--mono);color:var(--text-dim);z-index:50;-webkit-backdrop-filter:none;backdrop-filter:none;align-items:center;gap:10px;padding:8px 12px;display:flex;position:absolute;bottom:60px;left:14px}.drag-ghost{z-index:300;background:color-mix(in srgb, var(--surface-1) 90%, transparent);border:1px solid var(--accent-line);pointer-events:none;width:46px;height:46px;color:var(--accent-text);will-change:transform;border-radius:50%;place-items:center;margin:-23px 0 0 -23px;display:grid;position:fixed;top:0;left:0}.tool-glyph{color:var(--accent-text);display:block}.viewport canvas{width:100%;height:100%;display:block}.hud{pointer-events:none;flex-direction:column;align-items:flex-end;gap:6px;display:flex;position:absolute;top:14px;right:14px}.hud-chip{background:var(--overlay);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--mono);color:var(--text-bright);-webkit-backdrop-filter:none;backdrop-filter:none;padding:5px 10px;font-size:11px}.viewport-tools{flex-wrap:wrap;gap:6px;max-width:calc(100% - 28px);display:flex;position:absolute;bottom:14px;left:14px}.viewport-tools .btn{background:var(--overlay);-webkit-backdrop-filter:none;backdrop-filter:none}.panel-toggle{border:none;border-right:1px solid var(--border);cursor:pointer;width:30px;color:var(--text-dim);background:0 0;flex:none;align-self:stretch;font-size:13px;line-height:1;transition:color .15s,background .15s}.panel-toggle.right{border-right:none;border-left:1px solid var(--border)}.viewport-top{background:var(--surface-1);border-bottom:1px solid var(--border);z-index:61;flex:none;align-items:stretch;display:flex;position:relative}.field-bar{flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;max-height:84px;padding:7px 10px;display:flex;overflow-y:auto}.field-pill{flex:none}.time-scale-input{text-align:right;background:var(--surface-2,var(--surface-1));border:1px solid var(--border);border-radius:var(--radius-sm);width:68px;color:var(--text-bright);padding:3px 6px;font-size:11px}.time-scale-input:focus{outline:2px solid var(--accent-text);outline-offset:1px;border-color:var(--accent-text)}.loop-error{text-overflow:ellipsis;white-space:nowrap;background:color-mix(in srgb, var(--warn) 18%, transparent);border:1px solid color-mix(in srgb, var(--warn) 55%, transparent);max-width:320px;color:var(--text-bright);border-radius:var(--radius-sm);cursor:pointer;padding:3px 8px;font-size:11px;overflow:hidden}.stability-warning .btn,.stability-note .btn{background:color-mix(in srgb, var(--accent) 20%, transparent);border:1px solid color-mix(in srgb, var(--accent) 62%, transparent);color:var(--text-bright);border-radius:var(--radius-sm);cursor:pointer;flex:none;padding:5px 13px;font-size:11.5px;font-weight:600;line-height:1.25;transition:background .15s,border-color .15s,transform 80ms}.stability-warning .btn:hover,.stability-note .btn:hover{background:color-mix(in srgb, var(--accent) 34%, transparent);border-color:var(--accent)}.stability-warning .btn:active,.stability-note .btn:active{transform:translateY(1px)}.stability-warning .btn.ghost,.stability-note .btn.ghost{border-color:color-mix(in srgb, var(--text-dim) 60%, transparent);color:var(--text-dim);background:0 0;font-weight:500}.stability-warning .btn.ghost:hover,.stability-note .btn.ghost:hover{background:color-mix(in srgb, var(--text-dim) 16%, transparent);border-color:var(--text-dim);color:var(--text-bright)}.note-actions{gap:8px;margin-top:9px;display:flex}.field-pill{background:var(--overlay);border:1px solid var(--border);font-size:11px;font-family:var(--mono);color:var(--text);cursor:pointer;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:999px;align-items:center;gap:6px;padding:3px 10px 3px 8px;transition:border-color .15s,color .15s;display:inline-flex}.field-pill:hover{border-color:var(--border-strong)}.field-pill.on{border-color:var(--accent-line);color:var(--accent-text)}.field{grid-template-columns:minmax(64px,1fr) 120px;align-items:center;gap:10px;padding:5px 0;display:grid}.field>label{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.field .hint{color:var(--text-dim);grid-column:1/-1;margin-top:-2px;font-size:10.5px;line-height:1.4}.field input[type=number],.field input[type=text],.field select{background:var(--input-bg);border:1px solid var(--border);border-radius:var(--radius-xs);width:100%;font-family:var(--mono);padding:5px 8px;font-size:12px;transition:border-color .15s}.field input[type=number]:focus,.field input[type=text]:focus,.field select:focus{border-color:var(--accent-text);box-shadow:0 0 0 2px var(--accent-text);outline:none}.field input[type=range]{width:100%;accent-color:var(--accent)}.field-disabled input,.field-disabled select{opacity:.55;cursor:not-allowed;background:var(--panel-2,var(--input-bg))}.field-disabled>label{color:var(--text-dim)}.field .sci-hint,.sci-hint{font-family:var(--mono);color:var(--accent-text);opacity:1}.sci-hint .dim{opacity:.75}.sci-row{grid-template-columns:minmax(0,1fr) auto 48px;align-items:center;gap:6px;display:grid}.sci-row .sci-times{color:var(--text-dim);font-family:var(--mono);white-space:nowrap;font-size:11px}.sci-row .sci-exp{text-align:center}.sci-row .sci-exp::placeholder{color:var(--text-dim);opacity:.5}.range-warn{color:var(--warn)!important;opacity:1!important}.cap-strip{flex-wrap:wrap;gap:5px;margin-bottom:10px;display:flex}.cap-pill{border:1px solid var(--border);background:var(--surface-2);color:var(--text-dim);border-radius:999px;align-items:baseline;gap:5px;padding:3px 8px;font-size:11px;display:inline-flex}.cap-pill.on{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent-text)}.cap-pill em{font-family:var(--mono);opacity:.85;font-size:10px;font-style:normal}.vec-row{grid-template-columns:repeat(3,1fr);gap:5px;display:grid}.checkbox{cursor:pointer;align-items:center;gap:8px;padding:5px 0;font-size:12px;display:flex}.checkbox input{accent-color:var(--accent);width:14px;height:14px}.entity-list{padding:5px}.entity-item{border-radius:var(--radius-xs);cursor:pointer;align-items:center;gap:8px;padding:6px 8px;font-size:12px;transition:background .12s;display:flex}.entity-item.active{background:var(--surface-active);box-shadow:inset 0 0 0 1px var(--accent-line)}.entity-item .glyph{text-align:center;width:18px;color:var(--accent-text);flex:none}.entity-item .label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.entity-item .actions{opacity:0;gap:2px;transition:opacity .15s;display:flex}.entity-item:hover .actions,.entity-item.active .actions,.entity-item:focus-within .actions{opacity:1}.mini{color:var(--text-dim);cursor:pointer;background:0 0;border:0;border-radius:3px;padding:2px 5px;font-size:11px}.mini:hover{background:var(--surface-3);color:var(--text-bright)}.tool{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;text-align:left;flex-direction:column;align-items:flex-start;gap:3px;padding:9px 10px;transition:border-color .15s,background .15s,transform .1s;display:flex}.tool .glyph{color:var(--accent-text);font-size:16px}.tool .name{color:var(--text-bright);font-size:12px}.tool .desc{color:var(--text-dim);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:10px;line-height:1.35;display:-webkit-box;overflow:hidden}.preset-card{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);cursor:pointer;border-left:3px solid #0000;margin-bottom:8px;padding:10px 12px;transition:border-color .15s,background .15s,transform .1s}.preset-card:hover{border-color:var(--border-strong);border-left-color:var(--accent);background:var(--surface-hover);transform:translate(2px)}.preset-card.active{border-color:var(--accent-line);border-left-color:var(--accent);background:var(--accent-soft)}.preset-card h4{color:var(--text-bright);margin:0 0 4px;font-size:12.5px;font-weight:600}.preset-card p{color:var(--text-dim);margin:0;font-size:11px;line-height:1.45}.readout-grid{font-family:var(--mono);grid-template-columns:1fr auto;gap:4px 12px;font-size:12px;display:grid}.readout-grid .k{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.readout-grid .v{color:var(--text-bright);text-align:right}.notes{color:var(--text);background:var(--surface-3);border-left:3px solid var(--accent-line);border-radius:0 var(--radius-sm) var(--radius-sm) 0;white-space:pre-wrap;padding:10px 12px;font-size:12px;line-height:1.6}.badge{font-size:10px;font-family:var(--mono);background:var(--badge-bg);color:var(--badge-text);border-radius:4px;padding:2px 7px;display:inline-block}.badge.warn{background:color-mix(in srgb, var(--warn) 20%, transparent);color:var(--warn)}.spacer{flex:1}.row{align-items:center;gap:8px;display:flex}.row.wrap{flex-wrap:wrap}.mono{font-family:var(--mono)}.dim{color:var(--text-dim)}.theme-swatches{flex-wrap:wrap;gap:10px;display:flex}.theme-swatch{border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;background:var(--surface-2);text-align:left;flex:1;min-width:108px;padding:10px 11px;transition:border-color .15s,background .15s}.theme-swatch:hover{border-color:var(--border-strong)}.theme-swatch.active{border-color:var(--accent-line);background:var(--accent-soft)}.theme-swatch .label{color:var(--text-bright);margin-bottom:7px;font-size:12px;display:block}.theme-swatch .bars{gap:3px;display:flex}.theme-swatch .bars span{border:1px solid #80808040;border-radius:3px;flex:1;height:14px}.accent-row{flex-wrap:wrap;gap:8px;display:flex}.accent-dot{cursor:pointer;border:2px solid #0000;border-radius:50%;width:26px;height:26px;transition:transform .12s,border-color .15s}.accent-dot:hover{transform:scale(1.1)}.accent-dot.active{border-color:var(--text-bright)}.popover-scrim{z-index:90;background:0 0;position:fixed;inset:0}.popover{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);width:320px;max-height:calc(100% - 70px);box-shadow:var(--shadow);z-index:95;padding:6px 0 12px;position:absolute;top:48px;right:14px;overflow-y:auto}.shortcut-table{border-collapse:collapse;width:100%;font-size:12px}.shortcut-table td{padding:4px 0}.shortcut-table td:first-child{width:92px}.kbd{border:1px solid var(--border-strong);min-width:22px;font-family:var(--mono);background:var(--surface-2);color:var(--text-bright);text-align:center;border-bottom-width:2px;border-radius:4px;padding:2px 6px;font-size:11px;display:inline-block}:root{--on-accent:#1a1206}:root[data-theme=dark]{--bg:#0e0e10;--surface-1:#17171a;--surface-2:#1d1d21;--surface-3:#25252b;--surface-hover:#222227;--surface-active:#2a2a31;--topbar:#17171a;--border:#2d2d34;--border-strong:#43434c;--input-bg:#131316;--text:#e3e3e6;--text-dim:#9b9ba4;--text-bright:#fff;--text-code:#f0b357;--overlay:#17171af2;--canvas-shell:#0a0a0c;--shadow:0 14px 40px #0009;--shadow-sm:0 2px 8px #00000073;--accent:#f59e0b;--badge-bg:#33260d;--badge-text:#fbbf24}:root[data-theme=light]{--on-accent:#1a1206;--bg:#e9eaec;--surface-1:#f7f7f8;--surface-2:#eeeff1;--surface-3:#e4e5e8;--surface-hover:#eaeced;--surface-active:#dcdee1;--topbar:#f7f7f8;--border:#c9cbcf;--border-strong:#a2a5ab;--input-bg:#fff;--text:#1b1d21;--text-dim:#55585e;--text-bright:#0c0d0f;--text-code:#a1531a;--accent:#b45309;--overlay:#f7f7f8f5;--canvas-shell:#f1f2f4;--shadow:0 14px 34px #14151829;--shadow-sm:0 2px 8px #1415181a;--badge-bg:#fbe8cf;--badge-text:#92400e}html,body,#root{-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:13.5px;line-height:1.55}.section-head h3{letter-spacing:.06em;color:var(--text-dim);text-transform:uppercase;font-size:11px;font-weight:600}.dim,.readout-grid .k{letter-spacing:.01em;font-size:11px}.readout-grid .v,.hud-chip,.mono{font-variant-numeric:tabular-nums;letter-spacing:-.005em}.topbar,header.topbar{background:var(--surface-1);border-bottom:1px solid var(--border);min-height:52px;padding-block:6px}.panel{background:var(--surface-1);border-right:1px solid var(--border)}.section{border-bottom:1px solid var(--border)}.section:last-child{border-bottom:none}.section-head{background:0 0;padding:9px 14px}.section-head:hover{background:var(--surface-hover)}.section-head .chev{color:var(--text-dim);font-size:9px}.section-body{padding:4px 14px 14px}.btn{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface-2);height:28px;color:var(--text);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:12px;font-weight:500;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-3);border-color:color-mix(in srgb, var(--border-strong) 60%, var(--accent));color:var(--text-bright)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.42;cursor:not-allowed}.btn.primary{background:var(--text-bright);border-color:var(--text-bright);color:var(--bg);font-weight:600}.btn.primary:hover:not(:disabled){background:color-mix(in srgb, var(--text-bright) 86%, var(--bg));border-color:color-mix(in srgb, var(--text-bright) 86%, var(--bg))}.btn.ghost{border-color:var(--border);color:var(--text-dim);background:0 0}.btn.ghost:hover:not(:disabled){background:var(--surface-2);border-color:var(--border-strong);color:var(--text)}.btn.sm{height:25px;padding:0 9px;font-size:11.5px}.btn.icon{width:28px;padding:0}.mini{border-radius:var(--radius-xs);min-width:24px;height:24px;color:var(--text-dim);cursor:pointer;background:0 0;border:1px solid #0000;padding:0 7px;font-size:11px}.mini:hover{background:var(--surface-3);border-color:var(--border);color:var(--text-bright)}.seg{background:var(--input-bg);border:1px solid var(--border);border-radius:var(--radius-sm);gap:2px;padding:2px;display:inline-flex}.seg button{height:24px;color:var(--text-dim);border-radius:var(--radius-xs);cursor:pointer;background:0 0;border:none;padding:0 11px;font-size:11.5px;font-weight:500}.seg button:hover{color:var(--text);background:var(--surface-2)}.seg button.active{background:color-mix(in srgb, var(--accent) 20%, transparent);color:var(--text-bright);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 52%, transparent);font-weight:600}input[type=text],input[type=number],input[type=search],select,textarea{background:var(--input-bg);border:1px solid var(--border);border-radius:var(--radius-sm);height:26px;color:var(--text-bright);font-variant-numeric:tabular-nums;padding:0 9px;font-size:12px;box-shadow:inset 0 1px 2px #00000038}input[type=text]:hover,input[type=number]:hover,select:hover{border-color:var(--border-strong)}input[type=text]:focus,input[type=number]:focus,select:focus{border-color:var(--accent-text);box-shadow:0 0 0 2px var(--accent-text);outline:none}input[type=range]{cursor:pointer;height:18px}input[type=checkbox]{width:14px;height:14px;accent-color:var(--accent);cursor:pointer}.tool-grid{grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:7px;display:grid}.tool{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);cursor:grab;text-align:center;padding:10px 8px 9px;position:relative}.tool:hover{background:var(--surface-3);border-color:color-mix(in srgb, var(--accent) 45%, var(--border));transform:none}.tool:active{cursor:grabbing}.tool .glyph{color:var(--accent-text)}.tool .name{color:var(--text-bright);margin-top:5px;font-size:11.5px;font-weight:500}.tool .desc{color:var(--text-dim);margin-top:2px;font-size:10px;line-height:1.35}.entity-item{border-radius:var(--radius-sm);cursor:pointer;border:1px solid #0000;padding:6px 8px}.entity-item:hover{background:var(--surface-2)}.entity-item.active{background:color-mix(in srgb, var(--accent) 15%, transparent);border-color:color-mix(in srgb, var(--accent) 42%, transparent)}.entity-item .dot{border-radius:2px;width:8px;height:8px}.readout-grid{grid-template-columns:minmax(0,1fr) auto;gap:1px 12px;display:grid}.readout-grid .k{color:var(--text-dim);padding:3px 0}.readout-grid .v{color:var(--text-bright);text-align:right;font-family:var(--mono);padding:3px 0;font-size:11.5px}.viewport-top{background:var(--surface-1);border-bottom:1px solid var(--border)}.field-pill{border:1px solid var(--border);height:24px;color:var(--text-dim);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:6px;padding:0 10px;font-size:11.5px;display:inline-flex}.field-pill:hover{border-color:var(--border-strong);color:var(--text)}.field-pill.on{background:color-mix(in srgb, var(--accent) 16%, transparent);border-color:color-mix(in srgb, var(--accent) 52%, transparent);color:var(--text-bright)}.field-pill .dot{background:var(--text-dim);border-radius:50%;width:6px;height:6px}.field-pill.on .dot{background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent)}.panel-toggle{width:32px;color:var(--text-dim);font-size:12px}.panel-toggle:hover{color:var(--accent-text);background:var(--surface-2)}.hud-chip{background:var(--overlay);border:1px solid var(--border);color:var(--text-bright);border-radius:999px;padding:3px 9px;font-size:11px}.hud-chip.dim{color:var(--text-dim)}.hud-chip.warn{color:var(--warn);border-color:color-mix(in srgb, var(--warn) 55%, transparent)}.drop-zone{border:1.5px dashed var(--border-strong);background:var(--overlay);color:var(--text-dim);pointer-events:none;z-index:40;transition:transform var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease), background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);border-radius:999px;align-items:center;gap:8px;padding:11px 20px;font-size:12.5px;display:flex;position:absolute;bottom:64px;left:50%;transform:translate(-50%)}.drop-zone.over{border-style:solid;border-color:var(--danger);background:color-mix(in srgb, var(--danger) 16%, var(--overlay));color:var(--danger);transform:translate(-50%)translateY(-4px)scale(1.06)}.drop-zone-icon{font-size:16px;line-height:1}.viewport-tools .btn{background:var(--overlay)}.chart-head-label{letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);font-size:11px;font-weight:600}.chart-head-spacer{flex:1}.app.teaching{z-index:5000;background:var(--bg);position:fixed;inset:0}.app.teaching .panel,.app.teaching .plot-window,.app.teaching .resizer,.app.teaching .brand,.app.teaching .hud-chip,.app.teaching .field-bar,.app.teaching .loop-error,.app.teaching .topbar .btn.icon:not(.teaching-keep),.app.teaching .topbar .btn.sm,.app.teaching .topbar .checkbox{display:none!important}.app.teaching .main{grid-template-columns:minmax(0,1fr)!important;gap:0!important;padding:0!important}.app.teaching .viewport-column,.app.teaching .viewport{border-radius:0;flex:auto}.plot-window{border-radius:var(--radius-lg);background:color-mix(in srgb, var(--surface-1) 94%, transparent);box-shadow:var(--shadow);will-change:transform;border:none;flex-direction:column;display:flex;position:absolute;top:0;left:0;overflow:hidden}.plot-window.minimized{box-shadow:var(--shadow-sm);border-radius:999px;width:auto!important;height:auto!important}.plot-window.detail{border-radius:0;z-index:4000!important;width:100%!important;max-width:none!important;height:100%!important;max-height:none!important;position:fixed!important;inset:0!important;transform:none!important}.plot-window.detail .plot-body{flex:auto;min-height:0}.plot-window.detail .plot-btn-tool:not([title*=退出详细模式]),.plot-window.detail .plot-btn:not(.plot-btn-tool),.plot-window.detail .plot-resize{display:none}.plot-window.detail .plot-title{cursor:default}.plot-title{border-bottom:1px solid color-mix(in srgb, var(--border) 55%, transparent);cursor:grab;-webkit-user-select:none;user-select:none;background:0 0;flex:none;align-items:center;gap:7px;padding:7px 8px 6px 12px;display:flex}.plot-title:active{cursor:grabbing}.plot-window.minimized .plot-title{border-bottom:none}.plot-dot{border-radius:2px;flex:none;width:8px;height:8px}.plot-name{min-width:0;color:var(--text-bright);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:11px;overflow:hidden}.plot-actions{flex:none;gap:4px;display:flex}.plot-btn{border-radius:var(--radius-xs);width:24px;height:24px;color:var(--text-dim);cursor:pointer;background:0 0;border:none;place-items:center;font-size:11px;line-height:1;display:grid}.plot-btn:hover{background:var(--surface-3);color:var(--text-bright)}.plot-btn-close:hover{background:color-mix(in srgb, var(--danger) 24%, transparent);color:var(--danger)}.plot-body{flex:1;min-height:0;position:relative}.plot-body canvas{width:100%;height:100%;display:block}.plot-resize{cursor:nwse-resize;width:24px;height:24px;position:absolute;bottom:0;right:0}.plot-resize:after{content:"";border-right:1.5px solid var(--text-dim);border-bottom:1.5px solid var(--text-dim);width:7px;height:7px;position:absolute;bottom:3px;right:3px}.btn.active{background:color-mix(in srgb, var(--accent) 20%, transparent);border-color:color-mix(in srgb, var(--accent) 52%, transparent);color:var(--text-bright)}.quick-label{color:var(--text-dim);flex:none;padding-top:4px;font-size:10.5px}.quick-chips{flex-wrap:wrap;gap:5px;display:flex}.chip{border:1px solid var(--border);background:var(--surface-2);color:var(--text);cursor:pointer;white-space:nowrap;border-radius:999px;padding:3px 9px;font-size:11px}.chip:hover:not(:disabled){border-color:color-mix(in srgb, var(--accent) 55%, var(--border));background:color-mix(in srgb, var(--accent) 12%, var(--surface-2));color:var(--text-bright)}.chip:disabled{opacity:.38;cursor:not-allowed}.empty{color:var(--text-dim);text-align:center;padding:18px 14px;font-size:12px;line-height:1.65}.stability-warning,.stability-note{border-radius:var(--radius);box-shadow:var(--shadow)}.stability-warning{border-left-width:3px}.welcome{z-index:100;background:var(--bg);place-items:safe center;padding:36px 32px;display:grid;position:fixed;inset:0;overflow-y:auto}.welcome-shell{grid-template-columns:minmax(0,1fr) minmax(0,1.02fr);align-items:center;gap:60px;width:min(1140px,100%);display:grid}@media (max-width:960px){.welcome-shell{grid-template-columns:minmax(0,1fr);gap:36px}.welcome{padding:28px 20px}}.welcome-intro{flex-direction:column;align-items:flex-start;display:flex}.welcome-eyebrow{letter-spacing:.16em;text-transform:uppercase;color:var(--text-code);font-size:11px;font-weight:600}.welcome-intro h1{letter-spacing:-.022em;color:var(--text-bright);text-wrap:balance;margin:16px 0 0;font-size:clamp(27px,3.3vw,42px);font-weight:650;line-height:1.14}.welcome-intro h1 em{color:var(--accent-text);font-style:normal}.welcome-lede{max-width:44ch;color:var(--text-dim);margin:18px 0 0;font-size:13.5px;line-height:1.72}.welcome-actions{flex-wrap:wrap;gap:10px;margin-top:28px;display:flex}.btn.lg{border-radius:var(--radius);height:38px;padding:0 20px;font-size:13px}.welcome-resume{border:1px dashed var(--border-strong);border-radius:var(--radius);cursor:pointer;text-align:left;background:0 0;flex-direction:column;align-items:flex-start;gap:1px;margin-top:18px;padding:9px 13px;display:flex}.welcome-resume:hover{border-style:solid;border-color:var(--accent);background:var(--surface-1)}.welcome-resume-label{letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);font-size:10.5px}.welcome-resume-name{color:var(--text-bright);font-size:13px}.welcome-keys{border-top:1px solid var(--border);grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 22px;width:100%;margin:30px 0 0;padding-top:18px;display:grid}.welcome-keys>div{align-items:baseline;gap:9px;display:flex}.welcome-keys dt{min-width:62px;font-family:var(--mono);color:var(--text-bright);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-xs);text-align:center;flex:none;padding:1px 6px;font-size:11px}.welcome-keys dd{color:var(--text-dim);margin:0;font-size:11.5px}.welcome-catalog{flex-direction:column;gap:10px;min-height:0;display:flex}.welcome-catalog-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;gap:10px;padding-bottom:2px;display:flex}.welcome-catalog-title{color:var(--text-bright);letter-spacing:-.008em;font-size:13.5px;font-weight:600}.welcome-catalog-count{letter-spacing:.05em;color:color-mix(in srgb, var(--accent) 80%, var(--text-dim));font-size:10.5px}.welcome-catalog-list{flex-direction:column;gap:8px;padding-right:4px;display:flex}.welcome-preset{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-1);cursor:pointer;text-align:left;flex-direction:column;align-items:flex-start;gap:4px;padding:11px 13px;display:flex}.welcome-preset:hover{background:var(--surface-2);border-color:color-mix(in srgb, var(--accent) 48%, var(--border));box-shadow:var(--shadow);transform:translateY(-1px)}.welcome-preset:active{transform:translateY(0)}.welcome-preset h4{color:var(--text-bright);margin:0;font-size:12.5px;font-weight:600}.welcome-preset p{color:var(--text-dim);margin:0;font-size:11px;line-height:1.55}.bottom{min-height:var(--bottom-h,auto);border-top:1px solid var(--border);background:var(--surface-1);flex-direction:column;display:flex;position:relative}.bottom.collapsed{height:auto;min-height:0}.data-bar{flex-wrap:wrap;align-items:center;gap:9px;padding:8px 12px;display:flex}.bar-field{color:var(--text-dim);align-items:center;gap:5px;font-size:10.5px;display:flex}.stats-bar{border-top:1px solid var(--border);background:var(--surface-2);flex-wrap:wrap;align-items:center;gap:20px;padding:7px 12px;font-size:11px;display:flex}.stats-title{color:var(--text-bright);font-weight:600}.stat{align-items:baseline;gap:6px;display:flex}.stat-k{color:var(--text-dim);font-size:10.5px}.stat b{color:var(--accent-text);font-size:11.5px}.plot-name{font-size:11.5px;font-weight:500}.plot-btn-tool{font-family:var(--mono);font-size:12px;font-weight:600}.plot-btn-tool.on{background:color-mix(in srgb, var(--accent) 16%, transparent);color:var(--accent-text)}.plot-stats{border-top:1px solid color-mix(in srgb, var(--border) 55%, transparent);flex:none;align-items:center;gap:14px;padding:5px 11px 6px;font-size:10.5px;display:flex;overflow:hidden}.ps{white-space:nowrap;align-items:baseline;gap:4px;display:inline-flex}.ps-k{color:var(--text-dim)}.ps b{color:var(--text-bright);font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:500}.ps-swatch{border-radius:2px;align-self:center;width:8px;height:8px}.plot-check{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;flex:none;padding:4px 11px 6px;font-size:10.5px;overflow:hidden}.plot-check.ok{color:var(--ok)}.plot-check.warn{color:var(--danger);font-weight:600}.preset-row{flex-wrap:wrap;align-items:center;gap:6px;padding:2px 0 4px;display:flex}.preset-label{color:var(--text-dim);font-size:10.5px}.cascade{position:relative}.cascade-trigger{background:var(--input-bg);border:1px solid var(--border);border-radius:var(--radius-sm);min-width:146px;max-width:214px;height:26px;color:var(--text-bright);cursor:pointer;align-items:center;gap:8px;padding:0 9px;font-size:11.5px;display:inline-flex;box-shadow:inset 0 1px 2px #00000038}.cascade-trigger:hover{border-color:var(--border-strong)}.cascade-text{text-overflow:ellipsis;white-space:nowrap;text-align:left;flex:1;min-width:0;overflow:hidden}.cascade-caret{color:var(--text-dim);font-size:9px}.cascade-menu{z-index:80;align-items:flex-end;padding-bottom:2px;display:flex;position:absolute;bottom:100%;left:0}.cascade-root{background:var(--surface-1);border:1px solid var(--border-strong);border-radius:var(--radius-sm);min-width:122px;box-shadow:var(--shadow);padding:4px}.cascade-group{border-radius:var(--radius-xs);color:var(--text);cursor:pointer;white-space:nowrap;justify-content:space-between;align-items:center;gap:16px;padding:5px 8px;font-size:11.5px;display:flex}.cascade-group.active{background:color-mix(in srgb, var(--accent) 20%, transparent);color:var(--text-bright)}.cascade-arrow{color:var(--text-dim);font-size:11px}.cascade-sub{background:var(--surface-1);border:1px solid var(--border-strong);border-radius:var(--radius-sm);min-width:182px;max-height:288px;box-shadow:var(--shadow);margin-left:3px;padding:4px;overflow-y:auto}.cascade-item{text-align:left;border-radius:var(--radius-xs);width:100%;color:var(--text);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:5px 8px;font-size:11.5px;display:block}.cascade-item:hover,.cascade-item.active{background:color-mix(in srgb, var(--accent) 20%, transparent);color:var(--text-bright)}.cascade-unit{color:var(--text-dim)}.cascade-empty{color:var(--text-dim);padding:6px 8px;font-size:11px}:root{--surface-4:#202c3e;--hairline:#ffffff14;--hairline-strong:#ffffff29;--inset-top:inset 0 1px 0 0 #ffffff0f;--glow-a:#22d3ee33;--glow-b:#f59e0b29;--glow-c:#a78bfa24;--grain-opacity:.05;--c-mech:#f5a524;--c-em:#2fd4e6;--c-thermo:#fb7185;--c-quantum:#a78bfa;--shadow-lift:0 34px 70px -34px #02060ceb, 0 2px 10px #02060c73;--shadow-pop:0 18px 40px -22px #02060cd9;--radius-2xl:34px;--radius-xl:26px;--radius-nest:20px;--ease-spring:cubic-bezier(.34, 1.3, .64, 1);--t-slow:.42s;--fs-display:clamp(30px, 4.4vw, 54px);--tracking-display:-.03em}:root[data-theme=light]{--surface-4:#e7edf6;--hairline:#1020341a;--hairline-strong:#10203433;--inset-top:inset 0 1px 0 0 #ffffffe6;--glow-a:#0e749024;--glow-b:#b453091f;--glow-c:#6d28d91c;--grain-opacity:.035;--c-mech:#b45309;--c-em:#0e7490;--c-thermo:#be123c;--c-quantum:#6d28d9;--shadow-lift:0 30px 60px -34px #172e4c52, 0 1px 3px #172e4c1a;--shadow-pop:0 16px 34px -22px #172e4c47}:root[data-theme=contrast]{--surface-4:#eaeaea;--hairline:#000;--hairline-strong:#000;--inset-top:none;--glow-a:transparent;--glow-b:transparent;--glow-c:transparent;--grain-opacity:0;--c-mech:#000;--c-em:#000;--c-thermo:#000;--c-quantum:#000;--shadow-lift:0 0 0 1px #000;--shadow-pop:0 0 0 1px #000}.kit-ambient{z-index:0;pointer-events:none;background:radial-gradient(1100px 620px at 8% -12%, var(--glow-a), transparent 62%), radial-gradient(900px 560px at 96% 4%, var(--glow-b), transparent 64%), radial-gradient(760px 520px at 62% 108%, var(--glow-c), transparent 66%);position:fixed;inset:0}.kit-grain{z-index:1;pointer-events:none;opacity:var(--grain-opacity);mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='180' height='180' filter='url(%23n)'/></svg>");background-size:180px 180px;position:fixed;inset:0}.kit-shell{border:1px solid var(--hairline);border-radius:var(--radius-xl);background:linear-gradient(180deg, color-mix(in srgb, var(--surface-3) 88%, var(--text-bright) 12%), var(--surface-1));box-shadow:var(--inset-top), var(--shadow-pop);padding:6px;position:relative}.kit-core{border-radius:calc(var(--radius-xl) - 6px);background:var(--surface-2);min-width:0;box-shadow:var(--inset-top);flex-direction:column;gap:12px;padding:16px;display:flex}.kit-shell-accent{border-color:color-mix(in srgb, var(--accent) 34%, var(--hairline))}.kit-shell-accent:after{content:"";border-radius:var(--radius-xl) var(--radius-xl) 0 0;background:linear-gradient(90deg, transparent, var(--accent), transparent);opacity:.85;pointer-events:none;height:1px;position:absolute;inset:0 0 auto}.kit-eyebrow{border:1px solid var(--hairline);background:color-mix(in srgb, var(--surface-3) 70%, transparent);font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--text-dim);border-radius:999px;align-self:flex-start;align-items:center;gap:6px;padding:3px 9px;font-size:10.5px;display:inline-flex}.kit-domain{letter-spacing:.06em;color:var(--text-dim);align-items:center;gap:5px;font-size:10.5px;display:inline-flex}.kit-domain:before{content:"";background:var(--c-mech);border-radius:2px;width:7px;height:7px}[data-domain=mech]>.kit-domain:before,.kit-domain[data-domain=mech]:before{background:var(--c-mech)}.kit-domain[data-domain=em]:before{background:var(--c-em)}.kit-domain[data-domain=thermo]:before{background:var(--c-thermo)}.kit-domain[data-domain=quantum]:before{background:var(--c-quantum)}:root[data-theme=contrast] .kit-domain:before{background:0 0;border:1px solid #000}.kit-rule{background:linear-gradient(90deg, transparent, var(--hairline-strong) 18%, var(--hairline-strong) 82%, transparent);border:0;height:1px}.kit-btn{border:1px solid var(--hairline);background:color-mix(in srgb, var(--surface-3) 78%, transparent);min-height:42px;color:var(--text-bright);font:inherit;cursor:pointer;transition:transform var(--t-base) var(--ease), background var(--t-base) var(--ease), border-color var(--t-base) var(--ease), box-shadow var(--t-base) var(--ease);border-radius:999px;align-items:center;gap:10px;padding:0 18px;font-size:13px;font-weight:560;display:inline-flex}.kit-btn:hover{background:var(--surface-hover);border-color:var(--hairline-strong);box-shadow:var(--shadow-pop)}.kit-btn:active{transform:translateY(1px)scale(.99)}.kit-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.kit-btn-primary{border-color:color-mix(in srgb, var(--accent) 46%, transparent);background:linear-gradient(180deg, color-mix(in srgb, var(--accent) 92%, #fff 8%), var(--accent));color:var(--on-accent);font-weight:640}.kit-btn-primary:hover{background:linear-gradient(180deg, var(--accent), color-mix(in srgb, var(--accent) 88%, #000 12%));border-color:var(--accent)}.kit-btn-ico{background:color-mix(in srgb, var(--text-bright) 10%, transparent);width:26px;height:26px;font-family:var(--mono);transition:transform var(--t-base) var(--ease-spring);border-radius:999px;place-items:center;margin-right:-8px;font-size:12px;display:grid}.kit-btn:hover .kit-btn-ico{transform:translate(2px,-1px)scale(1.06)}.kit-num{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em}@keyframes kit-rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:no-preference){.kit-rise{animation:kit-rise .62s var(--ease) backwards}.kit-rise-2{animation-delay:70ms}.kit-rise-3{animation-delay:.14s}.kit-rise-4{animation-delay:.21s}}@media (pointer:coarse){.kit-btn{min-height:44px}.kit-btn-ico{width:28px;height:28px}}@media (prefers-reduced-motion:reduce){.kit-rise,.kit-rise-2,.kit-rise-3,.kit-rise-4{animation:none}.kit-btn,.kit-btn-ico{transition:none}.kit-grain{display:none}}@media (pointer:coarse){.topbar .btn,.btn,.brand,.mini,.panel-toggle,.seg button,.chip,.plot-btn,.plot-btn-tool,.time-scale-input,.field-pill,.cascade-trigger,.cascade-item,.plot-check,.checkbox{min-height:44px}input:where(:not([type=checkbox],[type=radio])),select,textarea{min-height:40px}input[type=checkbox],input[type=radio]{width:20px;height:20px}.dim,.quick-label,.hint,.readout-grid .k{font-size:12px}}@media (max-width:430px){.time-scale{flex-wrap:wrap}.time-scale-input{min-width:62px}}
