:root { --team-accent: #ffd400; --team-accent-contrast: #11120f; --team-deep: #11120f; }

body.team-tigers { --team-accent: #ffd400; --team-accent-contrast: #11120f; --lime: #ffd400; --blue: #171717; }
body.team-giants { --team-accent: #f47721; --team-accent-contrast: #11120f; --lime: #f47721; --blue: #f47721; }
/* Task 15: 濃色球団の可読性。--team-accent-contrast = accent 背景に載る文字色（相対輝度で機械判定した白/黒）。
   --team-accent-bright = 暗背景に置く前景用に accent を白と混色して明度を上げた色（accent はインラインで注入されるため各ページで解決される）。 */
body.team-baystars { --team-accent-contrast: #fff; }
body.team-carp { --team-accent-contrast: #fff; }
body.team-swallows { --team-accent-contrast: #fff; }
body.team-dragons { --team-accent-contrast: #fff; }
body.team-hawks { --team-accent-contrast: #11120f; }
body.team-fighters { --team-accent-contrast: #fff; }
body.team-marines { --team-accent-contrast: #fff; }
body.team-eagles { --team-accent-contrast: #fff; }
body.team-buffaloes { --team-accent-contrast: #fff; }
body.team-lions { --team-accent-contrast: #fff; }
body.team-page { --team-accent-bright: color-mix(in srgb, var(--team-accent) 55%, white); }

.team-wordmark { position:absolute; z-index:1; top:31px; right:4.6vw; max-width:68vw; margin:0; color:var(--team-accent); font:800 clamp(48px, 8vw, 145px)/.85 'Barlow Condensed', sans-serif; letter-spacing:-.075em; opacity:.25; text-align:right; pointer-events:none; }
.hero-content { z-index:2; }
.hero { border-bottom:8px solid var(--team-accent); }
.team-page .brand-mark, .team-page .avatar { background:var(--team-accent); color:var(--team-accent-contrast); }
.team-page .quick-tab.active { border-color:var(--team-accent); }
.team-page .movie-tag, .team-page .play-dot, .team-page .follow-button.following { background:var(--team-accent); color:var(--team-accent-contrast); border-color:var(--team-accent); }
.team-page .feature-copy span, .team-page .players-section .eyebrow, .team-page .video-section .eyebrow { color:var(--team-accent-bright, var(--team-accent)); }
/* フォールバック選手カード: 写真なし・チームカラーの縁取りで装飾する（実在選手名にストック写真を当てないため） */
.player-card.no-photo { border-top:6px solid var(--team-accent); }
.player-card.no-photo:after { content:none; }
.team-page .team-tag { background:color-mix(in srgb, var(--team-accent) 30%, white); color:#1d1d1d; }
.team-page .story-card { border-top-color:var(--team-accent); }
.team-page .active-follow:after { background:var(--team-deep); color:var(--team-accent); }
.team-page .team-tile.active-follow { border-color:var(--team-accent); box-shadow:inset 0 -5px var(--team-accent); }
.team-switch { display:block; color:var(--ink); text-decoration:none; }
.team-page .schedule-section { background-color:var(--team-accent); }
.team-page .schedule-board { border-top:4px solid var(--team-deep); }
.team-page .stats-panel { border-top-color:var(--team-accent); }
.team-page .standing-row.focus { background:color-mix(in srgb, var(--team-accent) 22%, white); }
.team-page .leader-card:nth-child(2n) { background:var(--team-accent); color:var(--team-accent-contrast); }
.team-page .leader-card:nth-child(2n) p { color:currentColor; opacity:.75; }
.team-page .ticket-badge { background:var(--team-accent); color:var(--team-accent-contrast); }
.team-page .report-add, .team-page .ticket-add { background:var(--team-deep); }
.team-page .ticket-section .section-heading h2::after, .team-page .report-section .section-heading h2::after { content:''; display:block; width:56px; height:5px; margin-top:12px; background:var(--team-accent); }

.team-logo.primary-team, .mini-logo.primary-team { background:var(--team-accent); color:var(--team-accent-contrast); border-color:var(--team-deep); }
.team-logo.giants-mark { background:#f47721; color:#fff; border-color:#111; }
.team-logo.tigers-mark { background:#ffd400; color:#111; border-color:#111; }
body.team-giants .hero-shade { background:linear-gradient(90deg, rgba(10,10,10,.92), rgba(10,10,10,.45) 46%, rgba(244,119,33,.18)), linear-gradient(0deg, rgba(0,0,0,.34), transparent); }
body.team-giants .players-section { background:linear-gradient(120deg, #171717, #2a211c); }
body.team-giants .player-card.navy { background:#202020; }
body.team-giants .player-card.gold { background:#f47721; }
body.team-giants .player-card.crimson { background:#9f391e; }
body.team-giants .schedule-section { background-color:#f47721; }
body.team-giants .compact-card.accent { background:#f47721; color:#fff; }
body.team-giants .circle-arrow { background:#111; }
body.team-giants .hero h1 em { color:#f47721; }

@media (max-width:780px) { .team-wordmark { top:47px; right:-11vw; font-size:88px; opacity:.2; } }
@media (max-width:440px) { .team-wordmark { top:56px; right:-18vw; font-size:67px; } }

/* Task 7: 今季の戦績（既存 game-row を流用、色は --team-accent を使用） */
.team-page .season-section { padding:80px 7vw; background:#f2efe8; }
.team-page .season-section .eyebrow { color:var(--team-deep); }
.team-page .season-summary { display:flex; flex-wrap:wrap; align-items:baseline; gap:14px 26px; margin-bottom:22px; padding:20px 24px; background:var(--team-accent); color:var(--team-accent-contrast); }
.team-page .season-record { font:700 15px 'Noto Sans JP', sans-serif; }
.team-page .season-record strong { font:800 34px 'Barlow Condensed', sans-serif; margin:0 2px; vertical-align:-2px; }
.team-page .season-count { font:600 11px 'Barlow Condensed', sans-serif; letter-spacing:.06em; opacity:.72; margin-left:auto; }
.team-page .season-board { display:grid; gap:10px; }
.team-page .season-month { background:#fff; border-top:3px solid var(--team-accent); box-shadow:0 1px 0 rgba(0,0,0,.05); }
.team-page .season-month > summary { list-style:none; cursor:pointer; display:flex; align-items:center; gap:12px; padding:14px 20px; font:700 20px 'Barlow Condensed', sans-serif; letter-spacing:.03em; }
.team-page .season-month > summary::-webkit-details-marker { display:none; }
.team-page .season-month > summary small { font:600 11px 'Noto Sans JP', sans-serif; color:#777; }
.team-page .season-month > summary::after { content:'＋'; margin-left:auto; font-size:15px; color:var(--team-deep); }
.team-page .season-month[open] > summary::after { content:'－'; }
.team-page .season-month[open] > summary { border-bottom:1px solid var(--line); }
.team-page .season-month-games { padding:2px 20px 10px; }
.team-page .season-month-games .game-row:first-child { border-top:0; }
.team-page .game-result.done.win { color:var(--team-deep); }
.team-page .game-result.done.lose { color:#a33; }
.team-page .game-result.done.draw { color:#777; }
.team-page .game-result.cancelled { font:700 12px 'Noto Sans JP', sans-serif; color:#999; }
@media (max-width:780px) { .team-page .season-section { padding:56px 5vw; } .team-page .season-count { margin-left:0; } }

/* Task 11: スコアから NPB公式 試合詳細（イニングスコア）への外部リンク。日程・今季戦績・ホーム今日明日カードで共用 */
.game-detail-link { color:inherit; text-decoration:none; border-bottom:1px dotted currentColor; transition:opacity .15s; }
.game-detail-link:hover { opacity:.7; }
.game-detail-arrow { display:inline-block; margin-left:3px; font-size:.72em; font-weight:700; vertical-align:top; opacity:.85; }

/* Task 12: 選手グリッド（NPB公式ロスターをポジション別に全件表示）+ ヒーローのLIVEカウントダウン */
.player-grid.roster-grid { display:block; }
.roster-group { border-top:2px solid var(--team-accent); margin-top:14px; }
.roster-group:first-child { margin-top:0; }
.roster-group > summary { list-style:none; cursor:pointer; display:flex; align-items:baseline; gap:12px; padding:14px 4px; }
.roster-group > summary::-webkit-details-marker { display:none; }
.roster-group > summary::after { content:'＋'; margin-left:auto; font-size:15px; color:var(--team-accent); }
.roster-group[open] > summary::after { content:'－'; }
.roster-group-name { font:800 24px 'Barlow Condensed', sans-serif; letter-spacing:.04em; color:#fff; }
.roster-group > summary small { font:600 12px 'Barlow Condensed', sans-serif; letter-spacing:.06em; color:var(--team-accent); }
.roster-cards { display:grid; grid-template-columns:repeat(auto-fill, minmax(190px, 1fr)); gap:10px; padding:4px 0 20px; }
.roster-card { display:flex; align-items:center; gap:12px; padding:11px 14px 11px 11px; background:#242521; border:1px solid #34352f; border-left-width:4px; color:#fff; text-decoration:none; transition:border-color .18s, transform .18s, background .18s; }
.roster-card:hover { border-top-color:var(--team-accent); border-right-color:var(--team-accent); border-bottom-color:var(--team-accent); transform:translateY(-2px); background:#2b2c27; }
.roster-card-no { flex:0 0 auto; min-width:34px; text-align:center; font:800 26px 'Barlow Condensed', sans-serif; color:var(--team-accent-bright, var(--team-accent)); }
.roster-card-body { display:flex; flex-direction:column; gap:2px; min-width:0; }
.roster-card-body strong { font:700 15px/1.3 'Noto Sans JP', sans-serif; }
.roster-card-arrow { font-size:.72em; font-weight:700; opacity:.65; vertical-align:top; }
.roster-card-body small { font:600 11px 'Barlow Condensed', sans-serif; letter-spacing:.05em; color:#a9a99f; }
.roster-card-tags { flex:0 0 auto; display:flex; gap:4px; }
#heroCountdown.is-live { color:var(--team-accent); animation:nmLivePulse 1.1s ease-in-out infinite; }
@keyframes nmLivePulse { 0%,100% { opacity:1; } 50% { opacity:.45; } }
@media (max-width:440px) { .roster-cards { grid-template-columns:1fr 1fr; } .roster-card { padding:9px 10px 9px 9px; gap:8px; } .roster-card-no { min-width:26px; font-size:22px; } }

/* Task 21: 状態色（一軍登録=緑/二軍=グレー/育成=アンバー）はチームカラーと独立した固定色（--status-*、style.css :root）。
   カード左ボーダー・バッジ・凡例チップ・状態別グループ見出しに共通適用し、どのチームページでも同じ色=同じ意味にする。 */
.roster-toolbar { display:grid; gap:10px; margin:0 0 18px; }
.roster-summary { margin:0; font:700 13px 'Noto Sans JP', sans-serif; letter-spacing:.2px; color:#e5e3d9; }
.roster-toolbar-row { display:flex; flex-wrap:wrap; align-items:center; gap:12px 22px; }
.roster-modes { display:flex; gap:6px; flex-wrap:wrap; }
.roster-mode { padding:7px 14px; border:1px solid #3a3b35; border-radius:999px; background:transparent; color:#c7c5bb; font:600 12px 'Noto Sans JP', sans-serif; transition:background .15s, color .15s, border-color .15s; }
.roster-mode:hover { border-color:var(--team-accent); color:#fff; }
.roster-mode.active { background:var(--team-accent); border-color:var(--team-accent); color:var(--team-accent-contrast); font-weight:700; }
.roster-legend { display:flex; flex-wrap:wrap; align-items:center; gap:6px 14px; margin-left:auto; }
.roster-legend-chip { display:inline-flex; align-items:center; gap:6px; font:600 11px 'Noto Sans JP', sans-serif; color:#c7c5bb; }
.roster-legend-chip i { display:inline-block; width:10px; height:10px; border-radius:3px; background:var(--status-farm); }
.roster-legend-chip.first i { background:var(--status-active); }
.roster-legend-chip.ikusei i { background:var(--status-development); }
.roster-legend-chip.farm i { background:var(--status-farm); }
@media (max-width:640px) { .roster-legend { margin-left:0; } }

.roster-badge { display:inline-block; padding:3px 8px; border-radius:999px; font:700 10px 'Barlow Condensed', sans-serif; letter-spacing:.5px; color:var(--status-ink,#fff); white-space:nowrap; }
.roster-badge.first { background:var(--status-active); }
.roster-badge.ikusei { background:var(--status-development); }
.roster-badge.farm { background:var(--status-farm); }

.roster-card.first { border-left-color:var(--status-active); }
.roster-card.ikusei { border-left-color:var(--status-development); background:color-mix(in srgb, var(--status-development) 12%, #242521); }
.roster-card.farm { border-left-color:var(--status-farm); }

.roster-group[data-status] > summary small { font-weight:700; }
.roster-group[data-status="first"] { border-top-color:var(--status-active); }
.roster-group[data-status="ikusei"] { border-top-color:var(--status-development); }
.roster-group[data-status="farm"] { border-top-color:var(--status-farm); }
.roster-group[data-status="first"] > summary::after, .roster-group[data-status="first"] > summary small { color:var(--status-active); }
.roster-group[data-status="ikusei"] > summary::after, .roster-group[data-status="ikusei"] > summary small { color:var(--status-development); }
.roster-group[data-status="farm"] > summary::after, .roster-group[data-status="farm"] > summary small { color:var(--status-farm); }

/* Task 13: みつける（discover）実データカード。既存 feature/story/compact クラスを流用しつつ、動画大カードのボタン化と試合結果カードの配置だけ補う。 */
#discoverVideoCard { border:0; padding:0; text-align:left; font:inherit; cursor:pointer; }
#discoverVideoCard img { width:100%; height:100%; object-fit:cover; display:block; }
#discoverVideoCard .feature-copy h3 { font-size:21px; line-height:1.32; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
#discoverGameCard { grid-column:2 / -1; display:flex; flex-direction:column; justify-content:center; text-decoration:none; color:inherit; }
#discoverGameCard .game-result-line { font-size:19px; line-height:1.4; }
#discoverGameCard .game-result-line.win { color:var(--team-accent-bright, var(--team-accent)); }
@media (max-width:780px) { #discoverGameCard { grid-column:1 / -1; } }
/* レビュー修正: 全カード欠損時は hidden 属性でなくクラスで非表示（style.css の display:flex/grid 指定に確実に勝つ） */
.quick-tabs.is-empty, .content-grid.is-empty { display:none; }
/* Task 15: content-card は style.css/teams.css で display:flex/grid を持つため hidden 属性が効かない。恒久的に封じる */
.content-card[hidden] { display:none !important; }

/* Task 27: 功労選手（OB）セクション。選手一覧（players-section）と同じダーク基調の独立セクション。
   OBバッジ・カード左ボーダーは --status-ob（style.css :root で定義。チームカラー・現役状態色と独立の専用グレー）。 */
.legends-section { padding:70px 7vw; background:#1a1b18; color:#fff; }
.legends-section .section-heading h2 { color:#fff; font:800 clamp(34px, 5vw, 54px)/1.04 'Noto Sans JP', sans-serif; letter-spacing:-2px; margin:0; }
.legends-section .eyebrow { color:var(--team-accent-bright, var(--team-accent)); }
.legends-section .section-note { color:#a9a99f; }
.legend-toolbar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px 22px; margin:0 0 18px; }
.legend-summary { margin:0; font:700 13px 'Noto Sans JP', sans-serif; letter-spacing:.2px; color:#e5e3d9; }
.legend-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(250px, 1fr)); gap:10px; }
.legend-card { display:flex; flex-direction:column; gap:8px; padding:13px 15px; background:#242521; border:1px solid #34352f; border-left:4px solid var(--status-ob); color:#fff; text-decoration:none; transition:border-color .18s, transform .18s, background .18s; }
.legend-card:hover { border-top-color:var(--team-accent); border-right-color:var(--team-accent); border-bottom-color:var(--team-accent); transform:translateY(-2px); background:#2b2c27; }
.legend-card-head { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.legend-card-head strong { font:700 16px/1.3 'Noto Sans JP', sans-serif; }
.legend-card-meta { font:600 11px 'Barlow Condensed', sans-serif; letter-spacing:.06em; color:#a9a99f; }
.legend-card-stats { display:flex; flex-wrap:wrap; gap:4px 14px; padding-top:8px; border-top:1px dashed #3a3b35; }
.legend-stat { display:inline-flex; align-items:baseline; gap:5px; }
.legend-stat small { font:600 10px 'Noto Sans JP', sans-serif; color:#8f8f85; }
.legend-stat b { font:800 15px 'Barlow Condensed', sans-serif; letter-spacing:.03em; color:var(--team-accent-bright, var(--team-accent)); }
.ob-badge { display:inline-block; flex:0 0 auto; padding:3px 9px; border-radius:999px; background:var(--status-ob, #5c6470); color:#fff; font:700 10px 'Barlow Condensed', sans-serif; letter-spacing:.6px; white-space:nowrap; vertical-align:2px; }
@media (max-width:780px) { .legends-section { padding:52px 5vw; } }
@media (max-width:440px) { .legend-grid { grid-template-columns:1fr; } }
