@@ -4956,3 +4956,69 @@ body.learn-drawer-open #task-log-footer { right: var(--learn-drawer-w) !importan
49564956 grid-column : 1 / -1 !important ;
49574957 }
49584958}
4959+
4960+ /* ═══════════════════════════════════════════════════════════════
4961+ Network Map — observed, read-only cluster network view.
4962+ Theme-driven: every colour comes from a CSS variable so it tracks
4963+ the active theme (dark / light / trek). No hardcoded hex.
4964+ ═══════════════════════════════════════════════════════════════ */
4965+ .nm-legend { display : flex; flex-wrap : wrap; gap : 16px ; align-items : center; margin-bottom : 14px ;
4966+ padding : 10px 14px ; background : var (--bg-tertiary ); border : 1px solid var (--border );
4967+ border-radius : var (--radius-sm ); font-size : 11px ; color : var (--text-secondary ); }
4968+ .nm-legend-item { display : inline-flex; align-items : center; gap : 6px ; }
4969+ .nm-legend .dot { width : 9px ; height : 9px ; border-radius : 50% ; display : inline-block; }
4970+
4971+ .nm-grid { display : grid; grid-template-columns : repeat (auto-fill, minmax (460px , 1fr )); gap : 16px ; align-items : start; }
4972+ .nm-node { background : var (--bg-card ); border : 1px solid var (--border ); border-radius : var (--radius ); padding : 16px 18px ; }
4973+ .nm-node-head { display : flex; align-items : center; gap : 9px ; margin-bottom : 12px ; }
4974+ .nm-node-head .dot { width : 10px ; height : 10px ; border-radius : 50% ; flex-shrink : 0 ; }
4975+ .nm-node-name { font-weight : 700 ; font-size : 15px ; color : var (--text-primary ); overflow : hidden; text-overflow : ellipsis; white-space : nowrap; }
4976+ .nm-tag { font-size : 10px ; padding : 1px 6px ; border-radius : 4px ; background : var (--bg-tertiary ); color : var (--text-muted ); flex-shrink : 0 ; }
4977+ .nm-wn-chip { margin-left : auto; font-size : 11px ; padding : 2px 8px ; border-radius : 999px ; background : var (--bg-tertiary ); color : var (--accent ); border : 1px solid var (--accent ); white-space : nowrap; }
4978+
4979+ /* Internet-path chain: 🌐 Internet ▸ gateway ▸ WAN nic ▸ ● node */
4980+ .nm-edge { display : flex; flex-wrap : wrap; align-items : center; gap : 6px ; margin-bottom : 10px ; }
4981+ .nm-edge .arrow { color : var (--text-muted ); font-size : 13px ; line-height : 1 ; }
4982+ .nm-pill { display : inline-flex; align-items : center; gap : 6px ; padding : 4px 10px ; border-radius : var (--radius-sm );
4983+ border : 1px solid var (--border ); background : var (--bg-tertiary ); font-size : 12px ; color : var (--text-primary ); }
4984+ .nm-pill .wan { border-color : var (--warning ); }
4985+ .nm-pill .host { background : var (--bg-secondary ); font-weight : 600 ; }
4986+ .nm-pill .sub { color : var (--text-secondary ); }
4987+
4988+ /* Tree: a spine down the node's fabric with a branch to each bridge / overlay / interface group */
4989+ .nm-tree { position : relative; margin-left : 5px ; padding-left : 20px ; }
4990+ .nm-tree ::before { content : "" ; position : absolute; left : 0 ; top : 3px ; bottom : 16px ; width : 2px ; background : var (--border ); border-radius : 2px ; }
4991+ .nm-branch { position : relative; margin-bottom : 12px ; }
4992+ .nm-branch : last-child { margin-bottom : 0 ; }
4993+ .nm-branch ::before { content : "" ; position : absolute; left : -20px ; top : 16px ; width : 18px ; height : 2px ; background : var (--border ); border-radius : 2px ; }
4994+
4995+ .nm-zone { border : 1px solid var (--border ); border-left : 3px solid var (--zaccent , var (--info ));
4996+ border-radius : var (--radius-sm ); background : var (--bg-tertiary ); padding : 10px 12px ; }
4997+ .nm-zone .lan { --zaccent : var (--info ); }
4998+ .nm-zone .overlay { --zaccent : var (--accent ); }
4999+ .nm-zone-head { display : flex; align-items : center; gap : 8px ; font-weight : 700 ; font-size : 13px ; color : var (--text-primary ); }
5000+ .nm-zone-head .ip { margin-left : auto; font-size : 11px ; color : var (--text-secondary ); font-variant-numeric : tabular-nums; font-weight : 400 ; }
5001+ .nm-zone-body { display : flex; flex-direction : column; gap : 5px ; margin-top : 8px ; }
5002+ .nm-zone-empty { font-size : 12px ; color : var (--text-muted ); margin-top : 6px ; }
5003+
5004+ .nm-label { font-size : 10px ; font-weight : 700 ; text-transform : uppercase; letter-spacing : 0.5px ; color : var (--text-muted ); margin-bottom : 6px ; }
5005+
5006+ .nm-dev { display : flex; align-items : center; gap : 7px ; padding : 5px 9px ; border-radius : var (--radius-sm );
5007+ background : var (--bg-card ); border : 1px solid var (--border ); font-size : 12px ; }
5008+ .nm-dev .name { font-weight : 600 ; color : var (--text-primary ); overflow : hidden; text-overflow : ellipsis; white-space : nowrap; }
5009+ .nm-dev .ip { margin-left : auto; flex-shrink : 0 ; color : var (--text-secondary ); font-variant-numeric : tabular-nums; }
5010+ .nm-dev .ip .none { color : var (--text-muted ); }
5011+ .nm-managed { color : var (--success ); font-size : 11px ; flex-shrink : 0 ; }
5012+
5013+ .nm-iface { display : flex; align-items : center; gap : 7px ; padding : 5px 9px ; border-radius : var (--radius-sm );
5014+ background : var (--bg-card ); border : 1px solid var (--border ); border-left : 3px solid var (--raccent , var (--info )); font-size : 12px ; }
5015+ .nm-iface .name { font-weight : 600 ; color : var (--text-primary ); }
5016+ .nm-iface .role { font-size : 10px ; text-transform : uppercase; letter-spacing : 0.4px ; color : var (--raccent , var (--info )); }
5017+ .nm-iface .addr { margin-left : auto; color : var (--text-secondary ); font-variant-numeric : tabular-nums; }
5018+ .nm-iface .wan { --raccent : var (--warning ); }
5019+ .nm-iface .lan { --raccent : var (--info ); }
5020+ .nm-iface .wolfnet { --raccent : var (--accent ); }
5021+ .nm-iface .management { --raccent : var (--info ); }
5022+ .nm-iface .unused { --raccent : var (--text-muted ); }
5023+ .nm-down { color : var (--danger ); font-size : 10px ; }
5024+ .nm-stub { padding : 18px ; text-align : center; color : var (--text-muted ); font-size : 13px ; background : var (--bg-tertiary ); border-radius : var (--radius-sm ); }
0 commit comments