/* V65：管理員名單確認、階段覆核與即時小組排名 */
.tournament-workflow{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;
  margin:14px 0;padding:0;list-style:none;
}
.tournament-workflow li{
  display:flex;align-items:center;gap:7px;min-width:0;padding:9px;
  border:1px solid var(--night-3);border-radius:10px;background:rgba(15,17,34,.56);
  color:var(--muted);font-size:11px;
}
.tournament-workflow li>span{
  display:grid;place-items:center;width:24px;height:24px;flex:none;border-radius:50%;
  border:1px solid currentColor;font-weight:900;
}
.tournament-workflow li strong{line-height:1.25}
.tournament-workflow li.is-current{border-color:var(--orange);color:var(--cream);box-shadow:0 0 12px #ff7a1826}
.tournament-workflow li.is-current>span{background:var(--orange);color:var(--ink-deep)}
.tournament-workflow li.is-complete{border-color:var(--green);color:var(--green)}

.roster-confirm-panel,.stage-review-panel,.advancer-confirm-panel,.live-standings{
  margin:14px 0;padding:14px;border:2px solid var(--night-3);border-radius:14px;
  background:linear-gradient(145deg,rgba(38,43,77,.96),rgba(20,23,42,.96));
}
.roster-confirm-head,.stage-review-head,.live-standings-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
}
.roster-confirm-head h4,.stage-review-head h4,.live-standings-head h4{margin:0;color:var(--cream)}
.roster-count,.stage-review-state{
  flex:none;padding:7px 10px;border:1px solid var(--cyan);border-radius:999px;
  color:var(--cyan);background:#0f1122;font-size:12px;
}
.roster-safety-note,.roster-lock,.stage-review-alert,.stage-review-tie{
  display:grid;gap:3px;margin:12px 0;padding:11px 12px;border-radius:10px;font-size:12px;
}
.roster-safety-note{border-left:4px solid var(--green);background:#79d85c12}
.roster-safety-note strong{color:var(--green)}
.roster-safety-note span,.roster-lock span,.stage-review-alert span,.stage-review-tie span{color:var(--paper);line-height:1.5}
.roster-lock,.stage-review-alert{border-left:4px solid var(--red);background:#ef3d2714}
.roster-lock strong,.stage-review-alert strong{color:#ff9689}
.stage-review-tie{border-left:4px solid var(--yellow);background:#ffd34f13}
.stage-review-tie strong{color:var(--yellow)}
.roster-tools{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px;margin:12px 0}
.roster-tools label,.roster-reason{margin:0}
.roster-candidates{
  display:grid;gap:7px;max-height:340px;overflow:auto;padding:2px;
  overscroll-behavior:contain;
}
.roster-candidate{
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;
  min-height:50px;padding:9px 10px;border:1px solid var(--night-3);border-radius:10px;
  background:var(--night-1);cursor:pointer;
}
.roster-candidate:has(input:checked){border-color:var(--green);box-shadow:inset 3px 0 0 var(--green)}
.roster-candidate input{width:22px;height:22px;accent-color:var(--green)}
.roster-candidate>span{display:grid;gap:2px;min-width:0}
.roster-candidate small{color:var(--muted);font-size:10px}
.roster-candidate em{color:var(--green);font-size:10px;font-style:normal;font-weight:900}
.roster-candidate.is-ineligible:not(:has(input:checked)){opacity:.58}
.roster-reason{display:grid;gap:5px;margin-top:12px}
.roster-change-summary{
  margin:10px 0;padding:9px 10px;border-radius:8px;background:#0f1122;color:var(--paper);font-size:12px;
}
.workflow-section-head{
  display:flex;align-items:center;gap:10px;margin:18px 0 9px;
}
.workflow-section-head>span{
  display:grid;place-items:center;width:29px;height:29px;flex:none;border-radius:50%;
  background:var(--orange);color:var(--ink-deep);font-weight:900;
}
.workflow-section-head>div{display:grid;gap:2px}
.workflow-section-head small{color:var(--muted);font-size:10px}

.live-standings{border-color:#49e1ee70}
.live-standings-head .tag{margin-top:2px}
.live-standings-rule{margin:7px 0 12px;color:var(--muted);font-size:11px;line-height:1.45}
.live-standing-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px}
.live-standing-card{min-width:0;border:1px solid var(--night-3);border-radius:11px;overflow:hidden;background:#11152a}
.live-standing-card h5{margin:0;padding:8px 10px;background:var(--night-1);color:var(--cyan);font-size:12px}
.standing-table-scroll{max-width:100%;overflow-x:auto}
.standing-table{width:100%;min-width:420px;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums}
.standing-table th,.standing-table td{padding:8px 7px;border-top:1px solid #39406b99;text-align:center;white-space:nowrap}
.standing-table thead th{color:var(--muted);font-size:10px;text-transform:uppercase}
.standing-table tbody th{text-align:left;color:var(--cream);max-width:150px;overflow:hidden;text-overflow:ellipsis}
.standing-table tr.is-leading{background:#ffd34f0d}
.standing-table .standing-rank{display:inline-grid;place-items:center;min-width:25px;height:25px}
.standing-diff{font-weight:900}
.standing-diff.is-positive{color:var(--green)}
.standing-diff.is-negative{color:#ff8b7e}

.stage-review-panel.is-confirmed{border-color:var(--green)}
.stage-review-panel.is-confirmed .stage-review-state{border-color:var(--green);color:var(--green)}
.stage-review-head>div:last-child{display:grid;justify-items:end;gap:7px}
.stage-review-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:12px 0}
.stage-review-summary span{display:grid;gap:2px;padding:9px;border:1px solid var(--night-3);border-radius:9px;color:var(--muted);font-size:10px}
.stage-review-summary strong{color:var(--cream);font-size:13px}
.stage-result-matches{margin:12px 0;border:1px solid var(--night-3);border-radius:10px;overflow:hidden}
.stage-result-matches>summary{padding:11px 12px;background:var(--night-1);color:var(--cyan);font-weight:900;cursor:pointer}
.stage-result-matches-body{padding:10px}
.stage-review-confirm-label{display:grid;gap:5px;margin:12px 0}
.stage-review-confirmed-note{padding:10px;border-left:4px solid var(--green);background:#79d85c12;color:var(--paper);font-size:12px}
.advancer-confirm-panel.is-locked{opacity:.72;border-style:dashed}
.advancer-confirm-panel .standing-grid{margin-block:12px}

@media (max-width:720px){
  .tournament-workflow{grid-template-columns:1fr;gap:6px}
  .tournament-workflow li{min-height:44px}
  .roster-confirm-panel,.stage-review-panel,.advancer-confirm-panel,.live-standings{padding:11px;margin-inline:0}
  .roster-confirm-head,.stage-review-head,.live-standings-head{align-items:stretch;flex-direction:column}
  .roster-count,.stage-review-state{align-self:flex-start}
  .stage-review-head>div:last-child{justify-items:start}
  .roster-tools{grid-template-columns:1fr}
  .roster-tools .btn{width:100%;min-height:44px}
  .roster-candidates{max-height:44vh}
  .roster-candidate{grid-template-columns:auto minmax(0,1fr);min-height:56px}
  .roster-candidate em{grid-column:2}
  .stage-review-summary{grid-template-columns:1fr}
  .stage-review-summary span{grid-template-columns:1fr auto;align-items:center}
  .live-standing-grid{grid-template-columns:1fr}
  .standing-table-scroll{margin-inline:-4px;padding-bottom:3px}
  .stage-result-matches-body{padding:7px}
  .advancer-row{grid-template-columns:auto 28px minmax(0,1fr)}
  .advancer-row small{grid-column:3}
}

@media (max-width:520px){
  .standing-table-scroll{overflow-x:hidden}
  .standing-table{width:100%;min-width:100%;table-layout:fixed;font-size:10px}
  .standing-table th,.standing-table td{padding:6px 2px}
  .standing-table th:nth-child(1),.standing-table td:nth-child(1){width:34px}
  .standing-table th:nth-child(n+3),.standing-table td:nth-child(n+3){width:30px}
  .standing-table tbody th{max-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .standing-table .standing-rank{min-width:22px;width:22px;height:22px;padding:0}
}

@media (prefers-reduced-motion:reduce){
  .live-dot,.live-sync-status.refreshing>span{animation:none!important}
}
