/*
 * 人物選択モーダル共通スタイル。
 * index.html (初回解析) / review.html (再解析) で同じ id 構造を持ち、
 * このファイル 1 つで両方のスタイルを担当する。
 *
 * 重複対策のため、各ページの <style> ブロックには "Player selection modal"
 * セクションを残さないこと（重複定義の検査は tests/test_index_static.py の
 * test_review_static.py 系で担保）。
 */

.player-selection-box {
  background: var(--kr-surface); border: 1px solid var(--kr-hair); border-radius: var(--kr-radius-lg); padding: 24px;
  max-width: min(960px, 95vw); width: 95%; max-height: 90vh; overflow-y: auto;
  box-shadow: var(--kr-shadow-pop);
}
.player-selection-box h2 { font-size: 1.05rem; margin-bottom: 6px; }
.player-selection-caption { color: var(--kr-ink-dim); font-size: 0.8rem; margin-bottom: 14px; line-height: 1.5; }
.player-selection-caption strong { color: var(--kr-ink); font-weight: 600; }

.player-selection-frame-wrap {
  position: relative; width: 100%; background: var(--kr-surface-2); border: 1px solid var(--kr-hair); border-radius: var(--kr-radius-md); overflow: hidden;
  margin-bottom: 14px;
}
.player-selection-frame-wrap img { display: block; width: 100%; height: auto; }
.player-selection-frame-wrap svg {
  position: absolute; inset: 0; width: 100%; height: 100%;
  pointer-events: none;
}
/* 検出ボックスは芝の緑と被って見えづらいので REC red を使う。
   DESIGN.md「REC Red の例外」セクション参照。 */
.player-selection-frame-wrap svg rect {
  fill: transparent; stroke: var(--kr-rec); stroke-width: 3; pointer-events: auto; cursor: pointer;
  transition: stroke 0.15s, fill 0.15s;
}
.player-selection-frame-wrap svg rect:hover { fill: rgba(255,59,48,0.18); }
.player-selection-frame-wrap svg rect.selected {
  stroke: var(--kr-rec); stroke-width: 5; fill: rgba(255,59,48,0.28);
}

.player-selection-empty {
  color: var(--kr-ink-dim); font-size: 0.85rem; text-align: center; padding: 24px 0;
}
.player-selection-actions {
  display: flex; gap: 10px; flex-wrap: wrap; justify-content: flex-end; align-items: center;
}
/* btn-secondary / btn-primary はモーダル内（候補側 + video preview 側）の
   両方のアクション行に適用する。スコープを広めに取らないと、別の場面から
   探す UI のボタンが unstyled になる regression を踏む。 */
.player-selection-actions .btn-secondary,
.player-selection-video-row .btn-secondary {
  background: transparent; color: var(--kr-ink-dim); border: 1px solid var(--kr-hair); border-radius: var(--kr-radius-md);
  padding: 8px 14px; cursor: pointer; font-size: 0.82rem;
}
.player-selection-actions .btn-secondary:hover:not(:disabled),
.player-selection-video-row .btn-secondary:hover:not(:disabled) {
  background: var(--kr-accent-sub); color: var(--kr-ink);
}
.player-selection-actions .btn-secondary:disabled,
.player-selection-video-row .btn-secondary:disabled {
  opacity: 0.4; cursor: not-allowed;
}
.player-selection-actions .btn-primary,
.player-selection-video-row .btn-primary {
  background: var(--kr-accent); color: var(--kr-accent-ink); border: none; border-radius: var(--kr-radius-md);
  padding: 8px 20px; cursor: pointer; font-size: 0.85rem; font-weight: 700;
  transition: filter 0.15s;
}
.player-selection-actions .btn-primary:hover:not(:disabled),
.player-selection-video-row .btn-primary:hover:not(:disabled) {
  filter: brightness(1.06);
}
.player-selection-actions .btn-primary:disabled,
.player-selection-video-row .btn-primary:disabled {
  opacity: 0.4; cursor: not-allowed;
}
.player-selection-status {
  color: var(--kr-ink-dim); font-size: 0.8rem; margin-right: auto;
}
.player-selection-auto-note {
  color: var(--kr-ink-dim); font-size: 0.75rem; text-align: center; margin: 8px 0 0;
}
.player-selection-loading {
  display: none; text-align: center; padding: 40px 20px; color: var(--kr-ink-dim); font-size: 0.85rem;
}
.player-selection-loading.active { display: block; }
.player-selection-loading .spinner { margin: 0 auto 16px; }
.player-selection-frame-wrap .frame-overlay {
  display: none; position: absolute; inset: 0; z-index: 3;
  background: rgba(242,241,234,0.72);
  align-items: center; justify-content: center; flex-direction: column; gap: 12px;
  color: var(--kr-ink); font-size: 0.85rem;
}
.player-selection-frame-wrap .frame-overlay.active { display: flex; }
.player-selection-frame-wrap .frame-overlay .spinner {
  width: 44px; height: 44px; border: 3px solid var(--kr-hair); border-top-color: var(--kr-rec);
  border-radius: 50%; animation: spin 0.8s linear infinite;
}
.player-selection-frame-wrap.busy svg rect { pointer-events: none; cursor: default; }

/* 「別の場面から探す」を押した後に出る video プレビュー */
.player-selection-video-wrap {
  position: relative; background: var(--kr-surface-2); border: 1px solid var(--kr-hair); border-radius: var(--kr-radius-md);
  padding: 14px; margin-bottom: 14px;
}
.player-selection-video-wrap[hidden] { display: none; }
.player-selection-video-wrap video {
  display: block; width: 100%; max-width: 100%; background: #000; border-radius: var(--kr-radius-sm);
}
.player-selection-video-hint {
  color: var(--kr-ink-dim); font-size: 0.8rem; margin: 10px 0 0; line-height: 1.5;
}
.player-selection-video-row {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 10px;
}
.player-selection-video-time {
  font-family: var(--kr-font-mono); letter-spacing: .18em; color: var(--kr-ink);
  font-size: 0.9rem; min-width: 60px;
}

/* invite 確定後の共有案内トースト（画面下中央）— index.html だけで使う */
.share-hint-toast {
  position: fixed; left: 50%; bottom: 28px; transform: translateX(-50%);
  background: var(--kr-surface); border: 1px solid var(--kr-hair); color: var(--kr-ink);
  padding: 12px 18px; border-radius: var(--kr-radius-md); font-size: 0.85rem; line-height: 1.5;
  max-width: 420px; width: calc(100% - 32px); box-shadow: var(--kr-shadow-pop);
  opacity: 0; pointer-events: none; z-index: 200;
  transition: opacity 0.25s ease-out, transform 0.25s ease-out;
}
.share-hint-toast.show {
  opacity: 1; pointer-events: auto; transform: translateX(-50%) translateY(-4px);
}
