:root{--bg-0:#070a11;--bg-1:#0b0f18;--bg-2:#121829;--bg-3:#1a2133;--bg-4:#232c42;--text-1:#f2f5fa;--text-2:#a7b0c4;--text-3:#6b7488;--primary:#4f7cff;--violet:#7c5cff;--cyan:#22d3ee;--ok:#34d399;--warn:#fbbf24;--danger:#f87171;--stroke:#94aadc1f;--stroke-strong:#94aadc38;--glass:#141b2cad;--glass-soft:#232c4280;--radius-lg:18px;--radius:14px;--radius-sm:10px;--radius-xs:8px;--shadow-lg:0 24px 60px -18px #030814e6;--shadow-md:0 14px 34px -16px #030814cc;--shadow-glow:0 0 0 1px #4f7cff59, 0 12px 30px -10px #4f7cff73;--font:"PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei UI", "Microsoft YaHei", "Segoe UI", system-ui, -apple-system, sans-serif;--mono:"SF Mono", "JetBrains Mono", "Cascadia Mono", Consolas, monospace;--ease:cubic-bezier(.22, .68, .35, 1)}*{box-sizing:border-box}html,body{height:100%}body{font-family:var(--font);color:var(--text-1);background:radial-gradient(1200px 700px at 12% -10%, #4f7cff29, transparent 60%), radial-gradient(900px 600px at 100% 0%, #7c5cff1f, transparent 55%), var(--bg-0);-webkit-font-smoothing:antialiased;margin:0;font-size:13px;line-height:1.5;overflow:hidden}[hidden]{display:none!important}h1,h2,h3,h4,p,ul{margin:0;padding:0}ul{list-style:none}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#94aadc29;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:#94aadc4d}.svg-sprite{width:0;height:0;position:absolute;overflow:hidden}.icon{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:18px;height:18px}.btn{border-radius:var(--radius-sm);letter-spacing:.2px;white-space:nowrap;height:34px;transition:transform .12s var(--ease), box-shadow .18s var(--ease), background .18s var(--ease), border-color .18s var(--ease), filter .18s var(--ease);justify-content:center;align-items:center;gap:7px;padding:0 14px;font-size:12.5px;font-weight:500;display:inline-flex}.btn:active{transform:scale(.975)}.btn-primary{color:#fff;background:linear-gradient(135deg, var(--primary), var(--violet));box-shadow:0 10px 24px -12px #4f7cfff2,inset 0 1px #ffffff3d}.btn-primary:hover{filter:brightness(1.08);box-shadow:0 14px 32px -12px #4f7cff,inset 0 1px #ffffff4d}.btn-ghost{color:var(--text-2);border:1px solid var(--stroke);background:#94aadc12}.btn-ghost:hover{color:var(--text-1);border-color:var(--stroke-strong);background:#94aadc21}.btn-danger{color:#fff;background:linear-gradient(135deg,#f87171,#ef4444);box-shadow:0 10px 24px -12px #ef4444e6}.btn-block{width:100%;height:40px;font-size:13.5px}.btn[disabled],.btn:disabled{opacity:.42;cursor:not-allowed;filter:none}.icon-btn{border-radius:var(--radius-sm);width:34px;height:34px;color:var(--text-2);transition:all .16s var(--ease);border:1px solid #0000;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{color:var(--text-1);border-color:var(--stroke);background:#94aadc1a}.icon-btn:active{transform:scale(.94)}.icon-btn:disabled{opacity:.35;cursor:not-allowed;background:0 0;border-color:#0000}.icon-btn.tiny{border-radius:var(--radius-xs);width:26px;height:26px}.icon-btn.tiny .icon{width:15px;height:15px}.link-btn{color:var(--cyan);transition:opacity .16s var(--ease);padding:0;font-size:12.5px}.link-btn:hover{opacity:.78;text-decoration:underline}.divider-v{background:var(--stroke);width:1px;height:20px;margin:0 4px}.ver{font-family:var(--mono);color:var(--text-3);font-size:11px}.panel-hint{color:var(--text-3);font-size:11px}.login-screen{grid-template-columns:1.05fr .95fr;align-items:center;gap:4vw;padding:6vh 7vw;display:grid;position:fixed;inset:0;overflow:hidden}.login-bg{z-index:0;background:radial-gradient(900px 620px at 18% 18%,#4f7cff3d,#0000 62%),radial-gradient(760px 560px at 78% 84%,#22d3ee21,#0000 58%),linear-gradient(160deg,#070a11 0%,#0b1020 52%,#080b13 100%);position:absolute;inset:0}.login-bg:after{content:"";opacity:.4;background-image:radial-gradient(#ffffff0e 1px,#0000 0);background-size:3px 3px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle at 50% 45%,#000 0%,#0000 78%);mask-image:radial-gradient(circle at 50% 45%,#000 0%,#0000 78%)}.topology{opacity:.85;width:100%;height:100%;position:absolute;inset:0}.topology .pulse{animation:pulseNode 3.4s var(--ease) infinite;transform-origin:50%}.topology .p2{animation-delay:.9s}.topology .p3{animation-delay:1.8s}@keyframes pulseNode{0%,to{opacity:.35;r:3}45%{opacity:1;r:5}}.login-brand{z-index:1;max-width:460px;animation:riseIn .6s var(--ease) both;position:relative}.brand-mark{color:#dbe6ff;background:linear-gradient(140deg,#4f7cffe6,#7c5cffbf);border-radius:11px;place-items:center;width:36px;height:36px;display:grid;box-shadow:0 10px 24px -10px #4f7cffe6,inset 0 1px #ffffff4d}.brand-mark .icon{width:20px;height:20px}.brand-mark.large{border-radius:16px;width:56px;height:56px;margin-bottom:22px}.brand-mark.large .icon{width:30px;height:30px}.login-brand h1{letter-spacing:1px;background:linear-gradient(120deg,#fff 10%,#bcd0ff 55%,#7ce7ff 100%);color:#0000;-webkit-background-clip:text;background-clip:text;font-size:42px;font-weight:700}.brand-sub{color:var(--text-2);letter-spacing:.6px;margin-top:10px;font-size:14px}.brand-points{gap:14px;margin-top:34px;display:grid}.brand-points li{color:var(--text-2);align-items:center;gap:11px;font-size:13px;display:flex}.brand-points .dot{background:var(--cyan);border-radius:50%;width:6px;height:6px;box-shadow:0 0 12px #22d3eee6}.login-card{z-index:1;-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);width:min(420px,100%);box-shadow:var(--shadow-lg), inset 0 1px 0 #ffffff0f;animation:riseIn .65s 80ms var(--ease) both;background:linear-gradient(165deg,#1c263cd1,#0b0f18e0);border:1px solid #94aadc29;border-radius:22px;justify-self:center;padding:34px 34px 26px;position:relative}.login-card-head h2{letter-spacing:.4px;font-size:21px;font-weight:600}.login-card-head p{color:var(--text-3);margin-top:6px;margin-bottom:24px;font-size:12.5px}.field{margin-bottom:15px;display:block}.field>span{color:var(--text-2);margin-bottom:7px;font-size:12px;display:block}.field input,.field select{border-radius:var(--radius-sm);width:100%;height:40px;color:var(--text-1);border:1px solid var(--stroke);transition:border-color .18s var(--ease), box-shadow .18s var(--ease), background .18s var(--ease);background:#090d16b8;outline:none;padding:0 13px}.field input::placeholder{color:#4d566b}.field input:focus,.field select:focus{background:#090d16e6;border-color:#22d3ee99;box-shadow:0 0 0 3px #22d3ee1f}.login-error{border-radius:var(--radius-xs);color:#ffd0d0;animation:shake .32s var(--ease);background:#f871711f;border:1px solid #f8717147;margin:-4px 0 12px;padding:9px 12px;font-size:12px}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.login-switch{text-align:center;color:var(--text-3);margin-top:18px;font-size:12.5px}.login-tip{border-top:1px dashed var(--stroke);color:var(--text-3);text-align:center;margin-top:14px;padding-top:14px;font-size:11.5px}.login-tip code{font-family:var(--mono);color:var(--cyan);background:#22d3ee1a;border-radius:5px;padding:1px 5px}.login-footer{z-index:1;color:var(--text-3);justify-content:space-between;font-size:11px;display:flex;position:absolute;bottom:22px;left:7vw;right:7vw}@keyframes riseIn{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.workbench{height:100vh;animation:fadeIn .35s var(--ease);grid-template-rows:56px minmax(0,1fr) 28px;display:grid}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.topbar{z-index:30;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:linear-gradient(#121829f5,#0b0f18e0);border-bottom:1px solid #0000;border-image:linear-gradient(90deg,#0000,#4f7cff80,#22d3ee52,#0000) 1;align-items:center;gap:18px;padding:0 16px;display:flex;position:relative}.brand{align-items:center;gap:10px;min-width:200px;display:flex}.brand-text{flex-direction:column;line-height:1.25;display:flex}.brand-text strong{letter-spacing:.5px;font-size:14px;font-weight:600}.brand-text span{color:var(--text-3);font-size:10.5px}.topbar-center{align-items:center;gap:14px;margin:0 auto;display:flex}.scene-switcher{border-radius:var(--radius-sm);border:1px solid var(--stroke);background:#090d1699;align-items:center;gap:4px;height:34px;padding:0 6px 0 10px;display:flex}.scene-switcher>.icon{width:15px;height:15px;color:var(--cyan)}.scene-switcher select{max-width:150px;height:30px;color:var(--text-1);cursor:pointer;background:0 0;border:0;outline:none;padding-right:4px;font-size:12.5px}.scene-switcher select option{background:var(--bg-2);color:var(--text-1)}.mode-switch{border:1px solid var(--stroke);background:#090d16a8;border-radius:12px;gap:2px;padding:3px;display:flex}.mode-switch button{white-space:nowrap;height:28px;color:var(--text-3);transition:all .18s var(--ease);border-radius:9px;flex:none;align-items:center;gap:6px;padding:0 13px;font-size:12px;display:flex}.mode-switch button .icon{width:15px;height:15px}.mode-switch button:hover{color:var(--text-1);background:#94aadc14}.mode-switch button.active{color:#fff;background:linear-gradient(135deg,#4f7cfff2,#7c5cffd9);box-shadow:0 6px 16px -8px #4f7cfff2,inset 0 1px #ffffff38}.topbar-actions{align-items:center;gap:6px;display:flex}.user-chip{border:1px solid var(--stroke);height:34px;color:var(--text-2);transition:all .16s var(--ease);background:#090d168c;border-radius:99px;align-items:center;gap:8px;padding:0 8px 0 4px;display:flex}.user-chip:hover{border-color:var(--stroke-strong);color:var(--text-1);background:#94aadc1a}.user-chip .avatar{color:#fff;background:linear-gradient(140deg,#4f7cffe6,#22d3eeb3);border-radius:50%;place-items:center;width:26px;height:26px;display:grid}.user-chip .avatar .icon{width:14px;height:14px}.user-chip .user-name{text-overflow:ellipsis;white-space:nowrap;max-width:84px;font-size:12px;overflow:hidden}.user-chip .chevron{opacity:.6;width:13px;height:13px}.workspace{grid-template-columns:280px minmax(0,1fr) 320px;min-height:0;display:grid}.panel{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:linear-gradient(#121829c7,#0a0e16eb);flex-direction:column;min-height:0;display:flex}.library{border-right:1px solid var(--stroke)}.inspector{border-left:1px solid var(--stroke)}.panel-head{border-bottom:1px solid var(--stroke);flex:none;justify-content:space-between;align-items:center;height:48px;padding:0 14px;display:flex}.panel-title{align-items:center;gap:8px;display:flex}.panel-title h2{letter-spacing:.6px;font-size:13.5px;font-weight:600}.count-badge{min-width:20px;height:18px;font-family:var(--mono);color:#cfe0ff;background:#4f7cff33;border:1px solid #4f7cff59;border-radius:99px;place-items:center;padding:0 6px;font-size:10.5px;display:grid}.library-tools{flex:none;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px 12px 0;display:grid}.library-tool{border-radius:var(--radius-sm);border:1px solid var(--stroke);height:52px;color:var(--text-2);letter-spacing:.2px;white-space:nowrap;transition:transform .18s var(--ease), border-color .18s var(--ease), box-shadow .2s var(--ease), color .18s var(--ease);background:linear-gradient(170deg,#232c428c,#090d16b8);flex-direction:column;justify-content:center;align-items:center;gap:5px;padding:0 4px;font-size:10.5px;display:flex}.library-tool .icon{color:#7c9bfff2;width:17px;height:17px}.library-tool:nth-child(2) .icon{color:#a78bfaf2}.library-tool:nth-child(3) .icon{color:#22d3eef2}.library-tool:hover{color:var(--text-1);border-color:#22d3ee66;transform:translateY(-2px);box-shadow:0 12px 22px -18px #000000f2,0 0 0 1px #22d3ee1f}.library-tool:active{transform:scale(.98)}.library-tool:focus-visible{border-color:#22d3ee99;outline:none;box-shadow:0 0 0 3px #22d3ee24}.search-box{flex:none;margin:10px 12px 8px;position:relative}.search-box .icon{width:15px;height:15px;color:var(--text-3);pointer-events:none;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.search-box input{border-radius:var(--radius-sm);width:100%;height:32px;color:var(--text-1);border:1px solid var(--stroke);transition:border-color .18s var(--ease), box-shadow .18s var(--ease);background:#090d16b3;outline:none;padding:0 10px 0 31px;font-size:12px}.search-box input::placeholder{color:#4d566b}.search-box input:focus{border-color:#4f7cff8c;box-shadow:0 0 0 3px #4f7cff1f}.tabs{border-bottom:1px solid var(--stroke);flex:none;gap:2px;padding:0 12px;display:flex}.tab{height:32px;color:var(--text-3);transition:color .16s var(--ease);padding:0 9px;font-size:12px;position:relative}.tab:after{content:"";background:linear-gradient(90deg, var(--primary), var(--cyan));height:2px;transition:transform .2s var(--ease);border-radius:2px;position:absolute;bottom:-1px;left:8px;right:8px;transform:scaleX(0)}.tab:hover{color:var(--text-1)}.tab.active{color:var(--text-1);font-weight:500}.tab.active:after{transform:scaleX(1)}.library-scroll{scrollbar-gutter:stable;flex:1;min-height:0;padding:10px 10px 4px;overflow-y:auto}.lib-group{margin-bottom:6px}.lib-group-head{border-radius:var(--radius-xs);width:100%;height:30px;color:var(--text-2);transition:background .16s var(--ease), color .16s var(--ease);align-items:center;gap:8px;padding:0 6px;display:flex}.lib-group-head:hover{color:var(--text-1);background:#94aadc12}.lib-group-head .group-dot{border-radius:3px;flex:none;width:7px;height:7px}.lib-group-head .group-name{letter-spacing:.3px;font-size:11.5px;font-weight:500}.lib-group-head .group-count{font-family:var(--mono);color:var(--text-3);font-size:10px}.lib-group-head .chevron{opacity:.55;width:13px;height:13px;transition:transform .2s var(--ease);margin-left:auto}.lib-group.collapsed .lib-group-head .chevron{transform:rotate(-90deg)}.lib-group-body{transition:max-height .22s var(--ease), opacity .18s var(--ease);grid-template-columns:1fr 1fr;gap:8px;padding:6px 2px 8px;display:grid;overflow:hidden}.lib-group.collapsed .lib-group-body{display:none}.lib-card{border-radius:var(--radius-sm);border:1px solid var(--stroke);cursor:grab;-webkit-user-select:none;user-select:none;transition:transform .18s var(--ease), border-color .18s var(--ease), box-shadow .22s var(--ease), filter .18s var(--ease);background:linear-gradient(170deg,#232c429e,#0c111cd9);padding:5px 5px 7px;position:relative}.lib-card:hover{border-color:#22d3ee66;transform:translateY(-2px);box-shadow:0 14px 26px -16px #000000f2,0 0 0 1px #22d3ee24}.lib-card:active{cursor:grabbing;transform:scale(.985)}.lib-card.dragging{opacity:.45;transform:scale(.94)}.lib-card .thumb{aspect-ratio:16/11;background:radial-gradient(120% 100% at 50% 0,#4f7cff29,#0000 62%),linear-gradient(170deg,#131a2b,#0a0e17);border-radius:8px;place-items:center;display:grid;position:relative;overflow:hidden}.lib-card .thumb img{object-fit:contain;width:100%;height:100%}.lib-card .thumb .thumb-fallback{color:#94aadc73;place-items:center;display:grid}.lib-card .thumb .thumb-fallback .icon{stroke-width:1.2px;width:26px;height:26px}.lib-card .thumb .system-tag{color:#cfe0ffe6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#090d16b8;border:1px solid #94aadc2e;border-radius:5px;padding:1px 5px;font-size:9px;position:absolute;top:4px;left:4px}.lib-card .card-name{color:var(--text-1);white-space:nowrap;text-overflow:ellipsis;margin-top:6px;padding:0 2px;font-size:11.5px;overflow:hidden}.lib-card .card-meta{justify-content:space-between;align-items:center;margin-top:2px;padding:0 2px;display:flex}.lib-card .card-type{color:var(--text-3);font-size:9.5px}.lib-card .card-menu{opacity:0;border:1px solid var(--stroke);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:opacity .16s var(--ease), transform .16s var(--ease);background:#090d16db;border-radius:7px;gap:2px;padding:2px;display:flex;position:absolute;top:6px;right:6px;transform:translateY(-3px)}.lib-card:hover .card-menu{opacity:1;transform:translateY(0)}.lib-card .card-menu button{width:20px;height:20px;color:var(--text-2);transition:all .14s var(--ease);border-radius:5px;place-items:center;display:grid}.lib-card .card-menu button:hover{color:var(--text-1);background:#94aadc29}.lib-card .card-menu button .icon{width:12px;height:12px}.library-tip{border-top:1px solid var(--stroke);color:var(--text-3);background:#090d1680;flex:none;align-items:center;gap:7px;padding:9px 14px;font-size:10.5px;display:flex}.library-tip .icon{color:#22d3eeb3;width:13px;height:13px}.empty-state{text-align:center;color:var(--text-3);place-items:center;gap:12px;padding:40px 18px;display:grid}.empty-state .empty-icon{color:#4f7cff99;background:#4f7cff12;border:1px dashed #4f7cff59;border-radius:20px;place-items:center;width:62px;height:62px;display:grid}.empty-state .empty-icon .icon{stroke-width:1.1px;width:30px;height:30px}.empty-state p{font-size:12px;line-height:1.7}.viewport{background:radial-gradient(1100px 700px at 50% 4%,#4f7cff24,#0000 62%),radial-gradient(700px 520px at 82% 92%,#22d3ee14,#0000 60%),linear-gradient(#0a0e18 0%,#080b12 60%,#06090f 100%);min-width:0;position:relative;overflow:hidden}.viewport:before{content:"";pointer-events:none;opacity:.5;background-image:radial-gradient(#ffffff0d 1px,#0000 0);background-size:3px 3px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle at 50% 45%,#000 0%,#0000 80%);mask-image:radial-gradient(circle at 50% 45%,#000 0%,#0000 80%)}#scene-canvas{touch-action:none;outline:none;width:100%;height:100%;display:block;position:absolute;inset:0}.hud-mode{height:30px;color:var(--text-2);border:1px solid var(--stroke);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:var(--shadow-md);pointer-events:none;transition:color .2s var(--ease), border-color .2s var(--ease);background:#0b101bb8;border-radius:99px;align-items:center;gap:8px;padding:0 14px;font-size:11.5px;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%)}.hud-mode .icon{width:14px;height:14px;color:var(--cyan)}.hud-mode.is-active{color:var(--text-1);border-color:#22d3ee66}.viewport-actions{border:1px solid var(--stroke);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:var(--shadow-md);background:#0b101bb8;border-radius:13px;flex-direction:column;gap:6px;padding:5px;display:flex;position:absolute;top:14px;right:14px}.glass-btn{width:30px;height:30px;color:var(--text-2);transition:all .16s var(--ease);border-radius:9px;place-items:center;display:grid}.glass-btn .icon{width:16px;height:16px}.glass-btn:hover{color:var(--text-1);background:#94aadc24}.glass-btn.active{color:#06121a;background:linear-gradient(135deg, var(--cyan), #67e8f9);box-shadow:0 6px 16px -8px #22d3eee6}.viewport-stats{height:26px;font-family:var(--mono);color:var(--text-3);border:1px solid var(--stroke);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none;background:#0b101b9e;border-radius:99px;align-items:center;gap:8px;padding:0 12px;font-size:10.5px;display:flex;position:absolute;bottom:12px;left:14px}.viewport-stats b{color:var(--text-2);font-weight:600}.dot-sep{background:#94aadc59;border-radius:50%;width:3px;height:3px}.compass{border:1px solid var(--stroke);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none;background:#0b101b99;border-radius:50%;place-items:center;width:58px;height:58px;display:grid;position:absolute;bottom:14px;right:16px}.compass-ring{border:1px dashed #94aadc38;border-radius:50%;position:absolute;inset:8px}.compass-axes{width:100%;height:100%;transition:transform 80ms linear;position:relative}.compass .axis{font-family:var(--mono);border-radius:50%;place-items:center;width:14px;height:14px;font-size:9px;font-weight:600;display:grid;position:absolute}.compass .axis.x{color:#ff7b7b;top:50%;right:2px;transform:translateY(-50%)}.compass .axis.y{color:#7dffb2;top:2px;left:50%;transform:translate(-50%)}.compass .axis.z{color:#7db4ff;bottom:2px;left:50%;transform:translate(-50%)}.drop-hint{border-radius:var(--radius-lg);opacity:0;pointer-events:none;transition:opacity .18s var(--ease);z-index:5;background:radial-gradient(circle,#22d3ee17,#0000 70%);border:1.5px dashed #22d3ee8c;place-items:center;display:grid;position:absolute;inset:10px}.drop-hint.show{opacity:1;animation:1.6s ease-in-out infinite borderGlow}@keyframes borderGlow{0%,to{box-shadow:inset 0 0 40px #22d3ee1a}50%{box-shadow:inset 0 0 90px #22d3ee38}}.drop-hint-inner{color:#c9f7ff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#081e28b8;border:1px solid #22d3ee66;border-radius:99px;align-items:center;gap:10px;padding:12px 20px;font-size:13px;display:flex}.drop-hint-inner .icon{width:20px;height:20px;color:var(--cyan)}.inspector-scroll{scrollbar-gutter:stable;flex:1;min-height:0;padding:10px 12px 16px;overflow-y:auto}.section{border-radius:var(--radius);border:1px solid var(--stroke);animation:riseIn .24s var(--ease) both;background:linear-gradient(170deg,#232c4266,#0a0e1699);margin-bottom:10px;overflow:hidden}.section-head{border-bottom:1px solid var(--stroke);justify-content:space-between;align-items:center;height:34px;padding:0 11px;display:flex}.section-head h3{letter-spacing:.7px;color:var(--text-2);text-transform:uppercase;font-size:11.5px;font-weight:600}.section-head .section-extra{color:var(--text-3);font-size:10.5px;font-family:var(--mono)}.section-body{gap:9px;padding:10px 11px 12px;display:grid}.object-card{align-items:center;gap:10px;display:flex}.object-thumb{border:1px solid var(--stroke);background:linear-gradient(170deg,#131a2b,#0a0e17);border-radius:9px;flex:none;place-items:center;width:48px;height:40px;display:grid;overflow:hidden}.object-thumb img{object-fit:contain;width:100%;height:100%}.object-thumb .icon{color:#94aadc73;width:20px;height:20px}.object-meta{flex:1;min-width:0}.object-name{width:100%;color:var(--text-1);transition:all .16s var(--ease);background:0 0;border:1px solid #0000;border-radius:5px;outline:none;margin-left:-5px;padding:2px 5px;font-size:12.5px;font-weight:600;display:block}.object-name:hover{border-color:var(--stroke)}.object-name:focus{background:#090d16b3;border-color:#22d3ee80}.object-tags{align-items:center;gap:5px;margin-top:3px;padding-left:1px;display:flex}.tag{color:var(--text-2);border:1px solid var(--stroke);background:#94aadc1a;border-radius:5px;padding:1px 6px;font-size:9.5px}.tag.system{color:#ffd9a0;background:#fbbf241a;border-color:#fbbf2447}.vec-row{grid-template-columns:52px repeat(3,minmax(0,1fr));align-items:center;gap:5px;display:grid}.vec-label{color:var(--text-3);align-items:center;gap:5px;font-size:11px;display:flex}.vec-label .axis-dot{border-radius:50%;width:5px;height:5px}.vec-label.a-x .axis-dot{background:#ff7b7b}.vec-label.a-y .axis-dot{background:#7dffb2}.vec-label.a-z .axis-dot{background:#7db4ff}.num-input{width:100%;height:27px;font-family:var(--mono);text-align:center;color:var(--text-1);border:1px solid var(--stroke);transition:border-color .16s var(--ease), box-shadow .16s var(--ease);background:#090d16b3;border-radius:7px;outline:none;padding:0 6px;font-size:11px}.num-input:hover{border-color:var(--stroke-strong)}.num-input:focus{border-color:#4f7cff99;box-shadow:0 0 0 2px #4f7cff24}.param-row{grid-template-columns:74px minmax(0,1fr) 42px;align-items:center;gap:8px;display:grid}.param-row>label{color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;font-size:11.5px;overflow:hidden}.param-row .param-value{font-family:var(--mono);color:var(--text-2);text-align:right;font-size:10.5px}.param-row.color-row,.param-row.toggle-row{grid-template-columns:74px minmax(0,1fr)}input[type=range]{appearance:none;cursor:pointer;background:0 0;outline:none;width:100%;height:16px}input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(90deg, var(--primary) 0%, var(--violet) calc(var(--fill,50%) * .75), var(--cyan) var(--fill,50%), #ffffff14 var(--fill,50%));border-radius:99px;height:4px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid var(--cyan);width:13px;height:13px;transition:transform .12s var(--ease);background:#fff;border-radius:50%;margin-top:-4.5px;box-shadow:0 0 10px #22d3eeb3}input[type=range]:active::-webkit-slider-thumb{transform:scale(1.15)}input[type=range]::-moz-range-track{background:#ffffff1a;border-radius:99px;height:4px}input[type=range]::-moz-range-progress{background:linear-gradient(90deg, var(--primary), var(--cyan));border-radius:99px;height:4px}input[type=range]::-moz-range-thumb{border:2px solid var(--cyan);background:#fff;border-radius:50%;width:12px;height:12px}.color-input{border:1px solid var(--stroke);cursor:pointer;border-radius:7px;height:27px;display:block;position:relative;overflow:hidden}.color-input input[type=color]{cursor:pointer;background:0 0;border:0;width:140%;height:140%;padding:0;position:absolute;inset:-6px}.color-value{font-family:var(--mono);color:#ffffffe6;text-shadow:0 1px 3px #000c;pointer-events:none;justify-content:flex-end;align-items:center;padding-right:8px;font-size:10px;display:flex;position:absolute;inset:0}.switch{border:1px solid var(--stroke);width:38px;height:21px;transition:all .2s var(--ease);background:#94aadc29;border-radius:99px;position:relative}.switch:after{content:"";width:15px;height:15px;transition:all .2s var(--ease);background:#9aa5bb;border-radius:50%;position:absolute;top:2px;left:2px}.switch.on{background:linear-gradient(135deg,#4f7cffe6,#22d3eecc);border-color:#22d3ee80}.switch.on:after{background:#fff;left:19px;box-shadow:0 0 10px #ffffffb3}.inspector-empty{text-align:center;color:var(--text-3);place-items:center;gap:14px;padding:56px 20px;display:grid}.inspector-empty .empty-art{color:#4f7cff8c;background:radial-gradient(circle at 50% 30%,#4f7cff2e,#0000 70%);border:1px dashed #4f7cff52;border-radius:22px;place-items:center;width:74px;height:74px;display:grid}.inspector-empty .empty-art .icon{stroke-width:1.1px;width:32px;height:32px}.inspector-empty p{font-size:12px;line-height:1.8}.statusbar{color:var(--text-3);border-top:1px solid var(--stroke);background:#090d16eb;align-items:center;gap:16px;padding:0 14px;font-size:10.5px;display:flex}.save-state{align-items:center;gap:6px;min-width:96px;display:flex}.save-dot{background:var(--text-3);width:6px;height:6px;transition:all .2s var(--ease);border-radius:50%}.save-state.is-saved .save-dot{background:var(--ok);box-shadow:0 0 8px #34d399cc}.save-state.is-saving .save-dot{background:var(--cyan);animation:1s ease-in-out infinite pulseDot;box-shadow:0 0 10px #22d3eee6}.save-state.is-error{color:#ffb4b4;cursor:pointer}.save-state.is-error .save-dot{background:var(--danger);box-shadow:0 0 8px #f87171e6}@keyframes pulseDot{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1.15)}}.shortcuts{align-items:center;gap:12px;margin:0 auto;display:flex}.shortcuts kbd{min-width:16px;font-family:var(--mono);text-align:center;color:var(--text-2);border:1px solid var(--stroke);background:#94aadc1f;border-radius:4px;margin-right:3px;padding:0 3px;font-size:9.5px;display:inline-block}.status-right{align-items:center;gap:12px;display:flex}.toast-root{z-index:200;pointer-events:none;gap:8px;width:300px;display:grid;position:fixed;top:68px;right:18px}.toast{border-radius:var(--radius-sm);color:var(--text-1);border:1px solid var(--stroke);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:var(--shadow-md);pointer-events:auto;animation:toastIn .26s var(--ease) both;background:#121829f0;align-items:flex-start;gap:9px;padding:10px 12px 10px 14px;font-size:12px;line-height:1.55;display:flex;position:relative;overflow:hidden}.toast:before{content:"";background:var(--primary);width:3px;position:absolute;top:0;bottom:0;left:0}.toast.success:before{background:var(--ok)}.toast.warn:before{background:var(--warn)}.toast.error:before{background:var(--danger)}.toast .toast-icon{color:var(--primary);margin-top:1px}.toast.success .toast-icon{color:var(--ok)}.toast.warn .toast-icon{color:var(--warn)}.toast.error .toast-icon{color:var(--danger)}.toast .toast-body{word-break:break-word;flex:1;min-width:0}.toast.leaving{animation:toastOut .2s var(--ease) both}@keyframes toastIn{0%{opacity:0;transform:translate(18px)scale(.98)}to{opacity:1;transform:translate(0)scale(1)}}@keyframes toastOut{to{opacity:0;transform:translate(20px)}}.modal-root{z-index:180;display:none;position:fixed;inset:0}.modal-root.open{display:block}.modal-mask{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:fadeIn .2s var(--ease);background:#04070d9e;position:absolute;inset:0}.modal{width:min(620px,100vw - 40px);max-height:calc(100vh - 80px);box-shadow:var(--shadow-lg), inset 0 1px 0 #ffffff0f;animation:modalIn .26s var(--ease) both;background:linear-gradient(168deg,#1a2133f7,#090d16fa);border:1px solid #94aadc29;border-radius:20px;flex-direction:column;display:flex;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.modal.narrow{width:min(430px,100vw - 40px)}@keyframes modalIn{0%{opacity:0;transform:translate(-50%,calc(12px - 50%))scale(.985)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}.modal-head{flex:none;justify-content:space-between;align-items:center;padding:18px 20px 14px;display:flex}.modal-head h2{letter-spacing:.4px;font-size:16px;font-weight:600}.modal-head p{color:var(--text-3);margin-top:4px;font-size:11.5px}.modal-body{flex:1;min-height:0;padding:0 20px 6px;overflow-y:auto}.modal-foot{border-top:1px solid var(--stroke);flex:none;justify-content:flex-end;gap:9px;margin-top:10px;padding:14px 20px 18px;display:flex}.modal-body .tabs{margin-bottom:14px;padding:0}.modal-body .tab{height:34px;padding:0 14px;font-size:12.5px}.pick-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;display:grid}.pick-item{border-radius:var(--radius-sm);border:1px solid var(--stroke);color:var(--text-2);transition:all .16s var(--ease);background:#0c111c99;flex-direction:column;align-items:center;gap:6px;padding:10px 6px;display:flex}.pick-item:hover{color:var(--text-1);border-color:#22d3ee59;transform:translateY(-1px)}.pick-item.active{color:#fff;box-shadow:var(--shadow-glow);background:#4f7cff24;border-color:#4f7cffb3}.pick-item .pick-icon{width:34px;height:34px;color:inherit;background:#94aadc17;border-radius:10px;place-items:center;display:grid}.pick-item .pick-icon .icon{width:18px;height:18px}.pick-item span.pick-name{text-align:center;font-size:11px;line-height:1.35}.pick-group-title{color:var(--text-3);letter-spacing:.5px;align-items:center;gap:7px;margin:14px 0 8px;font-size:11px;display:flex}.pick-group-title .group-dot{border-radius:2px;width:6px;height:6px}.dropzone{border-radius:var(--radius);color:var(--text-2);text-align:center;cursor:pointer;transition:all .2s var(--ease);background:radial-gradient(circle at 50% 0,#4f7cff1a,#0000 70%);border:1.5px dashed #4f7cff6b;place-items:center;gap:8px;padding:30px 18px;display:grid;position:relative}.dropzone:hover,.dropzone.dragover{color:var(--text-1);background:radial-gradient(circle at 50% 0,#22d3ee24,#0000 72%);border-color:#22d3eeb3}.dropzone .icon{color:#4f7cffbf;width:30px;height:30px}.dropzone small{color:var(--text-3);font-size:11px}.photo-preview{border-radius:var(--radius-sm);border:1px solid var(--stroke);background:#0c111c99;align-items:center;gap:12px;padding:10px;display:flex}.photo-preview img{object-fit:cover;border:1px solid var(--stroke);border-radius:8px;width:96px;height:72px}.photo-preview .photo-meta{min-width:0;color:var(--text-2);flex:1;gap:4px;font-size:11.5px;display:grid}.photo-preview .photo-name{color:var(--text-1);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.form-row{gap:6px;margin-top:12px;display:grid}.form-row>label{color:var(--text-2);font-size:11.5px}.form-row textarea,.form-row input[type=text],.form-row input[type=password],.form-row input[type=url]{border-radius:var(--radius-sm);width:100%;min-height:36px;color:var(--text-1);border:1px solid var(--stroke);resize:vertical;transition:border-color .16s var(--ease), box-shadow .16s var(--ease);background:#090d16b8;outline:none;padding:8px 11px;font-size:12.5px}.form-row textarea:focus,.form-row input:focus{border-color:#22d3ee8c;box-shadow:0 0 0 3px #22d3ee1a}.hint-line{border-radius:var(--radius-xs);color:var(--text-2);background:#4f7cff14;border:1px solid #4f7cff38;margin-top:12px;padding:9px 11px;font-size:11.5px;line-height:1.6}.hint-line.warn{color:#ffe4b0;background:#fbbf2414;border-color:#fbbf2442}.status-chip{border-radius:99px;align-items:center;gap:5px;height:22px;padding:0 9px;font-size:10.5px;display:inline-flex}.status-chip.on{color:#b9ffe0;background:#34d3991f;border:1px solid #34d3994d}.status-chip.off{color:var(--text-3);border:1px solid var(--stroke);background:#94aadc14}.empty-hint{text-align:center;color:var(--text-3);padding:28px;font-size:12px}.stats-grid{grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:16px;display:grid}.stat-card{border-radius:var(--radius-sm);border:1px solid var(--stroke);background:linear-gradient(160deg,#4f7cff1a,#0c111c80);padding:12px}.stat-card b{font-family:var(--mono);color:#fff;font-size:20px;font-weight:600;display:block}.stat-card span{color:var(--text-3);font-size:10.5px}.data-table{border-collapse:collapse;width:100%;font-size:11.5px}.data-table th{text-align:left;color:var(--text-3);border-bottom:1px solid var(--stroke);padding:7px 8px;font-size:10.5px;font-weight:500}.data-table td{color:var(--text-2);border-bottom:1px solid #94aadc12;padding:8px}.data-table tr:last-child td{border-bottom:0}.data-table td .role-select{height:24px;color:var(--text-1);border:1px solid var(--stroke);background:#090d16cc;border-radius:6px;outline:none;padding:0 6px;font-size:11px}.data-table td .role-select option{background:var(--bg-2)}.table-scroll{border-radius:var(--radius-sm);border:1px solid var(--stroke);max-height:320px;overflow-y:auto}.context-menu{z-index:300;border-radius:var(--radius-sm);border:1px solid var(--stroke-strong);min-width:150px;box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);animation:toastIn .16s var(--ease) both;background:#121829f7;padding:5px;position:fixed}.context-menu button{width:100%;height:30px;color:var(--text-2);transition:all .14s var(--ease);border-radius:7px;align-items:center;gap:8px;padding:0 9px;font-size:12px;display:flex}.context-menu button:hover{color:var(--text-1);background:#94aadc1f}.context-menu button.danger{color:#ffb4b4}.context-menu button.danger:hover{background:#f8717124}.context-menu button .icon{width:14px;height:14px}.context-menu .sep{background:var(--stroke);height:1px;margin:4px 6px}.drag-ghost{z-index:400;border-radius:var(--radius-sm);pointer-events:none;opacity:.92;background:#121829db;border:1px solid #22d3ee8c;width:108px;padding:5px;position:fixed;transform:translate(-50%,-50%)rotate(-2deg);box-shadow:0 16px 30px -14px #000000e6,0 0 0 1px #22d3ee33}.drag-ghost .thumb{aspect-ratio:16/11;background:linear-gradient(170deg,#131a2b,#0a0e17);border-radius:7px;place-items:center;display:grid;overflow:hidden}.drag-ghost img{object-fit:contain;width:100%;height:100%}.drag-ghost .name{text-align:center;color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;margin-top:4px;font-size:10.5px;overflow:hidden}.preset-intro{color:var(--text-3);margin:2px 0 13px;font-size:11.5px;line-height:1.75}.preset-grid{transition:opacity .18s var(--ease);grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding-bottom:4px;display:grid}.preset-grid.is-busy{opacity:.5;pointer-events:none}.preset-card{border:1px solid var(--stroke);cursor:pointer;text-align:left;transition:transform .18s var(--ease), border-color .18s var(--ease), box-shadow .22s var(--ease);background:linear-gradient(170deg,#232c4299,#0c111ce6);border-radius:14px;flex-direction:column;padding:8px 8px 10px;display:flex}.preset-card:hover{border-color:#22d3ee66;transform:translateY(-3px);box-shadow:0 18px 32px -20px #000000f2,0 0 0 1px #22d3ee1f}.preset-card:active{transform:scale(.99)}.preset-thumb{aspect-ratio:260/132;background:linear-gradient(#94aadc0d 1px,#0000 1px) 0 0/100% 18px,linear-gradient(90deg,#94aadc0d 1px,#0000 1px) 0 0/18px 100%,radial-gradient(120% 100% at 50% 0,#4f7cff29,#0000 66%),linear-gradient(170deg,#101728,#080c14);border:1px solid #94aadc14;border-radius:10px;display:block;position:relative;overflow:hidden}.preset-svg{width:100%;height:100%;display:block}.preset-thumb:after{content:"点击生成";color:#fff;opacity:0;transition:opacity .18s var(--ease), transform .18s var(--ease);background:linear-gradient(135deg,#4f7cfff2,#7c5cffe6);border-radius:99px;padding:3px 9px;font-size:10px;position:absolute;bottom:8px;right:8px;transform:translateY(5px);box-shadow:0 10px 20px -10px #4f7cfff2}.preset-card:hover .preset-thumb:after,.preset-card.is-loading .preset-thumb:after{opacity:1;transform:translateY(0)}.preset-card.is-loading .preset-thumb:after{content:"正在搭建…"}.preset-main{flex-direction:column;gap:5px;padding:9px 3px 0;display:flex}.preset-title{justify-content:space-between;align-items:center;gap:8px;display:flex}.preset-title strong{letter-spacing:.3px;color:var(--text-1);font-size:13px;font-weight:600}.preset-count{color:var(--text-3);border:1px solid var(--stroke);background:#090d16b3;border-radius:99px;flex:none;padding:1px 7px;font-size:9.5px}.preset-desc{color:var(--text-2);font-size:11px;line-height:1.65}.preset-footline{justify-content:space-between;align-items:center;gap:8px;margin-top:1px;display:flex}.preset-tags{flex:none;gap:4px;display:flex}.preset-tag{color:#22d3eee0;background:#22d3ee1a;border:1px solid #22d3ee2e;border-radius:5px;padding:1.5px 6px;font-size:9.5px}.preset-cats{color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;font-size:9.5px;overflow:hidden}.preset-footer{justify-content:space-between;align-items:center;gap:14px;width:100%;display:flex}.preset-hint{color:var(--text-3);font-size:10.5px}.modal.wide{width:min(960px,100vw - 40px);max-height:calc(100vh - 40px)}.lab{grid-template-columns:minmax(0,280px) minmax(0,1fr);align-items:start;gap:16px;padding:2px 0 10px;display:grid}.lab-form{border-radius:var(--radius);border:1px solid var(--stroke);background:linear-gradient(168deg,#232c428c,#0b0f18e0);flex-direction:column;gap:13px;padding:15px;display:flex;box-shadow:inset 0 1px #ffffff0d}.lab-field{flex-direction:column;gap:7px;display:flex}.lab-field-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.lab-field-head label{letter-spacing:.5px;color:var(--text-2);font-size:11px}.lab-value{font-family:var(--mono);color:var(--cyan);font-size:11.5px;font-weight:600}.lab-hint{color:var(--text-3);font-size:10.5px;line-height:1.6}.lab-segment{border:1px solid var(--stroke);background:#090d16b8;border-radius:11px;gap:3px;padding:3px;display:flex}.lab-segment-btn{min-width:0;height:27px;color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;transition:color .16s var(--ease), background .2s var(--ease), box-shadow .2s var(--ease);border-radius:8px;flex:1 1 0;padding:0 6px;font-size:11px;overflow:hidden}.lab-segment-btn:hover{color:var(--text-1);background:#94aadc14}.lab-segment-btn.active{color:#fff;background:linear-gradient(135deg, var(--primary), var(--violet));box-shadow:0 8px 18px -10px #4f7cfff2}.lab-select{border:1px solid var(--stroke);width:100%;height:32px;color:var(--text-1);appearance:none;transition:border-color .18s var(--ease), box-shadow .18s var(--ease);background-color:#090d16b8;background-image:linear-gradient(45deg,#0000 50%,#a7b0c4d9 50%),linear-gradient(135deg,#a7b0c4d9 50%,#0000 50%);background-position:right 13px center,right 8px center;background-repeat:no-repeat;background-size:5px 5px,5px 5px;border-radius:9px;padding:0 26px 0 10px;font-size:11.5px}.lab-select:focus{border-color:#22d3ee80;outline:none;box-shadow:0 0 0 3px #22d3ee1f}.lab-preview{flex-direction:column;gap:12px;min-width:0;display:flex}.lab-topo-wrap{border-radius:var(--radius);border:1px solid var(--stroke);background:linear-gradient(#94aadc0a 1px,#0000 1px) 0 0/100% 20px,linear-gradient(90deg,#94aadc0a 1px,#0000 1px) 0 0/20px 100%,linear-gradient(170deg,#101728,#080c14);padding:10px}.lab-topo{width:100%;max-width:372px;margin:0 auto;display:block}.lab-lists{grid-template-columns:minmax(0,1.08fr) minmax(0,1fr);align-items:start;gap:12px;display:grid}.lab-list{flex-direction:column;gap:8px;min-width:0;display:flex}.lab-topo .preset-svg{height:auto}.lab-facts{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.lab-fact{border:1px solid var(--stroke);background:#090d168c;border-radius:10px;flex-direction:column;gap:3px;padding:8px 10px;display:flex}.lab-fact span{color:var(--text-3);font-size:10px}.lab-fact b{font-family:var(--mono);color:var(--text-1);font-size:12px}.lab-fact.is-muted b{font-family:var(--font);color:var(--text-3);font-size:11px;font-weight:500}.lab-fact.is-warn b{color:var(--warn)}.lab-section-title{letter-spacing:1.2px;color:var(--text-3);margin-top:2px;font-size:10px;font-weight:600}.lab-checks,.lab-ips{flex-direction:column;gap:7px;display:flex}.lab-check{border:1px solid var(--stroke);background:#090d1680;border-radius:10px;gap:9px;padding:8px 10px;display:flex}.lab-check-dot{background:var(--text-3);border-radius:50%;flex:none;width:7px;height:7px;margin-top:5px;box-shadow:0 0 0 3px #94aadc1a}.lab-check-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.lab-check-title{justify-content:space-between;align-items:center;gap:8px;display:flex}.lab-check-title b{color:var(--text-1);font-size:11.5px;font-weight:600}.lab-check-body p{color:var(--text-2);font-size:10.5px;line-height:1.6}.lab-check-flag{color:var(--text-3);border:1px solid var(--stroke);background:#94aadc14;border-radius:99px;flex:none;padding:1px 7px;font-size:9.5px}.lab-check.is-ok{border-color:#34d39942}.lab-check.is-ok .lab-check-dot{background:var(--ok);box-shadow:0 0 0 3px #34d39929}.lab-check.is-ok .lab-check-flag{color:var(--ok);background:#34d3991a;border-color:#34d3993d}.lab-check.is-warn{border-color:#fbbf2442}.lab-check.is-warn .lab-check-dot{background:var(--warn);box-shadow:0 0 0 3px #fbbf2429}.lab-check.is-warn .lab-check-flag{color:var(--warn);background:#fbbf241a;border-color:#fbbf243d}.lab-check.is-fail{background:#f8717112;border-color:#f8717157}.lab-check.is-fail .lab-check-dot{background:var(--danger);box-shadow:0 0 0 3px #f871712e}.lab-check.is-fail .lab-check-flag{color:var(--danger);background:#f871711a;border-color:#f8717142}.lab-ip-row{background:#090d1673;border:1px solid #94aadc14;border-radius:9px;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:6px 10px;font-size:11px;display:grid}.lab-ip-name{color:var(--text-1);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.lab-ip-role{color:var(--text-3);font-size:10px}.lab-ip-row code{font-family:var(--mono);color:var(--cyan);font-size:10.5px}.lab-footer{justify-content:space-between;align-items:center;gap:14px;width:100%;display:flex}.lab-footer-hint{color:var(--text-3);font-size:10.5px}.lab-footer-hint.is-warn{color:var(--warn)}.lab-footer-btns{align-items:center;gap:9px;display:flex}@media (width<=900px){.lab{grid-template-columns:minmax(0,1fr)}.lab-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.lab-lists{grid-template-columns:minmax(0,1fr)}}.labhub{flex-direction:column;gap:12px;padding:2px 0 8px;display:flex}.labhub-footer{justify-content:space-between;align-items:center;gap:14px;width:100%;display:flex}.labhub-footer-hint{color:var(--text-3);font-size:10.5px}.labhub-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.labhub-tabs{border:1px solid var(--stroke);background:#090d16a6;border-radius:11px;flex:none;gap:3px;padding:3px;display:flex}.labhub-tab{height:28px;color:var(--text-3);white-space:nowrap;transition:all .16s var(--ease);border-radius:8px;padding:0 13px;font-size:11.5px}.labhub-tab:hover{color:var(--text-1);background:#94aadc14}.labhub-tab.is-active{color:#fff;background:linear-gradient(135deg,#4f7cfff2,#7c5cffd9);box-shadow:0 8px 18px -12px #4f7cfff2}.labhub-filters{flex:1;align-items:center;gap:8px;min-width:200px;display:flex}.labhub-search-wrap{flex:1;min-width:130px;position:relative}.labhub-search-wrap .icon{width:14px;height:14px;color:var(--text-3);pointer-events:none;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.labhub-search,.labhub-select,.labhub-input,.labhub-textarea{border:1px solid var(--stroke);width:100%;color:var(--text-1);transition:border-color .16s var(--ease), box-shadow .16s var(--ease);background:#090d16b8;border-radius:9px;outline:none;font-size:11.5px}.labhub-search{height:32px;padding:0 10px 0 30px}.labhub-select{cursor:pointer;flex:none;width:auto;height:32px;padding:0 8px}.labhub-select option{background:var(--bg-2);color:var(--text-1)}.labhub-input{height:34px;padding:0 10px}.labhub-textarea{resize:vertical;padding:8px 10px;line-height:1.6}.labhub-search:focus,.labhub-select:focus,.labhub-input:focus,.labhub-textarea:focus{border-color:#22d3ee80;box-shadow:0 0 0 3px #22d3ee1a}.labhub-new{flex:none;gap:5px;height:32px;padding:0 12px;font-size:11.5px}.labhub-new .icon{width:14px;height:14px}.labhub-pane{min-height:260px}.labhub-records{flex-direction:column;gap:8px;display:flex}.labhub-row{border:1px solid var(--stroke);transition:border-color .16s var(--ease), transform .16s var(--ease);background:linear-gradient(170deg,#232c4273,#080c14c7);border-radius:12px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 12px;display:grid}.labhub-row:hover{border-color:#94aadc42;transform:translateY(-1px)}.labhub-kind{border:1px solid var(--stroke);white-space:nowrap;border-radius:99px;align-items:center;gap:5px;padding:4px 9px;font-size:10px;display:inline-flex}.labhub-kind .icon{width:13px;height:13px}.labhub-row-main{flex-direction:column;gap:3px;min-width:0;display:flex}.labhub-row-title{align-items:center;gap:8px;min-width:0;display:flex}.labhub-row-title b{color:var(--text-1);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:600;overflow:hidden}.labhub-status{border:1px solid var(--stroke);color:var(--text-3);background:#94aadc14;border-radius:99px;flex:none;padding:1px 7px;font-size:9.5px}.labhub-status.is-done{color:var(--ok);background:#34d3991a;border-color:#34d39942}.labhub-status.is-draft{color:var(--warn);background:#fbbf2414;border-color:#fbbf243d}.labhub-row-sub{color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;overflow:hidden}.labhub-row-meta{color:var(--text-3);align-items:center;gap:8px;min-width:0;font-size:9.5px;display:flex}.labhub-row-meta>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.labhub-scene-tag{color:#22d3eee6;background:#22d3ee1a;border:1px solid #22d3ee2e;border-radius:5px;padding:1px 6px}.labhub-note-tag{color:var(--text-2);background:#94aadc14;border-radius:5px;padding:1px 6px}.labhub-row-actions{flex:none;align-items:center;gap:6px;display:flex}.labhub-row-open{height:30px;padding:0 12px;font-size:11px}.labhub-mini{height:28px;padding:0 10px;font-size:10.5px}.labhub-confirm-text{color:var(--danger);white-space:nowrap;font-size:10px}.icon-btn.danger{color:#f87171d9}.icon-btn.danger:hover:not(:disabled){color:var(--danger);background:#f871711f}.labhub-empty{text-align:center;background:#090d1659;border:1px dashed #94aadc33;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:46px 20px;display:flex}.labhub-empty-icon{width:48px;height:48px;color:var(--cyan);background:#22d3ee1a;border:1px solid #22d3ee3d;border-radius:50%;place-items:center;display:grid}.labhub-empty-icon .icon{width:22px;height:22px}.labhub-empty b{color:var(--text-1);font-size:12.5px}.labhub-empty p{max-width:340px;color:var(--text-3);font-size:10.5px;line-height:1.7}.labhub-empty p.is-bad{color:var(--danger)}.labhub-catalog{flex-direction:column;gap:16px;display:flex}.labhub-section{flex-direction:column;gap:10px;display:flex}.labhub-section-head{align-items:baseline;gap:8px;display:flex}.labhub-section-head b{color:var(--text-2);font-size:11.5px;font-weight:600}.labhub-section-head span{color:var(--text-3);font-size:10px}.labhub-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.labhub-card{border:1px solid var(--stroke);background:linear-gradient(165deg,#232c4285,#080c14e6);border-radius:14px;flex-direction:column;gap:8px;padding:13px;display:flex}.labhub-card-head{align-items:center;gap:10px;display:flex}.labhub-card-icon{border:1px solid #0000;border-radius:11px;flex:none;place-items:center;width:36px;height:36px;display:grid}.labhub-card-icon .icon{width:19px;height:19px}.labhub-card-head b{color:var(--text-1);font-size:12.5px;font-weight:600;display:block}.labhub-card-head span{color:var(--text-3);margin-top:2px;font-size:9.5px;display:block}.labhub-card-desc{color:var(--text-2);font-size:10.5px;line-height:1.7}.labhub-card-goals{flex-wrap:wrap;gap:4px;display:flex}.labhub-goal{color:var(--text-2);border:1px solid var(--stroke);background:#94aadc14;border-radius:5px;padding:2px 7px;font-size:9px}.labhub-card-foot{justify-content:flex-end;margin-top:auto;display:flex}.labhub-card-btn{height:30px;padding:0 12px;font-size:11px}.labhub-scenes{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.labhub-scene{border:1px solid var(--stroke);transition:border-color .16s var(--ease);background:#090d166b;border-radius:14px;gap:10px;padding:10px;display:flex}.labhub-scene:hover{border-color:#22d3ee57}.labhub-scene-thumb{background:linear-gradient(#94aadc0a 1px,#0000 1px) 0 0/100% 18px,linear-gradient(90deg,#94aadc0a 1px,#0000 1px) 0 0/18px 100%,linear-gradient(170deg,#101728,#080c14);border:1px solid #94aadc1a;border-radius:9px;flex:none;width:132px;overflow:hidden}.labhub-scene-thumb .preset-svg{height:auto;display:block}.labhub-scene-main{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.labhub-scene-title{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.labhub-scene-title b{color:var(--text-1);font-size:11.5px;font-weight:600}.labhub-scene-tag{color:#22d3eee6;background:#22d3ee1a;border:1px solid #22d3ee33;border-radius:99px;padding:1px 6px;font-size:8.5px}.labhub-scene-sub{color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;font-size:9.5px;line-height:1.5;overflow:hidden}.labhub-scene-chips{flex-wrap:wrap;gap:4px;display:flex}.labhub-chip{color:var(--text-2);border:1px solid var(--stroke);background:#94aadc14;border-radius:5px;padding:1px 6px;font-size:9px}.labhub-scene-btn{align-self:flex-start;height:26px;margin-top:2px;padding:0 9px;font-size:10px}.labhub-form{flex-direction:column;gap:13px;padding:2px 0 6px;display:flex}.labhub-form-head h3{letter-spacing:.3px;font-size:14px;font-weight:600}.labhub-form-head p{color:var(--text-3);margin-top:4px;font-size:10.5px;line-height:1.65}.labhub-field{flex-direction:column;gap:6px;display:flex}.labhub-field>label{letter-spacing:.4px;color:var(--text-2);font-size:10.5px}.labhub-kinds{grid-template-columns:1fr 1fr;gap:8px;display:grid}.labhub-kind-btn{border:1px solid var(--stroke);text-align:left;transition:border-color .16s var(--ease), background .16s var(--ease);background:#090d1680;border-radius:11px;align-items:center;gap:9px;padding:9px 11px;display:flex}.labhub-kind-btn:hover:not(:disabled){border-color:#94aadc4d}.labhub-kind-btn.is-active{background:#22d3ee12;border-color:#22d3ee80}.labhub-kind-btn:disabled{cursor:default;opacity:.6}.labhub-kind-btn.is-active:disabled{opacity:1}.labhub-kind-icon{width:28px;height:28px;color:var(--cyan);background:#22d3ee1a;border:1px solid #22d3ee33;border-radius:8px;flex:none;place-items:center;display:grid}.labhub-kind-icon .icon{width:16px;height:16px}.labhub-kind-btn b{color:var(--text-1);font-size:11.5px;font-weight:600;display:block}.labhub-kind-btn small{color:var(--text-3);margin-top:1px;font-size:9.5px;line-height:1.4;display:block}.labhub-params{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.labhub-params .labhub-field:first-child{grid-column:1/-1}.labhub-segment{border:1px solid var(--stroke);background:#090d16b3;border-radius:10px;gap:3px;padding:3px;display:flex}.labhub-segment-btn{height:27px;color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;transition:all .16s var(--ease);border-radius:8px;flex:1;padding:0 8px;font-size:10.5px;overflow:hidden}.labhub-segment-btn:hover{color:var(--text-1);background:#94aadc14}.labhub-segment-btn.is-active{color:#fff;background:linear-gradient(135deg,#4f7cfff2,#7c5cffd9);box-shadow:0 8px 16px -12px #4f7cfff2}.labhub-form-actions{justify-content:flex-end;gap:9px;padding-top:4px;display:flex}@media (width<=900px){.labhub-cards,.labhub-scenes,.labhub-kinds,.labhub-params{grid-template-columns:minmax(0,1fr)}.labhub-params .labhub-field:first-child{grid-column:auto}.labhub-scene{flex-direction:column}.labhub-scene-thumb{width:100%}.labhub-row{grid-template-columns:minmax(0,1fr);gap:8px}.labhub-row-actions{justify-content:flex-end}}.exp-root{z-index:170;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;transition:opacity .22s var(--ease);background:radial-gradient(1100px 620px at 14% -10%,#4f7cff2e,#0000 62%),radial-gradient(900px 560px at 96% 4%,#7c5cff24,#0000 58%),#03060cd6;justify-content:center;align-items:center;padding:3vh 2vw;display:flex;position:fixed;inset:0}.exp-root.open{opacity:1}.exp-shell{width:min(1360px,96vw);height:min(880px,94vh);box-shadow:var(--shadow-lg), inset 0 1px 0 #ffffff0f;transition:transform .26s var(--ease);background:linear-gradient(168deg,#181f30fa,#070b13fc);border:1px solid #94aadc2e;border-radius:22px;grid-template-rows:auto minmax(0,1fr) auto;display:grid;overflow:hidden;transform:translateY(10px)scale(.996)}.exp-root.open .exp-shell{transform:none}.exp-top{border-bottom:1px solid var(--stroke);background:linear-gradient(#232c428c,#0b0f1826);flex:none;align-items:center;gap:16px;padding:12px 16px;display:flex}.exp-brand{flex:none;align-items:center;gap:10px;display:flex}.exp-brand-mark{color:#fff;background:linear-gradient(135deg,#4f7cfff2,#22d3eee6);border-radius:12px;place-items:center;width:38px;height:38px;display:grid;box-shadow:0 10px 22px -12px #4f7cfff2}.exp-brand h2{letter-spacing:.3px;font-size:15px;font-weight:600}.exp-brand p{color:var(--text-3);margin-top:2px;font-size:10.5px}.exp-chips{border:1px solid var(--stroke);background:#090d1699;border-radius:12px;gap:4px;margin:0 auto;padding:3px;display:flex}.exp-chip{height:28px;color:var(--text-3);white-space:nowrap;transition:color .16s var(--ease), background .2s var(--ease), box-shadow .2s var(--ease);border-radius:9px;align-items:center;gap:6px;padding:0 10px;font-size:11.5px;display:flex}.exp-chip:hover:not(:disabled){color:var(--text-1);background:#94aadc14}.exp-chip:disabled{opacity:.4;cursor:not-allowed}.exp-chip-index{width:15px;height:15px;font-family:var(--mono);background:#94aadc24;border-radius:50%;place-items:center;font-size:9px;display:grid}.exp-chip.is-done{color:#34d399e6}.exp-chip.is-done .exp-chip-index{background:#34d39929}.exp-chip.is-active{color:#fff;background:linear-gradient(135deg,#4f7cfff2,#7c5cffd9);box-shadow:0 8px 18px -12px #4f7cfff2,inset 0 1px #fff3}.exp-chip.is-active .exp-chip-index{background:#ffffff3d}.exp-top-actions{flex:none;align-items:center;gap:8px;display:flex}.exp-goals{gap:6px;display:flex}.exp-goal{color:#22d3eee6;white-space:nowrap;background:#22d3ee17;border:1px solid #22d3ee33;border-radius:99px;padding:4px 9px;font-size:10px}.exp-main{grid-template-columns:236px minmax(0,1fr) 296px;min-height:0;display:grid;overflow:hidden}.exp-rail{border-right:1px solid var(--stroke);background:#090d1659;flex-direction:column;gap:12px;padding:16px 14px;display:flex;overflow-y:auto}.exp-rail-head{justify-content:space-between;align-items:center;display:flex}.exp-rail-label{letter-spacing:1.4px;color:var(--text-3);font-size:10px}.exp-rail-progress{font-family:var(--mono);color:var(--cyan);font-size:10px}.exp-rail-list{flex-direction:column;gap:4px;display:flex}.exp-rail-item{text-align:left;transition:background .18s var(--ease), border-color .18s var(--ease);border:1px solid #0000;border-radius:10px;align-items:flex-start;gap:9px;padding:8px 9px;display:flex}.exp-rail-item:hover:not(:disabled){background:#94aadc0f}.exp-rail-item:disabled{opacity:.42;cursor:not-allowed}.exp-rail-item.is-active{background:linear-gradient(135deg,#4f7cff2e,#22d3ee0d);border-color:#22d3ee47}.exp-rail-dot{width:20px;height:20px;font-family:var(--mono);color:var(--text-2);border:1px solid var(--stroke);background:#94aadc1a;border-radius:50%;flex:none;place-items:center;margin-top:1px;font-size:10px;display:grid}.exp-rail-item.is-active .exp-rail-dot{color:#061019;background:linear-gradient(135deg, var(--cyan), #7dd3fc);border-color:#0000;box-shadow:0 0 14px -4px #22d3eee6}.exp-rail-item.is-done .exp-rail-dot{color:var(--ok);background:#34d39924;border-color:#34d3994d}.exp-rail-body{flex-direction:column;gap:2px;min-width:0;display:flex}.exp-rail-body b{color:var(--text-1);font-size:12px;font-weight:600}.exp-rail-body small{color:var(--text-3);font-size:10px;line-height:1.5}.exp-rail-item.is-active .exp-rail-body b{color:#fff}.exp-rail-foot{border:1px solid var(--stroke);background:#090d168c;border-radius:12px;flex-direction:column;gap:8px;margin-top:auto;padding:10px;display:flex}.exp-rail-goal{flex-direction:column;gap:3px;display:flex}.exp-rail-goal-label{letter-spacing:1px;color:var(--text-3);font-size:9.5px}.exp-rail-goal b{color:var(--cyan);font-size:11px;font-weight:600}.exp-rail-tip{color:var(--text-3);font-size:10px;line-height:1.6}.exp-stage{min-width:0;padding:20px 22px 24px;overflow-y:auto}.exp-side{border-left:1px solid var(--stroke);background:#090d1659;flex-direction:column;gap:12px;padding:16px;display:flex;overflow-y:auto}.exp-stage-head h3{letter-spacing:.3px;font-size:15px;font-weight:600}.exp-stage-head p{color:var(--text-3);margin-top:5px;font-size:11.5px;line-height:1.7}.exp-block-title{justify-content:space-between;align-items:center;gap:10px;margin:16px 0 8px;display:flex}.exp-block-title b{color:var(--text-2);font-size:11.5px;font-weight:600}.exp-block-title span{color:var(--text-3);font-size:10px}.exp-banner{border:1px solid var(--stroke);background:#090d168c;border-radius:10px;flex-direction:column;gap:3px;margin-top:12px;padding:10px 12px;display:flex}.exp-banner b{color:var(--text-1);font-size:11.5px;font-weight:600}.exp-banner span{color:var(--text-2);font-size:10.5px;line-height:1.65}.exp-banner.is-ok{background:#34d39914;border-color:#34d39957}.exp-banner.is-ok b{color:var(--ok)}.exp-banner.is-bad{background:#f8717114;border-color:#f871715c}.exp-banner.is-bad b{color:var(--danger)}.exp-banner.is-info{background:#22d3ee0f;border-color:#22d3ee4d}.exp-banner.is-info b{color:var(--cyan)}.exp-mini-btn{height:30px;padding:0 11px;font-size:11px}.exp-artifacts{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:14px;display:grid}.exp-artifact{border:1px solid var(--stroke);transition:transform .18s var(--ease), border-color .18s var(--ease), box-shadow .2s var(--ease);background:linear-gradient(170deg,#232c4280,#080c14e6);border-radius:14px;flex-direction:column;align-items:center;gap:4px;padding:12px 10px 10px;display:flex}.exp-artifact:hover{border-color:#94aadc4d;transform:translateY(-2px)}.exp-artifact.is-active{border-color:#22d3ee80;box-shadow:0 0 0 1px #22d3ee38,0 16px 30px -22px #22d3eee6}.exp-artifact-figure{width:100%;display:block}.exp-figure{width:100%;height:auto;max-height:112px;display:block}.exp-artifact-name{color:var(--text-1);margin-top:4px;font-size:11.5px;font-weight:600}.exp-artifact-cap{color:var(--text-3);text-align:center;font-size:9.5px}.exp-svg-num{font-family:var(--mono);fill:#a7b0c4d9;font-size:8.5px}.exp-svg-tag{fill:#22d3eed1;font-size:9px}.exp-svg-tag.is-soft{fill:#6b7488f2}.exp-svg-tag.is-ok{fill:#34d399e6}.exp-detail{border:1px solid var(--stroke);background:#090d1680;border-left:2px solid #22d3ee8c;border-radius:12px;margin-top:12px;padding:12px 14px}.exp-detail-head{align-items:center;gap:8px;margin-bottom:6px;display:flex}.exp-detail-head b{font-size:12px;font-weight:600}.exp-detail-tag{color:var(--cyan);background:#22d3ee1a;border:1px solid #22d3ee33;border-radius:99px;padding:1px 7px;font-size:9px}.exp-bullets{flex-direction:column;gap:5px;display:flex}.exp-bullets li{color:var(--text-2);padding-left:13px;font-size:11px;line-height:1.7;position:relative}.exp-bullets li:before{content:"";background:#22d3eeb3;border-radius:50%;width:4px;height:4px;position:absolute;top:7px;left:0}.exp-compare{border:1px solid var(--stroke);background:#090d1673;border-radius:12px;margin-top:14px;padding:12px 14px}.exp-compare-title{align-items:baseline;gap:8px;margin-bottom:8px;display:flex}.exp-compare-title b{font-size:11.5px}.exp-compare-title span{color:var(--text-3);font-size:10px}.exp-compare-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.exp-compare-item{background:#05091080;border:1px solid #94aadc14;border-radius:10px;flex-direction:column;align-items:center;gap:3px;padding:8px 6px;display:flex}.exp-compare-svg{width:100%;max-width:132px;height:auto}.exp-compare-item b{font-size:10.5px}.exp-compare-item span{color:var(--text-3);text-align:center;font-size:9.5px}.exp-checklist{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.exp-check{border:1px solid var(--stroke);cursor:pointer;transition:border-color .16s var(--ease), background .16s var(--ease);background:#090d1673;border-radius:10px;align-items:flex-start;gap:8px;padding:9px 10px;display:flex}.exp-check:hover{border-color:#94aadc42}.exp-check.is-checked{background:#34d3990f;border-color:#34d3994d}.exp-check input{opacity:0;pointer-events:none;position:absolute}.exp-check-box{width:15px;height:15px;transition:all .16s var(--ease);background:#05091099;border:1px solid #94aadc59;border-radius:4px;flex:none;margin-top:1px;position:relative}.exp-check.is-checked .exp-check-box{background:linear-gradient(135deg, var(--ok), #10b981);border-color:#0000}.exp-check.is-checked .exp-check-box:after{content:"";border:2px solid #04120c;border-width:0 2px 2px 0;width:4px;height:8px;position:absolute;top:1.5px;left:4.5px;transform:rotate(45deg)}.exp-check-text{color:var(--text-2);font-size:10.5px;line-height:1.6}.exp-check.is-checked .exp-check-text{color:var(--text-1)}.exp-side-card{border:1px solid var(--stroke);background:linear-gradient(170deg,#232c4273,#080c14d9);border-radius:12px;padding:12px}.exp-side-head{align-items:center;gap:7px;margin-bottom:8px;display:flex}.exp-side-head h3{letter-spacing:.4px;color:var(--text-1);font-size:11.5px;font-weight:600}.exp-side-dot{background:var(--cyan);border-radius:50%;width:6px;height:6px;box-shadow:0 0 8px #22d3eee6}.exp-side-dot.is-violet{background:var(--violet);box-shadow:0 0 8px #7c5cffe6}.exp-side-dot.is-amber{background:var(--warn);box-shadow:0 0 8px #fbbf24e6}.exp-side-dot.is-ok{background:var(--ok);box-shadow:0 0 8px #34d399e6}.exp-side-text{color:var(--text-2);font-size:10.5px;line-height:1.75}.exp-mnemonic-text{color:var(--cyan);letter-spacing:.6px;font-size:11px;line-height:1.75}.exp-pairs{flex-wrap:wrap;gap:4px;margin-top:8px;display:flex}.exp-pair{color:var(--text-2);border:1px solid var(--stroke);background:#94aadc14;border-radius:5px;padding:2px 7px;font-size:9.5px}.exp-order-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin:14px 0 12px;display:flex}.exp-segment{border:1px solid var(--stroke);background:#090d16b3;border-radius:11px;gap:3px;padding:3px;display:flex}.exp-segment-btn{color:var(--text-3);transition:all .16s var(--ease);border-radius:8px;flex-direction:column;align-items:flex-start;gap:1px;padding:4px 12px;display:flex}.exp-segment-btn b{font-size:11.5px;font-weight:600}.exp-segment-btn span{opacity:.85;font-size:8.5px}.exp-segment-btn:hover{color:var(--text-1);background:#94aadc14}.exp-segment-btn.is-active{color:#fff;background:linear-gradient(135deg, var(--primary), var(--violet));box-shadow:0 8px 18px -12px #4f7cfff2}.exp-order-tools{gap:8px;display:flex}.exp-jackline{border:1px solid var(--stroke);background:linear-gradient(#94aadc09 1px,#0000 1px) 0 0/100% 22px,linear-gradient(90deg,#94aadc09 1px,#0000 1px) 0 0/22px 100%,linear-gradient(170deg,#232c4280,#070b13eb);border-radius:16px;padding:14px}.exp-jackline-head{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:10px;display:flex}.exp-jackline-label{letter-spacing:.6px;color:var(--text-2);font-size:11px}.exp-jackline-note{color:var(--text-3);font-size:9.5px}.exp-slots{grid-template-columns:repeat(8,minmax(0,1fr));gap:6px;display:grid}.exp-slot{min-height:108px;transition:border-color .16s var(--ease), background .16s var(--ease), box-shadow .16s var(--ease);background:#090d168c;border:1px dashed #94aadc3d;border-radius:10px;flex-direction:column;align-items:center;gap:5px;padding:6px 4px 8px;display:flex;position:relative}.exp-slot.is-filled{background:#0509108c;border-style:solid;border-color:#94aadc66}.exp-slot.is-dragover{border-color:var(--cyan);background:#22d3ee1a}.exp-slot.is-wrong{animation:expShake .32s var(--ease);border-color:#f87171a6;box-shadow:0 0 0 1px #f871714d,0 0 22px -8px #f87171cc}.exp-slot.is-hint{border-color:#22d3eeb3;box-shadow:0 0 0 1px #22d3ee4d}.exp-slot-pin{font-family:var(--mono);color:var(--text-3);font-size:9.5px}.exp-slot-empty{color:#94aadc4d;font-size:9.5px}.exp-wire{background:0 0;border:0;flex-direction:column;align-items:center;gap:5px;width:100%;padding:0;display:flex}.exp-wire-body{width:22px;height:64px;transition:transform .16s var(--ease), box-shadow .16s var(--ease);border:1px solid #ffffff38;border-radius:4px 4px 7px 7px;display:block;box-shadow:inset 0 -8px 14px #00000052,0 5px 12px #0000006b}.exp-wire:hover .exp-wire-body{transform:translateY(-3px)}.exp-wire-name{color:var(--text-3);white-space:nowrap;font-size:9.5px}.exp-wire:hover .exp-wire-name{color:var(--text-1)}.exp-wire.is-selected .exp-wire-body{box-shadow:0 0 0 2px var(--cyan), 0 0 18px #22d3ee99;transform:translateY(-3px)}.exp-wire.is-hint .exp-wire-body{animation:expPulse 1.05s var(--ease) infinite}.exp-wire.is-in-slot .exp-wire-body{width:20px;height:58px}.exp-pool{background:#090d1659;border:1px dashed #94aadc33;border-radius:12px;flex-wrap:wrap;gap:10px;padding:12px;display:flex}.exp-pool .exp-wire{width:54px}.exp-jackline-pins{grid-template-columns:repeat(8,minmax(0,1fr));gap:6px;margin-top:8px;display:grid}.exp-pin-role{color:#6b7488e6;text-align:center;white-space:nowrap;text-overflow:ellipsis;font-size:8.5px;overflow:hidden}.exp-crimp-stage{border:1px solid var(--stroke);background:linear-gradient(#94aadc09 1px,#0000 1px) 0 0/100% 22px,linear-gradient(90deg,#94aadc09 1px,#0000 1px) 0 0/22px 100%,linear-gradient(170deg,#0d1424,#070b13);border-radius:14px;margin-top:14px;padding:12px}.exp-crimp-svg{width:100%;height:auto;max-height:280px;display:block}.exp-crimp-actions{flex-wrap:wrap;gap:9px;margin-top:12px;display:flex}.exp-inline-steps{flex-direction:column;gap:6px;margin-top:14px;display:flex}.exp-inline-step{color:var(--text-3);align-items:center;gap:8px;font-size:11px;display:flex}.exp-inline-step.is-done{color:var(--text-2)}.exp-inline-dot{width:17px;height:17px;font-family:var(--mono);color:var(--text-3);border:1px solid var(--stroke);background:#94aadc1a;border-radius:50%;flex:none;place-items:center;font-size:9px;display:grid}.exp-inline-step.is-done .exp-inline-dot{color:#04120c;background:linear-gradient(135deg, var(--ok), #10b981);border-color:#0000}.exp-link-row{grid-template-columns:1fr 1fr;gap:14px;margin-top:14px;display:grid}.exp-host{border:1px solid var(--stroke);cursor:pointer;transition:border-color .18s var(--ease), box-shadow .2s var(--ease), transform .18s var(--ease);background:linear-gradient(170deg,#232c4273,#080c14e6);border-radius:14px;padding:10px 12px 12px}.exp-host:hover{border-color:#22d3ee66;transform:translateY(-2px)}.exp-host.is-connected{border-color:#34d3996b;box-shadow:0 0 0 1px #34d39929,0 18px 32px -26px #34d399e6}.exp-host-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.exp-host-head b{font-size:12px;font-weight:600}.exp-host-head span{font-family:var(--mono);color:var(--text-3);font-size:9.5px}.exp-host-panel{margin-top:6px}.exp-host-svg{width:100%;height:auto;max-height:168px;display:block}.exp-host-foot{color:var(--text-3);align-items:center;gap:7px;margin-top:4px;font-size:10px;display:flex}.exp-led{background:#26324a;border-radius:50%;width:8px;height:8px;box-shadow:inset 0 0 0 1px #94aadc3d}.exp-led.is-on{background:var(--ok);animation:expBlink 2.6s var(--ease) infinite;box-shadow:0 0 10px #34d399f2}.exp-patch{align-items:center;gap:10px;width:min(560px,100%);margin:16px auto 0;display:flex}.exp-plug{border:1px solid var(--stroke);width:94px;transition:border-color .16s var(--ease), box-shadow .2s var(--ease), opacity .2s var(--ease);background:#090d1699;border-radius:12px;flex:none;padding:6px}.exp-plug:hover{border-color:#22d3ee73}.exp-plug.is-selected{border-color:var(--cyan);box-shadow:0 0 0 1px var(--cyan), 0 0 24px -6px #22d3eed9}.exp-plug.is-inserted{opacity:.55;border-color:#34d3996b}.exp-plug.is-right .exp-plug-svg{transform:scaleX(-1)}.exp-plug-svg{width:100%;height:auto;display:block}.exp-cord{flex-direction:column;flex:1;align-items:center;gap:5px;min-width:0;display:flex}.exp-cord-line{background:linear-gradient(90deg,#22d3ee33,#94aadc8c,#22d3ee33);border-radius:99px;width:100%;height:4px;display:block;box-shadow:0 0 14px -4px #22d3eeb3}.exp-cord-tag{color:var(--text-3);white-space:nowrap;font-size:9.5px}.exp-connect-actions{gap:9px;margin-top:14px;display:flex}.exp-goal-grid{grid-template-columns:1fr 1fr;gap:12px;margin-top:14px;display:grid}.exp-goal-card{border:1px solid var(--stroke);background:linear-gradient(170deg,#232c4273,#080c14e0);border-radius:14px;flex-direction:column;gap:8px;padding:13px 14px;display:flex}.exp-goal-head{align-items:center;gap:8px;display:flex}.exp-goal-head b{color:var(--text-1);font-size:11.5px;font-weight:600}.exp-goal-badge{color:#4f7cfff2;background:#4f7cff1f;border:1px solid #4f7cff42;border-radius:99px;flex:none;padding:2px 7px;font-size:9px}.exp-goal-badge.is-cyan{color:var(--cyan);background:#22d3ee1a;border-color:#22d3ee3d}.exp-goal-card>p{color:var(--text-2);font-size:10.5px;line-height:1.75}.exp-wire-line{gap:4px;display:flex}.exp-wire-swatch{border:1px solid #fff3;border-radius:4px;flex:1;height:26px;box-shadow:inset 0 -6px 10px #00000047}.exp-jack-icons{justify-content:center;display:flex}.exp-jack-icons svg{width:170px;height:auto}.exp-summary{border:1px solid var(--stroke);background:#090d1673;border-radius:14px;margin-top:14px;padding:12px 14px}.exp-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.exp-summary-item{background:#05091080;border:1px solid #94aadc1a;border-radius:9px;flex-direction:column;gap:3px;padding:8px 10px;display:flex}.exp-summary-item b{color:var(--cyan);font-size:10.5px}.exp-summary-item span{color:var(--text-2);font-size:10px;line-height:1.6}.exp-report-actions{gap:9px;margin-top:16px;display:flex}.exp-foot{border-top:1px solid var(--stroke);background:linear-gradient(#0b0f1826,#121829b3);flex:none;justify-content:space-between;align-items:center;gap:14px;padding:12px 18px;display:flex}.exp-foot-hint{color:var(--text-2);align-items:center;gap:7px;font-size:10.5px;display:flex}.exp-foot-dot{background:var(--text-3);border-radius:50%;width:6px;height:6px}.exp-foot-dot.is-ok{background:var(--ok);box-shadow:0 0 8px #34d399e6}.exp-foot-btns{gap:9px;display:flex}@keyframes expPulse{0%,to{box-shadow:0 0 0 1px #22d3ee80,0 0 10px #22d3ee59}50%{box-shadow:0 0 0 2px #22d3eee6,0 0 22px #22d3eebf}}@keyframes expShake{0%,to{transform:translate(0)}25%{transform:translate(-3px)}75%{transform:translate(3px)}}@keyframes expBlink{0%,to{opacity:1}50%{opacity:.45}}@media (width<=1180px){.exp-main{grid-template-columns:210px minmax(0,1fr) 262px}.exp-chip-text{display:none}.exp-chips{padding:3px}.exp-goals{display:none}}@media (width<=980px){.exp-shell{height:96vh}.exp-main{grid-template-columns:minmax(0,1fr);overflow-y:auto}.exp-rail,.exp-side{border:0;border-bottom:1px solid var(--stroke)}.exp-rail{flex-direction:row;align-items:center;gap:10px;padding:10px 14px;overflow-x:auto}.exp-rail-head,.exp-rail-foot{display:none}.exp-rail-list{flex-direction:row;gap:6px}.exp-rail-item{min-width:132px}.exp-stage{overflow:visible}.exp-side{flex-flow:wrap}.exp-side-card{flex:240px}.exp-artifacts{grid-template-columns:1fr}.exp-checklist,.exp-goal-grid,.exp-summary-grid,.exp-link-row{grid-template-columns:minmax(0,1fr)}.exp-slots{grid-template-columns:repeat(4,minmax(0,1fr))}.exp-jackline-pins{display:none}}@media (prefers-reduced-motion:reduce){.exp-root,.exp-shell{transition:none}.exp-wire.is-hint .exp-wire-body,.exp-led.is-on,.exp-slot.is-wrong{animation:none}}@media (width<=1320px){.workspace{grid-template-columns:244px minmax(0,1fr) 296px}}@media (width<=1120px){.workspace{grid-template-columns:214px minmax(0,1fr) 268px}.mode-switch button span{display:none}.mode-switch button{padding:0 9px}.brand-text span{display:none}.brand{min-width:0}.shortcuts{display:none}}@media (width<=940px){.login-screen{grid-template-columns:1fr;padding:8vh 6vw}.login-brand{max-width:100%}.login-brand h1{font-size:32px}.brand-points,.login-footer{display:none}.workspace{grid-template-columns:190px minmax(0,1fr) 240px}.topbar-actions .btn span{display:none}.topbar-actions .btn{padding:0 10px}.user-chip .user-name{display:none}.preset-grid{grid-template-columns:minmax(0,1fr)}.preset-hint{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.bl-main{grid-template-columns:242px minmax(0,1fr) 336px}.bl-rail{gap:10px}.bl-block-head{border-top:1px solid var(--stroke);justify-content:space-between;align-items:baseline;gap:8px;margin-top:6px;padding-top:10px;display:flex}.bl-block-head b{color:var(--text-2);font-size:11.5px;font-weight:600}.bl-block-head span{color:var(--text-3);font-size:9.5px}.bl-palette{flex-direction:column;gap:6px;display:flex}.bl-device{border:1px solid var(--stroke);text-align:left;cursor:grab;transition:transform .16s var(--ease), border-color .16s var(--ease), box-shadow .2s var(--ease);background:linear-gradient(150deg,#232c428c,#090d16b3);border-radius:11px;align-items:center;gap:9px;padding:8px 9px;display:flex}.bl-device:hover{border-color:#94aadc57;transform:translateY(-1px);box-shadow:0 10px 22px -18px #4f7cffe6}.bl-device:active{cursor:grabbing}.bl-device.is-dragging{opacity:.45}.bl-device-icon{border:1px solid #0000;border-radius:9px;flex:none;place-items:center;width:28px;height:28px;display:grid}.bl-device-icon .icon{width:15px;height:15px}.bl-device-body{flex-direction:column;gap:1px;min-width:0;display:flex}.bl-device-body b{color:var(--text-1);font-size:11.5px;font-weight:600}.bl-device-body small{color:var(--text-3);font-size:9.5px}.bl-stage{background:radial-gradient(720px 460px at 52% 12%,#4f7cff24,#0000 66%),radial-gradient(520px 380px at 88% 88%,#22d3ee1a,#0000 62%),#080c15;min-width:0;padding:0;position:relative;overflow:hidden}.bl-scene{position:absolute;inset:0}.bl-canvas{touch-action:none;width:100%;height:100%;display:block}.bl-stage:after{content:"";pointer-events:none;background:radial-gradient(120% 80% at 50% 40%,#0000 55%,#04070d8c 100%);position:absolute;inset:0}.bl-empty{text-align:center;pointer-events:none;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);width:min(340px,76%);transition:opacity .2s var(--ease);background:#090d166b;border:1px dashed #94aadc3d;border-radius:16px;flex-direction:column;align-items:center;gap:6px;padding:22px 20px;display:flex;position:absolute;top:52%;left:50%;transform:translate(-50%,-50%)}.bl-empty.is-hidden{opacity:0}.bl-empty-icon{width:38px;height:38px;color:var(--cyan);background:#22d3ee1a;border:1px solid #22d3ee3d;border-radius:12px;place-items:center;display:grid}.bl-empty b{color:var(--text-1);font-size:12.5px}.bl-empty p{color:var(--text-3);font-size:10.5px;line-height:1.7}.bl-banner{z-index:3;border:1px solid #94aadc33;border-left:3px solid var(--primary);max-width:min(460px,82%);box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);pointer-events:none;background:#0b101ac7;border-radius:12px;flex-direction:column;gap:3px;padding:9px 14px 9px 16px;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%)}.bl-banner b{color:#fff;font-size:12px;font-weight:600}.bl-banner span{color:var(--text-2);font-size:10.5px;line-height:1.65}.bl-banner.is-ok{border-left-color:var(--ok);background:#0a1814cc;border-color:#34d39952}.bl-banner.is-ok b{color:var(--ok)}.bl-mode{z-index:4;color:#041018;background:linear-gradient(135deg, var(--cyan), #7dd3fc);pointer-events:none;border-radius:99px;align-items:center;gap:7px;max-width:calc(100% - 32px);padding:6px 12px;font-size:10.5px;display:none;position:absolute;bottom:58px;left:50%;transform:translate(-50%)translateY(4px);box-shadow:0 10px 24px -12px #22d3eee6}.bl-mode.is-on{animation:blFade .18s var(--ease);display:flex}@keyframes blFade{0%{opacity:0}to{opacity:1}}.bl-mode .icon{width:13px;height:13px}.bl-stats{z-index:3;pointer-events:none;gap:8px;display:flex;position:absolute;top:14px;right:14px}.bl-stat{border:1px solid var(--stroke);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0b101ab8;border-radius:10px;align-items:baseline;gap:4px;padding:6px 10px;display:flex}.bl-stat b{font-family:var(--mono);color:var(--cyan);font-size:12px}.bl-stat span{color:var(--text-3);font-size:9.5px}.bl-tools{z-index:3;gap:8px;display:flex;position:absolute;bottom:14px;left:14px}.bl-usage{color:var(--text-3);white-space:nowrap;align-items:center;padding-left:4px;font-size:10px;line-height:1.4;display:flex}.bl-cable-chip{cursor:grab;transition:border-color .16s var(--ease), background .16s var(--ease);background:#94aadc0f;border:1px dashed #94aadc5c;border-radius:10px;align-items:center;gap:8px;margin-top:8px;padding:7px 9px;display:flex}.bl-cable-chip:hover{background:#22d3ee1a;border-color:#22d3ee99}.bl-cable-chip.is-dragging{opacity:.5;cursor:grabbing}.bl-cable-chip-icon{width:22px;height:22px;color:var(--cyan);background:#22d3ee1f;border-radius:7px;place-items:center;display:grid}.bl-cable-chip-icon .icon{width:14px;height:14px}.bl-cable-chip-body{flex-direction:column;gap:2px;min-width:0;display:flex}.bl-cable-chip-body b{color:var(--text-1);font-size:11px}.bl-cable-chip-body small{color:var(--text-3);font-size:9.5px;line-height:1.4}.bl-stage.is-cable-over{outline-offset:-8px;outline:2px dashed #22d3ee8c}.bl-tool{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0b101ac7;height:32px;padding:0 12px;font-size:11px}.bl-tool .icon{width:13px;height:13px}.bl-drop{z-index:4;opacity:0;pointer-events:none;transition:opacity .16s var(--ease);background:radial-gradient(60% 60%,#22d3ee24,#0000 70%);border:1.5px dashed #22d3eeb3;border-radius:16px;place-items:center;display:grid;position:absolute;inset:10px}.bl-drop.show{opacity:1}.bl-drop-inner{color:#041018;background:linear-gradient(135deg, var(--cyan), #7dd3fc);border-radius:99px;align-items:center;gap:8px;padding:9px 16px;font-size:12px;display:flex;box-shadow:0 14px 30px -14px #22d3eee6}@keyframes blDropIn{0%{opacity:0;transform:translate(-50%)translateY(-8px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.bl-side{gap:12px;overflow:hidden}.bl-side .bl-checks{flex:auto;min-height:132px;overflow-y:auto}.bl-side .bl-checks .bl-card-head{z-index:1;background:linear-gradient(#101520fa,#101520db);margin:-12px -12px 0;padding:12px 12px 8px;position:sticky;top:-12px}.bl-card{border:1px solid var(--stroke);background:linear-gradient(170deg,#1b23349e,#090d16d9);border-radius:14px;flex-direction:column;flex:none;gap:10px;padding:12px;display:flex}.bl-card-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.bl-card-head b{color:var(--text-1);font-size:11.5px;font-weight:600}.bl-card-head span{color:var(--text-3);font-size:9.5px}.bl-card-head span.is-ok{color:var(--ok)}.bl-placeholder{border:1px dashed var(--stroke-strong);color:var(--text-3);border-radius:10px;align-items:center;gap:10px;padding:14px 10px;display:flex}.bl-placeholder .icon{color:#94aadc80;flex:none;width:20px;height:20px}.bl-placeholder p{font-size:10.5px;line-height:1.7}.bl-config-title{align-items:center;gap:9px;display:flex}.bl-config-dot{border-radius:50%;flex:none;width:9px;height:9px;box-shadow:0 0 12px -1px}.bl-config-title b{color:var(--text-1);font-size:12.5px;display:block}.bl-config-title small{color:var(--text-3);font-size:9.5px}.bl-field{flex-direction:column;gap:5px;display:flex}.bl-field label{letter-spacing:.6px;color:var(--text-3);font-size:9.5px}.bl-field-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.bl-field code{font-family:var(--mono);color:var(--text-2);font-size:11px}.bl-field.is-inline{flex-direction:row;gap:14px}.bl-field.is-inline>div{flex-direction:column;gap:3px;display:flex}.bl-input{border:1px solid var(--stroke);height:34px;color:var(--text-1);font-family:var(--mono);letter-spacing:.6px;transition:border-color .16s var(--ease), box-shadow .16s var(--ease);background:#060a11d9;border-radius:9px;padding:0 10px;font-size:12.5px}.bl-input:focus{border-color:#22d3ee8c;outline:none;box-shadow:0 0 0 3px #22d3ee1f}.bl-input:disabled{color:var(--text-3);cursor:not-allowed}.bl-ip-badge{border:1px solid var(--stroke);color:var(--text-3);border-radius:99px;padding:2px 8px;font-size:9.5px}.bl-ip-badge.is-ok{color:var(--ok);background:#34d3991a;border-color:#34d39957}.bl-ip-badge.is-warn{color:var(--warn);background:#fbbf241a;border-color:#fbbf2457}.bl-ip-badge.is-bad{color:var(--danger);background:#f871711a;border-color:#f871715c}.bl-ip-badge.is-muted{color:var(--text-3)}.bl-hint{color:var(--text-3);font-size:10px;line-height:1.7}.bl-menu-head{border-bottom:1px solid var(--stroke);flex-direction:column;gap:2px;margin-bottom:4px;padding:5px 9px 8px;display:flex}.bl-menu-head b{color:var(--text-1);font-size:12px}.bl-menu-head small{color:var(--text-3);font-size:10px;line-height:1.4}.bl-settings{gap:12px;display:grid}.bl-settings-foot{align-items:center;gap:9px;width:100%;display:flex}.bl-settings-gap{flex:1}.bl-empty-text{color:var(--text-3);font-size:10.5px;line-height:1.7}.bl-config-actions{gap:6px;margin-top:2px;display:flex}.bl-mini{height:28px;padding:0 10px;font-size:10.5px}.bl-mini.is-danger{color:var(--danger);border-color:#f871714d}.bl-list{flex:none;gap:6px;max-height:176px;overflow-y:auto}.bl-row{text-align:left;transition:background .16s var(--ease), border-color .16s var(--ease);border:1px solid #0000;border-radius:9px;align-items:center;gap:8px;padding:7px 9px;display:flex}.bl-row:hover{background:#94aadc12}.bl-row.is-active{background:linear-gradient(135deg,#4f7cff33,#22d3ee0d);border-color:#22d3ee57}.bl-row-dot{border-radius:50%;flex:none;width:7px;height:7px}.bl-row-main{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.bl-row-main b{color:var(--text-1);white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-weight:600;overflow:hidden}.bl-row-main small{color:var(--text-3);font-size:9px}.bl-row-ip{font-family:var(--mono);color:var(--cyan);font-size:10.5px}.bl-checks{gap:7px}.bl-check{background:#090d1680;border:1px solid #0000;border-radius:9px;gap:8px;padding:7px 8px;display:flex}.bl-check-dot{background:var(--text-3);border-radius:50%;flex:none;width:6px;height:6px;margin-top:5px}.bl-check.is-ok{background:#34d3990f;border-color:#34d3992e}.bl-check.is-ok .bl-check-dot{background:var(--ok);box-shadow:0 0 8px #34d399cc}.bl-check.is-fail{background:#f8717112;border-color:#f871713d}.bl-check.is-fail .bl-check-dot{background:var(--danger);box-shadow:0 0 8px #f87171cc}.bl-check.is-warn{background:#fbbf240f;border-color:#fbbf2438}.bl-check.is-warn .bl-check-dot{background:var(--warn)}.bl-check.is-info .bl-check-dot{background:var(--cyan)}.bl-check-body{flex-direction:column;gap:2px;min-width:0;display:flex}.bl-check-title{justify-content:space-between;align-items:center;gap:8px;display:flex}.bl-check-title b{color:var(--text-1);font-size:10.8px;font-weight:600}.bl-check-flag{color:var(--text-3);flex:none;font-size:9px}.bl-check.is-ok .bl-check-flag{color:var(--ok)}.bl-check.is-fail .bl-check-flag{color:var(--danger)}.bl-check.is-warn .bl-check-flag{color:var(--warn)}.bl-check p{color:var(--text-3);font-size:9.8px;line-height:1.65}.exp-foot-hint.is-warn{color:var(--warn)}.bl-empty.is-require{text-align:left;pointer-events:auto;background:linear-gradient(165deg,#182138eb,#090d16e6);border-style:solid;border-color:#4f7cff52;align-items:stretch;gap:10px;width:min(432px,84%);padding:20px 22px;box-shadow:0 22px 60px #00000073,inset 0 1px #ffffff0f}.bl-require-card{flex-direction:column;gap:8px;display:flex}.bl-require-tag{letter-spacing:.08em;color:var(--cyan);align-items:center;gap:6px;font-size:10.5px;display:inline-flex}.bl-require-step{color:#061018;background:linear-gradient(135deg,#4f7cff,#22d3ee);border-radius:6px;place-items:center;width:18px;height:18px;font-size:10px;font-weight:700;display:grid}.bl-require-title{color:var(--text-1);font-size:15px}.bl-require-list{flex-direction:column;gap:7px;margin:2px 0 4px;padding:0;list-style:none;display:flex}.bl-require-list li{color:var(--text-2);padding-left:16px;font-size:11px;line-height:1.65;position:relative}.bl-require-list li:before{content:"";background:linear-gradient(135deg,#4f7cff,#22d3ee);border-radius:50%;width:5px;height:5px;position:absolute;top:6px;left:2px;box-shadow:0 0 6px #22d3ee99}.bl-require-btn{align-self:flex-start;height:32px;padding:0 18px;font-size:12px}.bl-empty.is-require{width:min(468px,88%);padding:18px 20px}.bl-plan-card{flex-direction:column;gap:10px;display:flex}.bl-plan-block{background:#ffffff08;border:1px solid #94aadc24;border-radius:10px;flex-direction:column;gap:6px;padding:9px 11px;display:flex}.bl-plan-label{letter-spacing:.04em;color:var(--text-3);font-size:10px}.bl-plan-row{align-items:center;gap:10px;display:flex}.bl-plan-step{width:26px;height:26px;color:var(--text-1);cursor:pointer;transition:all .14s var(--ease);background:#ffffff0d;border:1px solid #94aadc3d;border-radius:8px;font-size:14px;line-height:1}.bl-plan-step:hover{color:var(--cyan);background:#22d3ee1f;border-color:#22d3ee80}.bl-plan-count{text-align:center;min-width:54px;font-family:var(--mono);color:var(--text-1);font-size:14px}.bl-plan-note{color:var(--text-3);font-size:10px}.bl-plan-switch{height:28px;color:var(--text-2);cursor:pointer;transition:all .16s var(--ease);background:#ffffff0a;border:1px solid #94aadc33;border-radius:999px;align-self:flex-start;align-items:center;gap:8px;padding:0 12px 0 8px;font-size:10.5px;display:inline-flex}.bl-plan-switch.is-on{color:#9df0cb;background:#34d39924;border-color:#34d39980}.bl-plan-switch-dot{width:8px;height:8px;transition:all .16s var(--ease);background:#94aadc66;border-radius:50%}.bl-plan-switch.is-on .bl-plan-switch-dot{background:#34d399;box-shadow:0 0 8px #34d399cc}.bl-topo-wrap{place-items:center;padding:2px 0;display:grid}.bl-topo-svg{width:100%;max-width:320px;height:auto}.bl-topo-node{fill:#4f7cff29;stroke:#7c9cff8c;stroke-width:1px}.bl-topo-center{fill:#22d3ee2e;stroke:#22d3eea8;stroke-width:1.2px}.bl-topo-line{stroke:#7c9cff57;stroke-width:1px;stroke-dasharray:3 3}.bl-topo-label{fill:var(--text-2);text-anchor:middle;font-size:9px;font-family:var(--mono)}.bl-topo-label.is-small{font-size:8px}.bl-plan-tip{color:var(--text-3);font-size:9.8px;line-height:1.6}.bl-device.is-locked{opacity:.5;cursor:not-allowed}.bl-media{background:#22d3ee0d;border:1px dashed #22d3ee42;border-radius:10px;flex-direction:column;gap:6px;padding:9px 10px;display:flex}.bl-media-head{color:var(--cyan);align-items:center;gap:6px;display:flex}.bl-media-head .icon{width:13px;height:13px}.bl-media-head b{letter-spacing:.03em;font-size:10.5px}.bl-media p{color:var(--text-3);font-size:9.6px;line-height:1.65}.bl-ports{flex-direction:column;gap:4px;display:flex}.bl-port{background:#ffffff08;border-radius:7px;align-items:center;gap:8px;padding:4px 8px;font-size:10px;display:flex}.bl-port-light{background:#94aadc4d;border-radius:50%;width:7px;height:7px}.bl-port.is-on .bl-port-light{background:#34d399;box-shadow:0 0 7px #34d399d9}.bl-port-name{font-family:var(--mono);color:var(--cyan);font-size:9.4px}.bl-port-dev{color:var(--text-2);margin-left:auto}.btn-accent{color:#04141a;background:linear-gradient(135deg,#0f9fae,#22d3ee);box-shadow:0 6px 18px #22d3ee47}.bl-ping-head{border-top:1px dashed #ffffff1a;justify-content:space-between;align-items:center;margin-top:4px;padding-top:8px;display:flex}.bl-ping-head b{letter-spacing:.04em;color:var(--text-2);font-size:10.5px}.bl-ping-head span{color:var(--text-3);font-size:10px}.bl-ping-head .is-ok{color:var(--success)}.bl-ping-head .is-bad{color:var(--danger)}.bl-ping{background:#ffffff05;border-left:2px solid #ffffff1f;border-radius:7px;flex-direction:column;gap:2px;padding:5px 7px 5px 9px;display:flex}.bl-ping.is-ok{border-left-color:#34d39999}.bl-ping.is-bad{background:#f8717112;border-left-color:#f87171b3}.bl-ping-name{color:var(--text-1);font-size:10px;font-weight:600}.bl-ping-meta{font-family:var(--mono);color:var(--text-3);font-size:9.2px}.bl-ping.is-bad .bl-ping-meta{color:#f9a8a8}.labhub-select-block{width:100%;height:34px}.labhub-hint{color:var(--text-3);font-size:10px;line-height:1.65}@media (width<=1280px){.bl-main{grid-template-columns:220px minmax(0,1fr) 308px}}@media (width<=1120px){.bl-main{grid-template-columns:196px minmax(0,1fr) 286px}.bl-stats{display:none}}
