
:root{
  --bg:#0b1020;
  --panel:#121730;
  --muted:#92a0b3;
  --text:#e9eef7;
  --accent:#6aa9ff;
  --accent2:#6efacc;
  --danger:#ff7d7d;
  --card:#161c38;
  --border:#2a3257;
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, "Helvetica Neue", Arial, "Noto Sans", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  color:var(--text);
  background:linear-gradient(180deg, #0b1020 0%, #0b1428 100%);
}
.header{
  position:sticky; top:0; z-index:10;
  background:rgba(11,16,32,.85); backdrop-filter: blur(8px);
  border-bottom:1px solid var(--border);
}
.header-inner{
  max-width:1200px; margin:0 auto; padding:14px 16px; display:flex; align-items:center; gap:12px;
}
.logo{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,var(--accent),var(--accent2));}
.title{font-weight:700; letter-spacing:.5px}
.nav{margin-left:auto; display:flex; gap:8px; flex-wrap:wrap}
.nav button{
  background:transparent; color:var(--muted);
  border:1px solid var(--border); border-radius:10px; padding:8px 12px; cursor:pointer;
}
.nav button.active{ color:#fff; border-color:var(--accent); box-shadow:0 0 0 1px #000 inset, 0 0 0 1px var(--accent); }
.container{max-width:1200px; margin:20px auto; padding:0 16px 28px 16px;}
.toolbar{
  display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin:12px 0 18px 0;
}
.toolbar .btn, .pill{
  background:var(--panel); border:1px solid var(--border); color:var(--text); cursor:pointer;
  padding:8px 12px; border-radius:10px;
}
.pill{font-size:12px; color:var(--muted);}
.input-file{display:flex; align-items:center; gap:8px}
.input-file input[type=file]{display:none}
.input-file label{cursor:pointer}

.grid{
  display:grid; grid-template-columns:320px 1fr; gap:16px;
}
.sidebar{
  background:var(--panel); border:1px solid var(--border); border-radius:14px; padding:14px 12px; height:100%;
  position:sticky; top:74px; max-height:calc(100vh - 90px); overflow:auto;
}
.sidebar h3{margin:6px 8px 12px 8px; font-size:14px; color:#cfe0ff}
.facet{border-top:1px dashed var(--border); padding:10px 6px}
.facet:first-child{border:none}
.facet .facet-title{display:flex; justify-content:space-between; align-items:center; gap:6px; cursor:pointer; color:#c9d5ee}
.facet .facet-body{margin-top:8px; display:none}
.facet.open .facet-body{display:block}
.facet .chips{display:flex;flex-wrap:wrap; gap:6px}
.facet input[type=number]{width:48%; background:#0c1130; border:1px solid var(--border); color:var(--text); border-radius:8px; padding:6px 8px}

.content{
  display:flex; flex-direction:column; gap:16px;
}
.card{
  background:var(--panel); border:1px solid var(--border); border-radius:14px; padding:12px;
}
.card h3{margin:6px 4px 12px 8px; font-size:15px}
.kpis{display:grid; grid-template-columns:repeat(4,1fr); gap:12px}
.kpi{
  background:var(--card); border:1px solid var(--border); border-radius:12px; padding:12px 12px 10px 12px;
}
.kpi .label{color:var(--muted); font-size:12px}
.kpi .value{font-size:22px; font-weight:700; margin-top:8px}
.charts-grid{display:grid; grid-template-columns:repeat(2, 1fr); gap:12px}
#grid{background:var(--panel); border:1px solid var(--border); border-radius:14px}

.section{display:none}
.section.active{display:block}

.controls{display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:2px 0 8px 0}
select, input[type=text]{
  background:#0c1130; border:1px solid var(--border); color:var(--text);
  border-radius:10px; padding:8px 10px;
}
.help{color:var(--muted); font-size:12px}
.footer{opacity:.75; text-align:center; margin-top:18px; font-size:12px; color:var(--muted)}
.small-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:8px}
.chart{height:280px}
.small{height:180px}
.badge{background:#0c1130; border:1px solid var(--border); color:var(--muted); padding:2px 6px; border-radius:999px; font-size:12px}
hr.sep{border:none; border-top:1px dashed var(--border); margin:8px 0 12px 0}
.empty{padding:18px; text-align:center; color:var(--muted)}
