*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}.ns-app{color:#1d4ed8;background:#e2e8f0;flex-direction:column;height:100dvh;display:flex;position:relative}.ns-splash-layer{z-index:120;opacity:1;transition:opacity .42s,transform .42s;position:fixed;inset:0}.ns-splash-layer.leave{opacity:0;pointer-events:none;transform:scale(1.02)}.ns-splash{color:#eff6ff;background:radial-gradient(circle at 0 0,#60a5fa38,#0000 34%),radial-gradient(circle at 100% 0,#22c55e2e,#0000 28%),linear-gradient(135deg,#07111f 0%,#0b1730 50%,#091221 100%);width:100%;height:100%;position:relative;overflow:hidden}.ns-splash-bg{background-image:linear-gradient(#94a3b814 1px,#0000 1px),linear-gradient(90deg,#94a3b814 1px,#0000 1px);background-size:42px 42px;animation:16s linear infinite splash-grid-drift;position:absolute;inset:-10%;-webkit-mask-image:radial-gradient(circle,#000 45%,#0000 88%);mask-image:radial-gradient(circle,#000 45%,#0000 88%)}.ns-splash-shell{z-index:1;grid-template-columns:minmax(340px,1.15fr) minmax(320px,.85fr);align-items:center;gap:36px;width:min(1120px,100vw - 48px);height:100%;margin:0 auto;display:grid;position:relative}.ns-splash-visual{justify-content:center;align-items:center;min-height:380px;display:flex;position:relative}.ns-splash-visual:before{content:"";filter:blur(26px);background:radial-gradient(circle at 24%,#3b82f638,#0000 20%),radial-gradient(circle at 68% 36%,#22c55e2e,#0000 20%),radial-gradient(circle at 62% 72%,#22d3ee1f,#0000 18%),linear-gradient(135deg,#080f1ce0,#080f1c57);border-radius:40px;position:absolute;inset:8% 4% 6% 3%}.ns-splash-art-frame{z-index:1;aspect-ratio:1;justify-content:center;align-items:center;width:min(100%,640px);display:flex;position:relative}.ns-splash-art-frame:before{content:"";border:1px solid #94a3b81f;border-radius:50%;animation:18s linear infinite splash-orbit-spin;position:absolute;inset:14%}.ns-splash-art-frame:after{content:"";border:1px solid #60a5fa1f;border-radius:50%;animation:24s linear infinite splash-orbit-spin-reverse;position:absolute;inset:7%}.ns-splash-orbit{pointer-events:none;border-radius:50%;position:absolute}.ns-splash-orbit-a{border:1px solid #34d39929;inset:22% 16%;transform:rotate(16deg)}.ns-splash-orbit-b{border:1px solid #3b82f624;inset:27% 22%;transform:rotate(-20deg)}.ns-splash-scan{z-index:1;background:linear-gradient(#0000 0%,#4ade800d 34%,#0000 68%),linear-gradient(90deg,#0000 0%,#3b82f60f 50%,#0000 100%);border-radius:50%;animation:4.6s ease-in-out infinite splash-scan-sweep;position:absolute;inset:20% 16%;-webkit-mask-image:radial-gradient(circle,#000 44%,#0000 73%);mask-image:radial-gradient(circle,#000 44%,#0000 73%)}.ns-splash-art-image{z-index:2;filter:drop-shadow(0 42px 62px #0206178f)drop-shadow(0 0 52px #60a5fa29)drop-shadow(0 0 30px #22c55e24);width:min(76%,440px);height:auto;animation:6.4s ease-in-out infinite splash-hero-float;display:block;position:relative}.ns-splash-art-image-logo{width:min(58%,330px)}.ns-splash-copy h1{letter-spacing:-.04em;margin:8px 0 10px;font-size:clamp(2.3rem,4vw,4rem);line-height:.95}.ns-splash-copy p{color:#cbd5e1;max-width:40ch;margin:0;font-size:15px;line-height:1.6}.ns-splash-kicker{color:#93c5fd;letter-spacing:.08em;text-transform:uppercase;background:#0f172a7a;border:1px solid #60a5fa61;border-radius:999px;align-items:center;gap:8px;padding:7px 12px;font-size:11px;font-weight:700;display:inline-flex}.ns-splash-progress{width:min(420px,100%);margin-top:22px}.ns-splash-progress-bar{background:#0f172a80;border:1px solid #60a5fa47;border-radius:999px;height:11px;overflow:hidden}.ns-splash-progress-fill{border-radius:inherit;background:linear-gradient(90deg,#38bdf8 0%,#60a5fa 48%,#22c55e 100%);height:100%;transition:width .18s;box-shadow:0 0 28px #38bdf873}.ns-splash-progress-meta{color:#cbd5e1;justify-content:space-between;gap:12px;margin-top:10px;font-size:12px;font-weight:600;display:flex}.ns-splash-progress-meta strong{color:#f8fafc}@keyframes splash-grid-drift{0%{transform:translate(0,0)}to{transform:translate(42px,42px)}}@keyframes splash-hero-float{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-10px)scale(1.012)}}@keyframes splash-orbit-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes splash-orbit-spin-reverse{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}@keyframes splash-scan-sweep{0%,to{opacity:.58;transform:translateY(-6%)scaleY(.96)}50%{opacity:.92;transform:translateY(8%)scaleY(1.04)}}.ns-toolbar{background:#0f172a;border-bottom:2px solid #1e3a5f;flex-wrap:nowrap;align-items:center;gap:4px;min-width:0;padding:6px 10px;display:flex;position:relative;overflow:visible}.ns-toolbar:before{content:"";opacity:1;filter:drop-shadow(0 0 10px #38bdf82e);pointer-events:none;background:url(/netstudio/favicon.svg) 50%/contain no-repeat;width:34px;height:34px;position:absolute;top:50%;left:8px;transform:translateY(-50%)}.ns-brand{color:#93c5fd;letter-spacing:.03em;white-space:nowrap;z-index:1;margin-right:2px;padding-left:38px;font-size:13px;font-weight:800;position:relative}.ns-toolbar-desktop{flex:1;align-items:center;gap:4px;min-width:0;display:flex}.ns-toolbar-mobile-actions{align-items:center;gap:6px;margin-left:auto;display:none}.ns-mobile-menu-btn,.ns-btn-guide-mobile{min-height:34px}.ns-mobile-menu{display:none}.toolbar-group{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.toolbar-group-label{text-transform:uppercase;letter-spacing:.08em;color:#64748b;padding-left:2px;font-size:9px;font-weight:700}.toolbar-group-row{align-items:center;gap:4px;display:flex}.ns-btn{color:#e2e8f0;cursor:pointer;white-space:nowrap;background:#1e293b;border:1px solid #334155;border-radius:6px;align-items:center;gap:4px;padding:5px 8px;font-size:11px;font-weight:600;transition:border-color .1s,background .1s;display:flex}.ns-btn:hover{background:#263548;border-color:#475569}.btn-label{font-size:11px}.ns-btn.active{color:#fff;background:#1d4ed8;border-color:#60a5fa}.ns-btn.warn.active{background:#b45309;border-color:#f59e0b}.ns-btn.danger,.ns-btn.danger.active{color:#fff;background:#991b1b;border-color:#dc2626}.lock-btn{border-color:#6b7280}.lock-btn.lock-active{animation:1.8s ease-in-out infinite lock-pulse;color:#fef3c7!important;background:#92400e!important;border-color:#f59e0b!important}@keyframes lock-pulse{0%,to{box-shadow:0 0 #f59e0b00}50%{box-shadow:0 0 0 4px #f59e0b59}}.ns-toolbar-lock{color:#fef3c7;white-space:nowrap;letter-spacing:.02em;background:#92400e;border:1px solid #f59e0b;border-radius:12px;padding:3px 10px;font-size:10.5px;font-weight:700;animation:1.8s ease-in-out infinite lock-pulse}.ns-mobile-menu{background:radial-gradient(circle at 100% 0,#38bdf81f,#0000 34%),linear-gradient(#0b1220 0%,#111c31 100%);border:1px solid #334155;border-radius:18px;width:100%;margin-top:10px;padding:12px;box-shadow:0 18px 40px #02081773}.ns-mobile-menu-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.ns-mobile-menu-title{color:#e2e8f0;font-size:14px;font-weight:800}.ns-mobile-menu-subtitle{color:#94a3b8;margin-top:2px;font-size:11px}.ns-mobile-menu-close{justify-content:center;min-width:36px}.ns-mobile-status{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.ns-mobile-status-chip{color:#cbd5e1;background:#0f172ae6;border:1px solid #334155;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:700}.ns-mobile-status-lock{color:#fde68a;border-color:#f59e0b}.ns-mobile-menu-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.ns-mobile-menu-card{background:#0f172ab8;border:1px solid #475569cc;border-radius:14px;padding:8px}.ns-mobile-section-btn{color:#e2e8f0;cursor:pointer;background:#172235;border:1px solid #334155;border-radius:10px;justify-content:space-between;align-items:center;gap:8px;width:100%;padding:10px 12px;font-size:12px;font-weight:800;display:flex}.ns-mobile-section-btn.open{color:#eff6ff;background:#1e3a5f;border-color:#60a5fa}.ns-mobile-section-list{flex-direction:column;gap:6px;margin-top:8px;display:flex}.ns-mobile-inline-actions{flex-wrap:wrap;gap:6px;display:flex}.ns-mobile-inline-actions .ns-btn{flex:120px;justify-content:center}.ns-mobile-preset-group+.ns-mobile-preset-group{margin-top:6px}.ns-mobile-preset-list{flex-direction:column;gap:4px;margin-top:4px;padding-left:6px;display:flex}.menu-submenu-label.mobile{margin-top:2px}.ns-toast{color:#f1f5f9;z-index:9999;pointer-events:none;background:#1e293b;border:1px solid #334155;border-radius:8px;max-width:min(360px,100vw - 32px);padding:9px 20px;font-size:13px;font-weight:600;animation:.25s toast-in;position:fixed;top:88px;right:24px;box-shadow:0 4px 18px #00000080}@keyframes toast-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@media (width<=900px){.ns-toast{max-width:none;top:76px;left:16px;right:16px}}.menu-hint{color:#64748b;border-bottom:1px solid #1e3a5f;margin-bottom:2px;padding:4px 12px 2px;font-size:9.5px;font-style:italic}.ns-canvas-wrap{position:relative}.ns-viewport-controls{z-index:20;flex-direction:column;gap:4px;display:flex;position:absolute;bottom:14px;right:14px}.ns-vp-btn{color:#94a3b8;cursor:pointer;background:#1e293b;border:1px solid #334155;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;font-size:16px;line-height:1;transition:background .15s,color .15s;display:flex}.ns-vp-btn:hover{color:#f1f5f9;background:#334155}.ns-cursor-badge{pointer-events:none;z-index:22;color:#f8fafc;border-radius:999px;justify-content:center;align-items:center;width:22px;height:22px;font-size:11px;font-weight:800;display:flex;position:absolute;transform:translate(-50%,-50%);box-shadow:0 6px 16px #0f172a47}.ns-cursor-badge.step-source{background:#0f766e;border:1px solid #5eead4}.ns-cursor-badge.step-dest{background:#1d4ed8;border:1px solid #93c5fd}.ns-btn-guide{color:#fff;background:#0e7490;border-color:#0891b2}.ns-btn-test{color:#ecfeff;background:#115e59;border-color:#0f766e}.ns-btn-test:hover{background:#0f766e;border-color:#14b8a6}.ns-btn-guide:hover{background:#0c6780;border-color:#06b6d4}.spacer{flex:1;min-width:0}.ns-sep{background:#1e3a5f;flex-shrink:0;width:1px;height:36px;margin:0 4px}.menu-dropdown{z-index:30;background:#0b1220;border:1px solid #334155;border-radius:8px;flex-direction:column;min-width:180px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 10px 28px #0006}.menu-dropdown.menu-wide{min-width:230px}.menu-item{color:#e2e8f0;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:6px;padding:7px 8px;font-size:12px;font-weight:600;display:flex}.menu-item:hover{background:#111827;border-color:#334155}.menu-item.active{color:#dbeafe;background:#172554;border-color:#2563eb}.menu-item-indent{padding-left:18px;font-size:11.5px;font-weight:500}.menu-separator{background:#1e293b;height:1px;margin:4px 0}.menu-submenu-label{letter-spacing:.08em;text-transform:uppercase;color:#64748b;padding:4px 8px 2px;font-size:9px;font-weight:700}.menu-submenu-root{flex-direction:column;gap:2px;display:flex}.menu-submenu-wrap{position:relative}.menu-submenu-wrap:after{content:"";width:16px;height:calc(100% + 12px);position:absolute;top:-6px;right:-10px}.menu-submenu-trigger{justify-content:space-between;width:100%}.menu-submenu-trigger-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.menu-submenu-arrow{color:#94a3b8;font-size:15px;line-height:1}.menu-submenu-panel{z-index:35;background:#0b1220;border:1px solid #334155;border-radius:8px;flex-direction:column;gap:2px;min-width:260px;max-width:min(48vw,420px);padding:6px;display:flex;position:absolute;top:-6px;left:calc(100% + 6px);box-shadow:0 10px 28px #0000006b}.menu-submenu-panel:before{content:"";width:14px;height:100%;position:absolute;top:0;left:-12px}.danger-item{color:#fca5a5}.ns-toolbar-note{color:#fde68a;white-space:nowrap;margin-left:4px;font-size:11px;font-weight:600}.test-note{color:#99f6e4}.cable-note{align-items:center;gap:8px;display:inline-flex}.cable-menu-item{gap:10px}.cable-menu-icon{flex:0 0 18px;width:18px;height:12px;display:inline-block;position:relative}.cable-menu-icon:before,.cable-menu-icon:after{content:"";position:absolute;inset:0}.cable-icon-auto:before{background:radial-gradient(circle at 35% 35%,#fef08a 0 18%,#22c55e 22% 62%,#14532d 66% 100%);border-radius:999px;width:14px;height:14px;inset:-1px auto auto 2px;box-shadow:0 0 10px #22c55e59}.cable-icon-auto:after{border-top:2px solid #bbf7d0;border-right:2px solid #bbf7d0;width:8px;height:8px;inset:4px 2px auto auto;transform:rotate(45deg)}.cable-icon-straight:before{background:linear-gradient(90deg,#d97706 0%,#fbbf24 100%);border-radius:999px;height:2px;inset:5px 0 auto}.cable-icon-straight:after{border-top:1px solid #ffffff2e;border-bottom:1px solid #ffffff2e;width:14px;height:6px;inset:3px auto auto 1px}.cable-icon-crossover:before,.cable-icon-crossover:after{background:linear-gradient(90deg,#ef4444 0%,#fb7185 100%);border-radius:999px;width:17px;height:2px;top:5px;left:0}.cable-icon-crossover:before{transform:rotate(28deg)}.cable-icon-crossover:after{transform:rotate(-28deg)}.cable-icon-fiber:before{background:linear-gradient(90deg,#0f766e 0%,#22d3ee 45%,#a5f3fc 100%);border-radius:999px;height:3px;inset:4px 0 auto;box-shadow:0 0 10px #22d3ee59}.cable-icon-fiber:after{filter:blur(.4px);background:#ffffffbf;border-radius:999px;width:5px;height:9px;inset:1px auto auto 6px}.cable-icon-serial:before{background:repeating-linear-gradient(90deg,#8b5cf6 0 5px,#0000 5px 8px);border-radius:999px;height:2px;inset:5px 0 auto}.cable-icon-serial:after{border:1px solid #d8b4fe80;border-radius:4px;width:16px;height:10px;inset:1px auto auto 1px}.input-toolbar{color:#e2e8f0;background:#111827;border:1px solid #475569;border-radius:6px;min-width:210px;height:28px;padding:3px 8px;font-size:11px}.menu-wrap{position:relative}.ns-main{flex:1;min-height:0;display:flex}.ns-canvas-wrap{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.ns-canvas{background:#f1f5f9;flex:1;width:100%;min-height:0}.device-group,.link-delete{cursor:pointer}.ns-side{background:#fff;border-left:1px solid #cbd5e1;width:clamp(350px,36vw,500px);max-width:48vw;position:relative;overflow:auto}.ns-side-collapse{float:right;z-index:20;color:#475569;cursor:pointer;background:#fff;border:1px solid #cbd5e1;border-radius:999px;justify-content:center;align-items:center;width:30px;height:30px;margin:8px 8px 0 0;display:inline-flex;position:sticky;top:8px;box-shadow:0 6px 18px #0f172a1f}.ns-side-collapse:hover{color:#0f172a;background:#f8fafc;border-color:#94a3b8}.ns-side-open{color:#0f172a;cursor:pointer;background:#fff;border:1px solid #cbd5e1;border-radius:999px;align-self:flex-start;align-items:center;gap:6px;margin:12px 12px 0 0;padding:7px 11px;font-size:12px;font-weight:700;display:inline-flex;box-shadow:0 8px 24px #0f172a1f}.ns-side-open:hover{color:#1d4ed8;border-color:#2563eb}.panel{flex-direction:column;gap:8px;padding:14px;display:flex}.panel-device{padding:12px 10px 12px 0}.panel.empty{color:#64748b;padding-top:28px}.panel-head{justify-content:space-between;align-items:center;display:flex}.panel-device .panel-head{padding-left:10px}.panel-head.compact{margin-top:6px}.inspector-layout{grid-template-columns:38px minmax(0,1fr);gap:10px;min-height:0;display:grid}.panel-content{min-width:0;padding-right:2px}.panel-tabs{border-bottom:1px solid #e2e8f0;flex-wrap:wrap;gap:6px;padding-bottom:4px;display:flex}.tab-btn{color:#334155;cursor:pointer;background:#f8fafc;border:1px solid #cbd5e1;border-radius:999px;padding:5px 10px;font-size:11px;font-weight:700}.tab-btn.active{color:#1e3a8a;background:#dbeafe;border-color:#2563eb}.panel-tabs.vertical{border-bottom:none;border-right:none;flex-flow:column;align-items:stretch;gap:4px;padding-bottom:0;padding-right:0}.panel-tabs.vertical .tab-btn{--tab-bg:#94a3b847;--tab-border:#64748b59;--tab-text:#334155;--tab-text-active:#0f172a;writing-mode:vertical-rl;text-orientation:mixed;background:var(--tab-bg);width:36px;min-height:84px;color:var(--tab-text);border-right:none;border-color:var(--tab-border);z-index:1;border-radius:8px 0 0 8px;margin-right:-1px;padding:8px 4px;position:relative;transform:rotate(180deg)}.panel-tabs.vertical .tab-btn:hover{filter:brightness(.97)}.panel-tabs.vertical .tab-btn.active{background:linear-gradient(#ffffff9e, #ffffff9e), var(--tab-bg);color:var(--tab-text-active);border-color:var(--tab-border);z-index:3;border-right:none;box-shadow:-2px 0 #fff,inset 0 0 0 1px #ffffffa6}.panel-tabs.vertical .tab-btn.tab-interfaces{--tab-bg:#38bdf838;--tab-border:#0e749061;--tab-text:#0f5d77;--tab-text-active:#0c4a5e}.panel-tabs.vertical .tab-btn.tab-routing{--tab-bg:#22c55e30;--tab-border:#16a34a59;--tab-text:#166534;--tab-text-active:#14532d}.panel-tabs.vertical .tab-btn.tab-firewall{--tab-bg:#fb923c30;--tab-border:#ea580c59;--tab-text:#9a3412;--tab-text-active:#7c2d12}.panel-tabs.vertical .tab-btn.tab-services{--tab-bg:#2dd4bf33;--tab-border:#0d948859;--tab-text:#0f766e;--tab-text-active:#115e59}.panel-tabs.vertical .tab-btn.tab-cam{--tab-bg:#d9770633;--tab-border:#b4530959;--tab-text:#92400e;--tab-text-active:#78350f}.panel-tabs.vertical .tab-btn.tab-arp{--tab-bg:#a855f729;--tab-border:#7e22ce59;--tab-text:#6b21a8;--tab-text-active:#581c87}.panel-tabs.vertical .tab-btn.tab-cli{--tab-bg:#94a3b83d;--tab-border:#64748b59;--tab-text:#334155;--tab-text-active:#1e293b}.close{cursor:pointer;background:#f8fafc;border:1px solid #cbd5e1;border-radius:6px;width:28px;height:28px}.label{color:#334155;margin-top:6px;font-size:12px;font-weight:700}.label.no-margin{margin:0}.input{box-sizing:border-box;background:#fff;border:1px solid #cbd5e1;border-radius:6px;width:100%;padding:6px 8px;font-size:12px}.iface-box,.route-box{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;flex-direction:column;gap:6px;padding:8px;display:flex}.acl-guidance{background:#fff7ed;border-color:#fed7aa}.acl-entry-box{background:#fff}.acl-address-block{flex-direction:column;gap:4px;display:flex}.acl-address-row{flex-wrap:wrap;align-items:stretch}.acl-mode-select{max-width:110px}.iface-head{color:#1d4ed8;font-size:12px;font-weight:700}.iface-collapse{color:#1e3a8a;cursor:pointer;background:#eef2ff;border:1px solid #cbd5e1;border-radius:6px;justify-content:space-between;align-items:center;padding:6px 8px;font-size:12px;font-weight:700;display:flex}.iface-content{opacity:0;grid-template-rows:0fr;transition:grid-template-rows .18s,opacity .18s;display:grid}.iface-content.open{opacity:1;grid-template-rows:1fr}.iface-content-inner{flex-direction:column;gap:6px;display:flex;overflow:hidden}.iface-toggle-row{justify-content:flex-end;display:flex}.switch-port-row{justify-content:space-between;align-items:center;gap:6px;display:flex}.small-btn{cursor:pointer;background:#fff;border:1px solid #94a3b8;border-radius:6px;padding:5px 8px;font-size:12px;font-weight:600}.small-btn.ok{color:#166534;border-color:#22c55e}.small-btn.danger{color:#b91c1c;border-color:#ef4444}.input.invalid{background:#fff1f2;border-color:#ef4444}.badge{color:#334155;background:#e2e8f0;border-radius:999px;margin-bottom:4px;margin-right:4px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-block}.badge.ok{color:#166534;background:#dcfce7}.muted{color:#64748b;font-size:12px}.wifi-status-block{margin-top:10px}.wifi-peer-list{margin-top:8px}.ok-text{color:#16a34a;font-weight:700}.warn-text{color:#dc2626;font-weight:700}.table-block{border-top:1px solid #e2e8f0;margin-top:6px;padding-top:8px}.cli-block .panel-head{gap:8px}.cli-vendor{max-width:170px}.cli-output{color:#c7f9cc;white-space:pre-wrap;background:#0b1220;border:1px solid #dbeafe;border-radius:8px;max-height:220px;margin:0;padding:10px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:11px;overflow:auto}.mini-table-wrap{border:1px solid #e2e8f0;border-radius:8px;max-height:180px;overflow:auto}.mini-table{border-collapse:collapse;width:100%;font-size:11px}.mini-table th,.mini-table td{text-align:left;vertical-align:top;border-bottom:1px solid #e2e8f0;padding:5px 6px}.mini-table th{color:#334155;background:#f8fafc;font-weight:700;position:sticky;top:0}.service-box{gap:8px}.service-summary{background:#eff6ff;border:1px solid #dbeafe;border-radius:8px;flex-direction:column;gap:3px;padding:6px 8px;display:flex}.service-summary-title{color:#1e3a8a;font-size:12px;font-weight:700}.service-problems{font-size:11px}.service-html-editor{resize:vertical;min-height:150px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px}.browser-modal{background:#0f172a;width:min(1040px,96vw);height:min(760px,92vh)}.browser-chrome{background:linear-gradient(#111827 0%,#0f172a 100%);border-bottom:1px solid #24324a;gap:8px;padding:10px;display:grid}.browser-title{color:#e2e8f0;align-items:baseline;gap:8px;display:flex}.browser-title span{color:#94a3b8;font-size:12px}.browser-urlbar{grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;display:grid}.browser-body{background:#e2e8f0;flex-direction:column;flex:1;gap:8px;min-height:0;padding:10px;display:flex}.browser-status{flex-wrap:wrap;gap:6px;display:flex}.browser-status span{color:#334155;background:#fff;border:1px solid #cbd5e1;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:800}.browser-frame{background:#fff;border:1px solid #cbd5e1;border-radius:8px;flex:1;width:100%;min-height:0}.browser-empty,.browser-error{color:#475569;background:#fff;border:1px solid #cbd5e1;border-radius:8px;padding:14px;font-size:13px}.browser-error{color:#991b1b;background:#fff1f2;border-color:#fecaca;font-weight:800}.ns-console{color:#e2e8f0;background:#0f172a;border-top:1px solid #334155;gap:12px;min-height:136px;padding:8px 10px;display:flex}.console-controls{flex-direction:column;gap:6px;width:300px;max-width:38vw;display:flex}.row{flex-direction:column;gap:3px;display:flex}.row label{color:#cbd5e1;font-size:11px;font-weight:700}.console-help{color:#94a3b8;font-size:10px;line-height:1.25}.console-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.console-grid-top{align-items:start}.console-grid-main{grid-template-columns:minmax(132px,1fr) minmax(132px,1fr)}.row.buttons{flex-flow:wrap;gap:6px}.row.buttons .small-btn{flex:1 1 0;min-width:0}.console-actions .small-btn{padding-left:8px;padding-right:8px}.console-output-title{color:#cbd5e1;font-size:11px;font-weight:700}.console-output-meta{color:#94a3b8;white-space:nowrap;text-overflow:ellipsis;font-size:10px;overflow:hidden}.console-section{background:#0b1220;border:1px solid #334155;border-radius:8px;overflow:hidden}.console-section[open]{background:#09101d}.console-section-head{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:10px;padding:6px 9px;list-style:none;display:flex}.console-section-head::-webkit-details-marker{display:none}.console-section-head:before{content:"▸";color:#93c5fd;margin-right:6px;font-size:10px}.console-section[open] .console-section-head:before{content:"▾"}.console-section-head .console-output-title{align-items:center;display:flex}.console-log{color:#86efac;background:#020617;flex:1;max-height:118px;padding:8px 9px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:11px;line-height:1.28;overflow:auto}.console-log-wrap{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.batch-table-wrap{background:#0b1220;max-height:98px;overflow:auto}.batch-table{color:#cbd5e1;font-size:11px}.batch-table th{color:#cbd5e1;white-space:nowrap;background:#111827;border-bottom-color:#334155;padding-top:5px;padding-bottom:5px}.batch-table td{border-bottom-color:#1f2937;padding-top:5px;padding-bottom:5px}.annot-palette{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.annot-swatch{cursor:pointer;border:2px solid #0000;border-radius:5px;width:28px;height:28px;transition:transform .1s,box-shadow .1s}.annot-swatch:hover{transform:scale(1.15);box-shadow:0 0 0 2px #3b82f6}.annot-swatch-active{transform:scale(1.1);box-shadow:0 0 0 3px #3b82f6}.guide-backdrop{z-index:80;background:radial-gradient(circle at top,#2563eb2e,#0000 30%),#020617b8;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.guide-modal{background:linear-gradient(#0f172a 0%,#142033 100%);border:1px solid #334155;border-radius:16px;flex-direction:column;width:min(900px,96vw);height:min(760px,90vh);display:flex;overflow:hidden;box-shadow:0 28px 64px #0206178f}.tool-close-backdrop,.app-alert-backdrop{z-index:120;background:#0206176b;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.tool-close-dialog,.app-alert-dialog{color:#e2e8f0;background:#0f172a;border:1px solid #475569;border-radius:12px;width:min(380px,92vw);padding:18px;box-shadow:0 24px 54px #02061794}.tool-close-dialog h2,.app-alert-dialog h2{margin:0 0 8px;font-size:18px}.tool-close-dialog p,.app-alert-dialog p{color:#cbd5e1;margin:0;line-height:1.45}.tool-close-actions,.app-alert-actions{justify-content:flex-end;gap:8px;margin-top:18px;display:flex}.guide-head{background:radial-gradient(circle at 100% 0,#38bdf82e,#0000 34%),linear-gradient(#111827 0%,#0f172a 100%);border-bottom:1px solid #24324a;justify-content:space-between;align-items:center;gap:8px;padding:13px 16px;display:flex}.guide-head h2{color:#e2e8f0;margin:0;font-size:18px}.guide-body{background:linear-gradient(#142033 0%,#17263d 100%);flex-direction:column;flex:1;gap:8px;min-height:0;padding:12px 14px 14px;display:flex;overflow:hidden}.guide-tabs{flex-wrap:wrap;flex:none;align-items:flex-end;gap:3px;padding:0 2px;display:flex}.guide-tab{color:#cbd5e1;cursor:pointer;background:linear-gradient(#23324a 0%,#1b283c 100%);border:1px solid #334155;border-bottom:none;border-radius:10px 10px 0 0;align-items:center;gap:5px;padding:7px 9px 6px;font-size:11px;font-weight:700;line-height:1;transition:all .15s;display:inline-flex;position:relative;transform:translateY(1px)}.guide-tab:before{content:"";background:#223149;border:1px solid #334155;border-bottom:none;border-radius:8px 8px 0 0;width:22px;height:7px;position:absolute;top:-6px;left:9px}.guide-tab:hover{color:#eff6ff;background:linear-gradient(#284567 0%,#213754 100%);border-color:#60a5fa;transform:translateY(0)}.guide-tab:hover:before{background:#284567;border-color:#60a5fa}.guide-tab-active{color:#1e3a8a;z-index:2;background:linear-gradient(#dbeafe 0%,#f8fbff 100%);border-color:#2563eb;transform:translateY(0);box-shadow:inset 0 -1px #ffffffeb,0 10px 22px #2563eb2e}.guide-tab-active:before{background:#bfdbfe;border-color:#2563eb}.guide-tab-icon{font-size:12px}.guide-pane{scrollbar-width:thin;scrollbar-color:#93c5fd #dbeafe;background:radial-gradient(circle at 100% 0,#38bdf814,#0000 22%),linear-gradient(#f8fbff 0%,#edf4ff 100%);border:1px solid #3b82f6;border-radius:0 16px 16px;flex-direction:column;flex:1;gap:10px;min-height:0;padding:14px;display:flex;overflow:auto;box-shadow:inset 0 1px #ffffffe6,0 12px 30px #0f172a24}.guide-pane::-webkit-scrollbar{width:10px}.guide-pane::-webkit-scrollbar-track{background:#dbeafe;border-radius:999px}.guide-pane::-webkit-scrollbar-thumb{background:linear-gradient(#60a5fa 0%,#2563eb 100%);border:2px solid #dbeafe;border-radius:999px}.guide-callout-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.guide-callout{border-radius:12px;padding:12px;box-shadow:0 10px 24px #0f172a14}.guide-callout h3{margin:0 0 6px;font-size:13px}.guide-callout ul{color:#334155;margin:0;padding-left:18px;font-size:12px;line-height:1.5}.guide-callout li+li{margin-top:4px}.guide-callout-check{background:linear-gradient(#f0fdf4 0%,#dcfce7 100%);border:1px solid #86efac}.guide-callout-check h3{color:#166534}.guide-callout-warn{background:linear-gradient(#fff7ed 0%,#ffedd5 100%);border:1px solid #fdba74}.guide-callout-warn h3{color:#9a3412}.netcalc-modal{width:min(1120px,96vw);height:min(820px,94vh)}.netcalc-body{flex-direction:column;gap:10px;min-height:0;display:flex}.netcalc-form{flex:none;grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;gap:8px;display:grid}.netcalc-form label{color:#f8fafc;flex-direction:column;gap:4px;font-size:12px;font-weight:700;display:flex}.netcalc-form input{color:#0f172a;border:1px solid #cbd5e1;border-radius:6px;padding:6px 8px;font-size:12px}.netcalc-radio{color:#f8fafc}.netcalc-radio span{color:#cbd5e1;align-items:center;gap:4px;margin-right:8px;font-weight:500;display:inline-flex}.netcalc-output,.netcalc-detail{color:#0f172a;background:#f8fafc;border:1px solid #dbeafe;border-radius:8px;flex:none;width:100%;padding:10px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;line-height:1.35}.netcalc-output{resize:vertical}.netcalc-detail{white-space:pre-wrap;max-height:78px;margin:0;overflow:auto}.netcalc-error{color:#b91c1c;background:#fff1f2;border:1px solid #fecaca;border-radius:8px;padding:10px;font-size:12px;font-weight:600}.netcalc-table-wrap{flex:auto;min-height:180px;max-height:none;overflow:auto}.netcalc-table{table-layout:fixed;min-width:980px}.netcalc-modal .mini-table-wrap,.netcalc-modal .netcalc-table-wrap{scrollbar-width:thin;scrollbar-color:#93c5fd #dbeafe;background:#fff;border:1px solid #bfdbfe;border-radius:10px;box-shadow:inset 0 1px #ffffffe6}.netcalc-modal .mini-table-wrap::-webkit-scrollbar{width:10px;height:10px}.netcalc-modal .netcalc-table-wrap::-webkit-scrollbar{width:10px;height:10px}.netcalc-modal .mini-table-wrap::-webkit-scrollbar-track{background:#dbeafe;border-radius:999px}.netcalc-modal .netcalc-table-wrap::-webkit-scrollbar-track{background:#dbeafe;border-radius:999px}.netcalc-modal .mini-table-wrap::-webkit-scrollbar-thumb{background:linear-gradient(#60a5fa 0%,#2563eb 100%);border:2px solid #dbeafe;border-radius:999px}.netcalc-modal .netcalc-table-wrap::-webkit-scrollbar-thumb{background:linear-gradient(#60a5fa 0%,#2563eb 100%);border:2px solid #dbeafe;border-radius:999px}.netcalc-modal .mini-table,.netcalc-modal .netcalc-table{color:#1e3a5f;background:#fff}.netcalc-modal .mini-table th,.netcalc-modal .netcalc-table th{z-index:1;color:#1e3a8a;background:linear-gradient(#dbeafe 0%,#bfdbfe 100%);border-bottom:1px solid #93c5fd;position:sticky;top:0}.netcalc-modal .mini-table td,.netcalc-modal .netcalc-table td{color:#1f2937;vertical-align:top;overflow-wrap:anywhere;border-bottom:1px solid #dbeafe}.netcalc-table th:first-child,.netcalc-table td:first-child{width:18%}.netcalc-table th:nth-child(2),.netcalc-table td:nth-child(2),.netcalc-table th:nth-child(3),.netcalc-table td:nth-child(3),.netcalc-table th:nth-child(4),.netcalc-table td:nth-child(4),.netcalc-table th:nth-child(5),.netcalc-table td:nth-child(5){width:13%}.netcalc-table th:nth-child(6),.netcalc-table td:nth-child(6){width:19%}.netcalc-table th:nth-child(7),.netcalc-table td:nth-child(7){width:11%}.netcalc-row-name{color:#0f172a;width:100%;min-width:0;font:inherit;background:#ffffffb8;border:1px solid #0000;border-radius:6px;padding:5px 7px;font-weight:700}.netcalc-row-name:focus{background:#fff;border-color:#2563eb;outline:none;box-shadow:0 0 0 2px #2563eb29}.netcalc-cut{color:#0f172a;background:#f8fafc;border:1px solid #bfdbfe;border-radius:10px;flex:none;overflow:hidden}.netcalc-cut summary{cursor:pointer;color:#1e3a8a;background:linear-gradient(#dbeafe 0%,#eff6ff 100%);padding:10px 12px;font-size:13px;font-weight:800}.netcalc-cut p{color:#475569;margin:0;padding:10px 12px 0;font-size:12px;line-height:1.4}.netcalc-cut-box{background:#0f172a;border-radius:8px;max-height:170px;margin:10px 12px 12px;padding:10px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;line-height:1.55;overflow:auto}.netcalc-cut-row{grid-template-columns:minmax(120px,180px) minmax(620px,1fr);gap:10px;min-width:780px;display:grid}.netcalc-cut-label{color:#f8fafc;white-space:nowrap;text-overflow:ellipsis;font-weight:800;overflow:hidden}.netcalc-cut-bits{white-space:nowrap}.netcalc-cut-fixed{color:#f8fafc;font-weight:800}.netcalc-cut-dot,.netcalc-cut-host{color:#64748b}.netcalc-cut-subnet{color:#60a5fa;font-weight:800}.netcalc-cut-changed{color:#facc15;font-weight:900}.netcalc-cut-cut{color:#fff;font-weight:900}.netcalc-body>.row.buttons{flex:none;justify-content:flex-end;margin-top:0}.netcalc-modal .mini-table tbody tr:nth-child(odd) td,.netcalc-modal .netcalc-table tbody tr:nth-child(odd) td{background:#eff6ff}.netcalc-modal .mini-table tbody tr:nth-child(2n) td,.netcalc-modal .netcalc-table tbody tr:nth-child(2n) td{background:#fff}.netcalc-modal .mini-table tbody tr:hover td,.netcalc-modal .netcalc-table tbody tr:hover td{background:#dbeafe}.physical-tool-modal{width:min(1180px,96vw);height:min(840px,94vh)}.physical-tool-body{min-height:0}.physical-tool-layout,.fiber-tool-grid{flex:1;grid-template-columns:minmax(250px,320px) minmax(0,1fr);gap:12px;min-height:0;display:grid}.physical-tool-side,.physical-tool-main,.fiber-info,.fiber-canvas-panel{color:#0f172a;scrollbar-width:thin;scrollbar-color:#93c5fd #dbeafe;background:#f8fafc;border:1px solid #bfdbfe;border-radius:10px;min-height:0;padding:12px;overflow:auto}.physical-tool-side{flex-direction:column;gap:10px;display:flex}.physical-tool-main{padding:0}.crimp-result{color:#1e3a8a;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;padding:10px;font-size:12px;font-weight:700;line-height:1.4}.crimp-result.warn{color:#92400e;background:#fffbeb;border-color:#fbbf24}.crimp-result.checked{color:#991b1b;background:#fff1f2;border-color:#fecaca}.crimp-result.checked.ok{color:#166534;background:#f0fdf4;border-color:#86efac}.crimp-actions{grid-template-columns:1fr;gap:6px;margin:0;display:grid}.crimp-reference{min-height:0;overflow:auto}.crimp-reference h3,.crimp-workbench h3,.crimp-palette-card h3,.fiber-info h3{color:#1e3a8a;margin:0 0 8px;font-size:13px}.crimp-workbench{flex-direction:column;gap:12px;min-height:100%;padding:12px;display:flex}.crimp-workbench-head{background:#eff6ff;border:1px solid #dbeafe;border-radius:8px;justify-content:space-between;align-items:flex-start;gap:10px;padding:10px;display:flex}.crimp-workbench-head p{color:#475569;margin:0;font-size:12px}.crimp-workbench-head span,.crimp-plug-head span{color:#1d4ed8;white-space:nowrap;background:#fff;border:1px solid #bfdbfe;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:800}.crimp-plug{background:#fff;border:1px solid #cbd5e1;border-radius:10px;padding:10px}.crimp-plug-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.crimp-slot-grid{grid-template-columns:repeat(8,minmax(64px,1fr));gap:5px;display:grid}.crimp-slot{color:#334155;cursor:pointer;background:#f8fafc;border:1px dashed #94a3b8;border-radius:8px;flex-direction:column;justify-content:space-between;align-items:center;min-height:86px;padding:5px;display:flex}.crimp-slot.correct{background:#dcfce7;border-color:#22c55e}.crimp-slot.wrong{background:#fee2e2;border-color:#ef4444}.crimp-slot-number,.crimp-slot-pin,.crimp-slot-empty{font-size:10px;font-weight:800}.crimp-slot-empty{color:#64748b;margin:auto 0}.crimp-slot-wire-wrap{justify-content:center;align-items:center;display:inline-flex;position:relative}.crimp-slot-remove{color:#b91c1c;cursor:pointer;background:#fff;border:1px solid #fecaca;border-radius:999px;width:20px;height:20px;font-size:12px;font-weight:900;line-height:1;position:absolute;top:-8px;right:-12px;box-shadow:0 2px 6px #0f172a29}.crimp-slot-remove:hover{background:#fee2e2;border-color:#ef4444}.crimp-palettes{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.crimp-palette-card{background:#eff6ff;border:1px solid #dbeafe;border-radius:10px;padding:10px}.crimp-palette{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;display:grid}.crimp-wire{color:#111827;cursor:grab;border:1px solid #0f172a38;border-radius:999px;min-height:34px;font-size:11px;font-weight:900;box-shadow:inset 0 -2px #0f172a1f}.crimp-wire.compact{cursor:pointer;border-radius:999px;width:22px;min-height:40px}.crimp-wire.disabled{opacity:.32;cursor:not-allowed}.crimp-wire.selected{outline:3px solid #2563eb61}.crimp-wire.wo{background:repeating-linear-gradient(45deg,#fff 0 7px,#fb923c 7px 14px)}.crimp-wire.o{background:#fb923c}.crimp-wire.wg{background:repeating-linear-gradient(45deg,#fff 0 7px,#22c55e 7px 14px)}.crimp-wire.g{background:#22c55e}.crimp-wire.wb{background:repeating-linear-gradient(45deg,#fff 0 7px,#3b82f6 7px 14px)}.crimp-wire.b{color:#fff;background:#3b82f6}.crimp-wire.wbr{background:repeating-linear-gradient(45deg,#fff 0 7px,#92400e 7px 14px)}.crimp-wire.br{color:#fff;background:#92400e}.fiber-controls{flex:none;grid-template-columns:minmax(220px,2fr) repeat(2,minmax(120px,1fr)) minmax(180px,1.2fr);align-items:end;gap:8px;display:grid}.fiber-controls label{color:#f8fafc;flex-direction:column;gap:4px;font-size:12px;font-weight:800;display:flex}.fiber-toggle{align-items:center;padding-bottom:7px;color:#cbd5e1!important;flex-direction:row!important;font-weight:700!important}.fiber-canvas-panel canvas{aspect-ratio:1100/540;touch-action:none;background:#f8fafc;border:1px solid #cbd5e1;border-radius:10px;width:100%;height:auto;display:block}.fiber-info{flex-direction:column;gap:10px;display:flex}.fiber-info h3{color:#166534;background:#dcfce7;border-radius:8px;padding:9px;line-height:1.35}.fiber-info.warn h3{color:#92400e;background:#fffbeb}.fiber-info.bad h3{color:#991b1b;background:#fee2e2}.fiber-info dl{gap:5px;margin:0;display:grid}.fiber-info dl div{border-bottom:1px solid #e2e8f0;grid-template-columns:1fr 1fr;gap:8px;padding-bottom:5px;display:grid}.fiber-info dt{color:#475569;font-size:11px;font-weight:800}.fiber-info dd{color:#0f172a;margin:0;font-size:12px;font-weight:800}.fiber-formula{color:#1e3a8a;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;margin-top:auto;padding:10px;font-size:12px;line-height:1.45}.fiber-formula-title{color:#1e3a8a;text-transform:uppercase;margin-bottom:7px;font-size:11px;font-weight:900}.fiber-equation{color:#0f172a;border-top:1px solid #93c5fdb8;grid-template-columns:minmax(72px,auto) 16px minmax(0,1fr);align-items:baseline;gap:6px;padding:5px 0;font-family:Georgia,Times New Roman,serif;font-size:15px;display:grid}.fiber-equation:first-of-type{border-top:none}.fiber-equation span:first-child,.fiber-equation span:nth-child(2){color:#1d4ed8;font-weight:700}.fiber-equation sub,.fiber-equation sup{line-height:0}.fiber-radical{align-items:flex-start;gap:2px;display:inline-flex}.fiber-radical-symbol{font-size:25px;line-height:.9;transform:translateY(1px)}.fiber-radical-body{border-top:2px solid;min-height:1.2em;padding:2px 2px 0 4px;display:inline-block}.fiber-legend{color:#475569;flex-wrap:wrap;gap:10px;margin-top:8px;font-size:12px;font-weight:700;display:flex}.fiber-legend span{align-items:center;gap:5px;display:inline-flex}.fiber-legend i{border-radius:999px;width:11px;height:11px;display:inline-block}.ray-main{background:#dc2626}.ray-mode{background:#f97316}.ray-bounce{background:#16a34a}.ray-lost{background:#2563eb}.guide-intro{color:#1e3a8a;background:linear-gradient(#eff6ff 0%,#dbeafe 100%);border:1px solid #93c5fd;border-radius:12px;padding:11px 12px;font-size:12px;font-weight:600;line-height:1.5;box-shadow:0 10px 22px #3b82f614}.guide-section{background:linear-gradient(#fff 0%,#f8fafc 100%);border:1px solid #dbeafe;border-radius:12px;padding:12px;box-shadow:0 10px 24px #0f172a0f}.guide-section h3{color:#1e3a8a;margin:0 0 6px;font-size:13px}.guide-section ul{color:#334155;margin:0;padding-left:18px;font-size:12px;line-height:1.55}.guide-section li+li{margin-top:4px}@media (width<=760px){.ns-splash-shell{grid-template-columns:1fr;gap:20px;width:min(96vw,560px);padding:28px 0}.ns-splash-visual{min-height:auto}.ns-splash-copy{padding-bottom:28px}.guide-tab{padding:6px 8px 5px;font-size:11px}.guide-callout-grid{grid-template-columns:1fr}.guide-intro,.guide-section ul,.guide-section h3{font-size:11px}}.ns-footer{color:#93c5fd;letter-spacing:.02em;text-align:center;white-space:normal;background:#0f172a;border-top:1px solid #1e3a5f;padding:6px 10px;font-size:10.5px;font-weight:600;line-height:1.35}.trace-panel{border-top:1px solid #e2e8f0;gap:10px;margin-top:8px}.trace-title{color:#1f2937;font-size:14px;font-weight:800}.trace-summary{margin-top:2px}.trace-controls{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.trace-step-counter{color:#6b7280;margin-left:auto;font-size:11px;font-weight:700}.trace-speed-row{grid-template-columns:116px minmax(0,1fr) 46px;align-items:center;gap:10px;display:grid}.trace-speed-label{color:#475569;font-size:11px;font-weight:700}.trace-speed-slider{accent-color:#2563eb;width:100%}.trace-speed-value{color:#1e3a8a;text-align:right;font-size:11px;font-weight:800}.trace-filter-tools{flex-direction:column;gap:6px;display:flex}.trace-filter-toggle{align-self:flex-start}.trace-filter-summary{color:#475569;font-size:11px;line-height:1.4}.trace-filter-summary-label{font-weight:700}.trace-filter-summary-list{color:#1f2937;font-style:italic;font-weight:700}.trace-filter-row{background:#f7f2e8;border:1px solid #ddd2c2;border-radius:12px;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;display:flex}.trace-filter-item{color:#374151;background:#fcfaf6;border:1px solid #ddd2c2;border-radius:999px;align-items:center;gap:6px;padding:4px 9px;font-size:11px;font-weight:600;display:inline-flex}.trace-filter-item.empty{opacity:.58}.trace-filter-item input{margin:0}.trace-filter-count{color:#6f5d44;background:#ece5d8;border-radius:999px;justify-content:center;align-items:center;min-width:16px;height:16px;font-size:10px;font-weight:700;display:inline-flex}.trace-step-list{flex-direction:column;gap:6px;max-height:220px;padding-right:2px;display:flex;overflow:auto}.trace-step-item{text-align:left;cursor:pointer;color:#374151;background:#fcfaf6;border:1px solid #ddd2c2;border-radius:10px;align-items:center;gap:8px;padding:7px 9px;display:flex}.trace-step-item:hover{background:#f4eee3}.trace-step-item.active{background:#f3eadb;border-color:#b89c71}.trace-step-index{color:#f9f6ef;background:#2c3544;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;font-size:10px;font-weight:700;display:inline-flex}.trace-step-text{font-size:11px;line-height:1.35}.pt-panel{color:#1f2937;background:#f5f1e8;border-top:1px solid #d6cec0;flex-direction:column;font-size:12px;display:flex}.pt-dock{color:#dbe4ef;background:linear-gradient(#202938,#18202d);border-top:1px solid #303848;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;display:flex}.pt-dock-main{align-items:center;gap:8px;min-width:0;display:flex}.pt-dock-title{color:#f3e7c9;white-space:nowrap;font-size:12px;font-weight:700}.pt-dock-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.pt-modal-backdrop{z-index:90;background:#020617ad;justify-content:center;align-items:center;padding:18px;display:flex;position:fixed;inset:0}.pt-modal{border:1px solid #d5cab8;border-radius:16px;flex-direction:column;width:min(1180px,96vw);height:min(84vh,900px);display:flex;overflow:hidden;box-shadow:0 30px 70px #0f172a57}.pt-panel-header{background:linear-gradient(#fcfaf6,#f2ece2);border-bottom:1px solid #ddd2c2;flex-shrink:0;justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.pt-panel-title{color:#2a3441;align-items:center;gap:8px;font-size:13px;font-weight:700;display:flex}.pt-panel-icon{font-size:15px}.pt-summary{color:#6b7280;margin-left:8px;font-size:11px;font-weight:400}.pt-close{color:#7b8190;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:16px;line-height:1}.pt-close:hover{color:#b45309;background:#b453091a}.pt-scroll{flex:1;padding:10px 12px 12px;overflow:hidden auto}.pt-legend{color:#7b7280;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;font-size:10px;display:flex}.pt-leg-item{align-items:center;gap:4px;display:flex}.pt-leg-item:before{content:"●";font-size:12px}.eth-dot:before{color:#2563eb}.ip-dot:before{color:#7c3aed}.icmp-dot:before{color:#15803d}.tcp-dot:before{color:#b45309}.udp-dot:before{color:#be185d}.pt-leg-sep{color:#c4b8a7}.pt-stepper{background:#fcfaf6;border:1px solid #d9cebd;border-radius:14px;flex-direction:column;gap:8px;margin-bottom:10px;padding:10px;display:flex}.pt-stepper-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.pt-stepper-title{color:#2a3441;font-size:12px;font-weight:700}.pt-observation-badge{color:#73583a;background:#f3eadb;border:1px solid #d8c9ae;border-radius:999px;align-items:center;width:fit-content;padding:4px 10px;font-size:10px;font-weight:700;display:inline-flex}.pt-stepper-status{color:#8b6b45;font-size:11px}.pt-filter-bar{flex-wrap:wrap;gap:5px;display:flex}.pt-filter-chip{color:#94a3b8;cursor:pointer;background:#111827;border:1px solid #334155;border-radius:999px;padding:3px 8px;font-size:10px;font-weight:700}.pt-filter-chip.active{color:#f8fafc;border-color:currentColor}.pt-filter-chip.icmp.active{color:#86efac;background:#14532d}.pt-filter-chip.tcp.active{color:#fde68a;background:#5b3a06}.pt-filter-chip.udp.active{color:#fecdd3;background:#5a1232}.pt-filter-chip.http.active{color:#ccfbf1;background:#0f766e}.pt-filter-chip.arp.active{color:#67e8f9;background:#164e63}.pt-filter-chip.nat.active{color:#d8b4fe;background:#3f1d6b}.pt-filter-chip.acl.active{color:#fdba74;background:#7c2d12}.pt-filter-chip.routing.active{color:#bfdbfe;background:#1d4ed8}.pt-filter-chip.l2.active{color:#a5f3fc;background:#155e75}.pt-filter-chip.delivery.active{color:#bbf7d0;background:#166534}.pt-filter-chip.packet.active{color:#e2e8f0;background:#334155}.pt-stepper-controls{flex-wrap:wrap;gap:6px;display:flex}.pt-stepper-controls .small-btn:disabled{opacity:.45;cursor:default}.pt-step-card{background:#fffdf9;border:1px solid #ddd2c2;border-radius:14px;overflow:hidden}.pt-step-card-body{flex-direction:column;gap:8px;padding:8px;display:flex}.pt-step-hero{grid-template-columns:minmax(0,1.4fr) minmax(260px,1fr);align-items:start;gap:10px;display:grid}.pt-step-message{color:#253142;font-size:12px;line-height:1.45}.pt-step-tags{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.pt-mini-badge{color:#5b6472;background:#f7f2e8;border:1px solid #d7cdbf;border-radius:999px;align-items:center;padding:2px 7px;font-size:10px;font-weight:700;display:inline-flex}.pt-mini-badge.icmp{color:#166534;border-color:#9fceb0}.pt-mini-badge.tcp{color:#9a3412;border-color:#e3c19e}.pt-mini-badge.udp{color:#9d174d;border-color:#e9b8ca}.pt-mini-badge.http{color:#0f766e;border-color:#99f6e4}.pt-mini-badge.arp{color:#155e75;border-color:#a8d2db}.pt-mini-badge.nat{color:#6d28d9;border-color:#cfbef1}.pt-mini-badge.acl{color:#b45309;border-color:#e8c59f}.pt-mini-badge.routing{color:#1d4ed8;border-color:#bfd0f5}.pt-mini-badge.l2{color:#0369a1;border-color:#b4d6e8}.pt-mini-badge.packet{color:#4b5563;border-color:#d4cec4}.pt-step-route{color:#4b5563;background:#f9f5ee;border:1px solid #e4dbcf;border-radius:12px;grid-template-columns:1fr;gap:5px;padding:8px;font-size:11px;display:grid}.pt-stack{grid-template-columns:220px minmax(0,1fr);align-items:start;gap:10px;display:grid}.pt-stack-model-toggle{grid-column:1/-1;gap:6px;display:inline-flex}.pt-model-btn{color:#6b7280;cursor:pointer;background:#f6f0e5;border:1px solid #d9cebf;border-radius:999px;padding:4px 10px;font-size:10px;font-weight:700}.pt-model-btn.active{color:#f9f6ef;background:#2c3544;border-color:#2c3544}.pt-stack-rail{flex-direction:column;gap:6px;display:flex}.pt-stack-layer{color:#4b5563;text-align:left;cursor:pointer;background:#faf6ef;border:1px solid #ddd2c2;border-radius:12px;flex-direction:column;gap:2px;padding:8px 10px;display:flex}.pt-stack-layer.active{border-color:#b89c71;box-shadow:inset 0 0 0 1px #b89c712e}.pt-stack-layer.eth.active{background:#e7f0f4}.pt-stack-layer.ip.active{background:#eee8f8}.pt-stack-layer.icmp.active{background:#e6f2e7}.pt-stack-layer.tcp.active{background:#f5ebdb}.pt-stack-layer.udp.active{background:#f7e7ee}.pt-stack-layer.physical.active{background:#f3e3ea}.pt-stack-layer.session.active{background:#efe7f6}.pt-stack-layer.presentation.active{background:#eef4df}.pt-stack-layer.application.active{background:#e7edf5}.pt-stack-label{text-transform:uppercase;letter-spacing:.06em;color:#8a8378;font-size:10px}.pt-stack-title{color:#26313d;font-size:12px;font-weight:700}.pt-stack-subtitle{color:#7b7280;text-overflow:ellipsis;font-size:10px;overflow:hidden}.pt-stack-detail{background:#fffdf9;border:1px solid #ddd2c2;border-radius:12px;overflow:hidden}.pt-concept-note{color:#4b5563;padding:12px;font-size:11px;line-height:1.5}.pt-classic{background:#fcfaf6;border:1px solid #ddd2c2;border-radius:12px;margin-top:10px;overflow:hidden}.pt-classic-summary{cursor:pointer;color:#6f5d44;background:#f2ece2;padding:8px 10px;font-size:11px;font-weight:700;list-style:none}.pt-classic-summary::-webkit-details-marker{display:none}.pt-classic[open] .pt-classic-summary{border-bottom:1px solid #1e3a5f}.pt-classic .pt-dir-header,.pt-classic .pt-hop-card{margin-left:10px;margin-right:10px}.pt-classic .pt-dir-header:first-of-type{margin-top:10px}.pt-classic .pt-hop-card:last-child{margin-bottom:10px}.pt-hop-card{background:#111827;border:1px solid #1e3a5f;border-radius:6px;margin-bottom:6px;overflow:hidden}.pt-hop-header{cursor:pointer;text-align:left;color:#e2e8f0;background:#1e293b;border:none;align-items:center;gap:10px;width:100%;padding:7px 10px;font-size:12px;display:flex}.pt-hop-header:hover{background:#243045}.pt-hop-index{color:#fff;white-space:nowrap;background:#0ea5e9;border-radius:10px;flex-shrink:0;padding:1px 6px;font-size:10px;font-weight:700}.pt-hop-path{color:#cbd5e1;flex-wrap:wrap;flex:1;align-items:center;gap:5px;font-size:11.5px;display:flex}.pt-arrow{color:#f59e0b;font-weight:700}.pt-iface{color:#94a3b8;background:#334155;border-radius:3px;padding:0 4px;font-family:monospace;font-size:9.5px}.pt-badge{color:#93c5fd;letter-spacing:.03em;background:#0f172a;border:1px solid #334155;border-radius:10px;padding:0 5px;font-size:9px;font-weight:700}.pt-toggle{color:#475569;flex-shrink:0;margin-left:auto;font-size:10px}.pt-hop-body{padding:4px 0 6px}.pt-layer{border:1px solid #e2d8ca;border-radius:10px;margin:4px 10px;overflow:hidden}.pt-layer-header{cursor:pointer;text-align:left;border:none;justify-content:space-between;align-items:center;width:100%;padding:7px 10px;font-size:11px;font-weight:700;display:flex}.pt-layer-header:hover{filter:brightness(.98)}.pt-layer-header.eth{color:#155e75;background:#e8f1f5}.pt-layer-header.ip{color:#6d28d9;background:#efe9f8}.pt-layer-header.icmp{color:#166534;background:#e8f2e8}.pt-layer-header.tcp{color:#9a3412;background:#f5ede2}.pt-layer-header.udp{color:#9d174d;background:#f7e9ef}.pt-layer-header.physical{color:#9f1239;background:#f3e6ed}.pt-layer-header.session{color:#6b21a8;background:#f0e9f7}.pt-layer-header.presentation{color:#4d7c0f;background:#eef3e2}.pt-layer-header.application{color:#1d4ed8;background:#e7eef6}.pt-layer-sub{opacity:.75;font-size:9px;font-weight:400}.pt-table{border-collapse:collapse;background:#fffdf9;width:100%;font-size:11px}.pt-table tr:nth-child(odd){background:#faf7f1}.pt-table tr:hover{background:#f2ece2}.pt-field{color:#7b7280;white-space:nowrap;width:130px;padding:3px 10px;font-weight:600}.pt-val{color:#243041;padding:3px 8px;font-family:Courier New,monospace;font-size:11px}.pt-val.mono{font-family:Courier New,monospace}.pt-hint{color:#8a8378;padding:3px 8px;font-size:10px;font-style:italic}.pt-dir-header{letter-spacing:.03em;border-radius:10px;margin:8px 0 4px;padding:5px 10px;font-size:11px;font-weight:700}.pt-dir-header.req{color:#30527a;background:#e9eef6;border-left:3px solid #6f8db2}.pt-dir-header.rep{color:#366048;background:#edf4ec;border-left:3px solid #7aa17e}@media (width<=1100px){.ns-toolbar{flex-wrap:wrap;align-items:flex-start;gap:6px;padding:8px}.ns-brand{width:100%;margin-right:0}.spacer{display:none}.ns-toolbar-note,.ns-toolbar-lock{width:100%;margin-left:0}.input-toolbar{width:100%;min-width:0}.toolbar-group{min-width:0}.toolbar-group-row{flex-wrap:wrap}.ns-btn{min-height:34px}.ns-main{flex-direction:column}.ns-canvas-wrap{min-height:36vh}.ns-side{border-top:1px solid #cbd5e1;border-left:none;width:100%;max-width:100%;max-height:40vh}.ns-console{flex-direction:column;max-height:38vh}.console-controls{width:100%;max-width:100%}.row.buttons{flex-wrap:wrap;gap:6px}.console-grid{grid-template-columns:1fr}.row.buttons .small-btn{flex:120px}.pt-panel{min-height:0}.pt-panel-title{flex-wrap:wrap;gap:4px 8px}.pt-summary{width:100%;margin-left:0}.pt-dock{flex-wrap:wrap}.pt-dock-actions{justify-content:flex-end;width:100%}.pt-step-hero,.pt-stack{grid-template-columns:1fr}.pt-stack-rail{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.guide-modal{width:100%;max-height:94vh}.netcalc-form{grid-template-columns:repeat(2,minmax(0,1fr))}.physical-tool-layout,.fiber-tool-grid{grid-template-columns:1fr}.fiber-controls{grid-template-columns:repeat(2,minmax(0,1fr))}.menu-submenu-panel{min-width:220px;max-width:min(88vw,360px);top:calc(100% + 4px);left:0}}@media (width<=820px){.ns-toolbar{flex-wrap:wrap;align-items:center}.ns-toolbar:before,.ns-toolbar-desktop{display:none}.ns-toolbar-mobile-actions{display:flex}.ns-mobile-menu{display:block}.ns-brand{background:url(/netstudio/favicon.svg) 0/28px 28px no-repeat;max-width:calc(100% - 150px);padding-left:36px;position:relative}}@media (width<=700px){.ns-app{height:auto;min-height:100dvh}.ns-toolbar{gap:5px;padding:7px}.ns-brand{background-size:24px 24px;max-width:calc(100% - 118px);padding-left:32px;font-size:12px}.toolbar-group-label{font-size:8.5px}.ns-btn{padding:5px 7px;font-size:10.5px}.btn-label{font-size:10.5px}.menu-dropdown{min-width:160px;max-width:min(92vw,320px)}.ns-mobile-menu-grid{grid-template-columns:1fr}.ns-mobile-section-btn{padding:9px 10px}.ns-vp-btn{width:32px;height:32px}.ns-canvas-wrap{min-height:42vh}.ns-side{max-height:45vh}.netcalc-form,.fiber-controls,.crimp-palettes{grid-template-columns:1fr}.crimp-slot-grid{grid-template-columns:repeat(4,minmax(58px,1fr))}.panel{padding:10px}.inspector-layout{grid-template-columns:1fr}.panel-tabs.vertical{border-bottom:1px solid #e2e8f0;border-right:none;flex-flow:wrap;padding-bottom:4px;padding-right:0}.panel-tabs.vertical .tab-btn{writing-mode:horizontal-tb;text-orientation:initial;text-align:center;width:auto;min-height:auto;box-shadow:none;border-right:1px solid #cbd5e1;border-radius:999px;margin-right:0;transform:none}.console-log{max-height:128px}.batch-table-wrap{max-height:112px}.pt-panel{min-height:0}.pt-modal{width:100%;height:92vh}.pt-stack-rail{grid-template-columns:1fr}.pt-hop-header{gap:6px;padding:6px 8px}.pt-hop-path{font-size:10.5px}.pt-field{width:110px;padding:3px 7px}.pt-val,.pt-hint{padding:3px 6px}.ns-footer{padding:5px 8px;font-size:9.5px}}
