:root{--accent: #0b74dc;--accent-soft: #e2f0fe;--bg: #eef0f3;--panel: #ffffff;--panel-2: #f6f7f9;--line: #d5d9e0;--line-soft: #e6e9ee;--text: #1c2129;--text-2: #5b6573;--title: #0a1017;--title-text: #e9ecf1;--ok: #2da44e;--warn: #b58100;--err: #d1242f;--vp-top: #cfd8e4;--vp-bottom: #fbfcfd;font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:13px;color:var(--text)}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);overflow:hidden}button{font:inherit;color:inherit}#app{display:flex;flex-direction:column;height:100vh}.titlebar{display:flex;align-items:center;gap:6px;height:38px;padding:0 8px;background:var(--title);color:var(--title-text);flex-shrink:0}.brand{display:flex;align-items:center;gap:7px;margin-right:12px}.brand-cat{height:30px;width:auto}.brand-word{height:15px;width:auto}.tb-group{display:flex;align-items:center;gap:2px}.tb-btn{background:none;border:0;padding:5px;border-radius:4px;cursor:pointer;color:var(--title-text);display:grid;place-items:center;--accent: #31a2fb}.tb-btn svg{width:19px;height:19px}.tb-btn:hover:not(:disabled){background:#ffffff1f}.tb-btn:disabled{opacity:.35;cursor:default}.tb-sep{width:1px;height:20px;background:#ffffff2e;margin:0 5px}.tb-spacer{flex:1}.doc-title{font-weight:600;cursor:pointer;padding:3px 10px;border-radius:4px}.doc-title:hover{background:#ffffff1a}.lang{background:#121c29;color:var(--title-text);border:1px solid #1f2c3d;border-radius:4px;padding:3px 6px;font:inherit}.cmdmgr{background:var(--panel-2);border-bottom:1px solid var(--line);flex-shrink:0}.cm-tools{display:flex;align-items:stretch;gap:1px;padding:4px 6px 2px;overflow-x:auto;min-height:64px}.cm-btn{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:3px;min-width:64px;max-width:86px;padding:5px 4px 4px;border:1px solid transparent;border-radius:5px;background:none;cursor:pointer;font-size:11px;line-height:1.15;text-align:center;color:var(--text)}.cm-btn svg{width:26px;height:26px;flex-shrink:0}.cm-btn:hover:not(:disabled){background:var(--accent-soft);border-color:#bfd6f6}.cm-btn.active{background:#cfe2fb;border-color:var(--accent)}.cm-btn:disabled{opacity:.35;cursor:default}.cm-sep{width:1px;background:var(--line);margin:6px 4px}.cm-group{display:flex;align-items:stretch}.cm-drop{border:1px solid transparent;background:none;padding:0 2px;font-size:10px;color:var(--text-dim, #667);cursor:pointer;border-radius:3px}.cm-drop:hover{background:var(--accent-soft);border-color:#bfd6f6}.cm-tabs{display:flex;gap:0;padding:0 6px}.cm-tab{background:none;border:0;border-top:2px solid transparent;padding:4px 14px 5px;cursor:pointer;color:var(--text-2);font-size:12px}.cm-tab.active{color:var(--accent);border-top-color:var(--accent);background:var(--panel);font-weight:600}.main{flex:1;display:flex;min-height:0}.left{width:280px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}.left-tabs{display:flex;border-bottom:1px solid var(--line);background:var(--panel-2)}.left-tab{background:none;border:0;padding:5px 10px;cursor:pointer;color:var(--text-2);border-bottom:2px solid transparent}.left-tab svg{width:18px;height:18px}.left-tab.active{color:var(--accent);border-bottom-color:var(--accent);background:var(--panel)}.tree,.pm{flex:1;overflow:auto;min-height:0}.tree{padding:4px 0;user-select:none}.tree-row{display:flex;align-items:center;gap:4px;height:24px;padding-right:8px;cursor:default;white-space:nowrap}.tree-row:hover{background:#f0f4fa}.tree-row.selected{background:#d6e6fb}.tree-row.drop-target{box-shadow:inset 0 -2px 0 var(--accent)}.tree-root{font-weight:600}.tree-toggle{width:12px;font-size:10px;color:var(--text-2);cursor:pointer;text-align:center}.tree-icon svg{width:17px;height:17px;display:block}.tree-name{overflow:hidden;text-overflow:ellipsis}.tree-row.suppressed .tree-name,.tree-row.rolled .tree-name{color:#9aa3ae;font-style:italic}.tree-row.rolled .tree-icon{opacity:.4}.tree-row.has-error .tree-name{color:var(--err)}.tree-err svg{width:15px;height:15px;display:block}.tree-warn{color:var(--warn)}.tree-warn svg{width:15px;height:15px;display:block}.tree-row.hover-hit{background:#fff1dc;box-shadow:inset 3px 0 #ff8a00}.tree-row.hidden-entity .tree-icon{opacity:.4}.tree-row.hidden-entity .tree-name{color:#9aa3ae}.tree-eye{margin-left:auto;color:var(--text-2);cursor:pointer;opacity:.55}.tree-eye:hover{opacity:1}.tree-row.hidden-entity .tree-eye{opacity:.9}.tree-eye svg{width:15px;height:15px;display:block}.ctx-banner{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:6px 8px;margin:2px 6px 6px;padding:8px;border-radius:6px;background:var(--accent-soft);border:1px solid var(--accent);color:var(--text);white-space:normal}.ctx-banner-icon svg{width:20px;height:20px;display:block;color:var(--accent)}.ctx-banner-text{font-weight:600;line-height:1.3;overflow-wrap:anywhere}.ctx-banner .ctx-back{grid-column:1 / -1;padding:4px 8px;font-size:12px}.ctx-chip{position:absolute;left:10px;top:10px;display:flex;align-items:center;gap:6px;padding:6px 12px 6px 8px;border:1px solid var(--accent);border-radius:18px;background:var(--accent);color:#fff;font:inherit;font-weight:600;cursor:pointer;box-shadow:0 2px 8px #0000002e;z-index:6}.ctx-chip svg{width:18px;height:18px;display:block;--accent: #fff}.ctx-chip:hover{filter:brightness(1.08)}@media(max-width:760px){.ctx-chip{left:8px;top:8px}}.tree-row.tree-sub .tree-name{color:var(--text-2)}.explode-hint{color:var(--text-2);font-size:12px;max-width:260px}.pm-input.mate-kind{width:100%;margin-bottom:6px}.rollback{height:6px;margin:3px 10px;border-radius:3px;background:#2e6fd0;cursor:ns-resize;opacity:.85}.rollback:hover,.rollback.dragging{opacity:1;box-shadow:0 0 0 2px #cfe0fa}.pm{background:var(--panel)}.pm-top{display:flex;align-items:center;justify-content:space-between;padding:8px 8px 8px 10px;border-bottom:1px solid var(--line-soft);background:linear-gradient(#fafbfc,#f1f3f6)}.pm-head{display:flex;align-items:center;gap:7px;font-weight:600;font-size:14px;min-width:0}.pm-head-icon svg{width:22px;height:22px;display:block}.pm-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pm-actions{display:flex;gap:2px}.pm-actions button{background:none;border:1px solid transparent;border-radius:4px;padding:2px;cursor:pointer}.pm-actions button:hover{background:#fff;border-color:var(--line)}.pm-actions svg{width:22px;height:22px;display:block}.pm-empty{padding:20px 14px;color:var(--text-2);line-height:1.5}.pm-sec{border-bottom:1px solid var(--line-soft)}.pm-sec-head{display:flex;align-items:center;gap:6px;padding:7px 10px;font-weight:600;cursor:pointer;color:#2b3440}.pm-sec-head:after{content:"\25be";margin-left:auto;font-size:10px;color:var(--text-2)}.pm-sec.collapsed .pm-sec-head:after{content:"\25b8"}.pm-sec.collapsed .pm-sec-body{display:none}.pm-sec-icon svg{width:17px;height:17px;display:block}.pm-sec-body{padding:2px 10px 10px;display:flex;flex-direction:column;gap:7px}.pm-note{color:var(--text-2);line-height:1.45}.pm-note.status-full{color:var(--text);font-weight:600}.pm-note.status-under{color:#1d5fd1;font-weight:600}.pm-note.status-over{color:var(--err);font-weight:600}.pm-note.warn{color:#b26a00;font-weight:600}.pm-error{display:flex;gap:6px;align-items:flex-start;margin:8px;padding:7px 8px;border-radius:5px;background:#fdecee;color:#8e1b24;line-height:1.4}.pm-error svg{width:17px;height:17px;flex-shrink:0}.pm-row{display:flex;align-items:center;gap:8px}.pm-label{color:var(--text-2);flex:0 0 96px;font-size:12px}.pm-selwrap .pm-label{margin-bottom:3px}.pm-field{flex:1;display:flex;align-items:center;gap:4px;min-width:0}.pm-slider{flex:1;min-width:0}.pm-slider-val{flex:0 0 5ch;text-align:right;font-variant-numeric:tabular-nums;color:var(--text);font-size:12px}.pm-input{width:100%;min-width:0;padding:4px 6px;border:1px solid #c6ccd5;border-radius:4px;font:inherit;background:#fff}.pm-input:focus{outline:2px solid #b8d3f7;border-color:var(--accent)}.pm-input.invalid{border-color:var(--err);background:#fff5f5}.pm-input.equation{color:var(--accent, #1a5fd0);font-style:italic}.pm-color{width:64px;height:26px;padding:0 2px;border:1px solid var(--line-soft);border-radius:4px;background:transparent}.pm-unit{color:var(--text-2);font-size:12px;min-width:20px}.look-groups{display:flex;flex-wrap:wrap;gap:3px}.look-group{border:1px solid #c6ccd5;background:#fff;border-radius:11px;padding:2px 8px;font-size:11px;cursor:pointer}.look-group:hover{border-color:var(--accent)}.look-group.active{background:var(--accent);border-color:var(--accent);color:#fff}.look-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px}.look-swatch{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 2px 3px;border:1px solid transparent;border-radius:5px;background:none;cursor:pointer;font-size:10.5px;line-height:1.15;text-align:center;color:var(--text)}.look-swatch img,.look-dot{width:56px;height:56px;display:block}.look-dot{border-radius:50%;margin:4px;width:48px;height:48px}.look-swatch:hover{background:var(--accent-soft);border-color:#bfd6f6}.look-swatch.active{background:#cfe2fb;border-color:var(--accent)}.look-name{min-height:2.3em}.look-colors{flex-wrap:wrap;gap:4px}.look-chip{width:18px;height:18px;border-radius:50%;border:1px solid rgba(0,0,0,.25);padding:0;cursor:pointer}.look-chip.active{outline:2px solid var(--accent);outline-offset:1px}.look-range{width:100%;min-width:0}.look-size{min-width:52px;text-align:right}.look-current{font-weight:600}.pm-check{display:flex;align-items:center;gap:6px;cursor:pointer}.pm-buttons{display:flex;flex-wrap:wrap;gap:4px}.pm-btn{display:flex;align-items:center;gap:4px;padding:4px 9px;border:1px solid #c6ccd5;background:#fff;border-radius:4px;cursor:pointer;font-size:12px}.pm-btn:hover{border-color:var(--accent);background:var(--accent-soft)}.pm-btn svg{width:16px;height:16px}.pm-textarea{resize:vertical;min-height:44px;line-height:1.4;font-family:inherit}.bug-face{display:flex;flex-direction:column;gap:4px;padding:6px;border:1px solid var(--line-soft);border-radius:5px}.bug-face-head{display:flex;align-items:center;gap:6px;min-width:0}.bug-face-name{font-weight:600}.bug-face-feat{color:var(--text-2);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bug-face-rm{margin-left:auto;background:none;border:0;cursor:pointer;font-size:16px;line-height:1;color:var(--text-2);padding:0 4px;border-radius:3px}.bug-face-rm:hover{color:var(--err);background:#fdecee}.pm-list{list-style:none;margin:0;padding:0;border:1px solid var(--line-soft);border-radius:4px;max-height:180px;overflow:auto}.pm-list li{display:flex;align-items:center;justify-content:space-between;padding:3px 6px;border-bottom:1px solid var(--line-soft)}.pm-list li:last-child{border-bottom:0}.ff-list li.ff-entry{gap:4px;cursor:pointer;justify-content:flex-start}.ff-list li.ff-entry.active{background:#fff3e0;box-shadow:inset 3px 0 #ff8a00}.ff-list li.ff-entry.off .ff-text{color:var(--text-2);text-decoration:line-through}.ff-list .ff-text{flex:1;min-width:0}.ff-list .ff-btn{flex:none}.ff-list .ff-btn[disabled]{opacity:.3;cursor:default}.pm-x{border:0;background:none;cursor:pointer;color:var(--text-2);font-size:15px;line-height:1;padding:0 3px}.pm-x:hover{color:var(--err)}.pm-selbox{min-height:44px;max-height:150px;overflow:auto;border:1px solid #c6ccd5;border-radius:4px;background:#f7f9fc;padding:3px;cursor:pointer}.pm-selbox.active{background:#fff0f6;border-color:#d0558f;box-shadow:0 0 0 2px #f7d6e6}.pm-selitem{display:flex;align-items:center;justify-content:space-between;padding:2px 5px;background:#fff;border:1px solid var(--line-soft);border-radius:3px;margin-bottom:2px}.pm-selitem>span{flex:1}.pm-selitem select.tc-cont{width:auto;flex:none;padding:0 2px;margin:0 4px;height:20px;font-size:11px}.pm-selhint{color:#8c95a1;font-style:italic;padding:6px 4px}.viewport{position:relative;flex:1;min-width:0;background:linear-gradient(var(--vp-top),var(--vp-bottom));outline:none;overflow:hidden}.viewport canvas{position:absolute;inset:0;display:block}.viewport .overlay{touch-action:none}.hud{position:absolute;top:8px;left:50%;transform:translate(-50%);display:flex;gap:2px;padding:3px;background:#ffffffd1;border:1px solid rgba(0,0,0,.08);border-radius:7px;box-shadow:0 1px 4px #00000014;backdrop-filter:blur(4px)}.hud-btn{background:none;border:1px solid transparent;border-radius:5px;padding:3px;cursor:pointer;display:grid;place-items:center}.hud-btn svg{width:20px;height:20px}.hud-btn:hover{background:var(--accent-soft)}.hud-btn.active{background:#cfe2fb;border-color:#9cc1f2}.confirm{position:absolute;top:8px;right:10px;display:flex;flex-direction:column;gap:4px}.cc-btn{background:#ffffffe6;border:1px solid rgba(0,0,0,.1);border-radius:6px;padding:5px;cursor:pointer;box-shadow:0 1px 3px #0000001a}.cc-btn svg{width:26px;height:26px;display:block}.cc-btn:hover{background:#fff;border-color:var(--accent)}.toasts{position:absolute;bottom:14px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:6px;align-items:center;pointer-events:none}.toast{display:flex;align-items:center;gap:8px;background:#2b2f36;color:#fff;padding:7px 12px;border-radius:6px;box-shadow:0 3px 12px #0003;max-width:520px;transition:opacity .4s,transform .4s}.toast svg{width:18px;height:18px;display:block}.toast.out{opacity:0;transform:translateY(6px)}.dim-editor{position:absolute;transform:translate(-50%,-120%);display:flex;align-items:center;gap:4px;padding:5px;z-index:5;background:#fff;border:1px solid #9fb9dc;border-radius:6px;box-shadow:0 4px 16px #0000002e;flex-wrap:wrap;width:170px}.dim-editor-title{width:100%;font-size:11px;color:var(--text-2);padding:0 2px}.dim-editor input{flex:1;min-width:0;padding:4px 6px;border:1px solid #c6ccd5;border-radius:4px;font:inherit;font-size:14px}.dim-editor input.invalid{border-color:var(--err);background:#fff5f5}.dim-editor button{border:0;background:none;cursor:pointer;padding:0}.dim-editor button svg{width:22px;height:22px;display:block}.statusbar{display:flex;align-items:center;gap:16px;height:24px;padding:0 10px;background:var(--panel-2);border-top:1px solid var(--line);color:var(--text-2);font-size:12px;flex-shrink:0}.st-hint{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.st-coords{font-variant-numeric:tabular-nums;min-width:160px}.st-sketch{font-weight:600}.st-sketch.status-full{color:var(--text)}.st-sketch.status-under{color:#1d5fd1}.st-sketch.status-over{color:var(--err)}.st-units{font-weight:600}.ctx-menu{position:fixed;z-index:50;min-width:200px;background:#fff;border:1px solid #cfd5dd;border-radius:6px;box-shadow:0 6px 24px #0000002e;padding:4px}.ctx-item{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:4px;cursor:pointer}.ctx-item:hover{background:var(--accent-soft)}.ctx-item.disabled{opacity:.4;cursor:default}.ctx-icon{width:18px}.ctx-icon svg{width:17px;height:17px;display:block}.ctx-short{margin-left:auto;color:var(--text-2);font-size:11px}.ctx-sep{height:1px;background:var(--line-soft);margin:4px 2px}.dlg-back{position:fixed;inset:0;background:#14181e59;display:grid;place-items:center;z-index:40}.dlg{background:#fff;border-radius:8px;box-shadow:0 12px 40px #00000047;min-width:360px;max-width:min(92vw,520px);max-height:86vh;display:flex;flex-direction:column}.dlg.wide{max-width:min(94vw,680px)}.dlg.welcome-dlg{max-width:min(94vw,820px)}.welcome p{margin:0 0 14px;color:var(--text-2);font-size:13.5px}.welcome-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}.welcome-card{display:flex;flex-direction:column;text-align:left;padding:0 0 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);cursor:pointer;overflow:hidden;transition:border-color .12s,box-shadow .12s}.welcome-card:hover,.welcome-card:focus-visible{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft);outline:none}.welcome-card img{width:100%;height:auto;aspect-ratio:4 / 3;object-fit:cover;background:linear-gradient(var(--vp-top),var(--vp-bottom));border-bottom:1px solid var(--line-soft);margin-bottom:9px}.welcome-card b{padding:0 11px;font-size:13.5px}.welcome-card span{padding:3px 11px 0;color:var(--text-2);font-size:12px;line-height:1.4}.welcome p.welcome-later{margin:0;font-size:12px}@media(max-width:620px){.welcome-cards{grid-template-columns:1fr 1fr}}.dlg-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;font-weight:600;font-size:14px;border-bottom:1px solid var(--line-soft)}.dlg-x{border:0;background:none;font-size:20px;cursor:pointer;color:var(--text-2);line-height:1}.dlg-body{padding:14px;overflow:auto;line-height:1.5}.dlg-foot{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid var(--line-soft)}.btn{padding:6px 14px;border:1px solid #c6ccd5;border-radius:5px;background:#fff;cursor:pointer}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.mass-table,.help-table{border-collapse:collapse;width:100%}.mass-table th,.help-table th{text-align:left;font-weight:500;color:var(--text-2);padding:5px 12px 5px 0;white-space:nowrap;vertical-align:top}.mass-table td,.help-table td{padding:5px 0;font-variant-numeric:tabular-nums}.mass-table tr+tr,.help-table tr+tr{border-top:1px solid var(--line-soft)}.eq-table td{padding:4px 8px 4px 0}.eq-table .pm-input{width:100%;min-width:90px}.eq-table td.eq-error{color:var(--err)}.eq-body>.pm-btn{margin-top:10px}.mass-note{color:var(--text-2);font-size:12px;margin-top:12px}.help h4{margin:14px 0 4px}.help ol{margin:4px 0;padding-left:20px}.fatal{margin:40px auto;max-width:560px;padding:20px;background:#fdecee;color:#8e1b24;border-radius:8px}.left-toggle{display:none}@media(max-width:760px){.main{flex-direction:column}.viewport{order:0;min-height:0}.left{order:1;width:auto;height:44vh;max-height:44vh;border-right:0;border-top:1px solid var(--line);box-shadow:0 -2px 10px #0000000f}.left.collapsed{height:auto}.left.collapsed .tree,.left.collapsed .pm{display:none!important}.left-toggle{display:grid;place-items:center;margin-left:auto;padding:0 14px;background:none;border:0;font-size:16px;color:var(--text-2);cursor:pointer}.left-tab{padding:8px 16px}.left-tab svg{width:20px;height:20px}.titlebar{gap:2px;padding:0 4px;height:44px}.brand{margin-right:4px}.brand-word,.doc-title,.tb-sep{display:none}.lang{max-width:74px;padding:3px 2px}.tb-btn{padding:6px}.tb-btn svg{width:21px;height:21px}.cm-tools{min-height:58px;padding:3px 4px 2px;scrollbar-width:none}.cm-btn{min-width:58px;font-size:10px}.cm-tabs{overflow-x:auto;scrollbar-width:none}.cm-tab{padding:7px 12px;white-space:nowrap}.hud{inset:auto 8px 8px auto;transform:none;flex-direction:column;max-height:calc(100% - 110px);overflow-y:auto;scrollbar-width:none}.toasts{bottom:60px;width:calc(100% - 24px)}.busy-badge{top:8px}.zebra-bar{left:8px!important;right:8px;top:8px!important;max-width:none;flex-wrap:wrap}.zebra-bar:not(.comb-bar)~.comb-bar,.comb-bar~.zebra-bar{top:52px!important}.explode-hint{display:none}.spin-bar{top:auto!important;left:8px!important;right:60px}.ctx-banner{margin:4px 6px}.statusbar{height:22px;font-size:11px;gap:8px}.st-coords,.st-units{display:none}.dlg{min-width:0;width:min(94vw,520px)}.inspect-panel{left:8px;right:8px;width:auto;max-width:none}.cont-panel{left:8px;right:8px;width:auto;max-width:none;max-height:55%}}@media(pointer:coarse){.tree-row{height:34px}.ctx-item{padding:11px 12px;font-size:14px}.ctx-menu{min-width:220px;max-width:calc(100vw - 16px)}.hud-btn{padding:6px}.hud-btn svg{width:22px;height:22px}.cc-btn{padding:8px}.pm-input{min-height:32px;font-size:14px}.pm-check input{width:20px;height:20px}}@media(max-height:520px){.cm-btn span{display:none}.cm-btn{min-width:40px}.cm-tools{min-height:40px}.titlebar{height:36px}.statusbar{display:none}}.busy-badge{position:absolute;top:10px;left:50%;transform:translate(-50%);display:none;align-items:center;gap:10px;padding:6px 8px 6px 12px;background:var(--panel, #fff);border:1px solid var(--line-soft);border-radius:18px;box-shadow:0 2px 10px #0000001f;font-size:13px;z-index:20;font-variant-numeric:tabular-nums}.busy-badge.on{display:flex}.busy-spin{width:14px;height:14px;border:2px solid var(--accent-soft);border-top-color:var(--accent);border-radius:50%;animation:busy-spin .8s linear infinite}@keyframes busy-spin{to{transform:rotate(360deg)}}.busy-cancel{border:1px solid var(--line-soft);background:transparent;border-radius:12px;padding:2px 10px;cursor:pointer;font:inherit}.busy-cancel:hover{background:var(--accent-soft)}.busy .viewport canvas{cursor:progress}.inspect-panel{position:absolute;top:8px;right:10px;bottom:calc(36px + var(--klog-h, 0px));width:430px;max-width:48%;display:flex;flex-direction:column;background:#fffffff5;border:1px solid var(--line);border-radius:7px;box-shadow:0 2px 12px #0000001f;z-index:10;overflow:hidden}.insp-head{display:flex;align-items:center;gap:8px;padding:7px 8px 7px 12px;border-bottom:1px solid var(--line-soft);background:var(--panel-2)}.insp-title{font-weight:600;text-transform:capitalize}.insp-sub{color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.insp-spacer{flex:1}.insp-btn{width:24px;height:22px;border:1px solid var(--line);background:#fff;border-radius:4px;cursor:pointer;padding:0;line-height:1}.insp-btn:hover{border-color:var(--accent);background:var(--accent-soft)}.insp-empty{padding:14px 12px;color:var(--text-2)}.insp-body{overflow:auto;padding:6px 8px 10px;font:12px/1.5 ui-monospace,Cascadia Mono,Consolas,monospace;user-select:text}.insp-node>summary{cursor:pointer;white-space:nowrap}.insp-node>summary::marker{color:var(--text-2)}.insp-kids{padding-left:14px;border-left:1px dotted var(--line);margin-left:4px}.insp-leaf{display:flex;gap:8px;padding-left:12px}.insp-key{color:#6b3fa0;flex-shrink:0}.insp-key:after{content:":";color:var(--text-2)}.insp-type{color:var(--text-2);margin-left:8px}.insp-val{word-break:break-all}.insp-val.num{color:#1d5fd1;font-variant-numeric:tabular-nums}.insp-val.str{color:#1a7f37}.insp-val.bool{color:#b35c00}.insp-legend{display:flex;flex-wrap:wrap;gap:4px 12px;padding:4px 2px;font-size:12px;color:var(--text-2)}.insp-legend-item{display:inline-flex;align-items:center;gap:5px}.insp-swatch{width:14px;height:3px;border-radius:2px;display:inline-block}.stages-slider{display:flex;flex-direction:column;gap:4px;padding:4px 0}.stages-slider .pm-slider{width:100%}.stages-name{font-size:12px;font-weight:600}.stages-layers{display:flex;flex-wrap:wrap;gap:2px 10px}.stages-list{max-height:220px;overflow:auto;font-size:11px;border-top:1px solid var(--line, #ddd);margin-top:4px;padding-top:4px}.stages-item{display:flex;align-items:center;gap:6px;padding:1px 0;cursor:default}.stages-item:hover{background:#0000000f}.insp-val.nil{color:var(--text-2);font-style:italic}.cont-panel{position:absolute;top:8px;right:10px;max-height:calc(100% - 52px - var(--klog-h, 0px));width:400px;max-width:48%;display:flex;flex-direction:column;background:#fffffff5;border:1px solid var(--line);border-radius:7px;box-shadow:0 2px 12px #0000001f;z-index:10;overflow:hidden;font-size:12px}.cont-title{display:inline-flex;align-items:center;gap:6px;font-weight:600}.cont-title svg{width:18px;height:18px}.cont-body{overflow:auto;padding:6px 10px 10px;display:flex;flex-direction:column;gap:6px}.cont-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.cont-row .pm-btn{display:inline-flex;width:auto}.cont-row .pm-btn.on{background:var(--accent);color:#fff;border-color:var(--accent)}.cont-label{color:var(--text-2);min-width:64px;align-self:flex-start;padding-top:3px}.cont-note{color:var(--text-2)}.cont-tols{display:grid;grid-template-columns:auto auto;gap:4px 12px}.cont-tolrow{display:inline-flex;align-items:center;gap:4px}.cont-tolrow .pm-input{width:58px}.cont-unit{color:var(--text-2);min-width:1.5em}.cont-scale{display:inline-flex;align-items:center;gap:6px;color:var(--text-2)}.cont-scale input{width:120px}.cont-swatch{width:14px;height:4px;border-radius:2px;display:inline-block}.cont-summary{display:flex;flex-wrap:wrap;gap:4px 12px;color:var(--text-2)}.cont-summary>span{display:inline-flex;align-items:center;gap:5px}.cont-table{overflow:auto;max-height:340px;border:1px solid var(--line-soft);border-radius:4px}.cont-table .mass-table th,.cont-table .mass-table td{padding:3px 6px}.cont-table .mass-table td.num{text-align:right}.cont-sort{cursor:pointer;user-select:none;position:sticky;top:0;background:var(--panel-2)}.cont-sort.up:after{content:" \25b2";font-size:9px}.cont-sort.down:after{content:" \25bc";font-size:9px}.cont-tr{cursor:pointer}.cont-tr:hover{background:var(--accent-soft)}.cont-tr.sel{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.cont-dot{width:10px;height:10px;border-radius:50%;display:inline-block;background:#8a8f98}.cont-dot.st-ok{background:#16a34a}.cont-dot.st-warn{background:#e0a800}.cont-dot.st-fail{background:#d0342c}:root.cyber .cont-panel{background:#000c03eb;border-color:var(--line)}:root.cyber .cont-sort{background:#051208}:root.cyber{--accent: #33ff66;--accent-soft: #0a2a12;--bg: #000;--panel: #030603;--panel-2: #050b06;--line: #145a26;--line-soft: #0c3517;--text: #3dff70;--text-2: #1fae47;--title: #000;--title-text: #3dff70;--ok: #3dff70;--warn: #e6ff3d;--err: #ff4d4d;--vp-top: #021808;--vp-bottom: #000;font-family:JetBrains Mono,Fira Code,Consolas,DejaVu Sans Mono,monospace;color-scheme:dark;scrollbar-color:#145a26 #000}:root.cyber .viewport{background:repeating-linear-gradient(0deg,rgba(51,255,102,.035) 0 1px,transparent 1px 3px),linear-gradient(var(--vp-top),var(--vp-bottom))}:root.cyber .titlebar{border-bottom:1px solid var(--line)}:root.cyber .brand,:root.cyber .doc-title,:root.cyber .pm-head,:root.cyber .cm-tab.active{text-shadow:0 0 6px rgba(51,255,102,.65)}:root.cyber .brand{--accent: #33ff66}:root.cyber .tb-btn,:root.cyber .cm-btn,:root.cyber .hud-btn,:root.cyber .left-tab{--accent: #33ff66}:root.cyber .lang,:root.cyber .pm-input,:root.cyber .dim-editor input,:root.cyber select,:root.cyber option{background:#000;color:var(--text);border-color:var(--line)}:root.cyber .pm-input:focus{outline-color:#1f7a3a}:root.cyber .pm-input.invalid{background:#200505}:root.cyber .cm-btn:hover:not(:disabled),:root.cyber .look-swatch:hover,:root.cyber .tree-row:hover,:root.cyber .ctx-item:hover{background:var(--accent-soft);border-color:var(--line)}:root.cyber .cm-btn.active,:root.cyber .look-swatch.active,:root.cyber .tree-row.selected,:root.cyber .hud-btn.active{background:#0c3d19;border-color:var(--accent);box-shadow:0 0 8px #33ff6659}:root.cyber .tree-row.suppressed .tree-name,:root.cyber .tree-row.rolled .tree-name,:root.cyber .pm-selhint{color:#1b7a38}:root.cyber .tree-row.hover-hit{background:#2a2300;box-shadow:inset 3px 0 #ff8a00}:root.cyber .tree-row.hidden-entity .tree-name{color:#1b7a38}:root.cyber .rollback{background:var(--accent);box-shadow:0 0 6px var(--accent)}:root.cyber .pm-top{background:linear-gradient(#051208,#000)}:root.cyber .pm-actions button:hover{background:var(--accent-soft);border-color:var(--line)}:root.cyber .pm-sec-head{color:var(--text)}:root.cyber .pm-error,:root.cyber .fatal{background:#200505;color:#ff6b6b}:root.cyber .look-group,:root.cyber .pm-btn,:root.cyber .btn{background:#000;color:var(--text);border-color:var(--line)}:root.cyber .look-group.active{background:var(--accent);color:#000}:root.cyber .pm-btn:hover,:root.cyber .btn:hover{background:var(--accent-soft);border-color:var(--accent)}:root.cyber .btn.primary{background:var(--accent);color:#000}:root.cyber .pm-selbox{background:#000;border-color:var(--line)}:root.cyber .pm-selbox.active{background:#001a08;border-color:var(--accent);box-shadow:0 0 0 2px #0c3d19}:root.cyber .hud,:root.cyber .cc-btn{background:#000c03d9;border-color:var(--line);box-shadow:0 0 10px #33ff6626}:root.cyber .toast{background:#001a08;color:var(--text);border:1px solid var(--line)}:root.cyber .dim-editor,:root.cyber .ctx-menu,:root.cyber .dlg{background:#000;border-color:var(--line);color:var(--text);box-shadow:0 0 18px #3f63}:root.cyber .dlg-back{background:#000a0299}:root.cyber .st-sketch.status-under,:root.cyber .pm-note.status-under,:root.cyber .insp-val.num{color:#3de0ff}:root.cyber .insp-key{color:#b77dff}.tb-btn.on{background:#6aa8ff40}.klog{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;background:#fffffff7;border-top:1px solid var(--line);box-shadow:0 -2px 10px #0000001a;z-index:11;font-size:12px}.klog.hidden{display:none}.klog-grip{height:5px;margin-top:-3px;cursor:ns-resize}.klog-bar{display:flex;align-items:center;gap:10px;padding:3px 8px;border-bottom:1px solid var(--line-soft);background:var(--panel-2)}.klog-title{display:inline-flex;align-items:center;gap:6px;font-weight:600}.klog-title svg{width:16px;height:16px}.klog-count{color:var(--text-2)}.klog-filter{width:200px;padding:2px 6px;border:1px solid var(--line);border-radius:4px;font:inherit}.klog-main{flex:1;display:flex;min-height:0}.klog-list{flex:1.3;overflow:auto;font:12px/1.45 ui-monospace,Cascadia Mono,Consolas,monospace}.klog-detail{flex:1;min-width:200px;display:flex;flex-direction:column;border-left:1px solid var(--line)}.klog-split{flex:0 0 5px;margin:0 -2px;cursor:ew-resize;z-index:2}.klog-split:hover,.klog-col-grip:hover{background:var(--accent-soft)}.klog-row{display:grid;grid-template-columns:var(--klog-cols, 44px 150px 58px 92px 64px 72px 56px 56px minmax(120px, 1fr));gap:6px;padding:1px 8px;cursor:pointer;white-space:nowrap;align-items:center}.klog-row>span{overflow:hidden;text-overflow:ellipsis}.klog-row>span:nth-child(n+5):nth-child(-n+8){text-align:right;font-variant-numeric:tabular-nums}.klog-head>span{position:relative;overflow:visible}.klog-head-text{display:block;overflow:hidden;text-overflow:ellipsis}.klog-col-grip{position:absolute;top:-1px;bottom:-1px;right:-6px;width:7px;cursor:col-resize;z-index:2}.klog-head{position:sticky;top:0;background:var(--panel-2);color:var(--text-2);cursor:default;border-bottom:1px solid var(--line-soft);z-index:1}.klog-row:not(.klog-head):hover{background:var(--accent-soft)}.klog-row.sel{background:#dbe8fb}.klog-row.st-error .klog-st{color:#c62828;font-weight:600}.klog-row.st-replaced,.klog-row.st-cancelled,.klog-row.st-dropped{color:var(--text-2)}.klog-row.st-running .klog-st{color:var(--accent)}.klog-wf{position:relative;height:10px;background:#00000008;border-radius:2px;overflow:hidden}.klog-wait{position:absolute;top:3px;height:4px;background:#c9ced6}.klog-run{position:absolute;top:1px;height:8px;border-radius:2px;background:#4a8be0}.klog-run.error{background:#d9534f}.klog-run.running{background:#8fb8ee}.klog-run.replaced,.klog-run.cancelled,.klog-run.dropped{background:#b8bdc6}.klog-mark{position:absolute;top:0;width:2px;height:10px;background:#8a8f98}.klog-mark.warn{background:#e07b00}.klog-tabs{display:flex;gap:2px;padding:4px 8px 0;border-bottom:1px solid var(--line-soft)}.klog-tab{border:1px solid transparent;border-bottom:0;background:none;padding:3px 10px;border-radius:4px 4px 0 0;cursor:pointer;font:inherit;color:var(--text-2)}.klog-tab.on{border-color:var(--line);background:#fff;color:inherit;font-weight:600;margin-bottom:-1px}.klog-pane{flex:1;min-height:0}.klog-sum{display:grid;grid-template-columns:repeat(3,auto);gap:2px 18px;margin-bottom:8px}.klog-sum>div{display:flex;gap:6px}.klog-ev{display:grid;grid-template-columns:minmax(0,1fr) 60px minmax(80px,34%);gap:8px;align-items:center}.klog-ev-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.klog-ev-ms{text-align:right;font-variant-numeric:tabular-nums;color:#1d5fd1}.klog-ev.warn .klog-ev-label{color:#b35c00}.klog-ev.info .klog-ev-label{color:var(--text-2)}.klog-dbg-bar{display:flex;gap:8px;margin-bottom:6px}.klog-dbg-pick{font:inherit;padding:1px 4px;border:1px solid var(--line);border-radius:4px}.klog-dbg{display:grid;grid-template-columns:64px 72px minmax(0,1fr);gap:8px;align-items:baseline}.klog-dbg:hover{background:var(--accent-soft)}.klog-dbg-at{text-align:right;font-variant-numeric:tabular-nums;color:var(--text-2)}.klog-dbg-cat{color:#6b3fa0}.klog-dbg-text{white-space:pre-wrap;overflow-wrap:anywhere}.klog-ctr{border-collapse:collapse;width:100%}.klog-ctr th,.klog-ctr td{padding:0 0 0 18px;font-weight:400;text-align:left;white-space:nowrap}.klog-ctr th:first-child,.klog-ctr td:first-child{padding-left:0}.klog-ctr .num{text-align:right;font-variant-numeric:tabular-nums;width:1%}.klog-ctr thead th{position:sticky;top:-6px;background:#fff;color:var(--text-2);border-bottom:1px solid var(--line-soft)}.klog-ctr-group th{padding-top:6px;font-weight:600}.klog-ctr-name{padding-left:14px!important;max-width:0;width:100%;overflow:hidden;text-overflow:ellipsis}.klog-ctr tbody tr:not(.klog-ctr-group):hover{background:var(--accent-soft)}.klog-ctr-ms{color:#1d5fd1}.klog-cov{margin:0 0 6px;color:var(--text-2)}.bug-dlg{display:flex;flex-direction:column;gap:6px;min-width:460px}.bug-dlg .pm-input{width:100%;box-sizing:border-box}.bug-label{font-weight:600;margin-top:4px}.bug-feature{margin:0 0 4px;color:var(--text-2)}.bug-feature-error{margin:0;color:#c62828}.bug-status{margin:6px 0 0;color:var(--text-2);font-size:12px}.bug-error{margin:0;color:#c62828;min-height:1em}.dlg.tests{max-width:min(96vw,1280px);width:min(96vw,1280px);height:86vh}.dlg.tests .dlg-body{padding:0;display:flex;flex-direction:column;min-height:0;flex:1;overflow:hidden}.tc{display:flex;flex-direction:column;min-height:0;flex:1}.tc-bar{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line-soft);background:var(--panel-2);flex-wrap:wrap}.tc-filter{width:220px}.tc-select{width:auto}.tc-timeout{display:inline-flex;align-items:center;gap:6px;color:var(--text-2)}.tc-timeout input{width:64px}.tc-summary{color:var(--text-2);font-size:12px}.tc-table{overflow:auto;flex:1;min-height:0}.tc-table table{border-collapse:collapse;width:100%;font-size:12px}.tc-table th{position:sticky;top:0;background:var(--panel);border-bottom:1px solid var(--line);text-align:left;padding:5px 8px;font-weight:600;cursor:pointer;white-space:nowrap;user-select:none;z-index:1}.tc-table th.sorted.asc:after{content:" \25b2";font-size:9px;color:var(--accent)}.tc-table th.sorted.desc:after{content:" \25bc";font-size:9px;color:var(--accent)}.tc-table td{padding:4px 8px;border-bottom:1px solid var(--line-soft);vertical-align:top}.tc-table tbody tr:hover{background:var(--accent-soft)}.tc-table td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.tc-name{white-space:nowrap}.tc-title{color:var(--text-2);font-size:11px;white-space:normal;max-width:320px}.tc-result{color:var(--text-2);max-width:420px;word-break:break-word}tr.tc-fail .tc-result{color:var(--err)}.tc-acts{white-space:nowrap}.tc-acts .pm-btn{display:inline-flex;width:auto;margin:0 4px 0 0;padding:2px 8px}.tc-badge{display:inline-block;padding:1px 7px;border-radius:9px;font-size:11px;background:var(--panel-2);color:var(--text-2);white-space:nowrap}.tc-badge.tc-pass{background:#dff3e4;color:#1a7f37}.tc-badge.tc-fail{background:#fde2e1;color:var(--err)}.tc-badge.tc-running,.tc-badge.tc-queued{background:var(--accent-soft);color:var(--accent)}.tc-note{padding:16px;color:var(--text-2)}.tc-tabs{display:flex;gap:2px;padding:6px 12px 0;border-bottom:1px solid var(--line-soft)}.tc-pane{display:flex;flex-direction:column;min-height:0;flex:1}.tc-pane.hidden{display:none}.tc-run{display:flex;flex-direction:column;gap:2px;padding:8px 12px 0;font-size:12px;color:var(--text)}.tc-run:empty{display:none}.tc-warn{color:var(--warn)}.tc-unit{color:var(--text-2);white-space:nowrap}.tc-msg{margin:0;font:11px/1.35 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap;word-break:break-word;max-height:12.5em;overflow:auto}tr.tc-fail .tc-msg{color:var(--err)}.tc-parts .pm-btn{display:inline-flex;width:auto;margin:0 4px 4px 0;padding:1px 7px}.tc-badge.tc-ignored{background:var(--panel-2);color:var(--text-2)}.zebra-bar{position:absolute;left:10px;top:52px;display:flex;align-items:center;gap:10px;padding:5px 8px;background:#fffffff2;border:1px solid var(--line);border-radius:6px;box-shadow:0 2px 8px #0000001f;z-index:5;font-size:12px}.zebra-title{display:inline-flex;align-items:center;gap:6px;font-weight:600}.zebra-title svg{width:18px;height:18px}.zebra-count{display:inline-flex;align-items:center;gap:6px;color:var(--text-2)}.zebra-count input{width:110px}.zebra-n{min-width:2ch;text-align:right;font-variant-numeric:tabular-nums;color:var(--text)}.zebra-bar .pm-btn{display:inline-flex;width:auto}.spin-bar{top:auto;bottom:10px}.zebra-light{font-weight:600;color:var(--text);max-width:20ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pm-link{border:0;background:none;padding:0;font:inherit;color:var(--accent);text-decoration:underline;cursor:pointer}.pm-link:hover{color:#0b4fa8}.draft-bar .pm-btn.on,.zebra-bar:not(.explode-bar) .pm-btn.on{background:var(--accent);color:#fff;border-color:var(--accent)}.draft-bar .pm-input{width:56px}.comb-bar{flex-wrap:wrap;max-width:calc(100% - 20px)}.comb-bar .zebra-count input{width:80px}.comb-bar .pm-btn.on{background:var(--accent);color:#fff;border-color:var(--accent)}.comb-hint{color:var(--text-2)}.comb-hint.warn{color:var(--err)}.zebra-bar:not(.comb-bar)~.comb-bar,.comb-bar~.zebra-bar{top:96px}.draft-key{display:inline-flex;align-items:center;gap:5px;color:var(--text-2)}.draft-key i{width:12px;height:12px;border-radius:2px;display:inline-block}.bom-table td,.bom-table th{padding-right:14px}.bom-table td:nth-child(n+5),.bom-table th:nth-child(n+5),.bom-table td:nth-child(3),.bom-table th:nth-child(3){text-align:right}.interf-row{cursor:pointer}.interf-row:hover{background:#f0f4fa}.explode-bar .pm-input{width:64px}.sheet{position:absolute;inset:0;background:#8a919c;z-index:4;overflow:hidden;outline:none;cursor:default}.sheet.tool-dim{cursor:crosshair}.sheet-svg{position:absolute;inset:0}.sheet-svg svg{display:block;user-select:none}.sheet-svg svg>rect:first-child{filter:drop-shadow(0 1px 3px rgba(0,0,0,.35))}.sheet-empty{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%);background:#fff;padding:18px 24px;border-radius:8px;box-shadow:0 2px 10px #0003;text-align:center}.sheet-empty p{margin:0 0 12px;color:var(--text-2)}.curv-bar{flex-wrap:wrap;max-width:calc(100% - 20px)}.curv-bar .pm-btn.on{background:var(--accent);color:#fff;border-color:var(--accent)}.curv-bar select.pm-input{width:auto}.curv-bar .curv-range{width:76px}.curv-legend{display:inline-grid;grid-template-columns:auto auto;align-items:center;column-gap:6px;row-gap:1px}.curv-strip{grid-column:1;width:170px;height:10px;border-radius:2px;border:1px solid rgba(0,0,0,.2)}.curv-marks{grid-column:1;grid-row:2;display:flex;justify-content:space-between;font-size:10px;color:var(--text-2);font-variant-numeric:tabular-nums}.curv-unit{grid-column:2;grid-row:1 / span 2;color:var(--text-2)}.curv-legend .draft-key{grid-column:3;grid-row:1 / span 2}
