.netlab{
  display:block;max-width:1720px;margin:0 auto;padding:22px 40px 36px;
  --nl-bg:#070709;--void:#040406;--panel:#12121c;--panel-hi:#1a1a28;--inset:#0b0b12;
  --line:#242438;--line-soft:#1a1a28;--txt:#eef0f6;--dim:#9a9ab0;--faint:#5c5c72;
  --green:#3ddc84;--green-glow:rgba(61,220,132,.5);
  --blue:#3da9ff;--blue-glow:rgba(61,169,255,.5);
  --amber:#ffb347;--amber-glow:rgba(255,179,71,.5);
  --violet:#b47bff;--violet-glow:rgba(180,123,255,.5);
  --red:#ff3b5c;
  --mono:'FQ Ziffern', 'JetBrains Mono',ui-monospace,'SF Mono',Menlo,monospace;
  --label:'Inter','Segoe UI',system-ui,-apple-system,sans-serif;
  color:var(--txt);font-family:var(--mono);
}
.netlab *{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
.netlab .banner{background:linear-gradient(90deg,rgba(255,59,92,.1),rgba(61,169,255,.08));border-bottom:1px solid var(--line);padding:8px;text-align:center;font-size:11px;color:var(--amber);letter-spacing:.03em}@media(max-width:1100px){.netlab{padding:18px 20px 28px}}.netlab .head{display:flex;align-items:baseline;gap:14px;margin-bottom:3px;flex-wrap:wrap}.netlab h1{font-size:22px;margin:0;font-weight:700;font-family:var(--label)}.netlab .head .tag{font-size:10px;color:var(--faint);border:1px solid var(--line);padding:3px 8px;border-radius:99px;letter-spacing:.08em;text-transform:uppercase}.netlab .sub{color:var(--dim);font-size:13.5px;margin-bottom:16px;max-width:76ch;line-height:1.6}.netlab .layout{display:grid;grid-template-columns:200px minmax(0,1fr);gap:22px;align-items:start}
@media(max-width:760px){.netlab .layout{grid-template-columns:1fr}}.netlab .palette{background:linear-gradient(180deg,var(--panel),var(--inset));border:1px solid var(--line);border-radius:14px;padding:13px;height:fit-content}.netlab .palette .ph{font-size:10px;color:var(--faint);letter-spacing:.12em;text-transform:uppercase;margin-bottom:11px}.netlab .dev{display:flex;align-items:center;gap:11px;background:var(--panel-hi);border:1px solid var(--line);border-radius:11px;padding:10px 11px;margin-bottom:9px;cursor:grab;transition:transform .12s,border-color .12s,box-shadow .12s}.netlab .dev:hover{transform:translateY(-2px);border-color:var(--dev-c);box-shadow:0 6px 18px -8px var(--dev-g)}.netlab .dev:active{cursor:grabbing;transform:scale(.98)}.netlab .dev .ico{width:40px;height:40px;flex:0 0 40px;display:grid;place-items:center;border-radius:8px;background:var(--inset);border:1.5px solid var(--dev-c);box-shadow:inset 0 0 12px -4px var(--dev-g)}.netlab .dev .ico svg{width:24px;height:24px;stroke:var(--dev-c);fill:none;stroke-width:1.8}.netlab .dev .meta b{font-size:14px;font-weight:700;display:block;font-family:var(--label)}.netlab .dev .meta span{font-size:11px;color:var(--dim);font-family:var(--label)}.netlab .dev[data-type=pc]{--dev-c:var(--blue);--dev-g:var(--blue-glow)}.netlab .dev[data-type=switch]{--dev-c:var(--amber);--dev-g:var(--amber-glow)}.netlab .dev[data-type=router]{--dev-c:var(--green);--dev-g:var(--green-glow)}.netlab .dev[data-type=server]{--dev-c:var(--violet);--dev-g:var(--violet-glow)}.netlab .pingpanel{margin-top:12px;padding-top:12px;border-top:1px solid var(--line-soft)}.netlab .pingpanel .pp-title{display:flex;align-items:center;gap:7px;font-family:var(--label);font-size:10px;color:var(--faint);letter-spacing:.1em;text-transform:uppercase;margin-bottom:9px}.netlab .pingpanel .pp-title .pip{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 7px var(--green-glow)}.netlab .pingpanel label{display:block;font-family:var(--label);font-size:9.5px;color:var(--faint);text-transform:uppercase;letter-spacing:.04em;margin-bottom:3px}.netlab .pingpanel select, .netlab .pingpanel input{width:100%;background:var(--void);border:1px solid var(--line);color:var(--txt);font-family:var(--mono);font-size:11px;padding:6px 7px;border-radius:6px;margin-bottom:7px}.netlab .pingpanel .pp-two{display:grid;grid-template-columns:1fr 1fr;gap:6px}.netlab .pingpanel .pp-send{width:100%;background:linear-gradient(180deg,#4dED95,var(--green));border:none;color:#04140a;font-family:var(--label);font-weight:700;font-size:12px;padding:9px;border-radius:8px;cursor:pointer;box-shadow:0 5px 14px -8px var(--green-glow)}.netlab .pingpanel .pp-send:active{transform:translateY(1px)}.netlab .pingpanel .pp-res{margin-top:8px;padding:8px 9px;border-radius:7px;font-family:var(--label);font-size:11px;line-height:1.35;display:none}.netlab .pingpanel .pp-res.show{display:block}.netlab .pingpanel .pp-res.ok{background:rgba(61,220,132,.12);border:1px solid rgba(61,220,132,.4);color:var(--green)}.netlab .pingpanel .pp-res.err{background:rgba(255,59,92,.1);border:1px solid rgba(255,59,92,.35);color:#ff6b81}.netlab .palette .modes{margin-top:12px;padding-top:12px;border-top:1px solid var(--line-soft);display:flex;flex-direction:column;gap:8px}.netlab .mbtn{display:flex;align-items:center;gap:8px;background:transparent;border:1px solid var(--line);color:var(--dim);font-family:var(--label);font-size:12px;padding:9px 11px;border-radius:9px;cursor:pointer;text-align:left;transition:.12s}.netlab .mbtn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.8}.netlab .mbtn.cablebtn{padding:7px 11px;gap:9px}.netlab .mbtn:hover{color:var(--txt);border-color:var(--dim)}.netlab .mbtn.active[data-m=cable]{color:var(--blue);border-color:var(--blue);background:rgba(61,169,255,.08)}.netlab .mbtn.active[data-m=del]{color:var(--red);border-color:var(--red);background:rgba(255,59,92,.08)}.netlab .stage-col{min-width:0}.netlab .modebar{display:flex;gap:8px;margin-bottom:9px;align-items:center;flex-wrap:wrap}.netlab .modebtn{font-family:var(--label);font-size:12.5px;font-weight:700;padding:9px 18px;border-radius:9px;cursor:pointer;border:1px solid var(--line);background:var(--panel);color:var(--dim)}.netlab .modebtn.on{border-color:var(--green);color:var(--green);background:rgba(61,220,132,.1)}.netlab .freebar{display:flex;gap:8px;align-items:center;background:linear-gradient(180deg,rgba(61,220,132,.06),transparent);border:1px solid var(--line);border-left:3px solid var(--green);border-radius:12px;padding:11px 14px;margin-bottom:10px;flex-wrap:wrap}.netlab .freebar .ftext{flex:1;min-width:200px;font-family:var(--label);font-size:12.5px;color:var(--dim);line-height:1.4}.netlab .levelbar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.netlab .lvlmenu{position:relative}.netlab .lvltrigger{display:flex;align-items:center;gap:9px;font-family:var(--label);font-size:12.5px;font-weight:700;padding:9px 14px;border-radius:9px;cursor:pointer;border:1px solid var(--blue);background:rgba(61,169,255,.1);color:var(--blue)}.netlab .lvltrigger .burger{display:flex;flex-direction:column;gap:2.5px}.netlab .lvltrigger .burger span{display:block;width:14px;height:2px;background:currentColor;border-radius:2px}.netlab .lvltrigger .chev{opacity:.7;font-size:10px;margin-left:2px}.netlab .lvltrigger .lvltxt{display:flex;flex-direction:column;align-items:flex-start;line-height:1.25;text-align:left}.netlab .lvltrigger .lvltxt b{font-size:13px}.netlab .lvltrigger .lvltxt em{font-style:normal;font-size:10.5px;opacity:.75;font-weight:600}.netlab .lvldrop-head{font-family:var(--label);font-size:10px;color:var(--faint);letter-spacing:.08em;text-transform:uppercase;padding:7px 11px 8px;border-bottom:1px solid var(--line);margin-bottom:5px}.netlab .lvldrop{position:absolute;top:calc(100% + 6px);left:0;z-index:60;min-width:250px;background:linear-gradient(180deg,var(--panel-hi),var(--panel));border:1px solid var(--line);border-radius:11px;box-shadow:0 16px 40px -12px rgba(0,0,0,.8);padding:6px;display:none}.netlab .lvldrop.open{display:block}.netlab .lvlitem{display:block;width:100%;text-align:left;font-family:var(--label);font-size:12.5px;padding:9px 11px;border-radius:8px;border:none;background:transparent;color:var(--dim);cursor:pointer}.netlab .lvlitem:hover{background:rgba(255,255,255,.05);color:var(--txt)}.netlab .lvlitem.active{color:var(--blue);background:rgba(61,169,255,.12);font-weight:700}.netlab .lvlitem .num{display:inline-block;width:20px;opacity:.6}.netlab .taskcard{background:linear-gradient(180deg,rgba(61,169,255,.08),rgba(61,169,255,.02));border:1px solid var(--blue);border-radius:12px;padding:10px 13px;margin-bottom:9px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.netlab .taskcard .tinfo{flex:1;min-width:240px;max-width:96ch}.netlab .taskcard .tlabel{font-family:var(--label);font-size:10px;color:var(--blue);letter-spacing:.1em;text-transform:uppercase;margin-bottom:3px}.netlab .taskcard .ttext{font-family:var(--label);font-size:13px;color:var(--txt);line-height:1.4;max-height:4.3em;overflow-y:auto}.netlab .taskcard .ttext b{color:var(--blue)}.netlab .taskcard .tbtns{display:flex;gap:8px}.netlab .taskbtn{font-family:var(--label);font-size:12px;font-weight:600;padding:9px 15px;border-radius:9px;cursor:pointer;border:1px solid var(--line);background:var(--panel-hi);color:var(--txt)}.netlab .taskbtn.check{background:linear-gradient(180deg,#4dED95,var(--green));border:none;color:#04140a}.netlab .taskbtn.newip{border-color:var(--amber);color:var(--amber);background:rgba(255,179,71,.08)}.netlab .taskbtn:active{transform:translateY(1px)}.netlab .taskresult{margin-top:9px;padding:9px 13px;border-radius:8px;font-family:var(--label);font-size:12.5px;display:none;line-height:1.4}.netlab .taskresult.show{display:block}.netlab .taskresult.ok{background:rgba(61,220,132,.12);border:1px solid var(--green);color:var(--green)}.netlab .taskresult.err{background:rgba(255,59,92,.1);border:1px solid var(--red);color:#ff6b81}.netlab .hintbar{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--faint);margin-bottom:8px;min-height:18px;font-family:var(--label)}.netlab .hintbar .dot{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green-glow)}.netlab .canvas{position:relative;height:70vh;min-height:540px;background:var(--void);border:1px solid var(--line);border-radius:14px;overflow:hidden;touch-action:none}.netlab .canvas.cable-mode, .netlab .canvas.cable-mode .node{cursor:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAXCAYAAABqBU3hAAAFBElEQVR4nL2We1DUVRTHP/e3u0C7CppaImhiiI9GCciRyawkRXTSxnImG6cmY9S0xGwabcay+qNxmhTFB5RUviozxhKfDCoGmg4+NhFKLJ2UcRSDXJbdddnH757+wFLLFEs9/90795zv9zzvgTssCiQzY5hccb5zUlq6SbreE4NhWAkFNSkPDVW3m4AA6ulxY2TqlOeJjY/DMAz8Xh/Nzc2cO1eP9XagbihaKWvWFjFxwjOETb+sW7+F+Ph4AoEAbrebYDCIy+VCRG46BTJnzkwMw2D+/EV/6ebMnC4XvT4yM9OpPdbIT8d+YOyTj3LB5eNAZRVjx2RSums/z00Yw/n6s4RDQrPHz7aSHW0nsP6rtaKUFx0IgQVQgpKOFK4oYOq0FxBsLFn6Ob3ui2F01kjc/hA1NTUMShlAXt4KZszMJvulWXxSuIiNm0sp3rRdwU0U4YqCxdLsbuThIenU1dWhlCAiGCqCxcs+YtrkSdgdURiGnXffeZ957+VwtPpXml1NiLLSv18CS5evpaa6CrkC12grgSnTXsMR04ld5RXExcVy8FAVTmctlQcO80j6YKLuiubnk6e42NLA7Denk7/ka5J6x7Fn7yEsWKg7XU91dZWSvzndZgJlZTvxuDXF3+7A6ayluLiC7SV7OXW6AZSFysr91J9zERnhwKKsvD5nGvv2HEVrjRgav993TbvXJaBARmeNku/3lYupQ6QO6k+vhCTOnz/PuKeziI29F39LGAwbkRHtSE3pSzgUoG+fAewo3Y3WkDFsCCJgj+7wbxjXluzsbPmt/ndm5EzGMAyio6PJXbiE2K4dsFr/7F6Nzxcg2OIna9RwlFK4XG6O155ElAZgwaJ89cr0KbI8f8U1sf5xuSj3A3E3XeTJp0bRdMEFgMNhZ9nSj4mP64TIpeIzDHomxNHOEUmXzrEcdlZx5mwD9igbaEGsGr8nTEHhZ9ct9KsGUUnxOjHR2Nv3oGxXBemD0wiHw0x68WVGZA5DTI1hgeTUgQSCXiIj2tHY0ETtsUOEwhexOyLB1Cil0KLwtQSuh305AvPenis9e8Qw9+0FrPtyPRo/oaDGZrOxdetWRmRmUb5rJ8nJfQiHQ2AIDyYP5q235pGYmIjFotBaozVoHUYJePwtFH6y+oZtbjz2+HBJvP8eVq3eTFFREWW7d4IYRETYQFnwej3kvDqLUMiDqYMA2KM6s3Llanr16olh0JoSFGKGW8erLbJN4ADq5+PHJHfhYlJSkxk+PIMTJ35Ba8Ht9lC2ezdHnFXMfmMqGAb9+iaz4MOFdLw7+rIHhoGIoFUrEcTC4rzlbR5w6puiz8Xr9dLkDqAMk5S0FLp3705ebgHtHZH07hOLzWonEDY56qxGCCLSal8p1QoKaK3x+Fr49LM1N/W/WANBH15fE127dWXL5h24mrxkjszA53HzzPiJlJSUcORIFUmJCYiYl8AFpYRmdwv29g5M06Sm+jjfVZTf9PduNUWxccNWunTqSFJSIt26xLB21ZeMf3Y827ZvobHhAgkJPdFa01qzrSGvPOjE74f2MTYqyvf9573iL8Whaf0lyqZp9Id4YthoBj6YSCAE1UdrAcGiBKVaCeTm5d+yReYqQ5EgAx6Ip/NdJv3T00gbPBrn4WoUmrCpOOysYc/3e2/pFnXVIAqAOvTjGRRIaqpByAQwONfQxBdfrLuj+yMAhYV5cuNX/0/+AFe1Qnw6TlciAAAAAElFTkSuQmCC') 3 20, crosshair}.netlab .canvas.panning{cursor:grabbing}.netlab .world{position:absolute;top:0;left:0;transform-origin:0 0;
  background-image:radial-gradient(circle at 1px 1px,rgba(61,169,255,.09) 1px,transparent 0);background-size:24px 24px}.netlab svg.wires{position:absolute;top:0;left:0;pointer-events:none;overflow:visible;z-index:1}.netlab svg.wires line{stroke:#33334a;stroke-width:3;stroke-linecap:round}.netlab svg.wires line.live{stroke:var(--green);filter:drop-shadow(0 0 5px var(--green-glow))}.netlab svg.wires line.hl{stroke:var(--amber);stroke-width:4;filter:drop-shadow(0 0 7px var(--amber-glow))}.netlab svg.wires line.ghost{stroke:var(--blue);stroke-width:2.5;stroke-dasharray:7 5;opacity:.85;filter:drop-shadow(0 0 4px var(--blue-glow))}.netlab .node{position:absolute;width:104px;user-select:none;cursor:grab;touch-action:none;padding:4px;margin:-4px;z-index:2}.netlab .node:active{cursor:grabbing}.netlab .node .body{width:104px;height:78px;border-radius:12px;background:rgba(18,18,28,.45);border:1.5px solid var(--nc);display:grid;place-items:center;position:relative;overflow:hidden;box-shadow:0 8px 20px -10px var(--ng)}.netlab .node.selected .body{box-shadow:0 0 0 3px var(--blue-glow),0 8px 20px -8px var(--blue-glow)}.netlab .node .body svg{width:36px;height:36px;stroke:var(--nc);fill:none;stroke-width:1.7}.netlab .node .body img{width:92px;height:70px;object-fit:contain;image-rendering:pixelated;pointer-events:none}.netlab .node[data-type=server] .body img{width:48px;height:68px;object-fit:contain}.netlab .dev[data-type=server] .ico img{width:62%;height:62%;object-fit:contain}.netlab .cfgpop[data-type=server] .ph-ico img{width:22px !important;height:22px !important;object-fit:contain}.netlab .node .labels{pointer-events:none;margin-top:7px;display:flex;flex-direction:column;align-items:center;gap:2px;transform:scale(var(--inv,1));transform-origin:top center}.netlab .node .name{text-align:center;font-family:var(--label);font-size:14px;color:#fff;font-weight:700;white-space:nowrap;background:rgba(6,6,10,.82);padding:2px 8px;border-radius:5px;line-height:1.25}.netlab .node .ipline{text-align:center;font-family:var(--label);font-size:11.5px;color:var(--nc);font-weight:700;white-space:nowrap;background:rgba(6,6,10,.82);padding:1px 7px;border-radius:5px;line-height:1.3}.netlab .node[data-type=pc]{--nc:var(--blue);--ng:var(--blue-glow)}.netlab .node[data-type=switch]{--nc:var(--amber);--ng:var(--amber-glow)}.netlab .node[data-type=router]{--nc:var(--green);--ng:var(--green-glow)}.netlab .node[data-type=server]{--nc:var(--violet);--ng:var(--violet-glow)}.netlab .node.cable-first .body{box-shadow:0 0 0 3px var(--blue-glow)}.netlab .empty-hint{position:absolute;inset:0;display:grid;place-items:center;color:var(--faint);font-size:13px;text-align:center;pointer-events:none;padding:20px;font-family:var(--label)}.netlab .zoombar{position:absolute;right:12px;bottom:12px;display:flex;gap:6px;z-index:20}.netlab .zoombar button{width:36px;height:36px;background:var(--panel-hi);border:1px solid var(--line);color:var(--txt);font-family:var(--label);font-size:18px;font-weight:700;border-radius:9px;cursor:pointer;display:grid;place-items:center;line-height:1}.netlab .zoombar button:hover{border-color:var(--blue);color:var(--blue)}.netlab .zoombar .zlabel{min-width:52px;height:36px;display:grid;place-items:center;background:var(--panel-hi);border:1px solid var(--line);color:var(--dim);font-family:var(--label);font-size:12px;border-radius:9px}.netlab /* Konfig-Popover */
.cfgpop{position:absolute;z-index:40;width:min(360px,92%);max-height:88%;background:linear-gradient(180deg,var(--panel-hi),var(--panel));border:1px solid var(--nc,var(--blue));border-radius:14px;box-shadow:0 24px 60px -12px rgba(0,0,0,.8);display:none;overflow:hidden}.netlab .cfgpop.show{display:block;animation:popin .16s ease-out}
@keyframes popin{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.netlab .cfgpop .pop-head{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.02);cursor:grab;user-select:none}.netlab .cfgpop .pop-head:active{cursor:grabbing}.netlab .cfgpop .ph-ico{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;background:var(--inset);border:1.5px solid var(--nc,var(--blue));overflow:hidden;flex:0 0 32px}.netlab .cfgpop .ph-ico svg{width:19px;height:19px;stroke:var(--nc,var(--blue));fill:none;stroke-width:1.7}.netlab .cfgpop .ph-ico img{width:26px;height:26px;object-fit:contain;image-rendering:pixelated}.netlab .cfgpop .ph-t{font-family:var(--label);font-size:13px;font-weight:700;flex:1}.netlab .cfgpop .ph-close{background:transparent;border:none;color:var(--faint);font-size:18px;cursor:pointer;padding:2px 6px;border-radius:6px;line-height:1}.netlab .cfgpop .ph-close:hover{color:var(--txt);background:var(--inset)}.netlab .cfgpop .pop-body{padding:0}.netlab .cfgtabs{display:flex;gap:0;border-bottom:1px solid var(--line);background:rgba(0,0,0,.2)}.netlab .cfgtab{flex:1;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--faint);font-family:var(--label);font-size:11.5px;font-weight:600;padding:10px 4px;cursor:pointer}.netlab .cfgtab:hover{color:var(--txt)}.netlab .cfgtab.on{color:var(--nc,var(--blue));border-bottom-color:var(--nc,var(--blue));background:rgba(255,255,255,.03)}.netlab .cfgpane{padding:13px 14px;max-height:62vh;overflow-y:auto}.netlab .cfgpane select{width:100%;background:var(--void);border:1px solid var(--line);color:var(--txt);font-family:var(--mono);font-size:12px;padding:8px;border-radius:7px}.netlab .field{margin-bottom:9px}.netlab .field:last-child{margin-bottom:0}.netlab .field label{display:block;font-family:var(--label);font-size:10.5px;color:var(--faint);letter-spacing:.04em;text-transform:uppercase;margin-bottom:5px}.netlab .field input{width:100%;background:var(--void);border:1px solid var(--line);color:var(--txt);font-family:var(--mono);font-size:13.5px;padding:9px 11px;border-radius:8px}.netlab .field input:focus{outline:none;border-color:var(--nc,var(--blue));box-shadow:0 0 0 3px rgba(61,169,255,.14)}.netlab .twocol{display:grid;grid-template-columns:1fr 1fr;gap:9px}.netlab .cfgpop[data-type=pc]{--nc:var(--blue)}.netlab .cfgpop[data-type=switch]{--nc:var(--amber)}.netlab .cfgpop[data-type=router]{--nc:var(--green)}.netlab .cfgpop[data-type=server]{--nc:var(--violet)}.netlab .iface{background:var(--void);border:1px solid var(--line);border-radius:9px;padding:9px;margin-bottom:8px}.netlab .iface .ifhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.netlab .iface .ifname{font-family:var(--label);font-size:12px;font-weight:700;color:var(--green);background:var(--void);border:1px solid var(--line);border-radius:5px;padding:4px 7px;width:100%;cursor:text}.netlab .iface .ifname:focus{outline:none;border-color:var(--green)}.netlab .iface.active{border-color:var(--amber);box-shadow:0 0 0 1px var(--amber-glow)}.netlab .iface .ifnamewrap{margin-bottom:8px}.netlab .iface .ifnamewrap label{display:block;font-family:var(--label);font-size:10.5px;color:var(--faint);letter-spacing:.04em;text-transform:uppercase;margin-bottom:5px}.netlab .showcable{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;margin-top:8px;background:rgba(255,179,71,.1);border:1px solid var(--amber);color:var(--amber);font-family:var(--label);font-size:11.5px;font-weight:600;padding:8px;border-radius:8px;cursor:pointer}.netlab .showcable:active{transform:scale(.98)}.netlab .showcable svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2}.netlab .showcable.off{opacity:.4;pointer-events:none;border-color:var(--line);color:var(--faint);background:transparent}.netlab .iface .ifconn{font-family:var(--label);font-size:10px;color:var(--faint)}.netlab .iface input{font-size:12.5px;padding:7px 9px}.netlab .rswitch{display:flex;align-items:center;gap:9px;background:var(--void);border:1px solid var(--line);border-radius:9px;padding:10px 12px;margin-bottom:10px;cursor:pointer;font-family:var(--label);font-size:12px}.netlab .rswitch .box{width:36px;height:20px;border-radius:11px;background:var(--line);position:relative;transition:.15s;flex:0 0 36px}.netlab .rswitch .box::after{content:'';position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--dim);transition:.15s}.netlab .rswitch.on .box{background:rgba(61,220,132,.4)}.netlab .rswitch.on .box::after{left:18px;background:var(--green)}.netlab .rswitch .rt b{display:block;color:var(--txt)}.netlab .rswitch .rt span{font-size:10px;color:var(--faint)}.netlab .dhcpbox{background:var(--void);border:1px solid var(--line);border-radius:9px;padding:10px;margin-top:8px}.netlab .dhcpbox.disabled{opacity:.45;pointer-events:none}.netlab .modepick{display:flex;gap:6px;margin-bottom:10px}.netlab .modepick button{flex:1;font-family:var(--label);font-size:11.5px;font-weight:600;padding:8px;border-radius:7px;border:1px solid var(--line);background:var(--void);color:var(--dim);cursor:pointer}.netlab .modepick button.on{border-color:var(--blue);color:var(--blue);background:rgba(61,169,255,.1)}.netlab .dhcpget{width:100%;margin-top:8px;background:rgba(180,123,255,.12);border:1px solid var(--violet);color:var(--violet);font-family:var(--label);font-size:12px;font-weight:600;padding:9px;border-radius:8px;cursor:pointer}.netlab .dhcpget:active{transform:translateY(1px)}.netlab .tstres{margin-top:10px;padding:9px 12px;border-radius:8px;font-family:var(--label);font-size:12px;line-height:1.4;display:none}.netlab .tstres.show{display:block}.netlab .tstres.ok{background:rgba(61,220,132,.12);border:1px solid rgba(61,220,132,.4);color:var(--green)}.netlab .tstres.err{background:rgba(255,59,92,.1);border:1px solid rgba(255,59,92,.35);color:#ff6b81}.netlab .autoinfo{font-family:var(--label);font-size:11px;color:var(--faint);margin-top:6px;line-height:1.4}.netlab .dnsrec{display:grid;grid-template-columns:1fr 1fr auto;gap:6px;margin-bottom:6px;align-items:center}.netlab .dnsrec input{background:var(--void);border:1px solid var(--line);color:var(--txt);font-family:var(--mono);font-size:12px;padding:7px 8px;border-radius:6px;width:100%}.netlab .dnsrec button{background:rgba(255,59,92,.12);border:1px solid rgba(255,59,92,.4);color:#ff6b81;border-radius:6px;width:28px;height:30px;cursor:pointer;font-size:14px;line-height:1}.netlab .routerec{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:5px;margin-bottom:6px;align-items:center}.netlab .routerec input{background:var(--void);border:1px solid var(--line);color:var(--txt);font-family:var(--mono);font-size:11px;padding:6px;border-radius:6px;width:100%}.netlab .routerec button{background:rgba(255,59,92,.12);border:1px solid rgba(255,59,92,.4);color:#ff6b81;border-radius:6px;width:26px;height:28px;cursor:pointer;font-size:13px;line-height:1}.netlab .fwrule{background:var(--void);border:1px solid var(--line);border-radius:8px;padding:8px;margin-bottom:7px}.netlab .fwrow{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-bottom:5px}.netlab .fwrule select, .netlab .fwrule input{background:var(--inset);border:1px solid var(--line);color:var(--txt);font-family:var(--mono);font-size:11px;padding:6px;border-radius:6px;width:100%}.netlab .fwrule .fwtop{display:flex;gap:5px;align-items:center;margin-bottom:6px}.netlab .fwrule .fwtop select{flex:1}.netlab .fwrule .fwdel{background:rgba(255,59,92,.12);border:1px solid rgba(255,59,92,.4);color:#ff6b81;border-radius:6px;width:26px;height:28px;cursor:pointer;font-size:13px;line-height:1;flex:0 0 26px}.netlab .fwlbl{font-family:var(--label);font-size:9px;color:var(--faint);text-transform:uppercase;letter-spacing:.04em;margin-bottom:2px;display:block}.netlab .routehead{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:5px;font-family:var(--label);font-size:9.5px;color:var(--faint);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}.netlab .dnsadd{width:100%;margin-top:4px;background:rgba(61,169,255,.1);border:1px solid var(--blue);color:var(--blue);font-family:var(--label);font-size:11.5px;font-weight:600;padding:8px;border-radius:8px;cursor:pointer}.netlab .dock{margin-top:12px;max-width:520px}.netlab .card{background:linear-gradient(180deg,var(--panel),var(--inset));border:1px solid var(--line);border-radius:13px;padding:14px}.netlab .card h3{margin:0 0 11px;font-size:12px;color:var(--dim);letter-spacing:.1em;text-transform:uppercase;display:flex;align-items:center;gap:7px;font-family:var(--label)}.netlab .card h3 .pip{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 7px var(--green-glow)}.netlab .ping-row{display:flex;align-items:center;gap:9px;margin-bottom:10px}.netlab .ping-row select{flex:1;background:var(--void);border:1px solid var(--line);color:var(--txt);font-family:var(--mono);font-size:12px;padding:9px;border-radius:8px}.netlab .ping-row .arr{color:var(--faint)}.netlab .send{width:100%;background:linear-gradient(180deg,#4dED95,var(--green));border:none;color:#04140a;font-family:var(--label);font-weight:700;font-size:13px;padding:11px;border-radius:9px;cursor:pointer;box-shadow:0 6px 16px -8px var(--green-glow)}.netlab .send:active{transform:translateY(1px)}.netlab .result{margin-top:11px;padding:10px 13px;border-radius:9px;font-size:12.5px;display:none;line-height:1.45;font-family:var(--label)}.netlab .result.show{display:block}.netlab .result.ok{background:rgba(61,220,132,.1);border:1px solid rgba(61,220,132,.35);color:var(--green)}.netlab .result.err{background:rgba(255,59,92,.09);border:1px solid rgba(255,59,92,.32);color:#ff6b81}.netlab .pkt{position:absolute;width:12px;height:12px;border-radius:50%;pointer-events:none;opacity:0;z-index:30}

/* --- Einbindung in FISI Quest --- */
.nl-back{display:inline-flex;align-items:center;gap:6px;background:var(--panel,#12121c);border:1px solid var(--line,#242438);color:var(--txt,#eef0f6);font-family:var(--label,system-ui);font-size:13px;font-weight:600;padding:9px 15px;border-radius:9px;cursor:pointer;margin-bottom:12px}
.nl-back:hover{border-color:var(--blue,#3da9ff);color:var(--blue,#3da9ff)}


/* Paketbewegung ist Lerninhalt und darf nicht durch reduzierte Bewegung
   abgeschaltet werden (sonst springen die Pakete unsichtbar ans Ziel). */
@media (prefers-reduced-motion: reduce) {
.netlab .pkt { transition-property: left, top, opacity, transform !important; transition-duration: 620ms !important; transition-timing-function: linear !important; }
}

/* --- Terminal (CMD) im 8-bit-Stil --- */
.netlab .cmdwrap{background:#04060a;border:1px solid var(--green);border-radius:8px;overflow:hidden;
  box-shadow:inset 0 0 24px -8px rgba(61,220,132,.35)}
.netlab .cmdout{font-family:var(--mono);font-size:11.5px;line-height:1.45;color:#9dffc4;
  padding:10px 11px;height:270px;overflow-y:auto;white-space:pre-wrap;word-break:break-word;
  text-shadow:0 0 6px rgba(61,220,132,.35)}
.netlab .cmdout::-webkit-scrollbar{width:8px}
.netlab .cmdout::-webkit-scrollbar-track{background:#04060a}
.netlab .cmdout::-webkit-scrollbar-thumb{background:#1d5c3a;border-radius:0}
.netlab .cmdline{display:flex;align-items:center;gap:6px;border-top:1px solid rgba(61,220,132,.25);
  padding:8px 11px;background:rgba(61,220,132,.05)}
.netlab .cmdprompt{font-family:var(--mono);font-size:11.5px;color:var(--green);flex:0 0 auto;
  text-shadow:0 0 6px rgba(61,220,132,.5)}
.netlab .cmdline input{flex:1;background:transparent;border:none;outline:none;
  font-family:var(--mono);font-size:11.5px;color:#c8ffdf;caret-color:var(--green);padding:0}

/* ==========================================================================
   Halbtransparente Hauptflaechen, damit der Ambient-Glow aus
   fq-theme.css (body::before) durchscheint.
   Nur Hintergruende, keine Groessen oder Abstaende geaendert.
   ========================================================================== */
.netlab .palette { background: linear-gradient(180deg, rgba(18,18,28,.58), rgba(11,11,18,.58)); }
.netlab .dev { background: rgba(26,26,40,.52); }
.netlab .canvas { background: rgba(4,4,6,.55); }
.netlab .modebtn { background: rgba(26,26,40,.55); }
.netlab .taskbtn { background: rgba(26,26,40,.55); }
.netlab .card { background: linear-gradient(180deg, rgba(18,18,28,.58), rgba(11,11,18,.58)); }
.netlab .zoombar button { background: rgba(26,26,40,.6); }
.netlab .zoombar .zlabel { background: rgba(26,26,40,.6); }

/* ==========================================================================
   KONFIG-FENSTER: INHALT MUSS SCROLLEN, NICHT ABGESCHNITTEN WERDEN
   --------------------------------------------------------------------------
   Vorher hatte .cfgpop ein overflow:hidden und .cfgpane eine feste Hoehe von
   62vh. Passte der Inhalt nicht in das Fenster (z. B. ein Router mit drei
   Netzwerkkarten), wurde die letzte Karte einfach abgeschnitten - scrollen
   war nicht moeglich, weil der Inhalt seine eigene Maximalhoehe gar nicht
   erreichte.
   Jetzt ist das Fenster eine Flex-Spalte: Kopf und Reiter behalten ihre
   Hoehe, der Inhaltsbereich bekommt den Rest und scrollt darin.
   ========================================================================== */
.netlab .cfgpop.show {
  display: flex;
  flex-direction: column;
}
.netlab .cfgpop .pop-head { flex: 0 0 auto; }
.netlab .cfgpop .pop-body {
  display: flex; flex-direction: column;
  flex: 1 1 auto; min-height: 0;
}
.netlab .cfgtabs { flex: 0 0 auto; }
.netlab .cfgpane {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overscroll-behavior: contain;
}
