/* shukut 暗色看板 tokens · A股红涨绿跌 · 纯 CSS，无外网依赖 */
:root {
  --dash-bg: #0e1117;
  --dash-card: #171c24;
  --dash-line: #2a3340;
  --dash-text: #e8edf2;
  --dash-muted: #9aa6b2;
  --dash-up: #ff4d4f;      /* 涨 / 净买 */
  --dash-down: #3dd68c;    /* 跌 / 净卖 */
  --dash-gold: #f5c451;
  --dash-info: #8fb4d6;
  --dash-track: #10151c;
  --dash-radius: 14px;
}

body.desk-dash,
.desk-dash {
  background: var(--dash-bg);
  color: var(--dash-text);
}

.kpi-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  max-width: 1180px;
  margin: 12px auto;
  padding: 0 12px;
}
@media (max-width: 720px) {
  .kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

.kpi {
  background: var(--dash-card);
  border: 1px solid var(--dash-line);
  border-radius: var(--dash-radius);
  padding: 14px 16px;
  text-align: left;
}
.kpi .k-label {
  display: block;
  font-size: 12px;
  font-weight: 700;
  color: var(--dash-muted);
  letter-spacing: 0.04em;
  margin-bottom: 6px;
}
.kpi .k-value {
  display: block;
  font-size: 22px;
  font-weight: 800;
  color: var(--dash-gold);
  line-height: 1.2;
}
.kpi .k-sub {
  display: block;
  margin-top: 4px;
  font-size: 12px;
  color: var(--dash-muted);
}
.kpi.up .k-value { color: var(--dash-up); }
.kpi.down .k-value { color: var(--dash-down); }

.dash-card {
  background: var(--dash-card);
  border: 1px solid var(--dash-line);
  border-radius: var(--dash-radius);
  margin: 14px auto;
  max-width: 1180px;
  padding: 4px 4px 10px;
}
.dash-card > .hd {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 14px 14px 6px;
  gap: 12px;
}
.dash-card > .hd b {
  font-size: 17px;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--dash-text);
}
.dash-card .cnt {
  font-size: 18px;
  font-weight: 800;
  color: var(--dash-gold);
  min-width: 48px;
  text-align: center;
  padding: 4px 12px;
  border-radius: 10px;
  background: var(--dash-track);
  border: 1px solid var(--dash-line);
}
.dash-card .rule {
  padding: 0 14px 10px;
  color: var(--dash-muted);
  font-size: 13px;
  line-height: 1.55;
}
.dash-card .wrap { overflow-x: auto; padding: 0 8px 10px; }
.dash-card .busy {
  padding: 12px 14px 14px;
  color: var(--dash-gold);
  font-weight: 700;
  font-size: 14px;
}

/* 表：无竖线，仅横向分隔 */
.dash-card table,
table.dash-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.dash-card th,
.dash-card td,
table.dash-table th,
table.dash-table td {
  text-align: left;
  padding: 9px 10px;
  white-space: nowrap;
  border-bottom: 1px solid var(--dash-line);
  border-left: 0;
  border-right: 0;
  vertical-align: middle;
}
.dash-card th,
table.dash-table th {
  color: var(--dash-muted);
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.06em;
  background: transparent;
}
.dash-card tr:last-child td,
table.dash-table tr:last-child td { border-bottom: 0; }
.dash-card tr:nth-child(even) td { background: rgba(255,255,255,0.02); }

.up, .dash-up { color: var(--dash-up) !important; font-weight: 700; }
.down, .dash-down { color: var(--dash-down) !important; font-weight: 700; }
.muted, .dash-muted { color: var(--dash-muted); }

.tag {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 800;
  margin-right: 6px;
  background: rgba(245, 196, 81, 0.12);
  color: var(--dash-gold);
  border: 1px solid rgba(245, 196, 81, 0.28);
}
.tag.up { background: rgba(255, 77, 79, 0.12); color: var(--dash-up); border-color: rgba(255, 77, 79, 0.3); }
.tag.down { background: rgba(61, 214, 140, 0.12); color: var(--dash-down); border-color: rgba(61, 214, 140, 0.3); }
.tag.info { background: rgba(143, 180, 214, 0.12); color: var(--dash-info); border-color: rgba(143, 180, 214, 0.28); }

/* 横向条 */
.hbar, .dash-hbar {
  display: grid;
  grid-template-columns: 72px 1fr 48px;
  gap: 8px;
  align-items: center;
  margin: 6px 0;
  font-size: 12px;
  color: var(--dash-muted);
}
.hbar .track, .dash-hbar .track, .hbar-track {
  height: 10px;
  background: var(--dash-track);
  border: 1px solid var(--dash-line);
  border-radius: 999px;
  overflow: hidden;
}
.hbar .fill, .dash-hbar .fill, .hbar-fill {
  height: 100%;
  border-radius: 999px;
  background: linear-gradient(90deg, #8a6a20, var(--dash-gold));
}
.hbar .fill.up, .hbar-fill.up { background: linear-gradient(90deg, #8f2a2a, var(--dash-up)); }
.hbar .fill.down, .hbar-fill.down { background: linear-gradient(90deg, #1f8f5f, var(--dash-down)); }

/* 纵向柱组 */
.vbar-wrap, .dash-vbar {
  display: flex;
  align-items: flex-end;
  gap: 10px;
  height: 120px;
  padding: 8px 4px 0;
}
.vbar-col {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  height: 100%;
  justify-content: flex-end;
  min-width: 36px;
}
.vbar-col .bar {
  width: 70%;
  max-width: 28px;
  border-radius: 6px 6px 2px 2px;
  background: var(--dash-gold);
  min-height: 4px;
}
.vbar-col .bar.up { background: linear-gradient(180deg, var(--dash-up), #8f2a2a); }
.vbar-col .bar.down { background: linear-gradient(180deg, var(--dash-down), #1f8f5f); }
.vbar-col .lab {
  margin-top: 6px;
  font-size: 11px;
  color: var(--dash-muted);
  text-align: center;
  white-space: nowrap;
}
.vbar-col .val {
  font-size: 11px;
  font-weight: 700;
  margin-bottom: 4px;
}

.score-bars { padding: 4px 0; }
.score-bars .hbar { grid-template-columns: 56px 1fr 36px; margin: 3px 0; }

.spark-svg { display: block; width: 100%; height: 44px; }

.gauge-wrap { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin: 10px 0; }
.gauge-svg { flex: 0 0 auto; }

.pass-bar-wrap { padding: 0 14px 8px; }
