:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@media (width<=1024px){:root{font-size:16px}}@media (prefers-color-scheme:dark){:root{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}#social .button-icon{filter:invert()brightness(2)}}#root{text-align:center;border-inline:1px solid var(--border);box-sizing:border-box;flex-direction:column;width:1126px;max-width:100%;min-height:100svh;margin:0 auto;display:flex}body{margin:0}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{color:#e2e8f0;background:#030712;width:100vw;height:100vh;font-family:Inter,Segoe UI,system-ui,sans-serif;overflow:hidden}#root{width:100vw;height:100vh;position:relative}.starfield{pointer-events:none;z-index:0;position:fixed;inset:0}.star{animation:twinkle var(--dur,3s) infinite alternate ease-in-out;animation-delay:var(--delay,0s);background:#fff;border-radius:50%;position:absolute}@keyframes twinkle{0%{opacity:var(--lo,.1);transform:scale(1)}to{opacity:var(--hi,.9);transform:scale(1.6)}}.landing{z-index:10;flex-direction:column;justify-content:center;align-items:center;gap:1.5rem;height:100vh;display:flex;position:relative}.landing h1{background:linear-gradient(135deg,gold 0%,#ff8c00 50%,gold 100%);-webkit-text-fill-color:transparent;text-align:center;letter-spacing:-.02em;-webkit-background-clip:text;background-clip:text;font-size:clamp(2rem,5vw,4rem);font-weight:800}.landing-sub{color:#94a3b8;letter-spacing:.04em;font-size:1.05rem}.scan-btn{letter-spacing:.12em;color:#0f8;cursor:pointer;background:0 0;border:2px solid #0f8;border-radius:4px;margin-top:1rem;padding:1rem 3rem;font-size:1.2rem;font-weight:700;transition:background .2s,color .2s;animation:2s infinite pulse-btn}.scan-btn:hover{color:#030712;background:#0f8}@keyframes pulse-btn{0%,to{box-shadow:0 0 #0f89}50%{box-shadow:0 0 0 18px #0f80}}.galaxy-root{width:100vw;height:100vh;position:relative;overflow:hidden}.graph-canvas{position:absolute;inset:0}.hud{z-index:30;pointer-events:none;flex-direction:column;gap:.4rem;display:flex;position:absolute;top:1rem;right:1rem}.hud-row{justify-content:flex-end;gap:.5rem;display:flex}.hud-counter{text-align:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#030712bf;border:1px solid #ffffff14;border-radius:6px;min-width:86px;padding:.4rem .75rem}.hud-counter .label{text-transform:uppercase;letter-spacing:.1em;color:#64748b;font-size:.58rem}.hud-counter .value{font-size:1.35rem;font-weight:700;line-height:1.1}.hud-counter.risk .value{color:gold}.hud-counter.vuln .value{color:#f87171}.hud-counter.crit .value{color:#ef4444}.hud-counter.direct .value{color:#34d399}.hud-counter.transitive .value{color:#60a5fa}.hud-counter.total .value{color:#e2e8f0}.vuln-panel{z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#030712d1;border-right:1px solid #ffffff12;flex-direction:column;width:272px;display:flex;position:absolute;top:0;bottom:3rem;left:0;overflow:hidden}.vuln-panel-title{letter-spacing:.12em;color:#64748b;text-transform:uppercase;border-bottom:1px solid #ffffff0f;flex-shrink:0;padding:.85rem 1rem .6rem;font-size:.68rem;font-weight:700}.vuln-list{flex:1;padding:.3rem 0;overflow-y:auto}.vuln-list::-webkit-scrollbar{width:3px}.vuln-list::-webkit-scrollbar-thumb{background:#334155;border-radius:2px}.vuln-row{cursor:pointer;border-left:3px solid #0000;flex-direction:column;gap:.15rem;padding:.5rem 1rem;transition:background .12s,border-color .12s;display:flex}.vuln-row:hover{background:#ffffff0a}.vuln-row.active{background:#ffffff12;border-left-color:gold}.vuln-row .cve-id{color:#94a3b8;font-family:JetBrains Mono,Fira Code,monospace;font-size:.65rem}.vuln-row .pkg-name{color:#e2e8f0;font-size:.78rem;font-weight:600}.badge{letter-spacing:.06em;text-transform:uppercase;border-radius:3px;padding:.08rem .35rem;font-size:.58rem;font-weight:700;display:inline-block}.badge-critical{color:#ef4444;background:#ef444433;border:1px solid #ef444480}.badge-high{color:#fb923c;background:#fb923c33;border:1px solid #fb923c80}.badge-medium{color:#eab308;background:#eab30833;border:1px solid #eab30880}.badge-low{color:#22c55e;background:#22c55e33;border:1px solid #22c55e80}.node-detail{z-index:20;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#030712e0;border-left:1px solid #ffffff12;width:340px;padding:1.25rem;position:absolute;top:0;bottom:3rem;right:0;overflow-y:auto}.node-detail::-webkit-scrollbar{width:3px}.node-detail::-webkit-scrollbar-thumb{background:#334155;border-radius:2px}.detail-pkg-name{color:#f1f5f9;margin-bottom:.15rem;font-size:1.05rem;font-weight:700}.detail-version{color:#64748b;margin-bottom:.9rem;font-family:JetBrains Mono,Fira Code,monospace;font-size:.72rem}.detail-cve{color:#f59e0b;margin-bottom:.4rem;font-family:JetBrains Mono,Fira Code,monospace;font-size:.82rem;font-weight:600}.detail-title{color:#e2e8f0;margin-bottom:.75rem;font-size:.9rem;font-weight:600;line-height:1.4}.detail-section{margin-bottom:.8rem}.detail-section-label{letter-spacing:.1em;text-transform:uppercase;color:#475569;margin-bottom:.2rem;font-size:.58rem;font-weight:700}.detail-section-body{color:#94a3b8;font-size:.75rem;line-height:1.55}.attack-anim-box{background:#00000073;border:1px solid #ffffff12;border-radius:6px;justify-content:center;align-items:center;width:100%;height:96px;margin-bottom:.9rem;display:flex;position:relative;overflow:hidden}.proto-anim{color:#f87171;text-align:left;white-space:pre;padding:.5rem;font-family:JetBrains Mono,Fira Code,monospace;font-size:.6rem;line-height:1.5;animation:5s infinite proto-spread}@keyframes proto-spread{0%{opacity:0;transform:scale(.85)}12%{opacity:1;transform:scale(1)}55%{color:#ff2020;text-shadow:0 0 10px red}88%{opacity:1}to{opacity:0;transform:scale(1.05)}}.redos-anim{flex-direction:column;align-items:center;gap:.5rem;width:90%;display:flex}.redos-regex{color:#a78bfa;font-family:JetBrains Mono,Fira Code,monospace;font-size:.78rem;animation:5s infinite redos-glow}.redos-bar{background:#1e293b;border-radius:4px;width:100%;height:8px;overflow:hidden}.redos-fill{background:linear-gradient(90deg,#a78bfa,#f43f5e);border-radius:4px;height:100%;animation:5s infinite redos-fill}@keyframes redos-glow{0%,to{text-shadow:0 0 4px #a78bfa;letter-spacing:0}50%{text-shadow:0 0 18px #f43f5e,0 0 36px #f43f5e;letter-spacing:.08em}}@keyframes redos-fill{0%{width:0%}30%{width:35%}65%{width:78%}92%{width:99%}to{width:0%}}.ssrf-anim{justify-content:space-around;align-items:center;gap:.4rem;width:100%;padding:0 .8rem;font-family:monospace;font-size:.58rem;display:flex}.ssrf-label{text-align:center;white-space:nowrap;border-radius:3px;padding:.2rem .35rem}.ssrf-public{color:#4ade80;background:#22c55e26;border:1px solid #4ade80}.ssrf-internal{color:#f87171;background:#ef444426;border:1px solid #f87171}.ssrf-arrow{background:linear-gradient(90deg,#4ade80,#f87171);flex:1;height:2px;position:relative}.ssrf-arrow:after{content:"▶";color:#f87171;font-size:.85rem;position:absolute;top:-7px;right:-8px}.ssrf-dot{background:gold;border-radius:50%;width:8px;height:8px;animation:5s infinite ssrf-travel;position:absolute;top:-3px}@keyframes ssrf-travel{0%{opacity:0;left:0%}8%{opacity:1}88%{opacity:1;left:100%}to{opacity:0;left:100%}}.rce-anim{color:#4ade80;text-align:left;white-space:pre;width:100%;padding:.5rem;font-family:JetBrains Mono,Fira Code,monospace;font-size:.6rem;line-height:1.6;overflow:hidden}.rce-line{animation:5s infinite rce-appear;display:block}.rce-line:first-child{animation-delay:0s}.rce-line:nth-child(2){animation-delay:.5s}.rce-line:nth-child(3){color:#f43f5e;animation-delay:1s}.rce-line:nth-child(4){color:#fbbf24;animation-delay:1.5s}@keyframes rce-appear{0%{opacity:0}5%{opacity:1}85%{opacity:1}to{opacity:0}}.cmd-anim{text-align:left;width:100%;padding:.5rem;font-family:JetBrains Mono,Fira Code,monospace;font-size:.6rem;line-height:1.7}.cmd-safe{color:#94a3b8}.cmd-injected{color:#f43f5e;text-shadow:0 0 8px #f43f5e;animation:5s infinite cmd-blink}@keyframes cmd-blink{0%,25%{opacity:0}35%,88%{opacity:1}to{opacity:0}}.sig-anim{flex-direction:column;align-items:center;gap:.4rem;display:flex}.sig-lock{font-size:2.2rem;animation:5s infinite sig-unlock}.sig-status{font-family:monospace;font-size:.62rem}.sig-valid{color:#22c55e;animation:5s infinite sig-valid-anim}.sig-forged{color:#ef4444;text-shadow:0 0 8px #ef4444;animation:5s infinite sig-forged-anim}@keyframes sig-unlock{0%,20%{filter:drop-shadow(0 0 6px #22c55e);transform:rotate(0)}35%{filter:drop-shadow(0 0 6px #eab308);transform:rotate(-15deg)}55%,to{filter:drop-shadow(0 0 12px #ef4444);transform:rotate(30deg)}}@keyframes sig-valid-anim{0%,30%{opacity:1}40%,to{opacity:0}}@keyframes sig-forged-anim{0%,40%{opacity:0}50%,to{opacity:1}}.dos-anim{flex-wrap:wrap;justify-content:center;align-items:center;gap:.4rem;padding:.4rem;display:flex}.dos-server{font-size:1.3rem;animation:5s infinite dos-crash}.dos-server:first-child{animation-delay:.1s}.dos-server:nth-child(2){animation-delay:.5s}.dos-server:nth-child(3){animation-delay:.9s}.dos-server:nth-child(4){animation-delay:1.3s}.dos-server:nth-child(5){animation-delay:1.7s}.dos-server:nth-child(6){animation-delay:2.1s}@keyframes dos-crash{0%,12%{filter:none}18%,78%{filter:drop-shadow(0 0 8px #ef4444)sepia()saturate(5)hue-rotate(-30deg)}90%,to{filter:none;opacity:.3}}.patch-btn{color:#ef4444;letter-spacing:.08em;cursor:pointer;background:#ef44441f;border:1px solid #ef444480;border-radius:4px;width:100%;margin-top:.9rem;padding:.65rem;font-size:.82rem;font-weight:700;transition:background .2s;display:block}.patch-btn:hover:not(:disabled){background:#ef444447}.patch-btn:disabled{opacity:.35;cursor:not-allowed}.fix-version{color:#475569;text-align:center;margin-top:.4rem;font-size:.67rem}.bottom-bar{z-index:30;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#030712cc;border-top:1px solid #ffffff0f;justify-content:center;align-items:center;gap:1.5rem;height:3rem;display:flex;position:absolute;bottom:0;left:0;right:0}.bottom-btn{letter-spacing:.08em;cursor:pointer;border-radius:4px;padding:.32rem 1.1rem;font-size:.72rem;font-weight:700;transition:background .15s}.bottom-btn-reset{color:#ef4444;background:#ef44441a;border:1px solid #ef444459}.bottom-btn-reset:hover{background:#ef444438}.bottom-btn-victory{color:gold;background:#ffd7001a;border:1px solid #ffd70059}.bottom-btn-victory:hover{background:#ffd70038}.particles-root{pointer-events:none;z-index:100;position:fixed;inset:0}.particle{border-radius:50%;width:7px;height:7px;animation:1.5s ease-out forwards particle-fly;position:absolute}@keyframes particle-fly{0%{opacity:1;transform:translate(0)scale(1)}to{transform:translate(var(--dx),var(--dy)) scale(0);opacity:0}}.victory-overlay{z-index:40;pointer-events:none;background:#03071280;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.victory-banner{text-align:center}.victory-title{letter-spacing:.05em;background:linear-gradient(90deg,gold,#0f8,gold) 0 0/300% 100%;-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:clamp(1.6rem,4vw,3rem);font-weight:900;animation:2s linear infinite victory-shimmer}.victory-sub{color:#94a3b8;letter-spacing:.12em;-webkit-text-fill-color:#94a3b8;margin-top:.5rem;font-size:1rem}@keyframes victory-shimmer{0%{background-position:0%}to{background-position:300%}}.close-btn{color:#64748b;cursor:pointer;background:0 0;border:none;padding:.2rem;font-size:.95rem;line-height:1;transition:color .15s;position:absolute;top:.6rem;right:.6rem}.close-btn:hover{color:#e2e8f0}
