:root{
  --bg:#0b1018; --panel:#121a26; --panel2:#0f1622; --border:#213146;
  --text:#e7edf5; --muted:#8a97a8; --accent:#3b82f6; --accent2:#2563eb;
  --green:#19c37d; --red:#ff5d6c; --amber:#f7b955;
  --radius:12px;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--text);
  font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;font-size:14px}

/* ---------- login ---------- */
.login-bg{display:flex;align-items:center;justify-content:center;height:100vh}
.login-card{background:var(--panel);border:1px solid var(--border);
  border-radius:16px;padding:34px 30px;width:340px;box-shadow:0 20px 60px #0008}
.login-card .brand{text-align:center;margin-bottom:18px}
.login-card h1{font-size:20px;margin:10px 0 2px}
.login-card .sub{color:var(--muted);font-size:12px}
.login-card label{display:block;margin:14px 0 6px;color:var(--muted);font-size:12px}
.login-card input{width:100%;padding:10px 12px;background:var(--panel2);
  border:1px solid var(--border);border-radius:8px;color:var(--text)}
.login-card button{width:100%;margin-top:20px;padding:11px;border:none;
  border-radius:8px;background:var(--accent);color:#fff;font-weight:600;cursor:pointer}
.login-card .error{background:#3a1520;color:var(--red);padding:8px 10px;
  border-radius:8px;font-size:13px;margin-top:8px}
.login-card .foot{text-align:center;color:var(--muted);font-size:11px;margin-top:18px}
.logo{width:44px;height:44px;border-radius:12px;margin:0 auto;
  background:linear-gradient(135deg,var(--accent),#7c3aed);color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px}

/* ---------- app shell ---------- */
.app{max-width:1500px;margin:0 auto;padding:14px}
.topbar{display:flex;justify-content:space-between;align-items:center;
  padding:10px 14px;background:var(--panel);border:1px solid var(--border);
  border-radius:var(--radius);margin-bottom:12px}
.brand{display:flex;align-items:center;gap:12px}
.brand h1{font-size:17px;margin:0}
.brand .sub{color:var(--muted);font-size:11px}
.top-right{display:flex;align-items:center;gap:10px}
.user{color:var(--muted);font-size:12px}
.pill{display:flex;align-items:center;gap:7px;background:var(--panel2);
  border:1px solid var(--border);border-radius:20px;padding:6px 12px;font-size:12px}
.dot{width:9px;height:9px;border-radius:50%;background:var(--muted)}
.dot.green{background:var(--green);box-shadow:0 0 8px var(--green)}
.dot.red{background:var(--red);box-shadow:0 0 8px var(--red)}

/* ---------- layout ---------- */
.layout{display:grid;grid-template-columns:320px 1fr;gap:12px;align-items:start}
.panel{background:var(--panel);border:1px solid var(--border);
  border-radius:var(--radius);padding:16px}
.panel h2{font-size:15px;margin:0 0 6px}
.hint{color:var(--muted);font-size:12px;line-height:1.5;margin:0 0 12px}

/* ---------- conditions ---------- */
.cond-list{display:flex;flex-direction:column;gap:9px}
.cond{display:flex;align-items:flex-start;gap:11px;padding:11px 12px;
  border:1px solid var(--border);border-radius:10px;background:var(--panel2);
  cursor:pointer;transition:.15s}
.cond:hover{border-color:#31517f;background:#0f1a2a}
.cond:has(input:checked){border-color:var(--accent);background:#10203a}
.cond-num{flex:0 0 22px;width:22px;height:22px;border-radius:6px;
  display:flex;align-items:center;justify-content:center;font-size:12px;
  font-weight:800;background:#1c2a3d;color:var(--muted);margin-top:1px}
.cond:has(input:checked) .cond-num{background:var(--accent);color:#fff}
.cond-text{flex:1;min-width:0}
.cond input{margin:2px 0 0;accent-color:var(--accent);width:17px;height:17px;flex:0 0 auto}
.cond-name{display:block;font-weight:600;font-size:13px}
.cond-desc{display:block;color:var(--muted);font-size:11px;line-height:1.5;margin-top:3px}
.cond-tools{display:flex;gap:8px;margin:12px 0}
.scan-actions{margin:6px 0 4px}

/* ---------- buttons ---------- */
.btn{border:1px solid var(--border);background:var(--panel2);color:var(--text);
  padding:8px 14px;border-radius:8px;cursor:pointer;font-size:13px;font-weight:600}
.btn:hover{border-color:var(--accent)}
.btn.ghost{background:transparent}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.primary:hover{background:var(--accent2)}
.btn.danger{background:var(--red);border-color:var(--red);color:#fff}
.btn.big{width:100%;padding:12px;font-size:15px}
.btn.tiny{padding:5px 12px;font-size:12px}
.btn:disabled{opacity:.5;cursor:not-allowed}

/* ---------- plan box ---------- */
.plan-box{margin-top:16px;padding:12px;border:1px dashed var(--border);border-radius:10px}
.plan-box h3{font-size:13px;margin:0 0 8px;color:var(--amber)}
.plan-box ul{margin:0 0 8px;padding-left:18px;color:var(--muted);font-size:12px;line-height:1.7}
.plan-box b{color:var(--text)}

/* ---------- scan head / progress ---------- */
.scan-stats{display:flex;gap:10px;margin-bottom:12px}
.stat{flex:1;background:var(--panel2);border:1px solid var(--border);
  border-radius:10px;padding:10px 12px;text-align:center}
.stat-num{display:block;font-size:24px;font-weight:800}
.stat-lbl{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.5px}
.stat.found .stat-num{color:var(--green)}
.stat.err .stat-num{color:var(--amber)}
.scan-msg{display:flex;align-items:center;gap:10px;color:var(--muted);
  font-size:13px;margin-bottom:10px;min-height:20px}
.scan-current{color:var(--accent);font-weight:600}
.spinner{width:16px;height:16px;border:2px solid var(--border);
  border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.progress-track{height:8px;background:var(--panel2);border-radius:6px;overflow:hidden;margin-bottom:14px}
.progress-bar{height:100%;width:0;border-radius:6px;
  background:linear-gradient(90deg,var(--accent),#7c3aed);transition:width .3s}

/* ---------- results table ---------- */
.table-wrap{overflow:auto;max-height:calc(100vh - 250px);border:1px solid var(--border);border-radius:10px}
table.grid{width:100%;border-collapse:collapse;font-size:12.5px}
table.grid th{position:sticky;top:0;background:var(--panel2);color:var(--muted);
  text-align:right;padding:9px 10px;font-weight:600;font-size:11px;
  text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid var(--border);z-index:1}
table.grid th.l,table.grid td.l{text-align:left}
table.grid td{padding:9px 10px;text-align:right;border-bottom:1px solid #1a2636}
table.grid tbody tr:hover{background:#16202e}
table.grid tr.empty td{text-align:center;color:var(--muted);padding:26px}
.sym{font-weight:700}
.sym small{display:block;color:var(--muted);font-weight:400;font-size:10.5px;
  max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pos{color:var(--green)} .neg{color:var(--red)}
.chips{display:flex;gap:3px;justify-content:flex-end;flex-wrap:wrap}
.chip{padding:2px 6px;border-radius:5px;font-size:10px;font-weight:700;
  background:#1c2a3d;color:var(--muted)}
.chip.on{background:#123a2a;color:var(--green)}
.newrow{animation:flash .8s ease}
@keyframes flash{from{background:#123a2a}to{background:transparent}}

/* ---------- modal ---------- */
.modal-backdrop{position:fixed;inset:0;background:#0009;display:flex;
  align-items:center;justify-content:center;z-index:50}
.modal{background:var(--panel);border:1px solid var(--border);border-radius:14px;
  width:440px;max-width:94vw;max-height:90vh;overflow:auto}
.modal-head{display:flex;justify-content:space-between;align-items:center;
  padding:16px 18px;border-bottom:1px solid var(--border)}
.modal-head h2{margin:0;font-size:16px}
.modal .x{background:none;border:none;color:var(--muted);font-size:24px;cursor:pointer}
.modal-body{padding:18px}
.modal-body label{display:block;margin:12px 0 6px;color:var(--muted);font-size:12px}
.modal-body input{width:100%;padding:9px 11px;background:var(--panel2);
  border:1px solid var(--border);border-radius:8px;color:var(--text)}
.modal-body hr{border:none;border-top:1px solid var(--border);margin:20px 0}
.modal-body h3{font-size:14px;margin:0 0 6px}
.modal-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.modal-msg{margin-top:12px;font-size:12.5px;min-height:18px}
.modal-msg.ok{color:var(--green)} .modal-msg.err{color:var(--red)}
.uni-info{background:var(--panel2);border:1px solid var(--border);border-radius:8px;
  padding:10px;font-size:12.5px;margin-bottom:10px;line-height:1.6}

@media(max-width:900px){.layout{grid-template-columns:1fr}}
