:root{--bg:#f6f8fc;--panel:#fff;--ink:#172033;--muted:#6f7890;--line:#e5e8ef;--brand:#6f5fd5;--brand2:#5546ba;--soft:#f1efff;--good:#158a62;--warn:#b87900;--bad:#c33f51;--info:#2f6fd6;--shadow:0 8px 28px rgba(26,34,60,.08)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.45 Inter,system-ui,-apple-system,Segoe UI,Arial,sans-serif}.app{display:grid;grid-template-columns:270px 1fr;min-height:100vh}.sidebar{background:#17152d;color:#fff;height:100vh;position:sticky;top:0;overflow:auto;padding:16px 12px}.brand{padding:4px 8px 16px}.brand b{font-size:18px;letter-spacing:.02em}.brand small{display:block;color:#aaa4d2;letter-spacing:.18em;font-size:10px}.grp{color:#8983b5;text-transform:uppercase;letter-spacing:.11em;font-size:10px;padding:12px 10px 4px}.nav{display:flex;align-items:center;gap:9px;padding:8px 11px;border-radius:9px;color:#d9d7eb;text-decoration:none;margin:1px 0;font-size:13px}.nav:hover,.nav.on{background:#2b2851;color:#fff}.nav .count{margin-left:auto;background:var(--brand);border-radius:999px;padding:1px 6px;font-size:10px}.main{min-width:0}.top{height:60px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:0 22px;position:sticky;top:0;z-index:20}.search{flex:1;max-width:560px}.search input{width:100%;border:1px solid var(--line);border-radius:10px;padding:9px 11px;background:#f8f9fc;outline:none}.top .right{margin-left:auto;display:flex;gap:8px;align-items:center}.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--brand);color:#fff;font-weight:800;font-size:13px}.content{padding:24px;max-width:1200px}.head{display:flex;gap:14px;align-items:flex-start;margin-bottom:18px;flex-wrap:wrap}.head h1{font-size:24px;margin:0 0 4px}.head .right{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}.muted{color:var(--muted)}.small{font-size:12px}.grid{display:grid;gap:15px}.g4{grid-template-columns:repeat(4,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g2{grid-template-columns:repeat(2,1fr)}.card{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.pad{padding:17px}.metric .v{font-size:26px;font-weight:850;margin:4px 0}.shead{display:flex;align-items:center;gap:10px;margin-bottom:11px}.shead h2{margin:0;font-size:17px}.chip{display:inline-flex;padding:3px 8px;border-radius:999px;background:#f0f2f6;color:#50596e;font-size:11px;font-weight:700;margin:2px}.chip.good{background:#e8f7f0;color:var(--good)}.chip.warn{background:#fff4dc;color:var(--warn)}.chip.info{background:#edf4ff;color:var(--info)}.chip.bad{background:#fff0f2;color:var(--bad)}.btn{border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 13px;font-weight:700;cursor:pointer;font-size:13px;text-decoration:none;color:var(--ink);display:inline-block}.btn.p{background:var(--brand);border-color:var(--brand);color:#fff}.btn.sm{padding:5px 9px;font-size:12px}.inp,.sel,.ta{width:100%;border:1px solid var(--line);border-radius:10px;padding:9px 11px;background:#fff;outline:none;font:inherit}.ta{min-height:90px;resize:vertical}.field{display:grid;gap:5px;margin-bottom:11px}.field label{font-size:12px;font-weight:750;color:#4b546a}.filters{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:14px;align-items:end}.filters .field{margin-bottom:0;min-width:160px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:#fafbfe}.table{overflow:auto;border:1px solid var(--line);border-radius:12px;background:#fff}.list{display:grid;gap:9px}.item{display:flex;gap:10px;align-items:flex-start;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fff}.grow{flex:1;min-width:0}.call{padding:12px 13px;border-radius:10px;background:#edf4ff;border:1px solid #dbe8ff;color:#335c8c;margin-bottom:14px}.call.warn{background:#fff4dc;border-color:#f4dfa9;color:#795813}.entities{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.entity{padding:16px}.etop{display:flex;gap:10px;align-items:center}.elogo{width:42px;height:42px;border-radius:11px;background:var(--soft);color:var(--brand2);display:grid;place-items:center;font-weight:850;flex-shrink:0}.ename{font-weight:850}.emeta{font-size:12px;color:var(--muted)}.score{font-size:28px;font-weight:900;color:var(--brand2)}.m-pass{color:var(--good);font-weight:800}.m-partial{color:var(--warn);font-weight:800}.m-fail{color:var(--bad);font-weight:800}.m-unknown{color:var(--muted);font-weight:800}.feedpost{padding:16px}.feedpost+.feedpost{border-top:1px solid var(--line)}.modalbg{position:fixed;top:0;right:0;bottom:0;left:0;background:#11142588;z-index:100;padding:24px;overflow:auto;display:grid;place-items:center}.modal{width:min(720px,100%);background:#fff;border-radius:15px;overflow:hidden;box-shadow:0 20px 70px #0003}.mhead,.mfoot{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line)}.mhead h2{margin:0;font-size:17px}.mhead .x{margin-left:auto}.mbody{padding:18px;max-height:70vh;overflow:auto}.mfoot{border-top:1px solid var(--line);border-bottom:0;justify-content:flex-end}.flash{padding:11px 14px;border-radius:10px;margin-bottom:14px;background:#e8f7f0;border:1px solid #bfe6d5;color:var(--good);font-weight:600}.flash.err{background:#fff0f2;border-color:#f3c4cc;color:var(--bad)}.mapbox{height:420px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(135deg,#eaf3ff,#f8f5ff 50%,#eefaf5);position:relative;overflow:hidden}.mapdot{position:absolute;transform:translate(-50%,-50%);background:var(--brand);color:#fff;border-radius:999px;padding:3px 8px;font-size:10px;font-weight:700;cursor:pointer;white-space:nowrap}.loginwrap{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#17152d,#2b2851)}.logincard{width:min(400px,92vw)}.msg{padding:10px 13px;border-radius:10px;background:var(--soft);margin:6px 0}.msg.me{background:#e8f7f0}.banner{font-size:11px;background:#fff4dc;color:#795813;border:1px solid #f4dfa9;border-radius:8px;padding:4px 8px;font-weight:700}@media(max-width:1000px){.g4,.entities{grid-template-columns:repeat(2,1fr)}}@media(max-width:720px){.app{display:block}.sidebar{position:static;height:auto}.search{display:none}.g4,.g3,.g2,.entities{grid-template-columns:1fr}.content{padding:14px}}
