/* ============================================================
   小老虎集团江西公司 · 大屏看板布局
   目标：1920×1080 全屏一屏展示，信息密度优先
   ============================================================ */

/* ---------- 顶部与基础 ---------- */

.season-chip {
  margin-left: 4px;
  padding: 5px 12px;
  font-size: 10.5px;
  letter-spacing: 0.6px;
  color: #9fb0cc;
  border: 1px solid rgba(150, 178, 230, 0.16);
  border-radius: 999px;
  white-space: nowrap;
}

.topbar {
  height: 68px;
  padding: 0 26px;
}

.topbar::after { left: 26px; right: 26px; }
.brand-logo { width: 40px; height: 40px; }
.brand-title { font-size: 15.5px; }
.brand-sub { font-size: 8.5px; letter-spacing: 2.2px; }

.dash {
  max-width: 1780px;
  margin: 0 auto;
  padding: 24px 26px 32px;
}

/* ---------- 标题条 + 赛季目标 ---------- */

.board-strip {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 14px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--line-soft);
}

.strip-left { min-width: 0; }
.strip-title {
  margin: 0;
  font-size: 22px;
  font-weight: 700;
  letter-spacing: 1px;
  color: #fff;
}

.strip-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin-top: 7px;
  font-size: 10.5px;
  letter-spacing: 0.3px;
  color: #7f92b2;
}
.strip-meta b { font-family: var(--font-num); font-weight: 500; color: #dbe8ff; letter-spacing: 0.5px; }
.strip-meta .dot-sep { width: 3px; height: 3px; }

.strip-target {
  flex: none;
  width: 340px;
  padding: 9px 14px 10px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: linear-gradient(160deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.012));
}

