:root{--bg:#060b16;--bg-soft:#0b1220;--panel:#0f172ac7;--panel-strong:#020617db;--border:#7dd3fc2e;--border-strong:#38bdf857;--text:#dbeafe;--muted:#94a3b8;--cyan:#38bdf8;--blue:#2563eb;--green:#22c55e;--amber:#f59e0b;--red:#ef4444;color:var(--text);background:var(--bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at 50% -10%, #38bdf829, transparent 34%), var(--bg);margin:0}button,input,select{font:inherit}button{border:1px solid var(--border-strong);color:#fff;cursor:pointer;background:linear-gradient(135deg,#2563ebe6,#0891b2d6);border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:10px 14px;display:inline-flex;box-shadow:0 0 20px #0ea5e929}button:hover{border-color:#7dd3fcb8;transform:translateY(-1px)}input,select{border:1px solid var(--border);color:var(--text);background:#020617c7;border-radius:8px;padding:10px 12px}h1,h2,h3,p{margin-top:0}.loginPage{background:radial-gradient(circle at 50% 0%, #0ea5e92e, transparent 36%), var(--bg);place-items:center;min-height:100vh;padding:24px;display:grid}.loginBox{background:var(--panel);border:1px solid var(--border);border-radius:8px;gap:14px;width:min(420px,100%);padding:28px;display:grid;box-shadow:0 24px 70px #0000005c}.loginBox h1{margin:0;font-size:28px}.loginBox p,.muted{color:var(--muted)}.loginBox label{gap:6px;font-weight:600;display:grid}.app{grid-template-columns:250px 1fr;min-height:100vh;display:grid}aside{color:#fff;border-right:1px solid var(--border);background:linear-gradient(#050914,#0b1220);height:100vh;padding:20px;position:sticky;top:0}.brand{align-items:center;gap:10px;margin-bottom:28px;font-weight:850;display:flex}aside a,.logout{color:#cbd5e1;width:100%;box-shadow:none;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:flex-start;align-items:center;gap:10px;padding:12px;text-decoration:none;display:flex}aside a:hover,.logout:hover{color:#fff;border-color:var(--border);background:#0ea5e91f;transform:none}main{min-width:0;padding:24px}.socHeader{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:14px;display:flex}.socHeader h1{color:#f8fafc;text-shadow:0 0 30px #38bdf838;margin-bottom:5px;font-size:32px}.socHeader p{color:var(--muted);margin-bottom:0}.eyebrow{color:#7dd3fc;text-transform:uppercase;align-items:center;gap:8px;margin-bottom:8px;font-size:12px;font-weight:850;display:inline-flex}.headerOps{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:9px;max-width:760px;display:flex}.clockBox{border:1px solid var(--border);color:#bae6fd;background:#02061799;border-radius:8px;align-items:center;gap:8px;padding:10px 12px;display:inline-flex}.serviceStrip,.toolbar{flex-wrap:wrap;gap:10px;margin-bottom:14px;display:flex}.pill{border-radius:999px;padding:7px 10px;font-size:13px;font-weight:750}.pill.ok{color:#86efac;background:#22c55e21;border:1px solid #22c55e59}.pill.bad{color:#fca5a5;background:#ef444421;border:1px solid #ef444459}.pulsePill{color:#bae6fd;background:#0ea5e91f;border:1px solid #38bdf84d;border-radius:999px;align-items:center;gap:8px;padding:7px 10px;font-size:13px;font-weight:750;display:inline-flex}.pulsePill span{background:var(--green);width:8px;height:8px;box-shadow:0 0 16px var(--green);border-radius:50%;animation:1.2s infinite blink}.panel,.socPanel,.socCard{background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 24px 60px #0000003d}.panel,.socPanel{margin-bottom:18px;padding:18px}.socCard{min-width:0;padding:14px;position:relative;overflow:hidden}.socCard:before{content:"";pointer-events:none;opacity:.8;background:linear-gradient(120deg,#38bdf814,#0000 34%,#22c55e0a);position:absolute;inset:0}.socCard>*{position:relative}.commandCenter{background:linear-gradient(#0f172ad6,#020617e6)}.cardHead{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.cardHead h3{color:#f8fafc;align-items:center;gap:8px;margin-bottom:0;font-size:16px;display:flex}.cardHead span,.mapLegend{color:#7dd3fc;text-transform:uppercase;font-size:12px}.kpiGrid{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:14px;display:grid}.kpiCard{border:1px solid var(--border);min-height:152px;color:var(--cyan);background:linear-gradient(#0f172af2,#020617eb);border-radius:8px;padding:14px;position:relative;overflow:hidden}.kpiCard:after{content:"";opacity:.7;background:currentColor;height:2px;position:absolute;bottom:0;left:0;right:0}.kpiCard.green{color:var(--green)}.kpiCard.amber{color:var(--amber)}.kpiCard.red{color:var(--red)}.kpiTop{justify-content:space-between;align-items:center;display:flex}.kpiTop span{filter:drop-shadow(0 0 10px)}.kpiTop small{color:var(--muted)}.kpiCard b{color:#f8fafc;margin-top:10px;font-size:34px;line-height:1;display:block}.kpiCard p{color:var(--muted);margin:7px 0 0}.sparkline{opacity:.8;height:38px;margin-top:12px}.socMainGrid{grid-template-columns:minmax(0,1.65fr) minmax(340px,.8fr);gap:14px;margin-bottom:14px;display:grid}.rightRail{grid-template-rows:auto 1fr;gap:14px;min-width:0;display:grid}.socChartGrid{grid-template-columns:1.25fr .85fr .9fr;gap:14px;margin-bottom:14px;display:grid}.socBottomGrid{grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;display:grid}.worldMap{background:#06111f;border-radius:8px;min-height:430px;position:relative;overflow:hidden}.worldMap:after{content:"";pointer-events:none;mix-blend-mode:screen;opacity:.32;background:linear-gradient(#ffffff06 50%,#0000 50%) 0 0/100% 4px;position:absolute;inset:0}.worldMap svg{width:100%;height:430px;display:block}.mapOcean{fill:#06111f}.mapGrid{stroke:#38bdf826;stroke-width:1px}.sphereLine{fill:none;stroke:#38bdf833;stroke-width:1.5px}.geoCountry{fill:#1e40af6b;stroke:#7dd3fc5c;stroke-width:.65px;transition:fill .18s,stroke .18s}.geoCountry:hover{fill:#38bdf852;stroke:#bae6fdad}.attackArc{fill:none;stroke:#38bdf8b3;stroke-width:2px;stroke-dasharray:8 10;filter:drop-shadow(0 0 7px #38bdf866);animation:1.4s linear infinite dashMove}.attackArc.warning{stroke:#f59e0bd6}.attackArc.blocked,.attackArc.error{stroke:#ef4444e6}.countryNode{cursor:pointer}.countryBubble{fill:#38bdf8b8;stroke:#bae6fd;stroke-width:2.3px}.countryBubble.warning{fill:#f59e0bb8;stroke:#fde68a}.countryBubble.blocked{fill:#ef4444c7;stroke:#fecaca}.countryBubble.selected{stroke-width:4px;filter:drop-shadow(0 0 15px #fff)}.sourcePulse{fill:none;stroke:#38bdf89e;stroke-width:2px;transform-box:fill-box;transform-origin:50%;animation:2s ease-out infinite ping}.sourcePulse.warning{stroke:#f59e0bb8}.sourcePulse.blocked{stroke:#ef4444d1}.mapLabel{fill:#f8fafc;font-size:22px;font-weight:900}.homeNode circle:first-child{fill:var(--green)}.homeNode circle:nth-child(2),.homeNode circle:nth-child(3){fill:none;stroke:var(--green);stroke-width:2px;transform-box:fill-box;transform-origin:50%;animation:2.2s ease-out infinite ping}.homeNode circle:nth-child(3){opacity:.45;animation-delay:.55s}.homeNode text{fill:#bbf7d0;font-size:20px;font-weight:850}.mapLegend{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:inline-flex}.okDot,.warnDot,.badDot{border-radius:50%;width:9px;height:9px;display:inline-block}.okDot{background:var(--cyan);box-shadow:0 0 12px var(--cyan)}.warnDot{background:var(--amber);box-shadow:0 0 12px var(--amber)}.badDot{background:var(--red);box-shadow:0 0 12px var(--red)}.paused .attackArc,.paused .homeNode circle:nth-child(2),.paused .homeNode circle:nth-child(3),.paused .sourcePulse,.paused .pulsePill span{animation-play-state:paused}.threatLevel{text-align:center;background:radial-gradient(circle,#f59e0b2e,#0f172ab8 62%);border-color:#f59e0b61;align-content:center;min-height:148px;display:grid}.threatLevel span{color:#fed7aa;text-transform:uppercase;font-size:12px}.threatLevel strong{color:#fef3c7;text-shadow:0 0 20px #f59e0b47;font-size:44px;line-height:1.05}.threatLevel p{color:var(--muted);margin-bottom:0}.threatLevel.low{background:radial-gradient(circle,#22c55e29,#0f172ab8 62%);border-color:#22c55e59}.threatLevel.critical,.threatLevel.high{background:radial-gradient(circle,#ef44442e,#0f172ab8 62%);border-color:#ef444473}.threatLevel.critical strong,.threatLevel.high strong{color:#fecaca;text-shadow:0 0 20px #ef44446b}.feedRows{gap:9px;max-height:430px;display:grid;overflow:auto}.feedRow{text-align:left;box-shadow:none;background:#0f172a8c;border:1px solid #38bdf81f;border-radius:8px;grid-template-columns:12px 1fr auto;align-items:center;gap:10px;padding:10px;display:grid}.feedRow:hover{background:#0ea5e91a;transform:none}.feedDot{background:var(--cyan);border-radius:50%;width:9px;height:9px;box-shadow:0 0 14px #38bdf8e6}.severity-warning .feedDot{background:var(--amber);box-shadow:0 0 14px #f59e0be6}.severity-high .feedDot{background:var(--red);box-shadow:0 0 14px #ef4444e6}.feedRow b{color:#e0f2fe;display:block}.feedRow small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;max-width:310px;display:block;overflow:hidden}.actionTag{text-align:center;color:#bae6fd;background:#0ea5e91a;border:1px solid #38bdf840;border-radius:999px;min-width:72px;padding:5px 8px;font-size:12px}.actionTag.blocked,.actionTag.error{color:#fecaca;background:#ef444421;border-color:#ef44444d}.actionTag.banned{color:#fde68a;background:#f59e0b21;border-color:#f59e0b59}.rankCard{min-height:270px}.rankRow{text-align:left;width:100%;box-shadow:none;background:#0f172a85;border:1px solid #7dd3fc1f;grid-template-columns:1fr auto;margin-bottom:9px;padding:10px;display:grid;position:relative;overflow:hidden}.rankRow:hover{border-color:var(--border-strong);transform:none}.rankRow span,.rankRow b{z-index:1;position:relative}.rankRow span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rankRow b{color:#7dd3fc}.rankRow i{background:linear-gradient(90deg, var(--cyan), transparent);height:2px;position:absolute;bottom:0;left:0}.healthRow{border-bottom:1px solid #94a3b81f;justify-content:space-between;gap:12px;padding:10px 0;display:flex}.healthRow span{color:var(--muted)}.okText{color:#86efac}.badText{color:#fca5a5}.tableWrap{border:1px solid var(--border);border-radius:8px;overflow:auto}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:left;vertical-align:top;overflow-wrap:anywhere;max-width:320px;color:var(--text);border-bottom:1px solid #94a3b81f;padding:10px}th{color:#93c5fd;background:#0f172af2}.logbox,.json{color:#e2e8f0;border:1px solid var(--border);background:#050914;border-radius:8px;max-height:420px;padding:14px;font-size:13px;overflow:auto}.logTable{max-height:520px}.logTable table{font-size:13px}.nowrap{white-space:nowrap}.uriCell{min-width:260px;max-width:520px}.statusBadge{color:#dbeafe;background:#334155;border-radius:999px;justify-content:center;min-width:42px;padding:4px 8px;font-size:12px;font-weight:800;display:inline-flex}.statusBadge.s2{color:#86efac;background:#22c55e33}.statusBadge.s3{color:#7dd3fc;background:#38bdf833}.statusBadge.s4{color:#fcd34d;background:#f59e0b33}.statusBadge.s5{color:#fca5a5;background:#ef444433}.chartTooltip{border:1px solid var(--border-strong);color:var(--text);background:#050914;border-radius:8px;gap:4px;padding:10px;display:grid;box-shadow:0 20px 50px #00000059}.error{color:#fecaca;background:#ef444429;border:1px solid #ef444459;border-radius:8px;margin-bottom:14px;padding:10px 12px}.loading{padding:32px}.skeletonPage{gap:14px;display:grid}.skeletonPage div{background:linear-gradient(90deg,#1e293b80,#38bdf821,#1e293b80) 0 0/200% 100%;border-radius:8px;height:120px;animation:1.6s infinite shimmer}@keyframes ping{0%{opacity:.9;transform:scale(.6)}to{opacity:0;transform:scale(2.4)}}@keyframes dashMove{0%{stroke-dashoffset:42px}to{stroke-dashoffset:0}}@keyframes blink{0%,to{opacity:1}50%{opacity:.35}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (width<=1280px){.kpiGrid{grid-template-columns:repeat(3,1fr)}.socMainGrid,.socChartGrid{grid-template-columns:1fr}.socBottomGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=900px){.app{grid-template-columns:1fr}aside{grid-template-columns:repeat(2,1fr);gap:6px;height:auto;display:grid;position:static}.brand{grid-column:1/-1;margin-bottom:8px}.socHeader{flex-direction:column}.headerOps{justify-content:flex-start}.kpiGrid,.socBottomGrid{grid-template-columns:1fr}.worldMap,.worldMap svg{height:330px;min-height:330px}}
