:root{--bg:#151c2b;--bg2:#1b2335;--bg3:#232d44;--fg:#dfe5f0;--muted:#8b96ab;--accent:#ff8f29;--hover:#4daeff;--err:#ff6b6b;--left:300px;--right:300px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font:13px/1.4 system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--fg);margin:0;overflow:hidden}.muted{color:var(--muted)}.small{font-size:12px}.topbar{background:var(--bg2);border-bottom:1px solid #0006;align-items:center;gap:16px;height:44px;padding:0 12px;display:flex}.actions{scrollbar-width:none;overflow-x:auto}.actions>*{flex:none}.brand{align-items:baseline;gap:8px;display:flex}.brand__name{font-size:15px;font-weight:700}.brand__tag{color:var(--muted)}.actions{flex:1;align-items:center;gap:6px;display:flex}.button{background:var(--bg3);color:var(--fg);font:inherit;cursor:pointer;border:1px solid #ffffff1a;border-radius:6px;padding:4px 10px}.button:hover{border-color:#ffffff40}.button.primary{background:#2c5fa8;border-color:#3d73c4}.button.ghost{color:var(--muted);background:0 0}.status{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:45vw;overflow:hidden}.status[data-state=error]{color:var(--err)}.status[data-state=busy]{color:var(--hover)}.layout{grid-template-columns:var(--left) 5px 1fr 5px var(--right);height:calc(100% - 44px);display:grid}.pane{background:var(--bg2);flex-direction:column;min-width:0;min-height:0;display:flex}.pane--view{background:#1c2130;position:relative}.pane__head{border-bottom:1px solid #0004;justify-content:space-between;align-items:baseline;gap:8px;padding:8px 10px 6px;display:flex}.pane__head h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0;font-size:12px}.splitter{cursor:col-resize;background:#0b0f18}.splitter:hover,.splitter.dragging{background:#2c5fa8}#viewport{touch-action:none;width:100%;height:100%;display:block}.viewhelp{pointer-events:none;position:absolute;bottom:8px;left:10px}.overlay{text-align:center;pointer-events:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.overlay--hint p{margin:4px 0}.overlay--error{pointer-events:auto;background:#2a1620ee;border:1px solid #ff6b6b88;border-radius:10px;max-width:70%;padding:14px 20px}.overlay__title{color:var(--err);margin:0 0 6px;font-weight:700}.overlay__msg{word-break:break-word;margin:0 0 8px;font-family:ui-monospace,monospace;font-size:12px}.overlay--busy{background:#0008;border-radius:8px;align-items:center;gap:10px;padding:10px 16px;display:flex}[hidden]{display:none!important}.spinner{border:2px solid #fff4;border-top-color:#fff;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.dropzone{border:2px dashed var(--hover);pointer-events:none;z-index:10;background:#4daeff14;border-radius:12px;justify-content:center;align-items:center;font-size:20px;display:flex;position:fixed;inset:8px}.tree{outline:none;flex:1;padding:4px 0;font-size:12.5px;overflow:auto}.tree ul{margin:0;padding:0;list-style:none}.tree li>ul{padding-left:14px}.row{cursor:default;white-space:nowrap;align-items:center;gap:6px;padding:1px 8px 1px 4px;display:flex}.row:hover,.row.hovered{background:#4daeff22}.row.selected{box-shadow:inset 2px 0 0 var(--accent);background:#ff8f2933}.tree:focus .row.selected{background:#ff8f2955}.caret{text-align:center;width:12px;color:var(--muted);cursor:pointer;flex:none}.kind{font-weight:600}.kind[data-k=Face]{color:#9fd0ff}.kind[data-k=Edge]{color:#c3e88d}.kind[data-k=Vertex]{color:#f78c6c}.kind[data-k=Wire]{color:#c792ea}.rid{color:var(--muted)}.badge{color:var(--muted);margin-left:auto;font-size:11px}.ori{color:#ffcb6b;border:1px solid #ffcb6b55;border-radius:3px;padding:0 3px;font-size:10px}.more{color:var(--hover);cursor:pointer;padding-left:22px}.props{padding:8px 10px;overflow:auto}.props table{border-collapse:collapse;width:100%}.props td{vertical-align:top;border-bottom:1px solid #ffffff0d;padding:3px 4px}.props td:first-child{color:var(--muted);width:45%}.props h3{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:12px 0 4px;font-size:12px}.props a{color:var(--hover);cursor:pointer;text-decoration:none}.props .note{color:var(--muted);margin-top:12px;font-size:12px}.props a.ent{font-variant-numeric:tabular-nums}.props a.ent:hover{text-decoration:underline}.props .count{color:var(--muted);text-transform:none;margin-left:4px;font-weight:400}.props ul.ents{margin:0;padding:0;list-style:none}.props ul.ents li{border-bottom:1px solid #ffffff0d;padding:2px 4px}.props .sub{padding-left:14px;font-size:11px}.props details summary{cursor:pointer;color:var(--muted);font-size:12px}.tag{color:var(--muted);border:1px solid #ffffff30;border-radius:3px;margin:1px 0;padding:0 4px;font-size:10px;display:inline-block}.tag.warn,.warn{color:#ff9e64;border-color:#ff9e6466}.shared{color:#89ddff;margin-left:2px;font-size:10px}.vp-tools{z-index:2;gap:6px;display:flex;position:absolute;top:8px;right:8px}.vp-tools button{color:inherit;cursor:pointer;background:#1e2230cc;border:1px solid #fff2;border-radius:4px;padding:3px 8px;font-size:12px}.vp-tools button[aria-pressed=true]{border-color:var(--hover);color:var(--hover)}.hud{color:var(--muted);pointer-events:none;z-index:2;background:#1e2230aa;border-radius:3px;padding:2px 6px;font-size:12px;position:absolute;bottom:30px;left:8px}.hud:empty{display:none}.okc,.ok{color:#7fd88f}.bad,.tag.bad{color:#ff6b6b;border-color:#ff6b6b77}.ok-badge,.bad-badge{text-transform:uppercase;letter-spacing:.04em;border-radius:10px;padding:1px 8px;font-size:11px;font-weight:700;display:inline-block}.ok-badge{color:#7fd88f;background:#7fd88f22;border:1px solid #7fd88f66}.bad-badge{color:#ff6b6b;background:#ff6b6b22;border:1px solid #ff6b6b77}.props .verdict{margin:4px 0 8px}.props table.checklist td:first-child{width:auto;color:var(--fg)}.props table.checklist td:last-child{text-align:right;font-variant-numeric:tabular-nums;width:3em}.props ul.check li{padding:4px}.chips{flex-wrap:wrap;align-items:center;gap:6px;margin:4px 0;display:flex}.chip,button.mini{font:inherit;cursor:pointer;background:var(--bg3);color:var(--fg);border:1px solid #fff2;border-radius:12px;padding:2px 9px;font-size:12px}button.mini{color:var(--muted);border-radius:4px;padding:0 7px;font-size:11px}.chip:hover:not(:disabled),button.mini:hover:not(:disabled){border-color:#fff5}.chip[aria-pressed=true]{color:#ff9fd2;background:#f542a033;border-color:#f542a0}.chip:disabled,button.mini:disabled{opacity:.45;cursor:default}.chip b{margin-left:3px}.props .button{font-size:12px}.hist-title{margin:8px 0 0;font-size:12px}svg.hist{width:100%;height:92px;display:block}svg.hist .hit{fill:#0000;cursor:pointer}svg.hist .bar{fill:#4daeff99}svg.hist .bin:hover .bar{fill:#4daeffdd}svg.hist .bin.sel .bar{fill:#f542a0}svg.hist .bin.sel .hit{fill:#f542a01a}svg.hist .bin.empty .hit{cursor:default}svg.hist text{fill:var(--muted);font-size:9px}svg.hist text.n{text-anchor:middle;fill:var(--fg)}.progress{background:var(--bg3);border-radius:3px;height:6px;margin:8px 0 4px;overflow:hidden}.progress>span{background:var(--hover);height:100%;transition:width .15s;display:block}.props table.diff th{text-align:right;color:var(--muted);padding:2px 4px;font-size:11px;font-weight:400}.props table.diff td{text-align:right;font-variant-numeric:tabular-nums}.props table.diff td:first-child{text-align:left;width:auto}.props table.diff td.better{color:#7fd88f}.props table.diff td.worse{color:#ff6b6b}.props table.diff td.chg{color:#ffcb6b}svg.uv{background:#0d111a;border-radius:4px;width:100%;max-width:320px;display:block}svg.uv .uvbox{fill:none;stroke:#fff2;stroke-dasharray:3 3}svg.uv path{fill:none;stroke:#c3e88d;stroke-width:1.6px}svg.uv circle{fill:#c3e88d}svg.uv .ent{cursor:pointer}svg.uv .ent:hover path{stroke:var(--hover);stroke-width:3px}svg.uv .ent:hover circle{fill:var(--hover)}svg.uv text{fill:var(--muted);font-size:10px}.mark{flex:none;font-size:9px}.mark.here{color:#ff6b6b}.mark.below{color:#ff6b6b66}.tree.only-bad li:not([data-bad]){display:none}.pane__head .filter{color:var(--muted);cursor:pointer;white-space:nowrap;align-items:center;gap:4px;margin-left:auto;display:flex}.tabs{gap:2px;display:flex}.tabs button,.nav button{font:inherit;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:2px 6px;font-size:12px}.tabs button[aria-selected=true]{color:var(--fg);border-bottom-color:var(--accent)}.nav{gap:2px;display:flex}.nav button{border:1px solid #ffffff1a;border-radius:4px;padding:0 7px;font-size:16px;line-height:1}.nav button:disabled{opacity:.3;cursor:default}.hbadge{text-align:center;letter-spacing:0;border-radius:8px;min-width:16px;padding:0 4px;font-size:10px;display:inline-block}.hbadge[data-state=bad]{color:#1b0d0d;background:#ff6b6b}.hbadge[data-state=warn]{color:#1b120d;background:#ff9e64}.hbadge[data-state=ok]{color:#7fd88f}.model-tag{z-index:2;color:#7fd88f;background:#7fd88f22;border:1px solid #7fd88f66;border-radius:4px;padding:2px 8px;font-size:12px;font-weight:600;position:absolute;top:8px;left:8px}.help-touch{display:none}.splitter{touch-action:none;position:relative}.splitter:after{content:"";z-index:3;position:absolute;inset:0 -9px}@media (pointer:coarse){.help-mouse{display:none}.help-touch{display:inline}.row{padding-top:5px;padding-bottom:5px}.caret{width:22px}.button,.vp-tools button{padding:7px 12px}.tabs button{padding:8px}.nav button{padding:4px 12px;font-size:20px}.chip{padding:6px 12px}button.mini{padding:4px 10px}.props ul.ents li{padding:6px 4px}.props a.ent{padding:2px 0}.pane__head .filter input{width:18px;height:18px}.splitter{background:#0b0f18}.splitter:before{content:"";background:#ffffff40;border-radius:2px;width:3px;height:36px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}}@media (max-width:900px){.layout{grid-template-columns:var(--pleft,40%) 5px 1fr;grid-template-rows:var(--top,55%) 5px 1fr;grid-template-areas:"view view view""hs hs hs""tree vs props"}.pane--tree{grid-area:tree}.pane--view{grid-area:view}.pane--props{grid-area:props}.splitter[data-split=left]{cursor:row-resize;grid-area:hs}.splitter[data-split=left]:after{inset:-9px 0}.splitter[data-split=left]:before{width:36px;height:3px}.splitter[data-split=right]{grid-area:vs}.brand__tag,.status{display:none}.viewhelp{right:10px}}.chip.seg[aria-pressed=true]{border-color:var(--hover);color:var(--hover);background:#4daeff26}#counts{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.props table.diff{font-size:12px}.props table.diff td{padding:2px 3px}.props table.diff td:first-child{overflow-wrap:anywhere}.props table.diff .ind{padding-left:10px;font-size:11px}
