.competition-board {
  display: grid;
  grid-template-columns: minmax(0, 11fr) minmax(0, 9fr);
  gap: 28px;
  flex: 1;
  min-height: 0;
  align-items: center;
}
.instrument-column { display: flex; height: 100%; align-items: center; justify-content: center; }
.instrument-column .goalv { gap: 14px; }
.instrument-column .goalv-memberships { width: 620px; }
.instrument-column .goalv-ticket { width: 430px; }
.instrument-column .thermo-svg { width: 620px; height: 455px; }
.instrument-column .gaugev-svg { width: 410px; height: 455px; }
.instrument-column .goalv-label { font-size: 29px; }
.instrument-column .goalv-num { font-size: 58px; }
.instrument-column .goalv-caption { font-size: 21px; }

.ranking-panel {
  display: flex;
  min-width: 0;
  height: 720px;
  flex-direction: column;
  padding: 24px 20px 26px;
  border: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.035);
  clip-path: polygon(14px 0, 100% 0, 100% calc(100% - 14px), calc(100% - 14px) 100%, 0 100%, 0 14px);
}
.ranking-title { display: block; padding: 0 4px 16px; }
.ranking-title h2 { color: var(--pink); font-family: var(--display); font-size: 40px; font-weight: 400; letter-spacing: 0.025em; text-transform: uppercase; white-space: nowrap; }
.ranking-title h2.is-long { font-size: 34px; letter-spacing: 0.015em; }
.ranking-title span { color: var(--muted); font-family: var(--heading); font-size: 16px; font-weight: 700; letter-spacing: 0.15em; text-transform: uppercase; }
.ranking-head {
  display: grid;
  grid-template-columns: 52px 50px minmax(0, 1fr) 142px;
  gap: 10px;
  padding: 0 12px 8px;
  color: var(--muted);
  font-family: var(--heading);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.ranking-head span:last-child { text-align: right; }
.ranking-list { display: grid; flex: 1; min-height: 0; gap: 7px; list-style: none; }
.ranking-row {
  display: grid;
  grid-template-columns: 52px 50px minmax(0, 1fr) 142px;
  gap: 10px;
  align-items: center;
  min-height: 0;
  padding: 0 12px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  background: rgba(255, 255, 255, 0.055);
  clip-path: polygon(9px 0, 100% 0, 100% calc(100% - 9px), calc(100% - 9px) 100%, 0 100%, 0 9px);
}
.ranking-row.top-one { border-color: transparent; background: linear-gradient(90deg, rgba(237, 58, 120, 0.94), rgba(201, 44, 99, 0.9)); box-shadow: 0 10px 30px rgba(237, 58, 120, 0.2); }
.ranking-row.top-two, .ranking-row.top-three { background: rgba(255, 255, 255, 0.095); }
.rank-number { color: var(--pink-mid); font-family: var(--display); font-size: 31px; line-height: 1; }
.top-one .rank-number { color: var(--paper); }
.rank-avatar { width: 44px; height: 44px; overflow: hidden; border: 2px solid rgba(255, 255, 255, 0.26); border-radius: 50%; background: var(--blue); }
.rank-avatar img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.9); transform-origin: 50% 20%; }
.rank-avatar.is-empty { border-style: dashed; background: rgba(255, 255, 255, 0.025); }
.rank-name { overflow: hidden; font-family: var(--heading); font-size: 23px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.rank-value { text-align: right; font-family: var(--heading); font-size: 31px; font-variant-numeric: tabular-nums; font-weight: 800; }
.rank-value small { display: block; margin-top: -2px; color: var(--muted); font-family: var(--body); font-size: 13px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; }
.top-one .rank-value small { color: rgba(255, 255, 255, 0.74); }
.ranking-row.empty-slot { opacity: 0.46; }
.ranking-empty { margin: auto; color: var(--muted); font-size: 28px; font-weight: 700; }

.sale-card { fill: rgba(1, 15, 39, 0.98); }

@media (max-width: 1200px) {
  .competition-board { gap: 20px; }
  .instrument-column { transform: scale(0.88); }
}
