:root { --bg:#f6f7f9; --card:#fff; --ink:#1d2330; --dim:#6b7280; --line:#d9dde3; --accent:#0b5fa5; --warn:#b45309; --err:#b91c1c; --ok:#15803d; --match:#fff7cc; }
* { box-sizing:border-box; }
body { margin:0; font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif; color:var(--ink); background:var(--bg); }
code { font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-size:.92em; background:#eef1f5; padding:0 .25em; border-radius:3px; white-space:nowrap; }
pre { margin:0; white-space:pre-wrap; font:inherit; }
a { color:var(--accent); }
header.top { display:flex; align-items:baseline; gap:12px; padding:10px 20px; background:#1d2330; color:#fff; }
header.top .brand { color:#fff; font-weight:700; text-decoration:none; font-size:18px; }
header.top .tag { color:#aeb6c4; font-size:13px; }
header.top .user { margin-left:auto; display:flex; gap:10px; align-items:center; color:#aeb6c4; }
button.link { background:none; border:0; color:#9cc3ea; cursor:pointer; font:inherit; padding:0; text-decoration:underline; }
main { max-width:1400px; margin:0 auto; padding:16px 20px 40px; }
.dim { color:var(--dim); }
.warn { color:var(--warn); }
.error { color:var(--err); background:#fef2f2; border:1px solid #fecaca; padding:8px 12px; border-radius:6px; }
form.search .row { display:flex; flex-wrap:wrap; gap:12px; align-items:flex-end; }
form.search label { display:flex; flex-direction:column; gap:4px; font-size:12px; color:var(--dim); }
form.search label.grow { flex:1 1 320px; }
form.search input, form.search select { font:inherit; color:var(--ink); padding:7px 9px; border:1px solid var(--line); border-radius:6px; background:#fff; }
form.search input[type=search] { width:100%; }
form.search button, .login button { font:inherit; padding:8px 18px; border:0; border-radius:6px; background:var(--accent); color:#fff; cursor:pointer; }
form.search .nav { display:flex; justify-content:space-between; gap:12px; margin-top:8px; font-size:13px; }
.snapinfo { font-size:13px; color:var(--dim); margin:12px 0; }
h2 { font-size:17px; margin:18px 0 8px; }
h3 { font-size:14px; margin:14px 0 6px; text-transform:uppercase; letter-spacing:.03em; color:var(--dim); }
h4 { margin:0 0 6px; font-size:15px; }
.hits-head { display:grid; grid-template-columns:minmax(160px,1fr) minmax(110px,1fr) minmax(380px,3fr); gap:10px; padding:2px 12px 6px; font-size:11px; color:var(--dim); text-transform:uppercase; letter-spacing:.03em; }
.lbl { color:var(--dim); font-size:11px; text-transform:uppercase; letter-spacing:.03em; margin-right:4px; }
.devline > .lbl { display:inline-block; min-width:52px; }
details.hit { background:var(--card); border:1px solid var(--line); border-radius:8px; margin-bottom:8px; }
details.hit summary { display:grid; grid-template-columns:minmax(160px,1fr) minmax(110px,1fr) minmax(380px,3fr); gap:10px; padding:8px 12px; cursor:pointer; align-items:start; list-style:none; }
details.hit summary::-webkit-details-marker { display:none; }
details.hit summary .addr { font-weight:600; }
details.hit summary .tariff { font-size:13px; }
details.hit summary .devs { font-size:13px; }
details.hit summary .devline { display:block; }
.kv { white-space:nowrap; margin-right:6px; }
details.hit[open] summary { border-bottom:1px solid var(--line); background:#f3f6fa; }
.card { display:grid; grid-template-columns:minmax(280px,1fr) minmax(320px,1.6fr); gap:18px; padding:12px 16px 16px; }
dl { display:grid; grid-template-columns:max-content 1fr; gap:3px 12px; margin:0; font-size:14px; }
dt { color:var(--dim); }
dd { margin:0; overflow-wrap:anywhere; }
table.mini { border-collapse:collapse; font-size:13px; width:100%; }
table.mini th, table.mini td { text-align:left; padding:3px 8px 3px 0; border-bottom:1px solid var(--line); }
table.mini th { color:var(--dim); font-weight:500; }
.group { border:1px solid var(--line); border-radius:6px; padding:10px 12px; margin-bottom:10px; }
.node { margin-top:8px; padding:8px 10px; border-radius:6px; background:#f8fafc; }
.node.cpe { background:#f4fbf6; }
.node.match { background:var(--match); outline:2px solid #f2c94c; }
ul.orphans { font-size:14px; }
section.login { max-width:360px; margin:60px auto; background:var(--card); border:1px solid var(--line); border-radius:8px; padding:20px 24px; }
section.login form { display:flex; flex-direction:column; gap:10px; }
section.login label { display:flex; flex-direction:column; gap:4px; font-size:13px; color:var(--dim); }
section.login input { font:inherit; padding:8px 10px; border:1px solid var(--line); border-radius:6px; }
@media (max-width:800px) { details.hit summary, .card { grid-template-columns:1fr; } .hits-head { display:none; } }
