:root{--bg:#070d1a;--panel:#0f172a;--panel-2:#152238;--border:#1e293b;--line:#1e293b;--chip-bg:#070d1aeb;--text:#e2e8f0;--muted:#8a96ab;--accent:#4f8cff;--accent-2:#22d3ee;--accent-3:#a78bfa;--green:#34d399;--yellow:#fbbf24;--blue:#60a5fa;--danger:#ff5d73;--red:#ff5d73;--gutter:clamp(18px, 4vw, 48px);--suite-nav-h:44px;--radius-sm:8px;--radius:12px;--radius-lg:18px;--chip-radius:999px;--font-sans:"Segoe UI", system-ui, -apple-system, sans-serif;--font-mono:ui-monospace, Consolas, monospace;--font-size-chip:11px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:var(--font-sans)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}html,body{margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}.suite-nav{z-index:70;height:var(--suite-nav-h);padding:0 var(--gutter);padding-left:max(var(--gutter), env(safe-area-inset-left));padding-right:max(var(--gutter), env(safe-area-inset-right));background:var(--chip-bg);border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);align-items:center;gap:10px;display:flex;position:fixed;top:0;left:0;right:0}.suite-brand{color:var(--text);letter-spacing:.2px;white-space:nowrap;align-items:center;gap:9px;font-size:14px;font-weight:700;text-decoration:none;display:inline-flex}.suite-brand:hover .suite-brand-name{color:var(--accent-2)}.suite-logo{width:26px;height:26px;box-shadow:0 0 0 1px var(--border);border-radius:7px;flex:none}.suite-current{border-left:1px solid var(--border);color:var(--muted);letter-spacing:.2px;white-space:nowrap;align-items:center;gap:7px;margin-left:6px;padding-left:12px;font-size:12px;font-weight:600;display:inline-flex;overflow:hidden}.suite-current-icon{border-radius:5px;flex:none;width:18px;height:18px}.suite-current-name{text-overflow:ellipsis;overflow:hidden}.suite-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.suite-menu{position:relative}.suite-menu summary{cursor:pointer;-webkit-user-select:none;user-select:none;letter-spacing:.3px;color:var(--muted);border:1px solid var(--border);border-radius:var(--chip-radius);background:var(--chip-bg);align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-weight:600;list-style:none;transition:color .16s,border-color .16s;display:inline-flex}.suite-menu summary::-webkit-details-marker{display:none}.suite-menu summary:hover,.suite-menu[open] summary{color:var(--text);border-color:color-mix(in srgb, var(--accent) 55%, var(--border))}.suite-menu-list{background:var(--panel);border:1px solid var(--border);z-index:71;border-radius:12px;min-width:224px;max-height:min(72vh,520px);margin:0;padding:6px;list-style:none;position:absolute;top:calc(100% + 8px);right:0;overflow-y:auto;box-shadow:0 20px 50px #00000080}.suite-menu-list a{color:var(--text);white-space:nowrap;border-radius:8px;align-items:center;gap:10px;padding:8px 10px;font-size:13px;font-weight:500;text-decoration:none;display:flex}.suite-menu-list a:hover{background:color-mix(in srgb, var(--accent) 14%, transparent)}.suite-menu-list img{border-radius:5px;flex:none;width:18px;height:18px}.suite-menu-list li[data-current="1"] a{color:var(--accent-2);font-weight:700}.version-chip{top:calc(var(--suite-nav-h) + 12px);z-index:45;background:var(--chip-bg);border:1px solid var(--border);color:var(--muted);letter-spacing:.4px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);-webkit-user-select:none;user-select:none;cursor:default;border-radius:10px;flex-direction:column;padding:5px 10px;font-size:11px;font-weight:600;line-height:1.35;display:flex;position:fixed;left:12px}.version-chip-line{display:block}.version-chip-date{letter-spacing:.3px;opacity:.85;font-size:10px;font-weight:500}.hit-chip{top:calc(var(--suite-nav-h) + 58px);z-index:45;background:var(--chip-bg);border:1px solid var(--border);color:var(--muted);letter-spacing:.4px;border-radius:var(--chip-radius);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);-webkit-user-select:none;user-select:none;white-space:nowrap;padding:4px 10px;font-size:11px;font-weight:600;text-decoration:none;position:fixed;left:12px}.hit-chip:hover{border-color:var(--accent);color:var(--text)}.feedback-chip{top:calc(var(--suite-nav-h) + 80px);z-index:45;background:var(--chip-bg);border:1px solid var(--border);color:var(--muted);letter-spacing:.4px;border-radius:var(--chip-radius);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);white-space:nowrap;padding:4px 10px;font-size:11px;font-weight:600;text-decoration:none;position:fixed;left:12px}.feedback-chip:hover{border-color:var(--accent);color:var(--text)}.lang-select{top:calc(var(--suite-nav-h) + 114px);z-index:45;background:var(--chip-bg);border:1px solid var(--border);color:var(--muted);letter-spacing:.4px;border-radius:var(--chip-radius);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);cursor:pointer;outline:none;padding:3px 6px;font-size:11px;font-weight:600;position:fixed;left:12px}.lang-select:hover,.lang-select:focus{border-color:var(--accent);color:var(--text)}.lang-select option{background:var(--panel);color:var(--text)}.donate-btn{z-index:60;background:#fff;border-radius:14px;padding:8px;line-height:0;transition:transform .12s,box-shadow .12s;display:inline-block;position:fixed;bottom:18px;left:18px;box-shadow:0 6px 20px #00000059}.donate-btn:hover{transform:translateY(-2px);box-shadow:0 10px 26px #00000073}.donate-img{width:auto;height:47px;display:block}.app-footer{bottom:max(14px, env(safe-area-inset-bottom));z-index:40;max-width:calc(100vw - 2 * var(--gutter));background:var(--chip-bg);border:1px solid var(--border);border-radius:var(--chip-radius);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;padding:5px 14px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.app-footer a,.app-footer span{color:var(--muted);letter-spacing:.4px;font-size:11px;font-weight:600;text-decoration:none}.app-footer a:hover,.app-footer a:focus-visible{color:var(--text);outline:none}.footer-sep{color:var(--border);font-size:11px}.app-footer-privacy,.privacy-indicator{letter-spacing:.4px;white-space:nowrap;align-items:center;gap:6px;font-size:11px;font-weight:600;display:inline-flex}.app-footer-privacy .dot,.privacy-indicator .dot{background:currentColor;border-radius:50%;flex:none;width:7px;height:7px;box-shadow:0 0 6px}.app-footer-privacy.privacy-green,.privacy-indicator.privacy-green{color:var(--green)}.app-footer-privacy.privacy-yellow,.privacy-indicator.privacy-yellow{color:var(--yellow)}.app-footer-privacy.privacy-blue,.privacy-indicator.privacy-blue{color:var(--blue)}@media (width<=640px){.suite-brand-name{display:none}.suite-current-name{max-width:34vw}}@media (prefers-reduced-motion:reduce){.donate-btn{transition:none}}*{box-sizing:border-box}body{color:#e2e8f0;-webkit-font-smoothing:antialiased;background:#070d1a;margin:0;padding:0;font-family:-apple-system,Segoe UI,BlinkMacSystemFont,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:1.5}#root{min-height:100vh}.muted{color:#64748b}.small{font-size:12px}.break-word{overflow-wrap:anywhere}.num{font-variant-numeric:tabular-nums}.app{padding-top:var(--suite-nav-h)}.scene-wrap{min-height:calc(100vh - var(--suite-nav-h));justify-content:center;align-items:flex-start;padding:140px 28px 120px;display:flex}.scene-inner{flex-direction:column;gap:14px;width:100%;max-width:480px;display:flex}.controls-panel{top:calc(var(--suite-nav-h) + 60px);background:#0f172a;border:1px solid #1e293b;border-radius:14px;width:320px;padding:18px;position:fixed;right:24px;box-shadow:0 10px 30px #00000073}.panel-header{align-items:center;gap:8px;margin-bottom:16px;display:flex}.panel-header h1{letter-spacing:.2px;color:#e2e8f0;margin:0;font-size:18px;font-weight:700}.app-icon{width:26px;height:26px}.panel-section{border-top:1px solid #152238;padding:13px 0 15px}.field-label{letter-spacing:.05em;text-transform:uppercase;color:#8a96ab;margin-bottom:6px;font-size:11px;font-weight:600}.text-input{color:#e2e8f0;background:#0b1120;border:1px solid #1e293b;border-radius:8px;outline:none;width:100%;height:34px;padding:0 10px;font-size:13px;transition:border-color .15s}.text-input:hover,.text-input:focus{border-color:#4f8cff}.input-err{border-color:#ff5d73}.mono-input{font-family:Consolas,Menlo,Monaco,Courier New,monospace}.hint{color:#8a96ab;margin-top:5px;font-size:11px}.hint.err{color:#ff5d73}.btn{color:#e2e8f0;text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;background:#1e293b;border:1px solid #1e293b;border-radius:10px;height:40px;padding:0 16px;font-size:14px;line-height:38px;text-decoration:none;display:block}.btn.block{width:100%}.btn.primary{color:#fff;background:#4f8cff;border-color:#4f8cff;font-weight:600}.btn.primary:hover{background:#6b9dff}.btn.busy,.btn:disabled{cursor:wait;opacity:.7}.panel-source{color:#8a96ab;text-align:center;margin:14px 0 0;font-size:11px}.card{background:#0f172a;border:1px solid #1e293b;border-radius:14px;padding:16px;box-shadow:0 4px 16px #00000040}.card h3{color:#e2e8f0;margin:0 0 10px;font-size:15px;font-weight:700}.section-h3{letter-spacing:.08em;text-transform:uppercase;color:#8a96ab;margin:4px 0 0;font-size:13px;font-weight:700}.tbl-wrap{overflow-x:auto}.tbl{border-collapse:collapse;width:100%;font-size:13px}.tbl th{text-align:left;color:#8a96ab;letter-spacing:.04em;white-space:nowrap;border-bottom:1px solid #1e293b;padding:4px 8px;font-size:11px;font-weight:600}.tbl td{vertical-align:top;color:#e2e8f0;border-bottom:1px solid #152238;padding:5px 8px}.tbl tr:last-child td{border-bottom:none}.tbl td.num{text-align:right;color:#8a96ab;white-space:nowrap}.tbl td.data{overflow-wrap:anywhere;min-width:120px;font-family:Consolas,Menlo,Monaco,Courier New,monospace;font-size:12px}.raw{color:#22d3ee;overflow-wrap:anywhere;white-space:pre-wrap;background:#0b1120;border:1px solid #152238;border-radius:8px;margin:0;padding:10px 12px;font-family:Consolas,Menlo,Monaco,Courier New,monospace;font-size:12px}.key-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.key-item{background:#0b1120;border:1px solid #152238;border-radius:8px;flex-direction:column;padding:8px 10px;display:flex}.key-label{letter-spacing:.04em;text-transform:uppercase;color:#8a96ab;margin-bottom:2px;font-size:11px;font-weight:600}.key-value{color:#e2e8f0;overflow-wrap:anywhere;font-family:Consolas,Menlo,Monaco,Courier New,monospace;font-size:13px}.key-value.warn{color:#fbbf24}.key-value.fail{color:#ff5d73}.key-value.pass{color:#4ade80}.key-note{color:#8a96ab;overflow-wrap:anywhere;margin-top:4px;font-family:Consolas,Menlo,Monaco,Courier New,monospace;font-size:11px}.hero{background:#0f172a;border:1px solid #1e293b;border-radius:14px;padding:18px;box-shadow:0 4px 16px #00000040}.hero-addr{color:#e2e8f0;overflow-wrap:anywhere;font-family:Consolas,Menlo,Monaco,Courier New,monospace;font-size:17px;font-weight:700}.target-part{color:#4f8cff}.cyan-part{color:#22d3ee}.accent-part{color:#e2e8f0}.hero-sub{color:#8a96ab;margin-top:2px;font-size:11px}.hero-meta{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.chip{color:#e2e8f0;white-space:nowrap;background:#0b1120;border:1px solid #1e293b;border-radius:12px;padding:3px 10px;font-size:11px;font-weight:600;display:inline-block}.pill{white-space:nowrap;border-radius:12px;padding:2px 10px;font-size:11px;font-weight:700;display:inline-block}.pill.pass{color:#4ade80;background:#4ade8026}.pill.warn{color:#fbbf24;background:#fbbf2426}.pill.fail{color:#ff5d73;background:#ff5d7326}.pill.info{color:#22d3ee;background:#22d3ee26}.sec-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.sec-title{color:#e2e8f0;font-size:15px;font-weight:700}.sec-msgs{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.sec-msg{color:#e2e8f0;align-items:flex-start;gap:8px;font-size:13px;display:flex}.sec-msg-text{overflow-wrap:anywhere}.sec-msg.warn .sec-msg-text{color:#fbbf24}.sec-msg.fail .sec-msg-text{color:#ff5d73}.sec-msg.pass .sec-msg-text{color:#4ade80}.sec-msg.info .sec-msg-text{color:#22d3ee}.dot{border-radius:50%;flex:0 0 8px;width:8px;height:8px;margin-top:6px}.busy-card{background:#0f172a;border:1px solid #1e293b;border-radius:14px;flex-direction:column;align-items:center;gap:14px;padding:44px 20px;display:flex}.spinner{border:3px solid #1e293b;border-top-color:#4f8cff;border-radius:50%;width:34px;height:34px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.note{color:#8a96ab;font-size:11px}.warn{color:#fbbf24;font-size:13px}.doh-notice{background:#fbbf2414;border:1px solid #fbbf2459;border-radius:10px;margin:12px 0;padding:10px 14px}.doh-notice p,.doh-notice .warn{margin:0}.doh-notice .muted.small{margin-top:4px;font-size:11px}.progress-wrap{margin:4px 0 16px}.progress-track{background:#131c30;border:1px solid #1e293b;border-radius:999px;height:6px;overflow:hidden}.progress-fill{background:linear-gradient(90deg,#4f8cff,#22d3ee);height:100%;transition:width .25s ease-out}.progress-meta{color:var(--muted);justify-content:space-between;gap:10px;margin-top:7px;font-size:12px;display:flex}.progress-open{color:#4ade80;font-weight:600}.progress-rate{color:#8b93a7;white-space:nowrap}.range-group{flex-wrap:wrap;gap:6px;display:flex}.range-btn{color:#94a3b8;cursor:pointer;background:#0c1526;border:1px solid #1e293b;border-radius:8px;flex:auto;padding:7px 10px;font-family:inherit;font-size:12px;transition:background .15s,color .15s,border-color .15s}.range-btn:hover:not(:disabled){color:var(--text);border-color:#2c3a52}.range-btn.active{color:#cfe0ff;background:#4f8cff26;border-color:#4f8cff99}.range-btn:disabled{opacity:.5;cursor:default}.btn.stop{color:#ff8a9b;background:#ff5d731f;border:1px solid #ff5d7373}.btn.stop:hover{background:#ff5d7333}.port-list{flex-direction:column;gap:8px;margin:12px 0;display:flex}.port-card{padding:0;overflow:hidden}.port-row{border-left:3px solid #334155;padding:12px 14px;animation:.25s ease-out port-in}.port-row.risk-low{border-left-color:#4ade80}.port-row.risk-medium{border-left-color:#fbbf24}.port-row.risk-high{border-left-color:#ff5d73}@keyframes port-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.port-main{align-items:flex-start;gap:14px;display:flex}.port-num{color:#4f8cff;letter-spacing:.3px;flex:0 0 62px;font-size:19px;font-weight:700}.port-body{flex:1;min-width:0}.port-head{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.port-service{color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:14px;font-weight:600}.port-cat,.port-risk{letter-spacing:.3px;white-space:nowrap;border:1px solid;border-radius:999px;padding:1px 7px;font-size:10px;font-weight:600}.port-use{color:#b6c2d2;margin:6px 0 0;font-size:13px}.port-foot{flex-wrap:wrap;align-items:baseline;gap:6px;margin-top:7px;display:flex}.port-ip{color:#2dd4bf;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.port-foot-sep{color:#334155}.port-refs{border-top:1px solid #16203a;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;padding-top:8px;display:flex}.port-refs-label{color:var(--muted);text-transform:uppercase;letter-spacing:.4px;font-size:11px}.port-ref{color:#4f8cff;border-bottom:1px dotted #4f8cff80;font-size:11px;text-decoration:none}.port-ref:hover{color:#22d3ee;border-bottom-color:#22d3ee}.cat-bars{flex-direction:column;gap:5px;margin-top:12px;display:flex}.cat-bar{color:#94a3b8;align-items:center;gap:8px;font-size:12px;display:flex}.cat-bar-dot{border-radius:50%;flex:0 0 8px;width:8px;height:8px}.cat-bar-label{flex:1}.cat-bar-num{color:var(--text);font-weight:600}.empty-card{text-align:center;padding:44px 22px}.empty-head{text-transform:uppercase;letter-spacing:.6px;color:#4f8cff;margin-bottom:10px;font-size:13px;font-weight:600}.empty-text{color:#94a3b8;max-width:520px;margin:0 auto;font-size:13px}@media (width<=880px){.version-chip{top:calc(var(--suite-nav-h) + 8px);left:8px}.hit-chip{top:calc(var(--suite-nav-h) + 42px);left:8px}.feedback-chip{top:calc(var(--suite-nav-h) + 76px);left:8px}.lang-select{top:calc(var(--suite-nav-h) + 110px);left:8px}.app-footer{left:auto;right:12px;top:calc(var(--suite-nav-h) + 12px);z-index:46;bottom:auto;transform:none}.donate-btn{padding:6px;inset:calc(50% - 52px) auto auto 12px}.donate-img{height:28px}.controls-panel{width:100%;max-width:480px;margin:0 auto -8px;position:relative;top:auto;right:auto}.scene-wrap{padding-top:120px}}@media (width<=400px){.app-footer{right:8px;top:calc(var(--suite-nav-h) + 8px);gap:6px;padding:4px 10px}.hit-chip,.feedback-chip,.lang-select{left:8px}.donate-btn{top:calc(50% - 52px);left:8px}.app-footer span,.app-footer a{font-size:10px}}.overlay{z-index:90;-webkit-backdrop-filter:blur(6px);background:#040812d1;justify-content:center;align-items:center;padding:20px;animation:.16s ease-out overlay-in;display:flex;position:fixed;inset:0}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.overlay-card{background:#0f172a;border:1px solid #1e293b;border-radius:16px;width:100%;max-width:560px;padding:20px;box-shadow:0 24px 60px #0000008c}.overlay-head{align-items:center;gap:16px;display:flex}.overlay-headings{flex:1;min-width:0}.overlay-title{font-size:15px;font-weight:600}.overlay-target{color:#8a96ab;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px}.overlay-ips{color:#4f8cff}.overlay-pct{color:#4f8cff;font-size:26px;font-weight:700;line-height:1}.overlay-track{margin-top:18px}.overlay-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:16px 0 18px;display:grid}.overlay-stat{background:#0b1220;border:1px solid #1e293b;border-radius:10px;flex-direction:column;gap:2px;padding:10px 12px;display:flex}.overlay-stat-value{font-size:17px;font-weight:700}.overlay-stat-value.overlay-open{color:#4ade80}.overlay-stat-label{color:#64748b;font-size:11px;line-height:1.3}.sandclock{flex:none;width:66px;height:92px;overflow:visible}.hg-glass{fill:#4f8cff17;stroke:#4f8cff;stroke-width:1.6px;stroke-linejoin:round}.hg-frame{fill:#475569}.hg-sand-fill{fill:url(#hg-sand)}.hg-stream{fill:#fbbf24;animation:1s ease-in-out infinite hg-stream}@keyframes hg-stream{0%,to{opacity:.25}50%{opacity:1}}.hg-grain{fill:#fcd34d;opacity:0;animation:1.5s linear infinite hg-fall}.hg-grain-2{animation-delay:.5s}.hg-grain-3{animation-delay:1s}@keyframes hg-fall{0%{opacity:0;transform:translateY(0)}15%{opacity:1}85%{opacity:1}to{opacity:0;transform:translateY(48px)}}@media (prefers-reduced-motion:reduce){.hg-stream,.hg-grain{animation:none}.hg-grain{opacity:1;transform:translateY(24px)}.hg-stream{opacity:1}}@media (width<=560px){.overlay-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.overlay-pct{font-size:22px}}
