*{box-sizing:border-box}html,body{background:#0f1115;height:100%;margin:0}html[data-theme=light],html[data-theme=light] body{background:#f6f7f9}.o21{--bg:#0f1115;--panel:#151920;--panel-2:#1a1f27;--fg:#e6e9ee;--muted:#8a9099;--faint:#5c626b;--line:#23272e;--line-strong:#343a42;--focus:#7cc4ff;--accent:#f2a541;--err:#ff7b7b;--sans:system-ui, -apple-system, "Segoe UI", "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;background:var(--bg);height:100dvh;color:var(--fg);font-family:var(--sans);color-scheme:dark;-webkit-tap-highlight-color:transparent;flex-direction:column;font-size:13px;line-height:1.4;display:flex;position:relative;overflow:hidden}.o21[data-theme=light]{--bg:#f6f7f9;--panel:#fff;--panel-2:#eef0f4;--fg:#1b1f26;--muted:#5b6472;--faint:#9aa3b2;--line:#dfe3e9;--line-strong:#c5cbd4;--focus:#2f7ad8;--accent:#b86e00;--err:#c0392b;color-scheme:light}.o21 button,.o21 input,.o21 select{font:inherit;color:inherit}.o21 button{background:var(--panel-2);border:1px solid var(--line-strong);cursor:pointer;white-space:nowrap;border-radius:4px;padding:3px 9px;line-height:1.3}.o21 button:hover{border-color:var(--muted)}.o21 button:disabled{color:var(--faint);border-color:var(--line);cursor:default;background:0 0}.o21 button[aria-pressed=true]{background:var(--fg);color:var(--bg);border-color:var(--fg)}.o21 button.o21-quiet{color:var(--muted);background:0 0;border-color:#0000;padding:2px 5px}.o21 button.o21-quiet:hover{color:var(--fg)}.o21 button.o21-small{padding:2px 7px;font-size:12px}.o21 button.o21-link{color:var(--focus);font-family:var(--mono);background:0 0;border:none;padding:0 2px;text-decoration:underline dotted}.o21 button.o21-link[aria-current=true]{color:var(--fg);font-weight:600;text-decoration:none}.o21 button.o21-primary{border-color:var(--accent);color:var(--accent)}.o21 button.o21-key{font-family:var(--mono);min-width:2.4em;font-weight:600}.o21 button.o21-attention{border-color:var(--accent);color:var(--accent)}.o21 :focus-visible{outline:2px solid var(--focus);outline-offset:1px}.o21 input[type=text],.o21 input[type=number]{background:var(--panel);border:1px solid var(--line-strong);font-family:var(--mono);border-radius:4px;padding:2px 5px}.o21 input.o21-num{width:4.6em}.o21 input.o21-mat{width:9em}.o21 input.o21-name{width:9em;min-width:0;font-family:var(--sans);background:0 0;border-color:#0000;flex:6em}.o21 input.o21-name:hover,.o21 input.o21-name:focus{border-color:var(--line-strong)}.o21 input[type=range]{accent-color:var(--accent);vertical-align:middle;width:6em}.o21 input[type=color]{border:1px solid var(--line-strong);cursor:pointer;background:0 0;border-radius:3px;width:20px;height:20px;padding:0}.o21 input[type=checkbox],.o21 input[type=radio]{accent-color:var(--accent);vertical-align:middle;width:15px;height:15px;margin:0 4px 0 0}.o21-top{border-bottom:1px solid var(--line);background:var(--panel);flex-wrap:wrap;align-items:center;gap:8px 14px;padding:7px 14px;display:flex}.o21-title h1{letter-spacing:.01em;margin:0;font-size:16px;font-weight:600;display:inline}.o21-sub{color:var(--muted);margin-left:10px;font-size:12px}.o21-n{align-items:center;gap:6px;display:inline-flex}.o21-n input[type=range]{width:110px}.o21-counts{color:var(--muted);font-variant-numeric:tabular-nums}.o21-seg{display:inline-flex}.o21-seg button{border-radius:0}.o21-seg button:first-child{border-radius:4px 0 0 4px}.o21-seg button:last-child{border-radius:0 4px 4px 0;margin-left:-1px}.o21-presets{align-items:center;gap:5px;display:inline-flex}.o21-spacer{flex:1}.o21-muted{color:var(--muted)}.o21-err{color:var(--err);font-size:12px}.o21-small-text{font-size:12px}.o21-hint{margin-left:auto;font-size:11px}.o21-body{flex:auto;min-height:0;display:flex}.o21-views{--split:52%;flex:auto;min-width:0;min-height:0;display:flex}.o21-view{background:var(--bg);flex-direction:column;min-width:0;min-height:0;display:flex}.o21-view-3d{flex:0 0 var(--split)}.o21-right{--vsplit:56%;flex-direction:column;flex:1 1 0;min-width:0;min-height:0;display:flex}.o21-view-2d{flex:0 0 var(--vsplit)}.o21-hsplit{cursor:row-resize;background:var(--line);touch-action:none;flex:0 0 7px}.o21-hsplit:hover,.o21-hsplit:focus-visible{background:var(--line-strong)}.o21-split{cursor:col-resize;background:var(--line);touch-action:none;flex:0 0 7px}.o21-split:hover,.o21-split:focus-visible{background:var(--line-strong)}.o21-tools{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:4px 6px;padding:5px 8px;font-size:12px;display:flex}.o21-inline{align-items:center;gap:4px;display:inline-flex}.o21-stage{flex:auto;min-height:0;position:relative;overflow:hidden}.o21-stage canvas{touch-action:none;cursor:crosshair;display:block}.o21-3d-labels{pointer-events:none;position:absolute;inset:0}.o21-3d-labels span{color:var(--muted);white-space:nowrap;font-family:EB Garamond,Georgia,serif;font-size:14px;font-style:italic;position:absolute;transform:translate(-50%,-50%)}.o21-infinity{width:30px;height:30px;color:var(--faint);border-color:var(--line);background:var(--bg);border-radius:999px;padding:0;font-size:18px;line-height:1;position:absolute;top:8px;left:50%;transform:translate(-50%)}.o21-infinity.has{color:var(--fg);border-color:var(--muted)}.o21-infinity.active{border-color:var(--fg)}.o21-infinity.hover{background:var(--panel-2)}.o21-infinity small{background:var(--accent);color:#000;border-radius:8px;padding:0 4px;font-size:10px;position:absolute;top:-6px;right:-6px}.o21-side{background:var(--panel);scrollbar-width:thin;flex-wrap:wrap;flex:1 1 0;align-content:flex-start;min-height:0;display:flex;overflow-y:auto}.o21-panel{border-bottom:1px solid var(--line);border-right:1px solid var(--line);flex:340px;min-width:0}.o21-panel>summary{cursor:pointer;user-select:none;padding:7px 12px;font-weight:600;list-style:none}.o21-panel>summary:before{content:"▸";width:1em;color:var(--muted);transition:transform .15s;display:inline-block}.o21-panel[open]>summary:before{transform:rotate(90deg)}@media (prefers-reduced-motion:reduce){.o21-panel>summary:before{transition:none}}.o21-panel-body{padding:2px 12px 10px}.o21-panel-body h4{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:10px 0 4px;font-size:12px;font-weight:600}.o21-row{flex-wrap:wrap;align-items:center;gap:4px 6px;margin:4px 0;display:flex}.o21-sep{width:8px}.o21-entry{flex-wrap:wrap;align-items:center;gap:4px;margin:4px 0 8px;display:flex}.o21-vec-head{align-items:center;gap:8px;margin-top:6px;display:flex}.o21-vec{font-family:var(--mono);font-size:15px;font-weight:600}.o21-badge{border:1px solid var(--line-strong);color:var(--muted);border-radius:3px;padding:0 5px;font-size:11px}.o21-badge.o21-warn{color:var(--accent);border-color:var(--accent)}.o21-dl{grid-template-columns:max-content 1fr;gap:3px 10px;margin:6px 0;display:grid}.o21-dl dt{color:var(--muted);white-space:nowrap}.o21-dl dd{font-family:var(--mono);overflow-wrap:anywhere;margin:0;font-size:12px}.o21-matrix{border-collapse:collapse;vertical-align:middle;font-family:var(--mono);font-size:12px;display:inline-table}.o21-matrix td{text-align:right;padding:0 6px}.o21-matrix tr td:first-child{border-left:1px solid var(--muted)}.o21-matrix tr td:last-child{border-right:1px solid var(--muted)}.o21-list{font-family:var(--mono);margin:2px 0;padding:0;font-size:12px;list-style:none}.o21-list li{flex-wrap:wrap;align-items:center;gap:4px;padding:1px 0;display:flex}.o21-list li.o21-current{color:var(--fg)}.o21-chip{vertical-align:middle;border:1px solid #0000004d;border-radius:50%;width:10px;height:10px;display:inline-block}.o21-tag{border:1px solid var(--line);border-radius:3px;align-items:center;gap:4px;padding:0 5px;font-size:12px;display:inline-flex}.o21-layer-list{margin:6px 0}.o21-layer{border-top:1px solid var(--line);padding:3px 0}.o21-layer-main,.o21-layer-sub{align-items:center;gap:4px;display:flex}.o21-layer-main .o21-name{flex:4em}.o21-layer-sub{color:var(--muted);padding-left:22px;font-size:11px}.o21-layer-sub .o21-layer-extra{flex:auto}.o21-layer .o21-count{font-family:var(--mono);color:var(--muted);text-align:right;min-width:2em;font-size:11px}.o21-layer .o21-op{width:52px}.o21-layer-extra{color:var(--muted);align-items:center;gap:6px;font-size:11px;display:inline-flex}.o21-mini{align-items:center;gap:2px;display:inline-flex}.o21-note{color:var(--accent);cursor:help;font-weight:700}.o21-indent{padding-left:22px}.o21-cond{font-family:var(--mono);flex-wrap:wrap;align-items:center;gap:3px;margin:4px 0;font-size:12px;display:flex}.o21-cond input.o21-num{width:3.6em}.o21-target-list{flex-direction:column;gap:2px;margin-left:6px;display:flex}.o21-hist{margin-top:6px}.o21-mats{align-items:flex-start;gap:12px}.o21-mats>div{flex-direction:column;gap:2px;display:flex}.o21-about p{color:var(--muted);margin:6px 0}.o21-about kbd{font-family:var(--mono);border:1px solid var(--line-strong);color:var(--fg);border-radius:3px;padding:0 4px;font-size:11px}.o21-tooltip{pointer-events:none;background:var(--panel);border:1px solid var(--line-strong);z-index:5;border-radius:4px;max-width:280px;padding:5px 8px;font-size:12px;display:none;position:absolute;box-shadow:0 4px 14px #00000059}.o21-toast{opacity:0;background:var(--panel);border:1px solid var(--line-strong);z-index:6;pointer-events:none;border-radius:5px;max-width:min(560px,90vw);padding:7px 12px;transition:opacity .18s,transform .18s;position:absolute;bottom:14px;left:50%;transform:translate(-50%,10px)}.o21-toast.show{opacity:1;transform:translate(-50%)}@media (prefers-reduced-motion:reduce){.o21-toast{transition:none}}@media (width<=980px){.o21{height:auto;min-height:100vh;overflow:visible}.o21-body{flex-direction:column}.o21-views{flex-direction:column;height:auto}.o21-right{display:contents}.o21-view-3d,.o21-view-2d{flex:none;height:46dvh;min-height:300px}.o21-split,.o21-hsplit{cursor:row-resize;flex-basis:8px}.o21-side{border-top:1px solid var(--line);flex:none;overflow:visible}.o21-panel{border-right:none}.o21-hint{display:none}.o21-tools button{min-height:30px}}
