:root{--bg: #0d1117;--panel: #151b23;--panel-2: #1b2330;--line: #273142;--ink: #e6edf3;--muted: #8b98a9;--accent: #5b7cfa;--accent-2: #3b5bdb;--bad: #f04438;--bad-bg: rgba(240, 68, 56, .14);--susp: #f79009;--susp-bg: rgba(247, 144, 9, .14);--good: #12b76a;--good-bg: rgba(18, 183, 106, .14);--unk: #8b98a9;--unk-bg: rgba(139, 152, 169, .12);--radius: 8px;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 Inter,Segoe UI,system-ui,-apple-system,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code,.mono{font-family:JetBrains Mono,ui-monospace,Consolas,monospace;font-size:12px}h1{font-size:22px;margin:0}h2{font-size:16px;margin:0 0 12px}h3{font-size:14px;margin:0 0 8px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.shell{display:grid;grid-template-columns:232px 1fr;min-height:100%}.side{background:var(--panel);border-right:1px solid var(--line);padding:18px 12px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh}.brand{display:flex;gap:10px;align-items:center;padding:4px 8px 18px}.brand svg{flex:none}.brand b{display:block;font-size:15px;letter-spacing:.02em}.brand span{font-size:11px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}.side a.nav{color:var(--muted);padding:8px 10px;border-radius:6px;display:block}.side a.nav:hover{background:var(--panel-2);color:var(--ink);text-decoration:none}.side a.nav.active{background:#5b7cfa24;color:var(--ink)}.side .spacer{flex:1}.side .who{font-size:12px;color:var(--muted);padding:8px 10px;border-top:1px solid var(--line)}.main{padding:24px 28px 48px;min-width:0}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:20px}.page-head p{margin:4px 0 0;color:var(--muted)}.crumbs{font-size:12px;color:var(--muted);margin-bottom:6px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.grid{display:grid;gap:16px}.grid.kpi{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.grid.two{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}.kpi-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}.kpi-card b{display:block;font-size:26px;font-weight:650}.kpi-card span{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.07em}.stack{display:flex;flex-direction:column;gap:16px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.muted{color:var(--muted)}.small{font-size:12px}.right{margin-left:auto}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:var(--panel);font-weight:600;position:sticky;top:0}tbody tr{background:var(--bg)}tbody tr.click{cursor:pointer}tbody tr.click:hover{background:var(--panel-2)}td.summary{max-width:560px;word-break:break-word}td.nowrap,th.nowrap{white-space:nowrap}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.badge.bad{color:var(--bad);background:var(--bad-bg)}.badge.suspicious{color:var(--susp);background:var(--susp-bg)}.badge.good{color:var(--good);background:var(--good-bg)}.badge.unknown{color:var(--unk);background:var(--unk-bg)}.chip{display:inline-block;padding:1px 8px;border-radius:4px;background:var(--panel-2);border:1px solid var(--line);font-size:11px;color:var(--muted)}.chip.attack{color:#a5b4fc;border-color:#a5b4fc4d}.status{font-size:12px;color:var(--muted)}.status.ready{color:var(--good)}.status.error{color:var(--bad)}input,select,textarea{background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:8px 10px;font:inherit}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-2);outline-offset:-1px}textarea{width:100%;min-height:120px;font-family:ui-monospace,Consolas,monospace;font-size:12px}label.field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}label.check{display:flex;gap:8px;align-items:center;font-size:13px}button{font:inherit;border-radius:6px;padding:8px 14px;border:1px solid var(--line);background:var(--panel-2);color:var(--ink);cursor:pointer}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent-2);border-color:var(--accent-2);color:#fff}button.danger{color:var(--bad)}button.sm{padding:4px 10px;font-size:12px}button.bad{background:var(--bad-bg);color:var(--bad);border-color:transparent}button.suspicious{background:var(--susp-bg);color:var(--susp);border-color:transparent}button.good{background:var(--good-bg);color:var(--good);border-color:transparent}.error{color:var(--bad);font-size:13px}.ok{color:var(--good);font-size:13px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px;overflow-x:auto}.tabs button{background:none;border:none;border-bottom:2px solid transparent;border-radius:0;color:var(--muted);padding:10px 14px}.tabs button.on{color:var(--ink);border-bottom-color:var(--accent)}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:20}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(720px,100vw);background:var(--panel);border-left:1px solid var(--line);z-index:21;overflow-y:auto;padding:20px 22px}.modal{position:fixed;top:10vh;left:50%;transform:translate(-50%);width:min(560px,calc(100vw - 32px));background:var(--panel);border:1px solid var(--line);border-radius:10px;z-index:21;padding:20px}dl.kv{display:grid;grid-template-columns:160px 1fr;gap:6px 12px;margin:0;font-size:13px}dl.kv dt{color:var(--muted)}dl.kv dd{margin:0;word-break:break-word}.reason{border-left:3px solid var(--line);padding:6px 10px;margin-bottom:6px;background:var(--bg);border-radius:0 6px 6px 0}.reason.bad{border-left-color:var(--bad)}.reason.suspicious{border-left-color:var(--susp)}.reason.good{border-left-color:var(--good)}.bar{height:8px;border-radius:4px;background:var(--panel-2);overflow:hidden;display:flex}.bar i{display:block;height:100%}.score{font-weight:700;font-variant-numeric:tabular-nums}.login{min-height:100%;display:grid;place-items:center;padding:16px;background:radial-gradient(1200px 600px at 70% -10%,rgba(59,91,219,.25),transparent),var(--bg)}.login form{width:min(380px,100%)}.pre{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:10px 12px;overflow-x:auto;white-space:pre;font-family:ui-monospace,Consolas,monospace;font-size:12px}.pager{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:10px;font-size:12px;color:var(--muted)}.timeline-day{margin:18px 0 6px;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}@media (max-width: 860px){.shell{grid-template-columns:1fr}.side{position:static;height:auto;flex-direction:row;flex-wrap:wrap}.side .spacer,.brand span{display:none}.main{padding:16px}dl.kv{grid-template-columns:1fr}}a.btn,.btn{display:inline-flex;align-items:center;gap:6px;font:inherit;border-radius:6px;padding:8px 14px;border:1px solid var(--line);background:var(--panel-2);color:var(--ink);cursor:pointer;text-decoration:none}a.btn:hover{border-color:var(--accent);text-decoration:none}a.btn.primary{background:var(--accent-2);border-color:var(--accent-2);color:#fff}.panel.empty{text-align:center;padding:32px 20px}.panel.empty p{max-width:620px;margin:0 auto 16px}.collect-grid{display:grid;grid-template-columns:minmax(0,3fr) minmax(280px,2fr);gap:16px;align-items:start}.copybox-inner{position:relative}.copybox .pre{padding-right:96px;white-space:pre-wrap;word-break:break-all;line-height:1.6}.copy-btn{position:absolute;top:6px;right:6px}ol.steps{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}ol.steps li::marker{color:var(--accent);font-weight:700}kbd{border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;padding:0 5px;font-size:11px;background:var(--panel-2)}.hint{font-size:12px;color:var(--muted);background:#5b7cfa12;border:1px solid rgba(91,124,250,.25);border-radius:6px;padding:10px 12px}details>summary{cursor:pointer}.waiting{display:flex;gap:14px;align-items:center;padding:18px;border:1px dashed var(--line);border-radius:var(--radius)}.host-arrival{display:block;color:inherit;border:1px solid var(--line);border-radius:6px;padding:10px 12px;background:var(--bg)}.host-arrival:hover{border-color:var(--accent);text-decoration:none}.spinner{display:inline-block;width:10px;height:10px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .8s linear infinite;vertical-align:-1px}.spinner.big{width:22px;height:22px;color:var(--accent);flex:none}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner{animation-duration:3s}}.status.ingesting,.status.ingested,.status.queued,.status.analyzing{color:var(--accent)}.dropzone{display:block;border:1px dashed var(--line);border-radius:var(--radius);padding:18px;text-align:center;cursor:pointer;color:var(--muted)}.dropzone:hover{border-color:var(--accent);color:var(--ink)}.dropzone input{display:none}.guide-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.guide-step{display:flex;gap:14px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.guide-step .num{flex:none;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--accent-2);color:#fff;font-weight:700}.guide-step h2{margin:4px 0 6px}.guide-step p{margin:0;color:var(--muted);font-size:13px}dl.legend{grid-template-columns:110px 1fr;margin-bottom:10px}.faq{border-bottom:1px solid var(--line);padding:8px 0}.faq summary{font-weight:600}.faq p{margin:6px 0 0;color:var(--muted);font-size:13px}@media (max-width: 860px){.collect-grid{grid-template-columns:1fr}}.lang-switch{display:inline-flex;border:1px solid var(--line);border-radius:6px;overflow:hidden}.lang-switch button{border:none;border-radius:0;padding:3px 10px;font-size:12px;background:transparent;color:var(--muted)}.lang-switch button.on{background:var(--accent-2);color:#fff}
