:root { --bg:#f7f7f5; --card:#fff; --ink:#1b1f23; --mut:#5d6670; --line:#e3e4e1; --acc:#0b5cad; --new:#1a7f37; }
* { box-sizing: border-box; }
body { margin:0; font: 15px/1.45 system-ui, -apple-system, "Segoe UI", sans-serif; color:var(--ink); background:var(--bg); }
a { color: var(--acc); text-decoration: none; } a:hover { text-decoration: underline; }
header.top { flex-wrap:wrap; display:flex; gap:16px; align-items:center; padding:10px 20px; background:#fff; border-bottom:1px solid var(--line); position:sticky; top:0; z-index:10; }
header.top .brand { font-weight:700; font-size:18px; color:var(--ink); }
header.top nav { margin-left:auto; display:flex; gap:14px; align-items:center; }
.demo { background:#fff6d6; border-bottom:1px solid #f0e0a0; padding:4px 20px; font-size:13px; }
.layout { display:grid; grid-template-columns: 300px minmax(0,1fr) minmax(0,1fr); gap:0; height: calc(100vh - 80px); }
.filters { padding:16px; border-right:1px solid var(--line); overflow:auto; background:#fff; }
.filters label { display:block; font-size:13px; color:var(--mut); margin:12px 0 4px; }
.filters .row { display:flex; gap:6px; } .filters input, .filters select { width:100%; padding:7px 8px; border:1px solid var(--line); border-radius:6px; font:inherit; background:#fff; }
.filters select[multiple] { height: 160px; }
.btn { display:inline-block; padding:8px 14px; border-radius:6px; border:1px solid var(--acc); background:var(--acc); color:#fff; font:inherit; cursor:pointer; }
.btn.ghost { background:#fff; color:var(--acc); } .btn.small { padding:4px 10px; font-size:13px; }
.results { overflow:auto; padding:12px 16px; }
.results .meta { display:flex; justify-content:space-between; align-items:center; color:var(--mut); margin-bottom:8px; }
.card { background:var(--card); border:1px solid var(--line); border-radius:8px; padding:12px 14px; margin-bottom:10px; }
.card h3 { margin:0 0 4px; font-size:16px; } .card .sub { color:var(--mut); font-size:13px; }
.card .facts { display:flex; flex-wrap:wrap; gap:14px; margin-top:8px; } .card .facts b { font-size:16px; }
.badge { display:inline-block; font-size:11px; padding:1px 7px; border-radius:10px; background:#e6f4ea; color:var(--new); margin-left:6px; vertical-align:middle; }
.badge.dup { background:#eef3fb; color:var(--acc); }
.map { position:relative; border-left:1px solid var(--line); } .map > div { position:absolute; inset:0; }
.pager { display:flex; gap:8px; justify-content:center; margin:12px 0; }
.page { max-width:900px; margin:20px auto; padding:0 16px; }
table.kv { border-collapse:collapse; width:100%; } table.kv td { padding:6px 8px; border-bottom:1px solid var(--line); } table.kv td:first-child { color:var(--mut); width:40%; }
.save { margin-top:18px; padding-top:12px; border-top:1px solid var(--line); }
.note { color:var(--mut); font-size:12px; margin-top:16px; }
.ok { background:#e6f4ea; padding:10px; border-radius:6px; }
@media (max-width: 1000px) { .layout { grid-template-columns: 1fr; height:auto; } .map { height:380px; border-left:0; } .filters { border-right:0; } }
.compare th { text-align:left; padding:8px; vertical-align:top; border-bottom:2px solid var(--line); min-width:200px; }
.compare td:first-child { min-width:160px; }
.admin th { text-align:left; padding:6px 8px; border-bottom:2px solid var(--line); font-size:13px; }
.admin td { vertical-align:top; }
.status { font-size:12px; padding:1px 7px; border-radius:10px; background:#eee; }
.status.ok { background:#e6f4ea; color:#1a7f37; } .status.failed { background:#fdecea; color:#b42318; } .status.partial, .status.held { background:#fff6d6; color:#8a6100; }
.review { display:grid; grid-template-columns: 1fr 1fr 220px; gap:12px; }
.grid2 { display:grid; grid-template-columns:1fr 1fr; gap:0 14px; }
@media (max-width: 1350px) { header.top > span { display:none; } }
.notice { background:#eef3fb; border:1px solid #cfdcf0; padding:10px; border-radius:6px; font-size:13px; margin-top:16px; }
header.top nav a { white-space:nowrap; }