.st-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; font-size: 9.5px; letter-spacing: 1.2px; color: #8a9cbc; }
.st-head b { font-family: var(--font-num); font-size: 20px; font-weight: 600; letter-spacing: 0.4px; color: #fff; line-height: 1; }
.st-head b small { margin-left: 1px; font-size: 9px; font-weight: 400; color: #8a9cbc; }
.st-bar { height: 3px; margin: 8px 0 6px; border-radius: 999px; background: rgba(255, 255, 255, 0.07); overflow: hidden; }
.st-bar i {
  display: block;
  width: 0;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--accent), var(--cyan));
  box-shadow: 0 0 14px rgba(var(--accent-rgb), 0.5);
  transition: width 1.2s cubic-bezier(0.22, 1, 0.36, 1);
}
.st-foot { display: flex; justify-content: space-between; gap: 10px; font-size: 9px; color: #7184a6; }
.st-foot b { font-family: var(--font-num); font-weight: 500; color: #c9d8f0; }

/* ---------- KPI ---------- */

.kpi-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}

.kpi {
  padding: 13px 16px 12px;
  border-radius: 14px;
  box-shadow: none;
}

.kpi::before { left: 16px; right: 16px; }
.kpi-head { gap: 8px; }
.kpi-label { font-size: 9.5px; letter-spacing: 1.6px; gap: 7px; }
.kpi-idx { font-size: 9px; }

.kpi-value {
  margin: 7px 0 5px;
  font-size: 30px;
  font-weight: 600;
}
.kpi-value small { font-size: 10px; }
.kpi-value .num.is-muted { font-size: 17px; }

.kpi-foot {
  font-size: 9.5px;
  letter-spacing: 0.2px;
  line-height: 1.45;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.kpi-progress { height: 2px; margin-top: 8px; }

/* ---------- 主看板网格 ---------- */

.board {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  min-width: 0;
}

.board .panel {
  padding: 14px 16px 16px;
  border-radius: 15px;
  min-width: 0;
}

.board .panel-head { margin-bottom: 10px; gap: 12px; }
.board .panel-head h2 { font-size: 14px; gap: 8px; }
.board .panel-head h2::before { height: 12px; width: 2px; }
.board .panel-head p { margin-top: 3px; font-size: 9.5px; letter-spacing: 0.3px; }
.board .panel-tag { padding: 3px 8px; font-size: 8px; letter-spacing: 1px; }
.board .panel-body { min-width: 0; }

/* ---------- 双组对决 ---------- */

.duel-head {
  display: grid;
  grid-template-columns: 1fr 48px 1fr;
  align-items: center;
  gap: 8px;
  width: 100%;
  max-width: 900px;
  margin: 0 auto;
}

.duel-team {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
}
.duel-team.right { flex-direction: row-reverse; text-align: right; }

.duel-badge {
  width: 32px;
  height: 32px;
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-num);
  font-size: 14px;
  font-weight: 600;
  color: var(--g, var(--accent));
  background: rgba(255, 255, 255, 0.045);
  border: 1px solid rgba(255, 255, 255, 0.13);
  border-radius: 9px;
}

.duel-name { min-width: 0; }
.duel-name b {
  display: block;
  font-size: 13.5px;
  font-weight: 600;
  color: #fff;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.duel-name small {
  display: block;
  margin-top: 2px;
  font-size: 8.5px;
  letter-spacing: 1px;
  color: #7184a6;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.duel-rank {
  flex: none;
  padding: 2px 7px;
  font-size: 8.5px;
  letter-spacing: 0.6px;
  color: #8ea1c1;
  border: 1px solid var(--line);
  border-radius: 999px;
  white-space: nowrap;
}
.duel-rank.is-champion { color: var(--gold); border-color: rgba(242, 198, 109, 0.34); background: rgba(242, 198, 109, 0.07); }

.duel-vs {
  justify-self: center;
  font-family: var(--font-num);
  font-size: 11px;
  letter-spacing: 1px;
  color: #5f7294;
}

.duel-score {
  display: grid;
  grid-template-columns: 1fr 66px 1fr;
  align-items: center;
  gap: 8px;
  width: 100%;
  max-width: 900px;
  margin: 12px auto 10px;
}

.ds-side { min-width: 0; }
.ds-side.right { text-align: right; }
.ds-value { font-family: var(--font-num); font-size: 34px; font-weight: 600; line-height: 1; letter-spacing: 0.5px; color: #fff; }
.ds-value small { margin-left: 2px; font-size: 10px; font-weight: 400; color: #8a9cbc; }

.ds-bar { height: 4px; margin: 7px 0 5px; border-radius: 999px; background: rgba(255, 255, 255, 0.06); overflow: hidden; }
.ds-bar i {
  display: block;
  width: 0;
  height: 100%;
  border-radius: inherit;
  background-color: var(--g, var(--accent));
  background-image: linear-gradient(90deg, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 75%);
  transition: width 1.1s cubic-bezier(0.22, 1, 0.36, 1);
}
.ds-share { font-size: 8.5px; color: #7184a6; }
.ds-mid { text-align: center; font-size: 8.5px; letter-spacing: 1.6px; color: #667a9c; }

.duel-rows { display: flex; flex-direction: column; width: 100%; max-width: 900px; margin: 0 auto; }
.duel-row {
  display: grid;
  grid-template-columns: 1fr 88px 1fr;
  align-items: center;
  gap: 8px;
  padding: 5px 0;
  font-size: 10.5px;
  border-top: 1px solid rgba(150, 178, 230, 0.05);
}
.duel-row b { font-family: var(--font-num); font-weight: 500; color: #dbe8ff; }
.duel-row b.a { text-align: right; }
.duel-row b.b { text-align: left; }
.duel-row span { text-align: center; font-size: 9px; color: #7184a6; letter-spacing: 0.3px; }

.group-mini-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.group-mini { padding: 10px 12px; border: 1px solid var(--line-soft); border-radius: 10px; background: rgba(255, 255, 255, 0.02); }
.group-mini .gm-head { display: flex; align-items: center; gap: 8px; font-size: 12px; }
.group-mini .gm-nums { display: flex; gap: 14px; margin-top: 8px; }
.group-mini .gm-nums div { display: flex; flex-direction: column; gap: 2px; }
.group-mini .gm-nums b { font-family: var(--font-num); font-size: 15px; font-weight: 600; }
.group-mini .gm-nums span { font-size: 8.5px; color: #7184a6; }

/* ---------- 趋势 ---------- */

.chart-summary {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 14px;
  margin-bottom: 6px;
  font-size: 9.5px;
  color: #7f92b2;
}
.chart-summary b { font-family: var(--font-num); font-size: 11px; font-weight: 500; color: #dbe8ff; }

.chart-box { min-height: 160px; aspect-ratio: 840 / 232; }

/* ---------- 个人榜 ---------- */

.rank-conv {
  font-family: var(--font-num);
  font-size: 10px;
  font-weight: 500;
  color: #7f92b2;
  text-align: right;
  white-space: nowrap;
}

.rank-row {
  grid-template-columns: 26px minmax(0, 1fr) minmax(56px, 1fr) 42px 48px;
  gap: 8px;
  padding: 6px 8px;
}

.rank-row.is-1 { background: rgba(242, 198, 109, 0.055); }
.rank-row.is-2 { background: rgba(200, 212, 230, 0.035); }
.rank-row.is-3 { background: rgba(215, 154, 107, 0.045); }
.rank-row.is-1 .rank-no { color: var(--gold); }
.rank-row.is-2 .rank-no { color: var(--silver); }
.rank-row.is-3 .rank-no { color: var(--bronze); }
.rank-row.is-1 .rank-who b { color: #fff; }

.rank-no { font-size: 12px; }
.rank-who { gap: 6px; }
.rank-who b { font-size: 12px; }
.rank-who span { font-size: 9px; }
.rank-val b { font-size: 13px; }
.rank-bar { height: 3px; }

.role-tag {
  flex: none;
  display: inline-flex;
  align-items: center;
  height: 14px;
  padding: 0 5px;
  border-radius: 4px;
  font-style: normal;
  font-size: 8px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.02em;
  vertical-align: middle;
}

.role-tag.is-dir {
  color: #ffcf72;
  background: rgba(255, 190, 70, 0.12);
  border: 1px solid rgba(255, 190, 70, 0.24);
}

.role-tag.is-member {
  color: #9fc0ee;
  background: rgba(90, 162, 255, 0.1);
  border: 1px solid rgba(90, 162, 255, 0.2);
}

/* ---------- 总监 ---------- */

.dir-row { grid-template-columns: 22px minmax(0, 1fr) 54px; gap: 9px; padding: 7px 9px; border-radius: 10px; }
.dir-rank { width: 20px; height: 20px; font-size: 10px; border-radius: 6px; }
.dir-name { font-size: 12px; }
.dir-name span { font-size: 9px; }
.dir-bar { height: 3px; margin-top: 6px; }
.dir-meta { gap: 9px; margin-top: 4px; font-size: 8.5px; }
.dir-num { font-size: 15px; }
.dir-num small { font-size: 8.5px; }

.dir-total {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid var(--line-soft);
  font-size: 9px;
  color: #7184a6;
}
.dir-total b { font-family: var(--font-num); font-size: 11px; font-weight: 500; color: #cddbf1; }
.dir-total span { margin-right: auto; letter-spacing: 1px; }

/* ---------- 转化环 ---------- */

.panel-ring .panel-body { display: flex; flex-direction: column; justify-content: center; }
.panel-ring .ring-wrap { width: 150px; height: 150px; margin: 2px auto 4px; }
.panel-ring .ring-center b { font-size: 32px; }
.panel-ring .ring-center b small { font-size: 11px; }
.panel-ring .ring-center span { font-size: 8.5px; letter-spacing: 1.2px; }
.panel-ring .ring-stats { margin-top: 0; padding-top: 10px; }
.panel-ring .ring-stats b { font-size: 14px; }
.panel-ring .ring-stats span { font-size: 8.5px; }
.panel-ring .ring-note {
  margin-top: 8px;
  text-align: center;
  font-size: 8.5px;
  color: #667a9c;
}

/* ---------- 客资 ---------- */

.lead-group { padding: 9px 11px; margin-bottom: 6px; border-radius: 10px; }
.lg-head { font-size: 11px; }
.lg-head .lg-total { font-size: 15px; }
.lg-bar { height: 4px; margin: 8px 0 6px; }
.lg-foot { gap: 10px; font-size: 8.5px; }
.lg-foot b { font-size: 9.5px; }

.mini-divider { margin: 9px 0 7px; font-size: 8px; letter-spacing: 1.6px; }

.source-list { display: flex; flex-direction: column; gap: 5px; }
.source-row {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr) 42px;
  align-items: center;
  gap: 8px;
  font-size: 9.5px;
}
.source-name { color: #a9bbd8; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.source-bar { height: 4px; border-radius: 999px; background: rgba(255, 255, 255, 0.06); overflow: hidden; }
.source-bar i {
  display: block;
  width: 0;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, rgba(var(--accent-rgb), 0.9), rgba(58, 217, 242, 0.7));
  transition: width 1s cubic-bezier(0.22, 1, 0.36, 1);
}
.source-val { display: flex; align-items: baseline; justify-content: flex-end; gap: 2px; font-family: var(--font-num); font-size: 10px; color: #cddbf1; }
.source-val span { font-size: 8px; color: #667a9c; }

/* ---------- 表格 / 战报 ---------- */

.board .table-wrap { max-height: 430px; }
.board table.dt { font-size: 11px; }
.board table.dt thead th { padding: 7px 10px; font-size: 8.5px; }
.board table.dt tbody td { padding: 7px 10px; }
.board .cell-rank { width: 36px; }
.board .tag { font-size: 8.5px; padding: 2px 7px; }
.board .feed { max-height: 430px; }
.board .feed-row { padding: 7px 5px; gap: 8px; }
.board .feed-ico { width: 21px; height: 21px; font-size: 9px; }
.board .feed-title { font-size: 10.5px; }
.board .feed-meta { margin-top: 2px; font-size: 8.5px; }
.board .feed-date { font-size: 8.5px; }

/* ---------- 中等屏幕：两列 ---------- */

@media (min-width: 900px) and (max-width: 1399px) {
  .board { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .panel-duel, .panel-trend, .panel-table { grid-column: span 2; }
  .kpi-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ---------- 大屏全屏模式：一屏展示 ---------- */

@media (min-width: 1400px) and (min-height: 800px) {
  body.dashboard-body { height: 100vh; overflow: hidden; }

  .topbar { height: 54px; padding: 0 22px; }
  .topbar::after { left: 22px; right: 22px; }
  .brand-logo { width: 32px; height: 32px; }
  .brand-title { font-size: 14.5px; }
  .brand-sub { font-size: 8px; letter-spacing: 2px; }
  .clock-wrap { padding-left: 14px; }
  .range-btn { padding: 6px 13px; font-size: 11px; }

  .dash {
    display: flex;
    flex-direction: column;
    gap: 8px;
    height: calc(100vh - 54px);
    max-width: none;
    padding: 8px 20px 10px;
  }

  .board-strip { flex: none; margin: 0; padding: 0; border: 0; }
  .strip-title { font-size: 21px; letter-spacing: 0.8px; }
  .strip-meta { margin-top: 4px; font-size: 10px; gap: 8px; }
  .strip-target { width: 300px; padding: 7px 12px 8px; }
  .st-head b { font-size: 20px; }
  .st-bar { margin: 6px 0 5px; }
  .st-foot { font-size: 9px; }

  .kpi-grid { flex: none; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 8px; margin-bottom: 0; }
  .kpi { padding: 9px 14px 8px; border-radius: 12px; }
  .kpi::before { left: 14px; right: 14px; }
  .kpi-label { font-size: 9.5px; letter-spacing: 1.4px; }
  .kpi-idx { font-size: 8.5px; }
  .kpi-value { margin: 5px 0 4px; font-size: 28px; }
  .kpi-value small { font-size: 9.5px; }
  .kpi-foot { font-size: 9.5px; }
  .kpi-progress { height: 2px; margin-top: 5px; }

  .board {
    flex: 1;
    min-height: 0;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    grid-template-rows: 1fr 1fr 0.95fr;
    grid-template-areas:
      "duel duel duel duel duel duel duel trend trend trend trend trend"
      "member member member member director director director ring ring leads leads leads"
      "table table table table table table table table feed feed feed feed";
    gap: 9px;
  }

  .panel-duel { grid-area: duel; }
  .panel-trend { grid-area: trend; }
  .panel-member { grid-area: member; }
  .panel-director { grid-area: director; }
  .panel-ring { grid-area: ring; }
  .panel-leads { grid-area: leads; }
  .panel-table { grid-area: table; }
  .panel-feed { grid-area: feed; }

  .board .panel {
    display: flex;
    flex-direction: column;
    padding: 9px 12px 10px;
    border-radius: 13px;
    overflow: hidden;
  }
  .board .panel-head { margin-bottom: 7px; }
  .board .panel-head h2 { font-size: 13px; }
  .board .panel-head p { font-size: 8.5px; }
  .board .panel-tag { font-size: 7.5px; padding: 2px 7px; }
  .board .panel-body { flex: 1; min-height: 0; overflow: auto; }

  .panel-trend .panel-body { display: flex; flex-direction: column; overflow: hidden; }
  .panel-trend .chart-summary { flex: none; font-size: 8.5px; gap: 10px; margin-bottom: 2px; }
  .panel-trend .chart-summary b { font-size: 10px; }
  .panel-trend .chart-scroll { flex: 1; min-height: 0; }
  .panel-trend .chart-box { height: 100%; min-height: 0; aspect-ratio: auto; }
  .panel-trend .chart-legend { flex: none; margin-top: 2px; font-size: 8.5px; gap: 14px; }

  .panel-duel .panel-body { display: flex; flex-direction: column; justify-content: center; overflow: hidden; }
  .panel-duel .duel-head,
  .panel-duel .duel-score,
  .panel-duel .duel-rows { width: 100%; max-width: 880px; }
  .panel-duel .duel-name b { font-size: 15px; }
  .panel-duel .duel-score { margin: 7px auto 5px; }
  .panel-duel .ds-value { font-size: 34px; }
  .panel-duel .duel-rows {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: repeat(3, auto);
    grid-auto-flow: column;
    column-gap: 26px;
  }
  .panel-duel .duel-row {
    grid-template-columns: 1fr 64px 1fr;
    padding: 4px 0;
    font-size: 10px;
  }
  .panel-duel .duel-row span { font-size: 9px; }

  .panel-member .rank-row { padding: 2px 7px; }
  .panel-member .rank-no { font-size: 11.5px; }
  .panel-member .rank-who b { font-size: 11.5px; }
  .panel-member .rank-who span { font-size: 8.5px; }
  .panel-member .rank-val b { font-size: 12.5px; }
  .panel-member .rank-conv { font-size: 9.5px; }

  .panel-director .dir-row { padding: 3px 8px; }
  .panel-director .dir-name { font-size: 11px; }
  .panel-director .dir-meta { font-size: 7.5px; gap: 6px; margin-top: 2px; }
  .panel-director .dir-num { font-size: 14px; }
  .panel-director .dir-total { margin-top: 4px; padding-top: 4px; font-size: 7.5px; }
  .panel-director .dir-total b { font-size: 9.5px; }

  .panel-ring .ring-wrap { width: 160px; height: 160px; margin: 0 auto 2px; }
  .panel-ring .ring-center b { font-size: 34px; }
  .panel-ring .ring-stats { padding-top: 7px; }
  .panel-ring .ring-stats b { font-size: 12px; }
  .panel-ring .ring-note { margin-top: 5px; font-size: 8px; }

  .panel-leads .lead-group { padding: 5px 8px; margin-bottom: 5px; }
  .panel-leads .lg-head { font-size: 9.5px; }
  .panel-leads .lg-head .lg-total { font-size: 12px; }
  .panel-leads .lg-bar { margin: 5px 0 3px; height: 3px; }
  .panel-leads .lg-foot { gap: 7px; font-size: 7.5px; }
  .panel-leads .lg-foot b { font-size: 8.5px; }
  .panel-leads .mini-divider { margin: 5px 0 4px; font-size: 7.5px; }
  .panel-leads .source-list { gap: 2px; }
  .panel-leads .source-row { font-size: 8px; grid-template-columns: 58px minmax(0, 1fr) 38px; }
  .panel-leads .source-bar { height: 3px; }

  .board .empty { padding: 10px 8px; font-size: 9px; }

  .panel-table .panel-body { display: flex; overflow: hidden; }
  .panel-table .table-wrap { flex: 1; max-height: none; }
  .board table.dt { font-size: 11px; }
  .board table.dt thead th { padding: 5px 8px; font-size: 8.5px; }
  .board table.dt tbody td { padding: 5px 8px; }
  .board .tag { font-size: 8px; padding: 1px 6px; }

  .panel-feed .panel-body { overflow: hidden; }
  .panel-feed .feed { max-height: 100%; height: 100%; }
  .board .feed-row { padding: 5px 4px; }
  .board .feed-title { font-size: 10.5px; }
  .board .feed-meta { display: none; }
  .board .feed-ico { width: 18px; height: 18px; font-size: 8px; }
  .board .feed-date { font-size: 8px; }
}

/* ---------- 高度较矮的大屏（1600×900 等） ---------- */

@media (min-width: 1400px) and (min-height: 800px) and (max-height: 950px) {
  .kpi-value { font-size: 25px; }
  .kpi-foot { font-size: 8.5px; }
  .strip-title { font-size: 19px; }

  .panel-ring .ring-wrap { width: 118px; height: 118px; }
  .panel-ring .ring-center b { font-size: 26px; }
  .panel-ring .ring-stats { padding-top: 5px; }
  .panel-ring .ring-stats b { font-size: 11px; }
  .panel-ring .ring-stats span { font-size: 7.5px; }
  .panel-ring .ring-note { margin-top: 3px; font-size: 7.5px; }

  .panel-member .rank-row:nth-child(n+9) { display: none; }
  .panel-member .rank-row { padding: 1px 7px; }

  .panel-duel .ds-value { font-size: 28px; }
  .panel-duel .duel-name b { font-size: 13px; }
  .panel-duel .duel-score { margin: 5px auto 3px; }
  .panel-duel .duel-row { padding: 2px 0; font-size: 9px; }
  .panel-duel .duel-row span { font-size: 8px; }

  .panel-director .dir-row { padding: 2px 7px; }
  .panel-director .dir-rank { width: 18px; height: 18px; }
  .panel-director .dir-name { font-size: 10.5px; }
  .panel-director .dir-bar { height: 2px; margin-top: 3px; }
  .panel-director .dir-meta { margin-top: 1px; font-size: 7px; gap: 5px; }
  .panel-director .dir-meta span:nth-child(4) { display: none; }
  .panel-director .dir-total { display: none; }

  .panel-leads .source-row:nth-child(n+4) { display: none; }

  .panel-ring .ring-wrap { width: 112px; height: 112px; }

  .board table.dt tbody td { padding: 4px 8px; }
  .board .feed-row { padding: 4px 4px; }
  .board .feed-title { font-size: 9.5px; }
}

/* ---------- 小屏 ---------- */

@media (max-width: 899px) {
  .dash { padding: 18px 16px 26px; }
  .topbar { height: auto; flex-wrap: wrap; gap: 10px; padding: 10px 16px; }
  .topbar::after { display: none; }
  .brand-sub { display: none; }
  .season-chip { display: none; }
  .topbar-right { width: 100%; justify-content: space-between; }
  .clock-wrap { display: none; }
  .board-strip { flex-direction: column; align-items: flex-start; gap: 10px; }
  .strip-target { width: 100%; }
  .strip-title { font-size: 20px; }
  .kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kpi-value { font-size: 26px; }
  .board .panel { padding: 13px 14px 15px; }
  .duel-head { grid-template-columns: 1fr 32px 1fr; }
  .duel-name b { font-size: 12.5px; }
  .duel-name small { display: none; }
  .duel-badge { width: 28px; height: 28px; font-size: 12px; }
  .duel-score { grid-template-columns: 1fr 44px 1fr; }
  .ds-value { font-size: 28px; }
  .duel-row { grid-template-columns: 1fr 74px 1fr; font-size: 9.5px; }
  .panel-member .rank-row { grid-template-columns: 24px minmax(0, 1fr) minmax(40px, 0.8fr) 38px 44px; }
  .source-row { grid-template-columns: 60px minmax(0, 1fr) 40px; }
}

@media (max-width: 560px) {
  .kpi-grid { grid-template-columns: 1fr; }
  .rank-bar { display: none; }
  .panel-member .rank-row { grid-template-columns: 24px minmax(0, 1fr) 40px 44px; }
  .rank-who span { display: none; }
  .duel-head { grid-template-columns: 1fr; gap: 6px; }
  .duel-vs { display: none; }
  .duel-team.right { flex-direction: row; text-align: left; }
  .duel-score { grid-template-columns: 1fr 1fr; }
  .ds-mid { display: none; }
  .duel-row { grid-template-columns: 1fr 70px 1fr; }
  .strip-title { font-size: 18px; }
  .table-wrap { max-height: none; }
  .v2-board .panel-latest table.dt th:nth-child(3), .v2-board .panel-latest table.dt td:nth-child(3),
  .v2-board .panel-latest table.dt th:nth-child(4), .v2-board .panel-latest table.dt td:nth-child(4),
  .v2-board .panel-latest table.dt th:nth-child(5), .v2-board .panel-latest table.dt td:nth-child(5),
  .v2-board .panel-latest table.dt th:nth-child(7), .v2-board .panel-latest table.dt td:nth-child(7) { display: none; }
}

/* ============================================================
   数据滚动 / 图表动效 / 实时播报
   ============================================================ */

.strip-ticker {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 10px;
  overflow: hidden;
  padding: 0 4px;
}

.ticker-label {
  flex: none;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 9px;
  font-size: 8.5px;
  letter-spacing: 1.4px;
  color: #8ea1c1;
  border: 1px solid var(--line);
  border-radius: 999px;
  white-space: nowrap;
}

.ticker-label .live-dot { width: 5px; height: 5px; }

.ticker-viewport {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 20px, #000 calc(100% - 20px), transparent);
  mask-image: linear-gradient(90deg, transparent, #000 20px, #000 calc(100% - 20px), transparent);
}

.ticker-track {
  display: flex;
  width: max-content;
  will-change: transform;
  animation: tickerMove 48s linear infinite;
}

.strip-ticker:hover .ticker-track { animation-play-state: paused; }

.ticker-group {
  display: flex;
  align-items: center;
  gap: 34px;
  padding-right: 34px;
}

.ticker-item {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 10.5px;
  color: #c5d5ee;
  white-space: nowrap;
}

.ticker-item .tk-dot { width: 5px; height: 5px; flex: none; border-radius: 50%; }
.ticker-item .tk-type {
  width: 16px;
  height: 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 8px;
  border-radius: 4px;
}
.ticker-item .tk-type.is-f { color: #f2c66d; background: rgba(242, 198, 109, 0.1); border: 1px solid rgba(242, 198, 109, 0.22); }
.ticker-item .tk-type.is-l { color: #7fdcf5; background: rgba(58, 217, 242, 0.08); border: 1px solid rgba(58, 217, 242, 0.2); }
.ticker-item b { font-weight: 500; color: #fff; }
.ticker-item .tk-meta { font-size: 9px; color: #7184a6; }

@keyframes tickerMove {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

/* ---------- 图表动效 ---------- */

.chart-grid-line { stroke: rgba(150, 178, 230, 0.07); }
.chart-axis { fill: #6f83a6; }
.chart-value { fill: #b9cbe9; }
.chart-month { fill: #7f92b2; }
.chart-dot { fill: #071122; stroke: #33d6f5; stroke-width: 2; }
.chart-area { animation: areaIn 0.9s ease both; }
.chart-line {
  stroke: #33d6f5;
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  animation: chartDraw 1.5s ease forwards;
}
.chart-bar {
  transform-box: fill-box;
  transform-origin: center bottom;
  animation: barGrow 0.85s cubic-bezier(0.22, 1, 0.36, 1) both;
}

@keyframes areaIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes chartDraw { to { stroke-dashoffset: 0; } }
@keyframes barGrow { from { transform: scaleY(0); } to { transform: scaleY(1); } }

/* ---------- 面板与列表动效 ---------- */

.board .panel {
  animation: panelIn 0.55s ease both;
  transition: border-color 0.25s ease, box-shadow 0.25s ease;
}
.board .panel:nth-child(2) { animation-delay: 0.04s; }
.board .panel:nth-child(3) { animation-delay: 0.08s; }
.board .panel:nth-child(4) { animation-delay: 0.12s; }
.board .panel:nth-child(5) { animation-delay: 0.16s; }
.board .panel:nth-child(6) { animation-delay: 0.2s; }
.board .panel:nth-child(7) { animation-delay: 0.24s; }
.board .panel:nth-child(8) { animation-delay: 0.28s; }
.board .panel:hover { border-color: rgba(var(--accent-rgb), 0.22); }

@keyframes panelIn {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: none; }
}

.kpi { animation: kpiIn 0.45s ease both; }
.kpi:nth-child(2) { animation-delay: 0.03s; }
.kpi:nth-child(3) { animation-delay: 0.06s; }
.kpi:nth-child(4) { animation-delay: 0.09s; }
.kpi:nth-child(5) { animation-delay: 0.12s; }
.kpi:nth-child(6) { animation-delay: 0.15s; }

@keyframes kpiIn { from { opacity: 0; } to { opacity: 1; } }

.rank-row { animation: rowIn 0.38s ease both; }
@keyframes rowIn {
  from { opacity: 0; transform: translateX(-6px); }
  to { opacity: 1; transform: none; }
}

.rank-row.is-1 .rank-no { animation: goldPulse 2.6s ease-in-out infinite; }
@keyframes goldPulse {
  0%, 100% { text-shadow: 0 0 0 rgba(242, 198, 109, 0); }
  50% { text-shadow: 0 0 10px rgba(242, 198, 109, 0.65); }
}

@media (max-width: 1199px) {
  .strip-ticker { display: none; }
}

/* 浅色模式隐藏深色图表文字色由 theme-light.css 接管 */
.ring-stop-1 { stop-color: var(--accent); }
.ring-stop-2 { stop-color: var(--cyan); }

/* ============================================================
   增强动效：环境光、扫描线、流光、轨道与逐行入场
   ============================================================ */

:root { --shine: rgba(255, 255, 255, 0.09); }

/* 背景呼吸光斑 */
.bg-decor::after {
  content: "";
  position: absolute;
  inset: -15%;
  background:
    radial-gradient(closest-side, rgba(var(--accent-rgb), 0.16), transparent 70%) 12% 18% / 46% 46% no-repeat,
    radial-gradient(closest-side, rgba(58, 217, 242, 0.1), transparent 70%) 82% 28% / 42% 42% no-repeat,
    radial-gradient(closest-side, rgba(120, 96, 255, 0.09), transparent 70%) 55% 92% / 50% 50% no-repeat;
  filter: blur(16px);
  animation: ambientFloat 30s ease-in-out infinite alternate;
  will-change: transform;
}

@keyframes ambientFloat {
  0% { transform: translate3d(-1%, 0, 0) scale(1); }
  50% { transform: translate3d(1.5%, -1.5%, 0) scale(1.06); }
  100% { transform: translate3d(2%, 1%, 0) scale(1.02); }
}

/* 指标卡流光 */
.kpi::after {
  content: "";
  position: absolute;
  top: -35%;
  bottom: -35%;
  left: 0;
  width: 32%;
  background: linear-gradient(90deg, transparent, var(--shine), transparent);
  transform: translateX(-160%) skewX(-16deg);
  animation: kpiShine 8s ease-in-out infinite;
  pointer-events: none;
}

.kpi:nth-child(2)::after { animation-delay: 1.1s; }
.kpi:nth-child(3)::after { animation-delay: 2.2s; }
.kpi:nth-child(4)::after { animation-delay: 3.3s; }
.kpi:nth-child(5)::after { animation-delay: 4.4s; }
.kpi:nth-child(6)::after { animation-delay: 5.5s; }

@keyframes kpiShine {
  0%, 68% { transform: translateX(-160%) skewX(-16deg); opacity: 0; }
  74% { opacity: 1; }
  90% { transform: translateX(420%) skewX(-16deg); opacity: 0; }
  100% { transform: translateX(420%) skewX(-16deg); opacity: 0; }
}

.kpi-label::before { animation: dotGlow 3.4s ease-in-out infinite; }

@keyframes dotGlow {
  0%, 100% { box-shadow: 0 0 5px var(--accent); }
  50% { box-shadow: 0 0 13px var(--accent); }
}

/* 面板顶部扫描线 */
.board .panel { overflow: hidden; }

.board .panel::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 36%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(var(--accent-rgb), 0.9), transparent);
  transform: translateX(-130%);
  animation: panelScan 10s linear infinite;
  opacity: 0.7;
  pointer-events: none;
}

.board .panel:nth-child(2)::after { animation-delay: 1.6s; }
.board .panel:nth-child(3)::after { animation-delay: 3.2s; }
.board .panel:nth-child(4)::after { animation-delay: 4.8s; }
.board .panel:nth-child(5)::after { animation-delay: 6.4s; }
.board .panel:nth-child(6)::after { animation-delay: 8s; }
.board .panel:nth-child(7)::after { animation-delay: 9.6s; }
.board .panel:nth-child(8)::after { animation-delay: 11.2s; }

@keyframes panelScan {
  from { transform: translateX(-130%); }
  to { transform: translateX(330%); }
}

/* 数据条流光 */
.rank-bar i,
.dir-bar i,
.ds-bar i,
.source-bar i,
.lg-bar .member,
.kpi-progress i {
  position: relative;
  overflow: hidden;
}

.rank-bar i::after,
.dir-bar i::after,
.ds-bar i::after,
.source-bar i::after,
.lg-bar .member::after,
.kpi-progress i::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.48) 50%, rgba(255, 255, 255, 0) 100%);
  transform: translateX(-130%);
  animation: barSweep 4.4s ease-in-out infinite;
}

@keyframes barSweep {
  0%, 60% { transform: translateX(-130%); }
  84%, 100% { transform: translateX(130%); }
}

/* 转化环：轨道光点 + 弧光呼吸 */
.ring-orbit {
  transform-origin: 86px 86px;
  animation: ringOrbit 10s linear infinite;
}

.ring-orbit-dot {
  fill: var(--cyan);
  filter: drop-shadow(0 0 6px var(--cyan));
}

@keyframes ringOrbit { to { transform: rotate(360deg); } }

.ring-value { animation: ringGlow 3.8s ease-in-out infinite; }

@keyframes ringGlow {
  0%, 100% { filter: drop-shadow(0 0 5px rgba(var(--accent-rgb), 0.4)); }
  50% { filter: drop-shadow(0 0 13px rgba(var(--accent-rgb), 0.85)); }
}

.ring-center b { animation: centerPulse 3.8s ease-in-out infinite; }

@keyframes centerPulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.8; }
}

/* 趋势折线节点呼吸 */
.chart-dot {
  transform-box: fill-box;
  transform-origin: center;
  animation: dotPulse 2.8s ease-in-out infinite;
}

@keyframes dotPulse {
  0%, 100% { opacity: 0.78; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.55); }
}

.chart-line { filter: drop-shadow(0 0 4px rgba(58, 217, 242, 0.4)); }

/* 冠军行金色扫光 */
.rank-row.is-1 { position: relative; overflow: hidden; }

.rank-row.is-1::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(110deg, transparent 32%, rgba(242, 198, 109, 0.16) 49%, transparent 64%);
  transform: translateX(-100%);
  animation: championSweep 5.5s ease-in-out infinite;
  pointer-events: none;
}

@keyframes championSweep {
  0%, 64% { transform: translateX(-100%); }
  88%, 100% { transform: translateX(100%); }
}

/* VS 呼吸 */
.duel-vs { animation: vsPulse 3s ease-in-out infinite; }

@keyframes vsPulse {
  0%, 100% { color: #5f7294; text-shadow: none; }
  50% { color: var(--accent); text-shadow: 0 0 14px rgba(var(--accent-rgb), 0.8); }
}

/* 表格 / 战报逐行入场 */
#memberTableBody tr { animation: rowFade 0.4s ease both; }

@keyframes rowFade {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: none; }
}

.feed-row { animation: feedIn 0.45s ease both; }

@keyframes feedIn {
  from { opacity: 0; transform: translateX(8px); }
  to { opacity: 1; transform: none; }
}

/* 主题切换过渡 */
html.theme-anim *,
html.theme-anim *::before,
html.theme-anim *::after {
  transition: background-color 0.35s ease, color 0.35s ease, border-color 0.35s ease,
    box-shadow 0.35s ease, fill 0.35s ease, stroke 0.35s ease !important;
}

@media (prefers-reduced-motion: reduce) {
  .bg-decor::after,
  .kpi::after,
  .kpi-label::before,
  .board .panel::after,
  .rank-bar i::after,
  .dir-bar i::after,
  .ds-bar i::after,
  .source-bar i::after,
  .lg-bar .member::after,
  .kpi-progress i::after,
  .ring-orbit,
  .ring-value,
  .ring-center b,
  .chart-dot,
  .rank-row.is-1::after,
  .duel-vs {
    animation: none !important;
  }
}

/* ============================================================
   性能优化：控制持续合成层与重绘，保留关键动效
   ============================================================ */

/* 顶部栏取消实时毛玻璃，避免随背景每帧重算 */
.topbar {
  background: rgba(4, 7, 15, 0.94);
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* 静态背景层，不再整屏模糊漂浮 */
.bg-decor::after { display: none !important; }
.bg-decor::before { mix-blend-mode: normal !important; opacity: 0.04 !important; }

/* 关闭高开销的整屏/条状持续动画 */
.kpi { animation: none !important; }
.kpi-label::before,
.ring-value,
.ring-center b,
.chart-dot,
.duel-vs,
.rank-row.is-1 .rank-no { animation: none !important; }

.rank-bar i::after,
.dir-bar i::after,
.ds-bar i::after,
.source-bar i::after,
.lg-bar .member::after,
.kpi-progress i::after { display: none !important; }

.chart-line,
.ring-orbit-dot { filter: none !important; }

#memberTableBody tr,
.feed-row { animation: none !important; }

/* 实时圆点改为纯 transform/opacity，避免 box-shadow 重绘 */
.live-dot {
  animation: livePulse 2.6s ease-in-out infinite !important;
}

@keyframes livePulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.35); opacity: 0.65; }
}

html.page-hidden *,
html.page-hidden *::before,
html.page-hidden *::after {
  animation-play-state: paused !important;
}

/* 手动关闭动效 */
html.motion-off *,
html.motion-off *::before,
html.motion-off *::after {
  animation: none !important;
  transition: none !important;
}

.motion-play { display: none; }
html.motion-off .motion-pause { display: none; }
html.motion-off .motion-play { display: block; }

/* ---------- 总监较多时：双列紧凑展示（13 位总监一屏） ---------- */

.dir-num em {
  display: none;
  margin-top: 1px;
  font-family: var(--font-num);
  font-size: 7px;
  font-style: normal;
  font-weight: 400;
  color: #7f92b2;
}

@media (min-width: 1400px) and (min-height: 800px) {
  .panel-director .dir-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 2px 8px;
  }

  .panel-director .dir-row {
    grid-template-columns: 18px minmax(0, 1fr) 42px;
    gap: 6px;
    padding: 1px 5px;
  }

  .panel-director .dir-rank {
    width: 16px;
    height: 16px;
    font-size: 9px;
    border-radius: 5px;
  }

  .panel-director .dir-name {
    font-size: 10.5px;
  }

  .panel-director .dir-name span {
    margin-left: 3px;
    font-size: 8px;
  }

  .panel-director .dir-bar {
    height: 2px;
    margin-top: 4px;
  }

  .panel-director .dir-meta {
    display: none;
  }

  .panel-director .dir-num {
    font-size: 12px;
  }

  .panel-director .dir-num small {
    font-size: 7.5px;
  }

  .panel-director .dir-num em {
    display: block;
    font-size: 6.8px;
  }

  .panel-director .dir-total {
    grid-column: 1 / -1;
  }
}

@media (min-width: 1400px) and (min-height: 800px) and (max-height: 950px) {
  .panel-director .dir-list { gap: 1px 6px; }
  .panel-director .dir-row { padding: 0 5px; }
  .panel-director .dir-name { font-size: 9.5px; line-height: 1.2; }
  .panel-director .dir-name span { font-size: 7.5px; }
  .panel-director .dir-bar { margin-top: 2px; }
  .panel-director .dir-num { font-size: 10.5px; white-space: nowrap; }
  .panel-director .dir-num em { display: inline; margin-left: 1px; font-size: 6.5px; }
}

/* ================= V2 店长运营看板 ================= */

.board-strip {
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
}

.kpi-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.board.v2-board {
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(0, 0.88fr);
  grid-template-rows: 258px minmax(0, 1fr);
  grid-template-areas:
    "duel people"
    "latest feed";
  gap: 14px;
}

.v2-board .panel-duel { grid-area: duel; }
.v2-board .panel-people { grid-area: people; }
.v2-board .panel-latest { grid-area: latest; }
.v2-board .panel-feed { grid-area: feed; }

.v2-board .panel-people .panel-body,
.v2-board .panel-latest .panel-body,
.v2-board .panel-feed .panel-body { min-height: 0; overflow: hidden; }
.v2-board .panel-latest .panel-body { display: flex; flex-direction: column; }
.v2-board .panel-feed .feed { height: 100%; overflow: auto; }
.v2-board .panel-people .rank-list { height: 100%; overflow: hidden; }
.v2-board .panel-people .rank-row { padding: 5px 7px; }
.v2-board .panel-people .rank-who b { font-size: 12px; }
.v2-board .panel-people .rank-who span { font-size: 8.5px; }
.v2-board .panel-people .rank-val b { font-size: 12px; }
.v2-board .panel-people .rank-conv { font-size: 8.5px; color: #8fb7e8; }
.v2-board .panel-latest .table-wrap {
  flex: 1;
  width: 100%;
  min-width: 0;
  height: 100%;
  max-height: none;
  overflow: auto;
}
.v2-board .panel-latest table.dt { table-layout: fixed; }
.v2-board .panel-latest table.dt th,
.v2-board .panel-latest table.dt td { overflow: hidden; text-overflow: ellipsis; }
.v2-board .panel-latest table.dt th:nth-child(1) { width: 8%; }
.v2-board .panel-latest table.dt th:nth-child(2) { width: 17%; }
.v2-board .panel-latest table.dt th:nth-child(3) { width: 21%; }
.v2-board .panel-latest table.dt th:nth-child(4) { width: 13%; }
.v2-board .panel-latest table.dt th:nth-child(5) { width: 10%; }
.v2-board .panel-latest table.dt th:nth-child(6) { width: 16%; }
.v2-board .panel-latest table.dt th:nth-child(7) { width: 15%; text-align: right; }
.v2-board .panel-latest table.dt td:nth-child(7) { text-align: right; }
.v2-board .panel-latest .empty { border: 0; padding: 32px 12px; }
.v2-board .panel-latest .latest-empty {
  flex: 1;
  min-height: 180px;
  justify-content: center;
  padding: 28px 12px;
}
.v2-board .panel-latest.is-empty .table-wrap {
  flex: none;
  height: auto;
  max-height: none;
}
.empty-rich { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.empty-rich b { font-size: 13px; font-weight: 600; letter-spacing: 0.5px; color: #c9d8f0; }
.empty-rich span { font-size: 10px; color: #7184a6; }
.feed-empty {
  height: 100%;
  min-height: 180px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  border: 0;
}
.feed-empty b { font-size: 13px; font-weight: 600; letter-spacing: 0.5px; color: #c9d8f0; }
.feed-empty span { font-size: 10px; color: #7184a6; }

.v2-groups {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  height: 100%;
}

.v2-group {
  position: relative;
  display: flex;
  flex-direction: column;
  padding: 13px 14px;
  border: 1px solid var(--line-soft);
  border-radius: 12px;
  background: linear-gradient(160deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.015));
  overflow: hidden;
}

.v2-group::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 3px;
  background: var(--g, var(--accent));
  opacity: 0.9;
}

.v2g-head { display: flex; align-items: center; gap: 8px; }
.v2g-code {
  width: 24px; height: 24px; flex: none;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 7px;
  font-family: var(--font-num); font-size: 12px;
  color: var(--g, var(--accent));
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.1);
}
.v2g-head b { font-size: 14px; font-weight: 600; color: #eaf2ff; }
.v2g-rank {
  margin-left: auto;
  padding: 2px 7px;
  border-radius: 5px;
  font-size: 9px;
  color: #93a7c5;
  background: rgba(255, 255, 255, 0.04);
}
.v2g-rank.is-champion { color: #ffd37d; background: rgba(255, 190, 70, 0.1); border: 1px solid rgba(255, 190, 70, 0.2); }
.v2g-main { display: flex; align-items: baseline; gap: 6px; margin-top: 12px; }
.v2g-main b { font-family: var(--font-num); font-size: 38px; font-weight: 600; line-height: 1; color: #fff; }
.v2g-main span { font-size: 10px; color: #90a4c2; }
.v2g-bar { height: 4px; margin-top: 10px; border-radius: 4px; background: rgba(255, 255, 255, 0.06); overflow: hidden; }
.v2g-bar i { display: block; height: 100%; width: 0; border-radius: 4px; background: linear-gradient(90deg, var(--g, var(--accent)), rgba(255, 255, 255, 0.55)); transition: width 0.9s cubic-bezier(.2,.8,.2,1); }
.v2g-stats { display: flex; gap: 12px; margin-top: auto; padding-top: 10px; font-size: 9px; color: #7f93b2; }
.v2g-stats b { display: block; font-family: var(--font-num); font-size: 13px; color: #dce9fb; }

.progress-tag {
  display: inline-flex;
  align-items: center;
  height: 20px;
  padding: 0 7px;
  border-radius: 5px;
  font-size: 9.5px;
  white-space: nowrap;
}
.progress-tag.is-ok { color: #7fe0ad; background: rgba(38, 172, 106, 0.12); border: 1px solid rgba(38, 172, 106, 0.22); }
.progress-tag.is-wait { color: #9fc0ee; background: rgba(90, 162, 255, 0.1); border: 1px solid rgba(90, 162, 255, 0.2); }
.progress-tag.is-bad { color: #f2a1a1; background: rgba(220, 80, 80, 0.1); border: 1px solid rgba(220, 80, 80, 0.2); }

@media (max-width: 560px) {
  .kpi-grid { grid-template-columns: 1fr; }
  .v2-groups { grid-template-columns: 1fr; }
  .v2-board .panel-latest table.dt th:nth-child(3),
  .v2-board .panel-latest table.dt td:nth-child(3),
  .v2-board .panel-latest table.dt th:nth-child(4),
  .v2-board .panel-latest table.dt td:nth-child(4),
  .v2-board .panel-latest table.dt th:nth-child(5),
  .v2-board .panel-latest table.dt td:nth-child(5),
  .v2-board .panel-latest table.dt th:nth-child(7),
  .v2-board .panel-latest table.dt td:nth-child(7) { display: none; }
}

@media (max-width: 1100px) {
  .board-strip { grid-template-columns: 1fr; }
  .strip-ticker { display: none; }
  .kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .board.v2-board {
    grid-template-columns: 1fr;
    grid-template-rows: auto;
    grid-template-areas: "duel" "people" "latest" "feed";
  }
  .v2-board .panel { min-height: 260px; }
}

@media (min-width: 1400px) and (min-height: 800px) and (max-height: 950px) {
  .v2-board { grid-template-rows: 224px minmax(0, 1fr); }
  .v2g-main b { font-size: 31px; }
  .v2g-main { margin-top: 9px; }
  .v2g-stats { padding-top: 7px; font-size: 8.5px; }
  .v2g-stats b { font-size: 11.5px; }
  .v2-board .panel-people .rank-row { padding: 3px 7px; }
  .v2-board .panel-people .rank-row:nth-child(n+9) { display: none; }
}

/* ---------- 总监名单（独立名单，无汇报关系） ---------- */

.dir-roster { display: flex; flex-direction: column; gap: 10px; }

.dir-group-head {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 9.5px;
  color: #9fb0cc;
}

.dir-group-head b {
  font-size: 11px;
  font-weight: 500;
  color: #e9f1ff;
  white-space: nowrap;
}

.dg-code {
  width: 18px;
  height: 18px;
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-num);
  font-size: 9px;
  color: var(--g, var(--accent));
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 5px;
}

.dg-stat {
  margin-left: auto;
  font-size: 8px;
  color: #7184a6;
  white-space: nowrap;
}

.dir-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 6px;
  margin-top: 6px;
}

.dir-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 8px;
  font-size: 10px;
  color: #c9d8f0;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(150, 178, 230, 0.09);
  border-radius: 6px;
  white-space: nowrap;
}

.dir-chip.has-perf {
  border-color: rgba(255, 190, 70, 0.24);
  background: linear-gradient(90deg, rgba(255, 190, 70, 0.1), rgba(255, 255, 255, 0.02));
}

.dc-perf {
  padding-left: 6px;
  border-left: 1px solid rgba(255, 190, 70, 0.26);
  font-family: var(--font-num);
  font-size: 8.5px;
  color: #ffcf72;
}

.dc-perf b {
  font-size: 10.5px;
  color: #ffd98f;
}

.dir-empty {
  font-size: 9px;
  color: #667a9c;
}

.dg-meta {
  margin-top: 4px;
  font-size: 8px;
  color: #7184a6;
}

.dir-roster-note {
  margin-top: 2px;
  font-size: 8px;
  line-height: 1.55;
  color: #667a9c;
}

@media (min-width: 1400px) and (min-height: 800px) {
  .panel-director .panel-body {
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
}

@media (min-width: 1400px) and (min-height: 800px) and (max-height: 950px) {
  .dir-roster { gap: 6px; }
  .dir-chip { padding: 2px 6px; font-size: 9px; }
  .dir-group-head { font-size: 9px; }
  .dir-group-head b { font-size: 10px; }
  .dg-stat { font-size: 7.5px; }
  .dg-meta { margin-top: 2px; font-size: 7.5px; }
  .dir-roster-note { font-size: 7.5px; }
}
