:root{--bg: #070708;--panel: #0f0f10;--panel2: #161617;--line: #232325;--line2: #313134;--text: #e9e9ec;--muted: #9a9ba3;--dim: #6c6e76;--accent: #b6f23e;--accent2: #d4ff7a;--accent-bg: rgba(182, 242, 62, .14);--ok: #3fb67a;--warn: #e5b53c;--err: #ef5b5b;--r: 8px;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Inter,Segoe UI,system-ui,sans-serif;font-size:13px;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;color-scheme:dark}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}.app{display:grid;grid-template-rows:46px 1fr 26px;grid-template-columns:68px 1fr 330px;height:100vh}.topbar{grid-column:1 / -1;display:flex;align-items:center;gap:10px;padding:0 12px 0 84px;background:linear-gradient(#111112,#0b0b0c);border-bottom:1px solid var(--line);user-select:none;-webkit-user-select:none}.web .topbar{padding-left:14px}.brand{display:flex;align-items:center;gap:9px;font-weight:650;letter-spacing:.2px}.brand .logo{width:22px;height:22px}.brand small{font-weight:500;color:var(--muted)}.proj-name{color:var(--muted);display:flex;align-items:center;gap:6px;max-width:320px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dirty-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);display:inline-block}.spacer{flex:1}.tb-group{display:flex;gap:2px;padding:2px;background:var(--panel2);border:1px solid var(--line);border-radius:9px}.btn{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;background:transparent;border:1px solid transparent;border-radius:7px;color:var(--text);cursor:pointer;white-space:nowrap}.btn:hover{background:#2a2c30}.btn:disabled{opacity:.35;cursor:default;background:transparent}.btn svg{width:15px;height:15px;flex:none}.btn.primary{background:var(--accent);color:#0b1200;font-weight:600}.btn.primary:hover{background:var(--accent2)}.btn.outline{border-color:var(--line2);background:var(--panel2)}.btn.outline:hover{border-color:#4a4d53}.btn.danger:hover{background:#ef5b5b26;color:#ff8b8b}.btn.small{height:24px;padding:0 8px;font-size:12px}.btn.active{background:var(--accent-bg);color:var(--accent2)}.btn.icon{padding:0 7px}.menu-wrap{position:relative}.menu{position:absolute;top:calc(100% + 6px);right:0;z-index:50;min-width:250px;padding:5px;background:#151516f2;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--line2);border-radius:10px;box-shadow:0 16px 40px #00000080}.menu.left{left:0;right:auto}.menu button{display:flex;width:100%;align-items:center;gap:9px;padding:7px 9px;border:0;background:none;border-radius:6px;text-align:left;cursor:pointer}.menu button:hover{background:var(--accent);color:#0b1200}.menu button small{margin-left:auto;color:var(--dim)}.menu button:hover small{color:#2c4a08}.menu hr{border:0;border-top:1px solid var(--line2);margin:4px 2px}.menu .hdr{padding:6px 9px 3px;font-size:11px;color:var(--dim);text-transform:uppercase;letter-spacing:.6px}.nav{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 0}.nav button{width:54px;padding:7px 0 5px;border:0;background:none;border-radius:9px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--muted);font-size:10.5px}.nav button svg{width:20px;height:20px}.nav button:hover{background:#26282b;color:var(--text)}.nav button.on{background:var(--accent-bg);color:var(--accent2)}.main{position:relative;overflow:hidden;background:var(--bg);min-width:0}.inspector{background:var(--panel);border-left:1px solid var(--line);overflow-y:auto}.insp-head{padding:14px 16px 10px;border-bottom:1px solid var(--line)}.insp-head .kind{font-size:11px;text-transform:uppercase;letter-spacing:.7px;color:var(--dim)}.insp-head h2{margin:3px 0 0;font-size:17px;font-weight:650;display:flex;align-items:center;gap:8px}.insp-sec{padding:12px 16px;border-bottom:1px solid var(--line)}.insp-sec h3{margin:0 0 9px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--dim)}.field{display:grid;grid-template-columns:96px 1fr;align-items:center;gap:8px;margin-bottom:7px}.field>label{color:var(--muted);font-size:12px}.field.wide{grid-template-columns:1fr}.row3{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.inp,select.inp,textarea.inp{width:100%;height:28px;padding:0 8px;background:#121315;border:1px solid var(--line2);border-radius:6px;outline:none;min-width:0}textarea.inp{height:70px;padding:6px 8px;resize:vertical}.inp:focus{border-color:var(--accent);box-shadow:0 0 0 3px #b6f23e2e}.inp.num{text-align:right;font-variant-numeric:tabular-nums}.inp-unit{position:relative}.inp-unit .inp{padding-right:30px}.inp-unit span{position:absolute;right:8px;top:6px;color:var(--dim);font-size:12px;pointer-events:none}.stat{display:flex;justify-content:space-between;padding:4px 0;color:var(--muted)}.stat b{color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}.btn-row{display:flex;flex-wrap:wrap;gap:6px}.hint{color:var(--dim);font-size:12px;line-height:1.5}.kbd{display:inline-block;padding:0 5px;border:1px solid var(--line2);border-radius:4px;font-size:11px;color:var(--muted);background:var(--panel2)}.pin-table{width:100%;border-collapse:collapse;font-size:12px}.pin-table td,.pin-table th{white-space:nowrap;padding:3px 4px;border-bottom:1px solid var(--line);text-align:left}.pin-table th{color:var(--dim);font-weight:500;font-size:11px}.pin-table td.n{color:var(--muted);width:24px;text-align:right;font-variant-numeric:tabular-nums}.pin-table input{width:100%;background:transparent;border:1px solid transparent;border-radius:4px;padding:2px 4px;outline:none}.pin-table input:focus{border-color:var(--accent);background:#121315}.pin-table tr.free td{color:var(--dim)}.swatch{display:inline-block;width:14px;height:9px;border-radius:2px;border:1px solid rgba(255,255,255,.25);vertical-align:middle;flex:none}.chip{display:inline-flex;align-items:center;gap:5px;padding:1px 7px;border-radius:20px;background:var(--panel2);border:1px solid var(--line2);font-size:11.5px}.link{color:var(--accent2);cursor:pointer}.link:hover{text-decoration:underline}.issue{display:flex;gap:8px;padding:6px 8px;border-radius:6px;font-size:12px;cursor:pointer;line-height:1.4}.issue:hover{background:var(--panel2)}.issue .dot{width:7px;height:7px;border-radius:50%;margin-top:5px;flex:none}.issue.error .dot{background:var(--err)}.issue.warn .dot{background:var(--warn)}.statusbar{grid-column:1 / -1;display:flex;align-items:center;gap:18px;padding:0 14px;background:#0a0a0b;border-top:1px solid var(--line);color:var(--muted);font-size:11.5px}.statusbar b{color:var(--text);font-weight:600}.statusbar .st-err{color:var(--err)}.statusbar .st-warn{color:var(--warn)}.statusbar .st-ok{color:var(--ok)}.canvas-wrap{position:absolute;inset:0}.float-bar{position:absolute;top:12px;left:12px;z-index:5;display:flex;gap:6px;flex-wrap:wrap}.float-bar .tb-group{background:#1c1d20e6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 6px 20px #00000059}.float-hint{position:absolute;bottom:12px;left:12px;z-index:5;color:var(--dim);font-size:11.5px;background:#1c1d20cc;padding:6px 10px;border-radius:8px;border:1px solid var(--line)}.tag3d{pointer-events:auto;cursor:pointer;white-space:nowrap;transform:translate3d(-50%,-130%,0);padding:3px 8px;border-radius:7px;background:#111214e6;border:1px solid #3a3c41;color:#fff;font:600 12px -apple-system,BlinkMacSystemFont,Inter,sans-serif;box-shadow:0 4px 12px #0006;-webkit-user-select:none;user-select:none}.tag3d span{font-weight:450;color:#a9aab2;margin-left:5px}.tag3d.sel{border-color:var(--accent);background:#16220ae6}.len3d{pointer-events:none;white-space:nowrap;transform:translate3d(-50%,-50%,0);padding:1px 6px;border-radius:10px;background:#b6f23ee0;color:#0b1200;font:600 10.5px -apple-system,Inter,sans-serif;font-variant-numeric:tabular-nums}.br3d{pointer-events:none;transform:translate3d(8px,-120%,0);color:#c9cad0;font:600 10.5px -apple-system,Inter,sans-serif;text-shadow:0 1px 3px #000}.page{position:absolute;inset:0;overflow:auto;padding:22px 26px 40px}.page-head{display:flex;align-items:flex-end;gap:12px;margin-bottom:16px}.page-head h1{margin:0;font-size:21px;font-weight:680;letter-spacing:-.2px}.page-head p{margin:3px 0 0;color:var(--muted)}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:18px}.card-head{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line)}.card-head h2{margin:0;font-size:14px;font-weight:620}.grid{width:100%;border-collapse:collapse;font-size:12.5px}.grid th{position:sticky;top:0;background:var(--panel2);z-index:1;text-align:left;font-weight:550;color:var(--muted);font-size:11.5px;padding:8px;border-bottom:1px solid var(--line2);white-space:nowrap}.grid td{padding:3px 8px;border-bottom:1px solid var(--line);height:34px;white-space:nowrap}.grid tr:hover td{background:#1e1f22}.grid tr.sel td{background:var(--accent-bg)}.grid td.r,.grid th.r{text-align:right;font-variant-numeric:tabular-nums}.grid td.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px}.grid .inp{height:26px;background:transparent;border-color:transparent}.grid .inp:hover{border-color:var(--line2)}.grid .inp:focus{background:#121315;border-color:var(--accent)}.grid td.err{color:var(--err)}.card.scroll{overflow-x:auto}.grid.wide{min-width:1240px}.empty{padding:40px;text-align:center;color:var(--dim)}.svg-view{position:absolute;inset:0;cursor:grab}.svg-view:active{cursor:grabbing}.svg-view>svg{width:100%;height:100%;display:block}.toast{position:fixed;bottom:42px;left:50%;transform:translate(-50%);z-index:100;background:#26282b;border:1px solid var(--line2);padding:9px 16px;border-radius:10px;box-shadow:0 12px 30px #00000080;animation:pop .18s ease-out}@keyframes pop{0%{opacity:0;transform:translate(-50%,8px)}}.modal-bg{position:fixed;inset:0;background:#00000080;z-index:90;display:grid;place-items:center}.modal{width:460px;background:var(--panel);border:1px solid var(--line2);border-radius:14px;box-shadow:0 30px 80px #0009}.modal h2{margin:0;padding:16px 18px 6px;font-size:16px}.modal .body{padding:6px 18px 14px}.modal .foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--line)}.choice{display:flex;gap:10px;padding:10px 12px;border:1px solid var(--line2);border-radius:9px;margin-bottom:8px;cursor:pointer}.choice.on{border-color:var(--accent);background:var(--accent-bg)}.choice b{display:block;margin-bottom:2px}.choice small{color:var(--muted)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#34363b;border-radius:10px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-track{background:transparent}.palette{position:absolute;top:12px;left:12px;bottom:50px;width:268px;z-index:6;display:flex;flex-direction:column;gap:8px;padding:10px;background:#0f0f10ec;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--line2);border-radius:12px;box-shadow:0 12px 30px #00000073}.pal-head{display:flex;align-items:center;gap:8px}.pal-head b{font-size:13px}.pal-head .hint{flex:1;font-size:11px}.pal-cats{display:flex;flex-wrap:wrap;gap:4px}.pal-cats .chip{cursor:pointer;font-size:11px;padding:2px 8px}.chip.on{background:var(--accent-bg);border-color:var(--accent);color:var(--accent2)}.pal-list{flex:1;overflow-y:auto;margin:0 -4px;padding:0 4px}.pal-item{display:flex;gap:9px;align-items:center;padding:6px;border-radius:8px;cursor:grab;user-select:none;-webkit-user-select:none;touch-action:none}.pal-item:hover{background:#1b1b1d}.pal-item:active{cursor:grabbing}.pal-item svg{flex:none}.pal-txt{min-width:0}.pal-name{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pal-sub{font-size:11px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dnd-ghost{position:fixed;left:0;top:0;z-index:200;pointer-events:none;transform:translate(-999px,-999px);padding:7px 11px;border-radius:9px;background:#1a1a1cf2;border:1px solid var(--line2);box-shadow:0 10px 30px #00000080;display:flex;flex-direction:column;gap:2px;font-size:12px;max-width:280px}.dnd-ghost span{color:var(--dim);font-size:11px}.dnd-ghost.ok{border-color:var(--accent)}.dnd-ghost.ok span{color:var(--accent2)}.pin-handle{cursor:crosshair}.pin-handle:hover circle:last-child{fill:var(--accent);stroke:none}.bulk-bar{display:flex;align-items:center;gap:8px;padding:8px 12px;margin-bottom:10px;border-radius:10px;background:var(--accent-bg);border:1px solid #b6f23e55}.notice{display:flex;align-items:center;gap:8px;padding:9px 12px;margin-bottom:14px;border-radius:10px;background:#18180f;border:1px solid #3c3a1c;color:#e8e2a8;font-size:12.5px}.notice svg{width:16px;height:16px;flex:none}.wiz-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}.wiz-grid .field{grid-template-columns:1fr;gap:4px;margin:0}.wiz-summary{margin-top:12px;padding:10px 12px;border-radius:9px;background:var(--panel2);border:1px solid var(--line2);font-size:12.5px;color:var(--muted)}.wiz-summary b{color:var(--text)}.modal.wide{width:640px}.canvas-host{position:absolute;inset:0;z-index:0}.with-pal .canvas-host{left:280px}.with-pal .float-bar,.with-pal .float-hint{left:292px}.bg-menu{width:270px}.bg-swatches{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:4px 4px 6px}.menu .bg-sw,.bg-sw{display:flex;flex-direction:column;align-items:stretch;gap:5px;padding:6px;border:1px solid var(--line2);border-radius:9px;background:none;cursor:pointer;font-size:11.5px;text-align:left;color:var(--text)}.menu .bg-sw:hover{background:var(--panel2);color:var(--text)}.bg-sw.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg)}.bg-sw>span{position:relative;display:block;height:36px;border-radius:6px;border:1px solid #ffffff1a;overflow:hidden}.bg-sw input[type=color]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.light-bg .br3d{color:#2a2a2e;text-shadow:none}.check-row{display:flex;align-items:center;gap:8px;font-size:12.5px;cursor:pointer}.check-row input{accent-color:var(--accent)}.tw-badge{display:inline-block;margin-left:5px;padding:0 4px;border-radius:4px;font-size:10px;background:var(--accent-bg);color:var(--accent2);vertical-align:1px}.tw3d{pointer-events:auto;cursor:pointer;white-space:nowrap;transform:translate3d(-50%,30%,0);display:flex;gap:6px;align-items:center;padding:2px 8px;border-radius:10px;background:#0b1200e6;border:1px solid var(--accent);color:var(--accent2);font:600 10.5px -apple-system,Inter,sans-serif;font-variant-numeric:tabular-nums;box-shadow:0 4px 12px #0006}.tw3d span{color:#e9ffc0;font-weight:500}.tw-col{color:var(--accent2);font-weight:600}.calc-break{margin-top:6px;padding:8px 10px;border-radius:8px;background:var(--panel2);border:1px solid var(--line);font-size:12px;font-variant-numeric:tabular-nums}.calc-break .row{display:flex;justify-content:space-between;padding:2px 0;color:var(--muted)}.calc-break .row b{color:var(--text);font-weight:600}.calc-break .row.tw b,.calc-break .row.tw{color:var(--accent2)}.calc-break .row.sum{border-top:1px solid var(--line2);margin-top:4px;padding-top:5px;color:var(--text)}.calc-break .row.sum b{color:var(--accent2)}.tol-txt{color:var(--accent2);font-weight:600;font-size:11px;margin:0 2px}.mini-tbl{width:100%;border-collapse:collapse;font-size:12px;margin:2px 0 0;font-variant-numeric:tabular-nums}.mini-tbl th{text-align:left;color:var(--muted);font-weight:500;padding:4px 6px;border-bottom:1px solid var(--line)}.mini-tbl td{padding:4px 6px;border-bottom:1px solid var(--line)}.mini-tbl .r{text-align:right}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}.kpi{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 14px;display:flex;flex-direction:column;gap:2px}.kpi span{color:var(--muted);font-size:11.5px}.kpi b{font-size:22px;font-weight:650;font-variant-numeric:tabular-nums}.seg-tabs{display:inline-flex;gap:2px;padding:3px;border-radius:9px;background:var(--panel2);border:1px solid var(--line);margin-bottom:10px}.seg-tabs button{border:0;background:transparent;color:var(--muted);padding:5px 14px;border-radius:7px;font:inherit;font-size:12.5px;cursor:pointer}.seg-tabs button.on{background:var(--accent);color:#0b1200;font-weight:600}.chip.chip-iso{background:#1f2a3a;color:#9cc3ff}.modal.xwide{width:min(1180px,94vw);max-height:90vh;display:flex;flex-direction:column}.modal.xwide .body{overflow:auto;min-height:0}.notice.err{background:#2a1414;border-color:#5a2424;color:#ffb4b4;margin:6px 0 0}.imp-start{display:grid;grid-template-columns:1fr 1.3fr;gap:16px;margin-top:8px}.imp-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:28px 18px;border:1.5px dashed var(--line2);border-radius:12px;background:var(--panel2);color:var(--text);cursor:pointer;font:inherit;text-align:center}.imp-drop:hover{border-color:var(--accent);background:var(--accent-bg)}.imp-drop b{font-size:15px}.imp-drop span{color:var(--muted);font-size:12.5px;max-width:260px}.imp-paste{display:flex;flex-direction:column;gap:8px}.imp-paste label{color:var(--muted);font-size:12.5px}.imp-paste textarea{height:150px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11.5px;white-space:pre;resize:vertical}.imp-src{display:flex;align-items:center;gap:6px;padding:8px 0 12px;font-size:13px;color:var(--muted);border-bottom:1px solid var(--line);margin-bottom:12px}.imp-src b{color:var(--text)}.imp-cols{display:grid;grid-template-columns:340px 1fr;gap:18px}.imp-cols h3{margin:0 0 8px;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600}.imp-map .field,.imp-conns .field{margin-bottom:5px}.imp-map .field label,.imp-conns .field label{width:92px}.imp-map select.mapped{border-color:var(--accent);color:var(--accent2)}.imp-conns small{color:var(--dim);font-weight:400}.imp-prev{max-height:360px;overflow:auto;border:1px solid var(--line);border-radius:10px}.imp-prev .grid td{height:28px}.imp-prev tr.bad td{color:#ff8a8a;background:#2a141455}.imp-prev tr.warn td:first-child{box-shadow:inset 3px 0 #e8c547}.imp-sum{display:flex;flex-direction:column;gap:4px;margin-top:10px;font-size:12.5px}.imp-sum .ok{color:var(--accent2)}.imp-sum .bad{color:#ff8a8a}.imp-sum .warn{color:#e8c547}.imp-src svg,.imp-drop svg{flex:none}.imp-src svg{width:16px;height:16px}.imp-drop svg{width:26px;height:26px;color:var(--accent2)}.imp-src .inp{height:28px}.pm{color:var(--accent2);font-weight:600;width:10px;text-align:center;flex:none;align-self:center}.test-page{max-width:1500px}.pk-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}.pk{background:var(--panel);border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;overflow:hidden}.pk-head{display:flex;align-items:center;gap:10px;padding:12px 14px 4px}.pk-head h3{margin:0;font-size:15px}.pk-head span{color:var(--muted);font-size:12px}.pk-tag{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-weight:700;font-size:13px;flex:none}.pk-tag.g{background:var(--accent);color:#0b1200}.pk-tag.i{background:#2a3b55;color:#b9d4ff}.pk-body{display:flex;gap:14px;padding:6px 14px 10px;align-items:center}.pk-body svg{flex:none}.pk dl{margin:0;display:grid;grid-template-columns:74px 1fr;gap:5px 10px;font-size:12.5px}.pk dt{color:var(--muted)}.pk dd{margin:0;color:var(--text)}.pk dd .inl{display:inline-flex;gap:6px;align-items:center;margin-left:6px;vertical-align:middle}.pk dd .inl .inp-unit{width:104px}.pk-limit{margin-top:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 14px;background:var(--panel2);border-top:1px solid var(--line);font-size:12.5px}.pk-limit>span{color:var(--muted)}.pk-limit>b{font-size:18px;color:var(--accent2)}.pk-limit .inp-unit{width:120px}.pk-limit small{color:var(--dim);flex-basis:100%}.pk-limit small.danger{color:#f0b54a}.notice.warn{background:#2b2410;border:1px solid #5a4a18;color:#f3d27a;padding:8px 12px;border-radius:8px;font-size:12.5px}.probe{display:block}.probe .pr-conn{fill:#22262c;stroke:#4a515b;stroke-width:1.2}.probe .pr-lbl{fill:var(--text);font:600 11px Inter,-apple-system,sans-serif}.probe .pr-pin{fill:#15181c;stroke:#5b636e;stroke-width:1.2}.probe .pr-pin.on{fill:var(--accent);stroke:var(--accent2)}.probe .pr-pinlbl{fill:var(--accent2);font:700 11px ui-monospace,Menlo,monospace}.probe .pr-wire{fill:none;stroke:var(--accent);stroke-width:3.2;stroke-linecap:round}.probe .pr-short{fill:none;stroke:#8892a0;stroke-width:1.6;stroke-dasharray:3 2}.probe .pr-meter{fill:#101317;stroke:#6b7480;stroke-width:1.4}.probe .pr-meter.iso{stroke:#7aa7e6}.probe .pr-mtxt{fill:var(--text);font:700 15px Inter,-apple-system,sans-serif}.probe .pr-msub{fill:#9cc3ff;font:600 10px Inter,-apple-system,sans-serif}.probe .pr-lead{fill:none;stroke-width:1.8}.probe .pr-lead.red{stroke:#ef4b4b}.probe .pr-lead.blk{stroke:#c9ced6}.probe .pr-tip{fill:#fff}.probe .pr-note{fill:var(--muted);font:500 10px Inter,-apple-system,sans-serif}.probe .pr-note.red{fill:#ef6b6b;font-weight:700}.probe .pr-note.dim{fill:var(--dim)}.runbar{display:grid;grid-template-columns:1fr 260px auto auto;gap:16px;align-items:center;padding:12px 14px;border-radius:12px;background:var(--panel);border:1px solid var(--line)}.runbar.pass{border-color:var(--accent)}.runbar.fail{border-color:#8a2a2a}.rb-fields{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.rb-fields label{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--muted)}.rb-prog{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted)}.rb-prog .ok{color:var(--accent2)}.rb-prog .bad{color:#ff8a8a}.rb-bar{height:8px;border-radius:5px;background:var(--panel2);overflow:hidden;display:flex}.rb-bar i{display:block;height:100%;background:var(--accent)}.rb-bar i.f{background:#e04545}.rb-verdict{font-weight:800;letter-spacing:.06em;font-size:15px;padding:8px 14px;border-radius:9px;background:var(--panel2);color:var(--muted);white-space:nowrap}.rb-verdict.pass{background:var(--accent);color:#0b1200}.rb-verdict.fail{background:#c03030;color:#fff}.test-split{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:14px;align-items:start}.tsteps tr{cursor:pointer}.tsteps tr.sel td{background:var(--accent-bg, #1a2410)}.tsteps tr.sel td:first-child{box-shadow:inset 3px 0 0 var(--accent)}.tsteps .what{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12.5px}.tsteps .what b{color:var(--text)}.tsteps .arr{color:var(--accent2);margin:0 3px}.tsteps .what-sub{color:var(--dim);font-size:11px;margin-top:1px}.tsteps .lim{font-weight:600;white-space:nowrap}.tsteps .exp{color:var(--muted);white-space:nowrap}.warn-dot{display:inline-grid;place-items:center;width:15px;height:15px;border-radius:50%;background:#e8c547;color:#1b1500;font-size:10px;font-weight:800;margin-left:6px}.meas{display:flex;align-items:center;border:1px solid var(--line2);border-radius:7px;background:var(--bg);overflow:hidden}.meas input{width:100%;min-width:0;border:0;background:transparent;color:var(--text);padding:5px 8px;font:600 13px ui-monospace,Menlo,monospace;outline:none;text-align:right}.meas span{color:var(--dim);font-size:11px;padding:0 8px 0 0}.meas:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px #b6f23e33}.meas.pass{border-color:var(--accent)}.meas.pass input{color:var(--accent2)}.meas.fail{border-color:#c03030;background:#2a1414}.meas.fail input{color:#ff9a9a}.vd{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;padding:3px 8px;border-radius:6px;white-space:nowrap}.vd.pass{background:#b6f23e22;color:var(--accent2)}.vd.fail{background:#c0303033;color:#ff9a9a}.vd.none{color:var(--dim);font-weight:500}.sdet{position:sticky;top:12px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px;font-size:12.5px}.sdet-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.sdet-head b{font-size:14px}.sdet-head .dim{color:var(--dim);font-size:11.5px;margin-left:auto}.sdet .probe{margin:4px auto 10px;width:100%;height:auto}.sdet-limit{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:10px}.sdet-limit>div{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:7px 9px;display:flex;flex-direction:column;gap:2px}.sdet-limit span{color:var(--dim);font-size:10.5px;text-transform:uppercase;letter-spacing:.05em}.sdet-limit b{font-size:14px;font-variant-numeric:tabular-nums}.sdet-limit>div:first-child b{color:var(--accent2)}.sdet-limit .res.pass{border-color:var(--accent)}.sdet-limit .res.pass b{color:var(--accent2)}.sdet-limit .res.fail{border-color:#c03030;background:#2a1414}.sdet-limit .res.fail b{color:#ff9a9a}.sdet h4{margin:12px 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.sdet ol,.sdet ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:5px;line-height:1.45}.sdet b{color:var(--text)}.sdet .others{margin-top:8px;font-size:11.5px;color:var(--muted)}.sdet .others .mono{margin-top:4px;line-height:1.6;color:var(--text)}@media (max-width: 1300px){.test-split{grid-template-columns:1fr}.sdet{position:static}.pk-body{flex-direction:column;align-items:flex-start}}.model-prev{position:relative;height:180px;border-radius:10px;overflow:hidden;background:radial-gradient(circle at 50% 40%,#23272d,#121417);border:1px solid var(--line);margin-bottom:8px}.model-prev .mp-lbl{position:absolute;left:8px;bottom:6px;font-size:10.5px;color:var(--dim);pointer-events:none}.drop-veil{position:fixed;inset:0;z-index:9999;background:#080a06b8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;pointer-events:none}.drop-veil>div{border:2px dashed var(--accent);border-radius:18px;padding:40px 60px;display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--text);background:#0b1200cc}.drop-veil b{font-size:20px;color:var(--accent2)}.drop-veil span{color:var(--muted)}.small-veil{position:fixed;inset:0;z-index:9998;background:#0b0c0d;display:grid;place-items:center;padding:28px;text-align:center}.small-veil>div{max-width:360px;display:flex;flex-direction:column;align-items:center;gap:12px}.small-veil img{border-radius:14px}.small-veil h2{margin:6px 0 0;font-size:20px}.small-veil p{color:var(--muted);margin:0 0 8px;line-height:1.5}.pp-wrap{position:fixed;inset:0;z-index:900;display:grid;place-items:center;pointer-events:none}.pp{pointer-events:auto;width:min(800px,92vw);max-height:86vh;overflow:auto;background:#121417f7;border:1px solid var(--line2);border-radius:16px;box-shadow:0 40px 120px -20px #000000d9,0 0 0 1px #b6f23e14,0 0 80px -30px #b6f23e73;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:pp-in .18s ease-out}@keyframes pp-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}.pp-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:16px 18px 10px;border-bottom:1px solid var(--line)}.pp-head h2{margin:4px 0 0;font-size:18px;letter-spacing:-.01em}.pp-cat{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent2);font-weight:600}.pp-body{display:grid;grid-template-columns:380px 1fr;gap:18px;padding:14px 18px}.pp-3d{height:290px;border-radius:12px;overflow:hidden;background:radial-gradient(circle at 50% 38%,#2a2f36,#111316 70%);border:1px solid var(--line);cursor:grab}.pp-cap{font-size:11px;color:var(--dim);margin:6px 2px 10px}.pp-pin{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:8px 10px}.pp-pin>span{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:4px}.pp-pin svg{max-height:170px}.pp-row{display:flex;justify-content:space-between;gap:14px;padding:6px 0;border-bottom:1px solid var(--line);font-size:12.5px}.pp-row span{color:var(--muted);white-space:nowrap}.pp-row b{font-weight:500;text-align:right}.pp-foot{padding:10px 18px 14px;font-size:11.5px;color:var(--dim);border-top:1px solid var(--line)}@media (max-width: 900px){.pp-body{grid-template-columns:1fr}}
