/* リアルタイム順位（読むだけの画面）。色・余白・書体は /assets/base.css の決まり（DADS 寄せ）を使う */
body { background: var(--bg); color: var(--text); }
.band { position: sticky; top: 0; z-index: 20; padding: var(--s1) var(--s4); background: #ce0000; color: #fff; font-size: 14px; font-weight: 700; }

.lv-top { display: flex; align-items: center; gap: var(--s3); padding: var(--s3) var(--s5); border-bottom: 1px solid var(--line); background: var(--bg); }
.lv-logo { flex: none; }
.lv-title { display: flex; flex-direction: column; min-width: 0; line-height: 1.4; }
.lv-event { font-size: 14px; color: var(--text-2); }
.lv-sub { display: flex; align-items: baseline; gap: var(--s4); font-size: 20px; font-weight: 700; }
.lv-cur { color: var(--primary); }
.lv-updated { margin-left: auto; font-size: 12px; color: var(--text-2); white-space: nowrap; }
.lv-menu { display: none; align-items: center; justify-content: center; width: 48px; height: 48px; flex: none; border: 0; border-radius: var(--r-md);
  background: var(--surface-2); color: var(--text); cursor: pointer; }

.lv-tabs { position: sticky; top: 0; z-index: 10; display: flex; flex-wrap: wrap; gap: var(--s2); padding: var(--s3) var(--s5); background: var(--bg);
  border-bottom: 1px solid var(--line); }
.lv-tabs button, .lv-drawer-list button { min-height: 40px; padding: 0 var(--s4); border: 1px solid var(--line-strong); border-radius: var(--r-md);
  background: var(--bg); color: var(--text); font-size: 14px; font-weight: 700; cursor: pointer; white-space: nowrap; }
.lv-tabs button[aria-pressed="true"], .lv-drawer-list button[aria-pressed="true"] { background: var(--primary); border-color: var(--primary); color: #fff; }
.lv-tabs .gap { width: var(--s4); }

main { padding: var(--s4) var(--s5) var(--s7); }
.lv-locked { margin: var(--s7) auto; max-width: 560px; font-size: 18px; text-align: center; color: var(--text-2); }

.lv-table { width: 100%; border-collapse: collapse; }
.lv-table th { position: sticky; top: var(--tabs-h, 0px); z-index: 5; padding: var(--s2) var(--s3); background: var(--bg); color: var(--text-2);
  font-size: 12px; font-weight: 700; text-align: left; border-bottom: 2px solid var(--line-strong); white-space: nowrap; }
.lv-table td { padding: var(--s3); border-bottom: 1px solid var(--line); vertical-align: middle; }
.lv-table .n { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.lv-rank { width: 64px; font-size: 28px; font-weight: 700; line-height: 1; }
.lv-rank.top1 { color: #b8860b; }
.lv-bib { width: 72px; font-size: 16px; color: var(--text-2); }
.lv-name { min-width: 0; overflow-wrap: anywhere; }      /* 言葉の切れ目で折る。どうしても入らないときだけ途中でも折る */
.lv-team { display: block; font-size: 18px; font-weight: 700; line-height: 1.4; word-break: auto-phrase; }
.lv-org { display: block; font-size: 13px; color: var(--text-2); line-height: 1.4; word-break: auto-phrase; }
.lv-rec { font-size: 24px; font-weight: 700; }
.lv-unit { margin-left: 2px; font-size: 14px; color: var(--text-2); font-weight: 400; }
.lv-pt { font-size: 20px; font-weight: 700; color: var(--primary); }
.lv-pt small { margin-left: 2px; font-size: 12px; color: var(--text-2); font-weight: 400; }
.lv-tag { display: inline-block; margin-left: var(--s2); font-size: 12px; font-weight: 700; color: var(--warn); }
.lv-note { margin: var(--s4) 0 0; font-size: 14px; color: var(--text-2); }

/* 順位が入れ替わったとき（行が新しい位置へ動き、上がった行は少しのあいだ色が付く） */
@keyframes lvUp { from { background: var(--ok-bg); } to { background: transparent; } }
@keyframes lvNew { from { opacity: 0; } to { opacity: 1; } }
tr.up > td { animation: lvUp 3s ease-out; }
tr.new { animation: lvNew 800ms ease-out; }
@media (prefers-reduced-motion: reduce) { tr.up > td, tr.new { animation: none; } }

/* 中継のワイプ用（?wipe=1）: 見出しを省いて、表だけを大きく */
body.wipe .lv-top, body.wipe .lv-tabs, body.wipe .lv-note { display: none; }
body.wipe main { padding: var(--s2); }
body.wipe .lv-table th { top: 0; }

/* スマホ: 部門は左上の ≡ から（横から出るメニュー） */
.lv-drawer { position: fixed; inset: 0; z-index: 30; background: rgba(0, 0, 0, 0.45); }
.lv-drawer-panel { position: absolute; top: 0; bottom: 0; left: 0; width: min(320px, 86vw); display: flex; flex-direction: column; gap: var(--s3);
  padding: var(--s5) var(--s4); background: var(--bg); overflow-y: auto; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25); }
.lv-drawer-title { margin: 0; font-size: 14px; font-weight: 700; color: var(--text-2); }
.lv-drawer-event { margin: 0; font-size: 14px; color: var(--text-2); }
.lv-drawer-list { display: flex; flex-direction: column; gap: var(--s2); }
.lv-drawer-list button { width: 100%; min-height: 48px; text-align: left; font-size: 16px; }
@media (max-width: 719px) {
  .lv-menu { display: inline-flex; }
  .lv-tabs { display: none; }
  .lv-logo { display: none; }
  .lv-top { position: sticky; top: 0; z-index: 10; padding: var(--s2) var(--s4); }
  .lv-event { display: none; }                      /* 大会名はメニューの中に出す */
  .lv-sub { display: flex; flex-direction: column-reverse; font-size: 12px; font-weight: 700; color: var(--text-2); }
  .lv-title { flex: 1; }
  .lv-cur { font-size: 18px; color: var(--text); word-break: auto-phrase; line-height: 1.3; }
  .lv-updated { display: none; }                   /* スマホでは、更新時刻はメニューの中に出す */
  .lv-cur { white-space: nowrap; }
  main { padding: var(--s2) var(--s3) var(--s6); }
  .lv-table td { padding: var(--s2); }
  .lv-rank { width: 44px; font-size: 22px; }
  .lv-bib { display: none; }
  .lv-team { font-size: 16px; }
  .lv-rec { font-size: 18px; }
  .lv-pt { font-size: 16px; }
  .lv-hide-sm { display: none; }
}
