/* ランキング */

/* ============================================================
   Ranking
   ============================================================ */
.rank-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-5);
  align-items: stretch;
}

.rank-grid .chart-card {
  position: relative;
  min-height: 200px;
}

.rank-grid .chart-card canvas {
  position: absolute;
  top: 0;
  left: 0;
  width: 100% !important;
  height: 100% !important;
}

/* ============================================================
   ランキングタブ — バー一体型リスト
   ============================================================ */
.rk-cols { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-4); margin-bottom: var(--sp-5); }
.rk-cols .balance-panel { margin-bottom: 0; }
.rk-hint { font-size: var(--text-2xs); font-weight: var(--fw-normal); color: var(--color-text-subtle); margin-left: 8px; }
.rk-empty { font-size: var(--text-sm); color: var(--color-text-subtle); padding: 16px 4px; }

.rk-list { display: flex; flex-direction: column; gap: 4px; }
.rk-row { display: flex; align-items: center; gap: 10px; padding: 7px 8px; border-radius: var(--radius-md); transition: background 0.12s; }
.rk-row.rk-click { cursor: pointer; }
.rk-row.rk-click:hover { background: var(--color-row-hover); }
.rk-rank { width: 26px; flex-shrink: 0; text-align: center; }
.rk-medal { font-size: var(--text-md); }
.rk-num { font-size: var(--text-sm); font-weight: var(--fw-bold); color: var(--color-text-subtle); }
.rk-dow { font-size: var(--text-base); font-weight: var(--fw-bold); color: var(--color-text); }
.rk-dow.rk-sat { color: #2f6fd0; }
.rk-dow.rk-sun { color: var(--color-danger-text); }
.rk-main { flex: 1; min-width: 0; }
.rk-top { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
.rk-name { font-size: var(--text-base); font-weight: var(--fw-semibold); color: var(--color-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rk-amt { font-size: var(--text-base); font-weight: var(--fw-bold); color: var(--color-text); font-variant-numeric: tabular-nums; flex-shrink: 0; }
.rk-bar { height: 6px; background: var(--color-bg); border-radius: var(--radius-xs); overflow: hidden; margin: 4px 0; }
.rk-bar i { display: block; height: 100%; border-radius: var(--radius-xs); }
.rk-sub { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
.rk-meta { font-size: var(--text-2xs); color: var(--color-text-subtle); font-variant-numeric: tabular-nums; }
.rk-deltas { display: flex; gap: 5px; align-items: center; flex-shrink: 0; }
.rk-delta { font-size: var(--text-2xs); font-weight: var(--fw-semibold); font-variant-numeric: tabular-nums; }
.rk-delta.up { color: var(--color-danger-text); }
.rk-delta.down { color: var(--color-success-text); }
.rk-delta.flat { color: var(--color-text-subtle); }
.rk-delta.rk-new { color: var(--color-text-on-accent); background: var(--color-primary); border-radius: var(--radius-xs); padding: 0 5px; font-size: var(--text-3xs); }
.rk-move { font-size: var(--text-3xs); font-weight: var(--fw-semibold); color: var(--color-text-muted); background: var(--color-bg); border-radius: var(--radius-xs); padding: 0 4px; }

@media (max-width: 900px) {
  .rk-cols { grid-template-columns: 1fr; }
}

/* ランキング凡例 */
.rk-legend {
  display: flex; flex-wrap: wrap; gap: 6px 16px; align-items: center;
  margin: -8px 0 16px; padding: 8px 14px;
  background: var(--color-surface); border: 1px solid var(--color-border);
  border-radius: var(--radius-lg); font-size: var(--text-2xs); color: var(--color-text-muted);
}
.rk-legend:empty { display: none; }
.rk-lg-item { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }
.rk-lg-bar { display: inline-block; width: 22px; height: 6px; border-radius: var(--radius-xs); background: linear-gradient(90deg, var(--color-primary), var(--color-primary) 60%, var(--color-bg) 60%); }
.rk-lg.up { color: var(--color-danger-text); }
.rk-lg.down { color: var(--color-success-text); }
