/* Дашборд статистики (перенесено з «Кернел · статистика збитковості») */

.stats .num{font-variant-numeric:tabular-nums}

/* ---------- controls ---------- */
.stats .bar{
  position:sticky;top:0;z-index:20;background:var(--c-surface);
  border-bottom:1px solid var(--c-line);padding:12px 20px;
  display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-end;
}
.stats .ctl{display:flex;flex-direction:column;gap:4px}
.stats .ctl label{font-size:10px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--c-muted)}
.stats .ctl select, .stats .ctl input{
  font:inherit;font-size:13px;padding:7px 9px;border:1px solid var(--c-line);
  border-radius:var(--rad-sm);background:var(--c-surface);color:var(--c-ink);min-width:132px;
}
.stats .ctl input{min-width:190px}
.stats .ctl select:focus-visible, .stats .ctl input:focus-visible, .stats button:focus-visible{outline:2px solid var(--c-blue);outline-offset:1px}
.stats .reset{
  border:1px solid var(--c-line);background:var(--c-surface);color:var(--c-muted);
  border-radius:var(--rad-sm);padding:7px 12px;font-size:13px;font-weight:650;
}
.stats .reset:hover{border-color:var(--c-blue);color:var(--c-blue)}
.stats .chips{display:flex;flex-wrap:wrap;gap:6px;width:100%}
.stats .chip{
  display:inline-flex;align-items:center;gap:7px;background:var(--c-blue-wash);
  color:var(--c-blue);border:1px solid var(--c-blue-soft);border-radius:999px;
  padding:4px 6px 4px 11px;font-size:12px;font-weight:650;
}
.stats .chip b{font-weight:800}
.stats .chip button{border:0;background:transparent;color:var(--c-blue);font-size:14px;line-height:1;padding:2px 4px;border-radius:50%}
.stats .chip button:hover{background:var(--c-blue-soft)}

/* ---------- kpi strip ---------- */
.stats .kpis{display:grid;grid-template-columns:repeat(4, .stats 1fr);gap:10px;padding:16px 20px 0}
.stats .kpi{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--rad);
  padding:12px 14px;box-shadow:var(--c-shadow)}
.stats .kpi .l{font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--c-muted)}
.stats .kpi .v{font-size:25px;font-weight:800;letter-spacing:-.035em;font-variant-numeric:tabular-nums;margin-top:3px}
.stats .kpi .s{font-size:11.5px;color:var(--c-muted);margin-top:1px}

/* ---------- page body ---------- */
.stats .page{padding:16px 20px 40px;display:flex;flex-direction:column;gap:14px}
.stats .pagehead h2{font-size:19px;font-weight:800}
.stats .pagehead p{margin:3px 0 0;color:var(--c-muted);font-size:13px}
.stats .grid{display:grid;gap:14px}
.stats .g2{grid-template-columns:1fr 1fr}
.stats .g3{grid-template-columns:repeat(3, .stats 1fr)}
.stats .g21{grid-template-columns:1.6fr 1fr}
.stats .card{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--rad);
  box-shadow:var(--c-shadow);overflow:hidden;min-width:0}
.stats .card > h3{padding:13px 16px 0;font-size:13px;font-weight:800;letter-spacing:.03em}
.stats .card > .sub{padding:2px 16px 0;font-size:11.5px;color:var(--c-muted)}
.stats .card .pad{padding:14px 16px}
.stats .empty{padding:26px 16px;text-align:center;color:var(--c-muted-soft);font-size:13px}

/* ---------- tables ---------- */
.stats .tw{overflow:auto;max-height:520px}
.stats table{border-collapse:collapse;width:100%;font-size:13px}
.stats thead th{
  position:sticky;top:0;background:var(--c-surface);z-index:1;
  font-size:10.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;
  color:var(--c-muted);text-align:right;padding:10px 14px;white-space:nowrap;
  border-bottom:1px solid var(--c-line);cursor:pointer;user-select:none;
}
.stats thead th:first-child{text-align:left}
.stats thead th:hover{color:var(--c-blue)}
.stats thead th .ar{opacity:.45;font-size:9px;margin-left:3px}
.stats thead th.sorted{color:var(--c-blue)}
.stats thead th.sorted .ar{opacity:1}
.stats tbody td{padding:8px 14px;border-bottom:1px solid var(--c-line-soft);text-align:right;
  font-variant-numeric:tabular-nums;white-space:nowrap}
.stats tbody td:first-child{text-align:left;white-space:normal;min-width:170px}
.stats tbody tr.click{cursor:pointer}
.stats tbody tr.click:hover{background:var(--c-blue-wash)}
.stats tbody tr.tot td{font-weight:800;background:var(--c-surface-2);border-top:1px solid var(--c-line)}
.stats .minibar{display:block;height:5px;border-radius:3px;background:var(--c-blue);margin-top:4px}

/* ---------- charts ---------- */
.stats svg{display:block;width:100%;height:auto}
.stats .donutwrap{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.stats .donutwrap svg{width:150px;flex:0 0 150px}
.stats .keys{display:flex;flex-direction:column;gap:5px;font-size:12.5px;flex:1;min-width:190px}
.stats .keys button{
  display:flex;align-items:baseline;justify-content:space-between;gap:10px;width:100%;
  border:0;background:transparent;padding:2px 0;text-align:left;color:inherit;border-radius:4px;
}
.stats .keys button:hover{background:var(--c-blue-wash)}
.stats .keys i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:7px;flex:0 0 9px}
.stats .keys .k{color:var(--c-muted);display:flex;align-items:baseline;min-width:0}
.stats .keys .k span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stats .keys .v{font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}

.stats .meter{height:26px;border-radius:6px;background:var(--c-surface-2);display:flex;overflow:hidden}
.stats .meter span{display:block;height:100%}
.stats .mlab{display:flex;justify-content:space-between;font-size:11.5px;font-weight:650;color:var(--c-muted);margin-top:6px}

.stats .pill{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700}
.stats .pill.ok{background:var(--c-lime-soft);color:var(--c-lime-ink)}
.stats .pill.bad{background:var(--v-worse-bg);color:var(--v-worse-ink)}
.stats .pill.warn{background:var(--v-amber-bg);color:var(--v-amber-ink)}

.stats .note{font-size:11.5px;color:var(--c-muted);padding:0 16px 14px;line-height:1.45}

@media (max-width:1100px){
  .kpis{grid-template-columns:repeat(2,1fr)}
  .g2,.g3,.g21{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
