:root{color:#eefdf8;background:#061411;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 78% 12%,rgba(44,255,190,.12),transparent 31%),linear-gradient(135deg,#061411,#0a211d 58%,#061411)}.dashboard{width:min(1600px,100%);margin:0 auto;padding:20px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:16px}.topbar-right{display:flex;align-items:center;gap:16px}.eyebrow{margin:0 0 4px;color:#77f7cf;font-size:.72rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase}h1,h2,h3{margin:0}h1{font-size:clamp(1.5rem,2.8vw,2.6rem);line-height:1.05}h2{font-size:1rem}h3{font-size:.78rem;color:#94d8c7;font-weight:800;text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px}.topbar-stat{text-align:center;padding:0 10px}.topbar-stat span{display:block;color:#94d8c7;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.topbar-stat strong{display:block;font-size:1.4rem;line-height:1.2;color:#39f6ba;font-variant-numeric:tabular-nums}.live-pill{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid rgba(119,247,207,.28);border-radius:999px;background:#051a16cc;color:#c8fff0;font-size:.82rem;font-weight:700;white-space:nowrap}.live-pill span{width:8px;height:8px;border-radius:50%;background:#35ffb9;box-shadow:0 0 14px #35ffb9;animation:blink 1.2s ease-in-out infinite}.hero-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}.map-panel,.side-panel,.feed-panel{border:1px solid rgba(154,255,222,.14);border-radius:8px;background:#031210c7;box-shadow:0 20px 70px #00000040}.map-panel{min-height:560px;overflow:hidden}.map-toolbar,.section-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 18px}.map-toolbar small,.section-head span,.stat-card small{display:block;color:#8bbab0;font-size:.8rem}.map-legend{display:flex;align-items:center;gap:12px;color:#b8efe0;font-size:.78rem}.view-toggle{display:inline-flex;gap:3px;padding:3px;border:1px solid rgba(154,255,222,.16);border-radius:7px;background:#ffffff0a}.view-toggle button{border:0;border-radius:5px;padding:7px 10px;background:transparent;color:#94d8c7;cursor:pointer;font:inherit;font-size:.8rem;font-weight:800}.view-toggle button.active{background:#39f6ba2e;color:#dffdf5}.zoom-reset-btn{border:1px solid rgba(154,255,222,.22);border-radius:6px;padding:6px 9px;background:transparent;color:#77f7cf;cursor:pointer;font-size:1rem;line-height:1;transition:background .15s,color .15s}.zoom-reset-btn:hover{background:#39f6ba2e;color:#dffdf5}.legend-dot{display:inline-block;width:8px;height:8px;margin-right:5px;border-radius:50%}.legend-dot.high{background:#ff476f}.legend-dot.medium{background:#ffbe4a}.legend-dot.low{background:#39f6ba}.world-map{display:block;width:100%;height:min(60vw,500px);min-height:420px;background:#08221d;cursor:grab;touch-action:none}.world-map:active{cursor:grabbing}.map-ocean{fill:#08221d}.map-graticule{fill:none;stroke:#9affde1c;stroke-width:.6}.country{fill:#437a6c8a;stroke:#bfffeb4d;stroke-width:.6}.traffic-route{fill:none;stroke-dasharray:10 14;stroke-linecap:round;stroke-width:2.6;animation:routeDash 1.4s linear infinite;filter:url(#routeGlow)}.route.high .traffic-route{stroke:#ff476f}.route.high .route-packet{fill:#ff476f}.route.medium .traffic-route{stroke:#ffbe4a}.route.medium .route-packet{fill:#ffbe4a}.route.low .traffic-route{stroke:#39f6ba}.route.low .route-packet{fill:#39f6ba}.route-packet{stroke:#ffffffd1;stroke-width:1.5;filter:url(#routeGlow)}.map-node .node-pulse{fill:#39f6ba3d;animation:pulse 2s ease-out infinite}.map-node .node-dot{fill:#39f6ba;stroke:#dffdf5;stroke-width:2;filter:url(#routeGlow)}.map-node.high .node-pulse,.map-node.high .node-dot{fill:#ff476f}.map-node.medium .node-pulse,.map-node.medium .node-dot{fill:#ffbe4a}.map-node.local .node-dot{r:7;fill:#dffdf5}.map-node text{fill:#dffdf5;font-size:11px;font-weight:800;paint-order:stroke;stroke:#031210e0;stroke-width:4}.internal-link{stroke:#97ffde7a;stroke-linecap:round;stroke-dasharray:7 9;animation:routeDash 1.3s linear infinite}.internal-node circle{fill:#39f6ba;stroke:#dffdf5;stroke-width:2;filter:url(#routeGlow)}.internal-node.host circle{fill:#dffdf5}.internal-node.service circle{fill:#ffbe4a}.internal-node.container circle,.internal-node.virtual circle{fill:#7ad8ff}.internal-node.lan-peer circle,.internal-node.lan-internal circle{fill:#39f6ba}.internal-node.external-peer circle{fill:#ff476f}.internal-node text{fill:#dffdf5;font-size:11px;font-weight:800;paint-order:stroke;stroke:#031210e6;stroke-width:4}.side-panel{display:flex;flex-direction:column;gap:12px;padding:12px;max-height:616px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(57,246,186,.3) transparent}.stat-card,.threat-meter{padding:14px;border-radius:7px;background:#ffffff0a}.stat-card.primary{background:linear-gradient(135deg,#2affb833,#0b3f3480)}.stat-card span,.meter-head span{color:#94d8c7;font-size:.72rem;font-weight:800;text-transform:uppercase}.stat-card strong{display:block;margin:6px 0 3px;overflow:hidden;font-size:1.6rem;line-height:1;text-overflow:ellipsis;white-space:nowrap}.stat-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stat-mini{padding:12px;border-radius:7px;background:#ffffff0a}.stat-mini span{color:#94d8c7;font-size:.7rem;font-weight:800;text-transform:uppercase}.stat-mini strong{display:block;margin-top:4px;font-size:1.2rem;line-height:1}.meter-head{display:flex;justify-content:space-between;margin-bottom:10px}.threat-high{color:#ff476f;font-weight:900}.threat-medium{color:#ffbe4a;font-weight:900}.threat-low{color:#39f6ba;font-weight:900}.meter-track{height:10px;border-radius:999px;overflow:hidden;background:#ffffff14}#threat-bar{height:100%;width:20%;border-radius:inherit;background:linear-gradient(90deg,#39f6ba,#ffbe4a 55%,#ff476f);transition:width .45s ease}.ranking-card{padding:12px;border-radius:7px;background:#ffffff09}.ranking-list{display:flex;flex-direction:column;gap:6px}.ranking-item{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;position:relative;padding:5px 8px;border-radius:4px;overflow:hidden}.ranking-bar-bg{position:absolute;inset:0;z-index:0}.ranking-bar{height:100%;border-radius:4px;background:#39f6ba26;transition:width .4s ease}.ranking-label{position:relative;z-index:1;color:#dffdf5;font-size:.78rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ranking-count{position:relative;z-index:1;color:#77f7cf;font-size:.78rem;font-weight:800;font-variant-numeric:tabular-nums}.ranking-empty{color:#6ba89a;font-size:.78rem;padding:4px 0}.feed-section{margin-top:16px}.feed-panel{border:1px solid rgba(154,255,222,.14);border-radius:8px;background:#031210c7;box-shadow:0 20px 70px #00000040}.feed-filters{display:flex;flex-wrap:wrap;gap:8px;padding:0 18px 12px}.feed-filters select{flex:0 1 145px}.feed-filters input[id=filter-port]{flex:0 1 80px}.feed-filters input[id=filter-query]{flex:1 1 180px;min-width:120px}.feed-filters button{flex:0 0 auto}.feed-filters select,.feed-filters input,.feed-filters button{min-width:0;border:1px solid rgba(154,255,222,.16);border-radius:5px;padding:8px 10px;background:#ffffff0d;color:#dffdf5;font:inherit;font-size:.85rem}.feed-filters button{color:#94d8c7;cursor:pointer;font-weight:800}.feed-list{padding:0 18px 18px;overflow-x:auto;overflow-y:auto;max-height:560px;scrollbar-width:thin;scrollbar-color:rgba(57,246,186,.3) transparent}.feed-table{min-width:1280px;overflow:hidden;border:1px solid rgba(154,255,222,.1);border-radius:7px}.feed-header,.feed-row{display:grid;grid-template-columns:68px minmax(130px,1.3fr) 90px minmax(110px,1fr) 75px minmax(110px,1fr) 75px 70px minmax(120px,1fr) minmax(90px,.7fr) 80px 50px;gap:6px;align-items:center;padding:8px}.feed-header{position:sticky;top:0;z-index:2;background:#39f6ba1a;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#94d8c7;font-size:.7rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em}.feed-row{border-top:1px solid rgba(154,255,222,.06);background:#ffffff08;color:#ccefe7;font-size:.8rem}.feed-row.high{border-left:3px solid #ff476f}.feed-row.medium{border-left:3px solid #ffbe4a}.feed-row.low{border-left:3px solid #39f6ba}.feed-row>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed-attack-type{display:flex;align-items:center;gap:6px;font-weight:700}.type-dot{display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0}.host-label{display:block;font-size:.63rem;color:#39f6ba;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:1px}.feed-row.trusted{opacity:.82}.feed-isp{color:#a8e4d7;font-weight:600}.feed-direction{font-weight:700;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}.feed-direction.outbound{color:#ffbe4a}.feed-direction.inbound{color:#39f6ba}.feed-category{font-size:.72rem;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed-item{display:grid;grid-template-columns:100px minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px;border-left:3px solid #39f6ba;border-radius:5px;background:#ffffff0a;margin-bottom:6px}.feed-item.medium{border-left-color:#ffbe4a}.feed-item.high{border-left-color:#ff476f}.feed-kind{color:#dffdf5;font-size:.72rem;font-weight:800;text-transform:uppercase}.feed-item strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed-item>span:last-child{color:#8bbab0;font-size:.8rem}@keyframes routeDash{to{stroke-dashoffset:-48}}@keyframes pulse{0%{transform:scale(.7);opacity:.95}to{transform:scale(1.8);opacity:0}}@keyframes blink{50%{opacity:.45}}.stars-canvas{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}#app{position:relative;z-index:1}.settings-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid rgba(154,255,222,.28);border-radius:8px;background:#051a16cc;color:#77f7cf;cursor:pointer;font-size:1.1rem;transition:background .2s,color .2s}.settings-btn:hover{background:#39f6ba2e;color:#dffdf5}.modal-backdrop{position:fixed;inset:0;z-index:1001;display:flex;align-items:center;justify-content:center;background:#000000b8;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.modal-backdrop[hidden]{display:none}.modal-card{width:min(480px,94vw);border:1px solid rgba(154,255,222,.22);border-radius:12px;background:#0a1f1b;box-shadow:0 20px 80px #0009}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 14px;border-bottom:1px solid rgba(154,255,222,.1)}.modal-head h2{font-size:1rem;color:#dffdf5}.modal-close-btn{width:28px;height:28px;border:1px solid rgba(154,255,222,.2);border-radius:6px;background:transparent;color:#94d8c7;cursor:pointer;font:inherit;font-size:.78rem}.modal-close-btn:hover{background:#ffffff12}.modal-body{padding:20px;display:flex;flex-direction:column;gap:20px}.setting-row{display:flex;flex-direction:column;gap:8px}.setting-row label{color:#94d8c7;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.setting-row input[type=text]{border:1px solid rgba(154,255,222,.2);border-radius:6px;padding:10px 12px;background:#ffffff0d;color:#dffdf5;font:inherit;font-size:.9rem}.setting-row input[type=text]:focus{outline:none;border-color:#39f6ba}.favicon-upload-area{display:flex;align-items:center;gap:14px}.favicon-img-preview-box{width:48px;height:48px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(154,255,222,.2);border-radius:8px;background:#ffffff0a;font-size:1.8rem;flex-shrink:0;overflow:hidden}.favicon-upload-controls{display:flex;flex-direction:column;gap:6px}.favicon-upload-label{display:inline-block;padding:8px 14px;border:1px solid rgba(154,255,222,.22);border-radius:6px;background:transparent;color:#94d8c7;cursor:pointer;font-size:.85rem;font-weight:700;text-align:center;transition:background .15s}.favicon-upload-label:hover{background:#ffffff12}.favicon-filename{color:#6ba89a;font-size:.78rem}.theme-toggle{display:flex;align-items:center;gap:12px}.theme-label{color:#6ba89a;font-size:.88rem;font-weight:600;transition:color .2s}.theme-label.active{color:#dffdf5}.toggle-switch{position:relative;width:44px;height:24px;border:1px solid rgba(154,255,222,.28);border-radius:999px;background:#ffffff14;cursor:pointer;flex-shrink:0;padding:0;transition:background .2s,border-color .2s}.toggle-switch[aria-checked=true]{background:#39f6ba47;border-color:#39f6ba}.toggle-thumb{position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#94d8c7;transition:transform .22s ease;pointer-events:none}.toggle-switch[aria-checked=true] .toggle-thumb{transform:translate(20px);background:#39f6ba}.modal-foot{display:flex;gap:10px;justify-content:flex-end;padding:14px 20px 18px;border-top:1px solid rgba(154,255,222,.1)}.btn-primary,.btn-secondary{padding:9px 20px;border-radius:6px;font:inherit;font-size:.88rem;font-weight:700;cursor:pointer}.btn-primary{border:1px solid #39f6ba;background:#39f6ba2e;color:#39f6ba}.btn-primary:hover{background:#39f6ba4d}.btn-secondary{border:1px solid rgba(154,255,222,.2);background:transparent;color:#94d8c7}.btn-secondary:hover{background:#ffffff0f}body.theme-cosmic{background:radial-gradient(circle at 20% 80%,rgba(168,85,247,.25) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(255,107,157,.22) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(6,255,165,.08) 0%,transparent 50%),linear-gradient(135deg,#0a0a0f,#1a0d2e,#2d1b3d);color:#e8e3ff;font-family:SF Pro Display,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}body.theme-cosmic .eyebrow{color:#a855f7}body.theme-cosmic h3,body.theme-cosmic .topbar-stat span{color:#9f7aea}body.theme-cosmic .topbar-stat strong{color:#a855f7}body.theme-cosmic .live-pill{border-color:#a855f766;background:#1e1034cc;color:#e8e3ff}body.theme-cosmic .live-pill span{background:#ff6b9d;box-shadow:0 0 14px #ff6b9d}body.theme-cosmic .map-panel,body.theme-cosmic .side-panel,body.theme-cosmic .feed-panel{border-color:#a855f733;background:#1e1034a6;box-shadow:0 20px 70px #0006}body.theme-cosmic .map-toolbar small,body.theme-cosmic .section-head span,body.theme-cosmic .stat-card small{color:#9f7aea}body.theme-cosmic .map-legend{color:#d6c8f0}body.theme-cosmic .view-toggle{border-color:#a855f740;background:#ffffff0a}body.theme-cosmic .view-toggle button{color:#9f7aea}body.theme-cosmic .view-toggle button.active{background:#a855f738;color:#e8e3ff}body.theme-cosmic .world-map{background:#0d0915}body.theme-cosmic .map-ocean{fill:#0d0915}body.theme-cosmic .map-graticule{stroke:#a855f71f}body.theme-cosmic .country{fill:#643ca066;stroke:#a855f74d}body.theme-cosmic .route.low .traffic-route{stroke:#a855f7}body.theme-cosmic .route.low .route-packet{fill:#a855f7}body.theme-cosmic .route.medium .traffic-route{stroke:#ffd23f}body.theme-cosmic .route.medium .route-packet{fill:#ffd23f}body.theme-cosmic .route.high .traffic-route{stroke:#ff6b9d}body.theme-cosmic .route.high .route-packet{fill:#ff6b9d}body.theme-cosmic .map-node .node-pulse{fill:#a855f73d}body.theme-cosmic .map-node .node-dot{fill:#a855f7;stroke:#e8e3ff}body.theme-cosmic .map-node.high .node-pulse,body.theme-cosmic .map-node.high .node-dot{fill:#ff6b9d}body.theme-cosmic .map-node.medium .node-pulse,body.theme-cosmic .map-node.medium .node-dot{fill:#ffd23f}body.theme-cosmic .map-node.local .node-dot{fill:#e8e3ff}body.theme-cosmic .map-node text{fill:#e8e3ff;stroke:#0a0a0fe0}body.theme-cosmic .internal-link{stroke:#a855f77a}body.theme-cosmic .internal-node circle{fill:#a855f7;stroke:#e8e3ff}body.theme-cosmic .internal-node.host circle{fill:#e8e3ff}body.theme-cosmic .internal-node.service circle{fill:#ffd23f}body.theme-cosmic .internal-node.container circle,body.theme-cosmic .internal-node.virtual circle{fill:#ff6b9d}body.theme-cosmic .internal-node.lan-peer circle,body.theme-cosmic .internal-node.lan-internal circle{fill:#06ffa5}body.theme-cosmic .internal-node.external-peer circle{fill:#ff4757}body.theme-cosmic .internal-node text{fill:#e8e3ff;stroke:#0a0a0fe6}body.theme-cosmic .side-panel{scrollbar-color:rgba(168,85,247,.3) transparent}body.theme-cosmic .stat-card,body.theme-cosmic .threat-meter{background:#2a185240}body.theme-cosmic .stat-card.primary{background:linear-gradient(135deg,#a855f733,#1e103499)}body.theme-cosmic .stat-card span,body.theme-cosmic .meter-head span{color:#9f7aea}body.theme-cosmic .stat-mini{background:#2a185240}body.theme-cosmic .stat-mini span{color:#9f7aea}body.theme-cosmic .threat-high{color:#ff6b9d}body.theme-cosmic .threat-medium{color:#ffd23f}body.theme-cosmic .threat-low{color:#06ffa5}body.theme-cosmic .meter-track{background:#ffffff0f}body.theme-cosmic #threat-bar{background:linear-gradient(90deg,#06ffa5,#ffd23f 50%,#ff6b9d)}body.theme-cosmic .legend-dot.high{background:#ff6b9d}body.theme-cosmic .legend-dot.medium{background:#ffd23f}body.theme-cosmic .legend-dot.low{background:#a855f7}body.theme-cosmic .ranking-card{background:#2a185233}body.theme-cosmic .ranking-bar{background:#a855f733}body.theme-cosmic .ranking-label{color:#e8e3ff}body.theme-cosmic .ranking-count{color:#a855f7}body.theme-cosmic .ranking-empty{color:#6b46c1}body.theme-cosmic .feed-filters select,body.theme-cosmic .feed-filters input,body.theme-cosmic .feed-filters button{border-color:#a855f733;background:#2a185233;color:#e8e3ff}body.theme-cosmic .feed-filters button{color:#9f7aea}body.theme-cosmic .feed-table{border-color:#a855f726}body.theme-cosmic .feed-header{background:#a855f71f;color:#9f7aea}body.theme-cosmic .feed-row{border-top-color:#a855f714;background:#2a18521f;color:#d6c8f0}body.theme-cosmic .feed-row.high{border-left-color:#ff6b9d}body.theme-cosmic .feed-row.medium{border-left-color:#ffd23f}body.theme-cosmic .feed-row.low{border-left-color:#a855f7}body.theme-cosmic .feed-isp{color:#d6c8f0}body.theme-cosmic .feed-direction.outbound{color:#ffd23f}body.theme-cosmic .feed-direction.inbound{color:#06ffa5}body.theme-cosmic .feed-item{background:#2a185233;border-left-color:#a855f7}body.theme-cosmic .feed-item.medium{border-left-color:#ffd23f}body.theme-cosmic .feed-item.high{border-left-color:#ff6b9d}body.theme-cosmic .feed-kind{color:#e8e3ff}body.theme-cosmic .feed-item>span:last-child{color:#9f7aea}body.theme-cosmic .settings-btn{border-color:#a855f74d;background:#1e1034cc;color:#a855f7}body.theme-cosmic .settings-btn:hover{background:#a855f733;color:#e8e3ff}body.theme-cosmic .modal-card{border-color:#a855f74d;background:#1e1034}body.theme-cosmic .modal-head{border-bottom-color:#a855f726}body.theme-cosmic .modal-head h2{color:#e8e3ff}body.theme-cosmic .modal-close-btn{border-color:#a855f740;color:#9f7aea}body.theme-cosmic .modal-close-btn:hover{background:#a855f726}body.theme-cosmic .modal-body{color:#e8e3ff}body.theme-cosmic .setting-row label{color:#9f7aea}body.theme-cosmic .setting-row input[type=text]{border-color:#a855f740;background:#2a18524d;color:#e8e3ff}body.theme-cosmic .setting-row input[type=text]:focus{border-color:#a855f7}body.theme-cosmic .theme-label{color:#6b46c1}body.theme-cosmic .theme-label.active{color:#e8e3ff}body.theme-cosmic .toggle-switch{border-color:#a855f759;background:#2a18524d}body.theme-cosmic .toggle-switch[aria-checked=true]{background:#a855f759;border-color:#a855f7}body.theme-cosmic .toggle-thumb{background:#9f7aea}body.theme-cosmic .toggle-switch[aria-checked=true] .toggle-thumb{background:#a855f7}body.theme-cosmic .modal-foot{border-top-color:#a855f726}body.theme-cosmic .btn-primary{border-color:#a855f7;background:#a855f733;color:#a855f7}body.theme-cosmic .btn-primary:hover{background:#a855f759}body.theme-cosmic .btn-secondary{border-color:#a855f740;color:#9f7aea}body.theme-cosmic .btn-secondary:hover{background:#a855f71f}@media(max-width:1100px){.hero-grid{grid-template-columns:1fr}.side-panel{max-height:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}}@media(max-width:680px){.dashboard{padding:12px}.topbar,.map-toolbar,.section-head{align-items:flex-start;flex-direction:column}.map-legend{flex-wrap:wrap}.side-panel{grid-template-columns:1fr}.world-map{height:380px;min-height:380px}.feed-filters{grid-template-columns:1fr}.topbar-right{flex-direction:column;align-items:flex-end}}
