/**
 * Keirin frontend dark mode
 * Loaded last and scoped to plugin-owned frontend components.
 */

@media (prefers-color-scheme: dark) {
  :where(
    .keirin-ai-prediction-page,
    .keirin-ai-category-page,
    .keirin-article,
    .keirin-prediction-modal,
    .keirin-daily-predictions,
    .keirin-editorial-promo,
    .keirin-high-payout-logs,
    .keirin-hit-history
  ) {
    color-scheme: dark;
  }

  /* AI予想記事とテーマ外枠 */
  .keirin-ai-prediction-page {
    --rp-black: #080a0c;
    --rp-panel: #24282d;
    --rp-green: #9aed16;
    --rp-ink: #eef1f4;
    --rp-muted: #aab1b9;
    --rp-line: #3d434a;
    --rp-paper: #111417;
    --rp-white: #1c2024;
    --rp-shadow: 0 12px 34px rgba(0, 0, 0, 0.34);
    background: var(--rp-paper) !important;
  }

  .keirin-ai-prediction-page :where(.cps-post-box, .cps-post, .cps-post-main-box, .post_content) {
    background: transparent !important;
  }

  .keirin-ai-prediction-page .cps-post-main {
    border-color: var(--rp-line) !important;
    color: var(--rp-ink) !important;
    background: rgba(28, 32, 36, 0.96) !important;
    box-shadow: var(--rp-shadow) !important;
  }

  .keirin-ai-prediction-page :where(.cps-post-title, .keirin-article, .keirin-article p, .keirin-article li) {
    color: var(--rp-ink) !important;
  }

  .keirin-ai-prediction-page :where(.cps-post-meta, .keirin-race-explorer__live, .keirin-race-card__status) {
    color: var(--rp-muted) !important;
  }

  .keirin-ai-prediction-page .keirin-article {
    --keirin-text: #eef1f4;
    --keirin-text-light: #aab1b9;
    --keirin-border: #3d434a;
    --keirin-bg-gray: #24282d;
  }

  .keirin-ai-prediction-page .race-prediction {
    border-color: var(--rp-line) !important;
    background: #16191d !important;
    box-shadow: 0 12px 30px rgba(0, 0, 0, 0.3) !important;
  }

  .keirin-ai-prediction-page :where(
    .article-overview,
    .keirin-ai-notice,
    .prediction-summary,
    .line-info-container,
    .prediction-column,
    .line-summary,
    .rider-table-container,
    .keirin-related-articles,
    .keirin-race-explorer,
    .keirin-selected-race,
    .keirin-selected-race__bet-group
  ) {
    border-color: var(--rp-line) !important;
    color: var(--rp-ink) !important;
    background: var(--rp-white) !important;
    box-shadow: none !important;
  }

  .keirin-ai-prediction-page :where(
    .keirin-heading--section:not(.race-title),
    .keirin-heading--subsection,
    .keirin-heading--minor,
    .keirin-race-explorer__title,
    .keirin-selected-race__title,
    .keirin-related-articles h2
  ) {
    border-color: var(--rp-line) !important;
    color: var(--rp-ink) !important;
  }

  .keirin-ai-prediction-page :where(.rider-table, .rider-table tbody, .rider-table tr, .rider-table td) {
    color: #e8ebee !important;
    background: #1c2024 !important;
  }

  .keirin-ai-prediction-page .rider-table th {
    border-color: #4b535c !important;
    color: #f2f4f6 !important;
    background: #2b3036 !important;
  }

  .keirin-ai-prediction-page :where(.rider-table td, .rider-table td:first-child) {
    border-color: #343a41 !important;
  }

  .keirin-ai-prediction-page .keirin-race-card {
    border-color: #444b53 !important;
    color: #eef1f4 !important;
    background: #23282d !important;
  }

  .keirin-ai-prediction-page :where(.keirin-race-card:hover, .keirin-race-card.is-selected) {
    border-color: var(--rp-green) !important;
    color: #f7f9fa !important;
    background: #2d3339 !important;
  }

  .keirin-ai-prediction-page .keirin-race-card[data-state="closing"] {
    border-color: #ff8a55 !important;
    background: #39251e !important;
  }

  .keirin-ai-prediction-page :where(.keirin-race-card[data-state="closed"], .keirin-race-card[data-state="finished"]) {
    color: #959da6 !important;
    background: #202428 !important;
  }

  .keirin-ai-prediction-page :where(.keirin-pagination, .keirin-pagination-inner, .keirin-predictions-count) {
    border-color: var(--rp-line) !important;
    background: #1c2024 !important;
  }

  .keirin-ai-prediction-page .venue-link {
    border-color: var(--rp-line) !important;
    color: var(--rp-ink) !important;
    background: #24282d !important;
  }

  /* クイック予想モーダル */
  .keirin-prediction-modal {
    --keirin-text: #eef1f4;
    --keirin-text-light: #aab1b9;
    --keirin-border: #414850;
    --keirin-bg-gray: #24292e;
    border: 1px solid #434a52;
    color: #eef1f4 !important;
    background: #191d21 !important;
  }

  .keirin-prediction-modal :where(
    .keirin-prediction-modal__close,
    .keirin-prediction-modal__pagination,
    .line-info-container,
    .prediction-summary,
    .prediction-column,
    .line-summary
  ) {
    border-color: #414850 !important;
    color: #eef1f4 !important;
    background: #24292e !important;
  }

  .keirin-prediction-modal :where(.keirin-prediction-modal__title, .keirin-prediction-modal__page-current, .keirin-heading, .line-text) {
    color: #eef1f4 !important;
  }

  .keirin-prediction-modal__page-button {
    border-color: #525a63 !important;
    color: #eef1f4 !important;
    background: #2a3036 !important;
  }

  .keirin-prediction-modal__page-button:hover:not(:disabled) {
    border-color: #77818c !important;
    background: #343b42 !important;
  }

  .keirin-prediction-modal__page-button:disabled {
    border-color: #373d43 !important;
    color: #7f8790 !important;
    background: #202428 !important;
  }

  .keirin-prediction-modal :where(.keirin-modal-riders, .keirin-modal-riders__table, .keirin-modal-riders__table th, .keirin-modal-riders__table td) {
    border-color: #3c434a !important;
    color: #e8ebee !important;
    background: #1e2327 !important;
  }

  .keirin-prediction-modal .keirin-modal-riders__heading {
    border-color: #454c54 !important;
    color: #f2f4f6 !important;
    background: #2a3036 !important;
  }

  /* 日別・開催場別・高額配当ショートコード */
  .keirin-ai-category-page {
    --rp-black: #080a0c;
    --rp-panel: #24282d;
    --rp-green: #9aed16;
    --rp-ink: #eef1f4;
    --rp-muted: #aab1b9;
    --rp-line: #3d434a;
    --rp-paper: #111417;
    --rp-white: #1c2024;
    --rp-shadow: 0 12px 34px rgba(0, 0, 0, 0.34);
    background: var(--rp-paper) !important;
  }

  .keirin-daily-predictions {
    --keirin-daily-text: #eef1f4;
    --keirin-daily-muted: #aab1b9;
    --keirin-daily-heading: #f5f7f8;
    --keirin-daily-link: #8dccff;
    --keirin-daily-link-hover: #b9e0ff;
    --keirin-daily-surface: #1c2024;
    --keirin-daily-surface-subtle: #24292e;
    --keirin-daily-border: #3d454d;
    --keirin-daily-accent: #9aed16;
    --keirin-daily-accent-soft: #29361b;
    --keirin-daily-danger: #ff938a;
    color: var(--keirin-daily-text) !important;
  }

  .keirin-ai-category-page :where(.cps-post-box, .cps-post, .cps-post-main-box, .cps-post-main, .post_content) {
    color: var(--rp-ink) !important;
    background: transparent !important;
  }

  .keirin-ai-category-page :where(.cps-post-title, .cps-post-main > h2) {
    color: var(--rp-ink) !important;
  }

  .keirin-ai-category-page :where(.cps-post-meta, .cps-post-main > p:first-of-type) {
    color: var(--rp-muted) !important;
  }

  .keirin-ai-category-page .keirin-daily-predictions {
    border-color: var(--rp-line) !important;
    background: rgba(28, 32, 36, 0.94) !important;
  }

  .keirin-daily-predictions :where(.keirin-daily-header, .keirin-grade-title) {
    border-color: var(--keirin-daily-border) !important;
    color: var(--keirin-daily-heading) !important;
    background: transparent !important;
  }

  .keirin-daily-predictions :where(.keirin-daily-title, .keirin-card-title, .keirin-daily-card-name, .keirin-high-payout-venue-name) {
    color: var(--keirin-daily-heading) !important;
  }

  .keirin-daily-predictions :where(
    .keirin-daily-description,
    .keirin-card-meta,
    .keirin-card-time,
    .keirin-daily-card-time,
    .keirin-predictions-count,
    .keirin-high-payout-note,
    .keirin-high-payout-venue-status,
    .keirin-no-predictions p
  ) {
    color: var(--keirin-daily-muted) !important;
  }

  .keirin-daily-predictions :where(
    .keirin-date-nav-inner,
    .keirin-prediction-card,
    .keirin-daily-card-link,
    .keirin-prediction-link,
    .keirin-predictions-count,
    .keirin-no-predictions,
    .keirin-card-placeholder
  ),
  .keirin-ai-category-page .cps-post-main .blog-card {
    border-color: var(--keirin-daily-border) !important;
    color: var(--keirin-daily-text) !important;
    background: var(--keirin-daily-surface) !important;
    box-shadow: 0 8px 22px rgba(0, 0, 0, 0.24) !important;
  }

  .keirin-daily-predictions :where(.keirin-card-link:hover, .keirin-daily-card-link:hover) {
    border-color: #65707b !important;
    background: #252b30 !important;
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.34) !important;
  }

  .keirin-daily-predictions .keirin-prediction-link:hover {
    border-color: #65707b !important;
    color: var(--keirin-daily-text) !important;
    background: #252b30 !important;
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.34) !important;
  }

  .keirin-daily-predictions :where(.keirin-prediction-venue, .keirin-prediction-link-inner) {
    color: var(--keirin-daily-heading) !important;
  }

  .keirin-daily-predictions .keirin-prediction-time {
    color: var(--keirin-daily-muted) !important;
    background: var(--keirin-daily-surface-subtle) !important;
  }

  .keirin-daily-predictions :where(.keirin-date-current, .keirin-daily-card-attention, .keirin-card-venue) {
    color: #152000 !important;
    background: var(--keirin-daily-accent) !important;
  }

  .keirin-daily-predictions :where(.keirin-date-nav-prev, .keirin-date-nav-next, .keirin-archive-page-link) {
    border-color: #535c65 !important;
    color: #f2f4f6 !important;
    background: #292f35 !important;
  }

  .keirin-daily-predictions :where(.keirin-date-nav-disabled, .keirin-archive-page-link.is-disabled) {
    border-color: #343a40 !important;
    color: #7f8790 !important;
    background: #202428 !important;
  }

  .keirin-daily-predictions .keirin-daily-card-performance {
    border-color: #516b34 !important;
    color: #d8f7b0 !important;
    background: #29361b !important;
  }

  .keirin-daily-predictions.keirin-high-payout-top5 {
    border-color: var(--keirin-daily-border) !important;
    background: #181c20 !important;
  }

  .keirin-high-payout-top5 .keirin-high-payout-table-wrap {
    border-color: var(--keirin-daily-border) !important;
    background: #1c2024 !important;
  }

  .keirin-high-payout-top5 .keirin-high-payout-table thead th {
    border-color: #4a525a !important;
    color: #f0f2f4 !important;
    background: #2b3036 !important;
  }

  .keirin-high-payout-top5 .keirin-high-payout-table tbody tr {
    background: #1c2024 !important;
  }

  .keirin-high-payout-top5 .keirin-high-payout-table tbody tr:nth-child(even) {
    background: #22272c !important;
  }

  .keirin-high-payout-top5 .keirin-high-payout-table tbody tr:hover {
    background: #2b3137 !important;
  }

  .keirin-high-payout-top5 .keirin-high-payout-table tbody td {
    border-color: #383f46 !important;
    color: #e8ebee !important;
  }

  .keirin-high-payout-top5 .keirin-high-payout-table tbody td::before {
    color: #aeb6bf !important;
  }

  .keirin-high-payout-top5 .keirin-high-payout-cell-rank {
    border-color: #3b4249 !important;
  }

  .keirin-high-payout-top5 :where(.keirin-high-payout-date, .keirin-high-payout-bet) {
    color: #e8ebee !important;
  }

  .keirin-high-payout-top5 .keirin-high-payout-bet {
    border-color: #454d55 !important;
    background: #2a3036 !important;
  }

  .keirin-high-payout-top5 .keirin-high-payout-amount {
    color: #ff9d98 !important;
  }

  .keirin-error {
    border-color: #6f3b37 !important;
    color: #ffaaa2 !important;
    background: #34211f !important;
  }

  /* 高額配当ログショートコード */
  .keirin-high-payout-logs {
    border-color: #514933;
    color: #e9ecef;
    background: linear-gradient(180deg, #211f1a, #191b1e);
  }

  .keirin-high-payout-logs__title {
    color: #f1dd9e;
  }

  .keirin-high-payout-logs__lead {
    color: #bdb7a9;
  }

  .keirin-high-payout-logs__table-wrap {
    border-color: #46433b;
    background: #1c2024;
  }

  .keirin-high-payout-logs__table th {
    border-color: #514b3b;
    background: #2b281f;
  }

  .keirin-high-payout-logs__table td,
  .keirin-high-payout-logs__table tr {
    border-color: #3b3b37;
    color: #e6e8ea;
    background: #1c2024;
  }

  .keirin-high-payout-logs__table tbody tr:hover {
    background: #292820;
  }

  .keirin-high-payout-logs__table a {
    color: #f0c86b;
  }

  .keirin-high-payout-logs__payout,
  .keirin-high-payout-logs__error {
    color: #ff938a;
  }

  .keirin-high-payout-logs__status--pending {
    color: #e7c86f;
  }

  .keirin-high-payout-logs :where(.keirin-high-payout-logs__empty, .keirin-high-payout-logs__error) {
    background: #272823;
  }

  .keirin-high-payout-logs__table td::before {
    color: #bcb7aa;
  }

  /* ライブ成績 */
  .keirin-article .keirin-venue-performance--live {
    border-color: #7b642c;
    background: #282316;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.24);
  }

  .keirin-article :where(.keirin-venue-performance__heading h2, .keirin-venue-performance__close) {
    color: #f0d98b;
  }

  .keirin-article :where(.keirin-venue-performance__period, .keirin-venue-performance__stat dt, .keirin-venue-performance__note) {
    color: #c9ba86;
  }

  .keirin-article .keirin-venue-performance__stat {
    background: #1c2024;
  }

  .keirin-article .keirin-venue-performance__stat dd {
    color: #f1d572;
  }

  .keirin-article .keirin-venue-performance__close {
    background: rgba(240, 217, 139, 0.1);
  }

  :where(.keirin-article, .keirin-race-explorer, .keirin-prediction-modal) .keirin-race-evaluation {
    border-color: #444c54;
    color: #dce1e5;
    background: #252a2f;
  }

  :where(.keirin-article, .keirin-race-explorer, .keirin-prediction-modal) .keirin-race-evaluation.is-hit {
    border-color: #7b642c;
    background: #2b2618;
  }

  :where(.keirin-article, .keirin-race-explorer, .keirin-prediction-modal) .keirin-race-evaluation__provisional {
    background: #343a40;
  }

  /* 通常記事上部のクーポン／AI導線 */
  .keirin-editorial-promo {
    --kep-green: #9aed16;
    --kep-ink: #eef1f4;
    border-color: transparent;
    background: transparent;
    box-shadow: none;
  }

  .keirin-editorial-promo__coupon {
    border-color: #3e454c;
    background: linear-gradient(135deg, #201915, #0e1012);
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.34);
  }

  .keirin-editorial-promo__prediction {
    border-color: #3e454c;
    color: #eef1f4;
    background: #1c2024;
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.28);
  }

  .keirin-editorial-promo__prediction p {
    color: #b6bdc4 !important;
  }

  /* 的中履歴は元から暗色。OSダーク時はテーマとの境界だけ調整 */
  .keirin-hit-history {
    border-color: #4a5158;
    background: #090b0d;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.42);
  }

  /* 広告ラベルと記事内区切り */
  .keirin-ad-label {
    color: #9ca3aa;
  }

  .race-prediction + .keirin-ad-container {
    border-color: #343a40;
    background: #171a1d;
  }

  /* ダーク背景上でスクロール領域を判別しやすくする */
  :where(.keirin-article, .keirin-prediction-modal, .keirin-daily-predictions, .keirin-high-payout-logs) ::-webkit-scrollbar-thumb {
    background: #59616a;
  }

  :where(.keirin-article, .keirin-prediction-modal, .keirin-daily-predictions, .keirin-high-payout-logs) ::-webkit-scrollbar-track {
    background: #1a1e22;
  }

  /* ==========================================================
     1. テーマ外枠（JIN）の下地をダーク化
     ----------------------------------------------------------
     #wrapper が明色（#ededE8）のまま残るため、.cps-post-main の
     外側にある記事タイトル・投稿日・ページャ・記事一覧カードが
     「明色の文字 × 明色の背景」になり読めなくなっていた。
     ========================================================== */
  body.keirin-ai-prediction-page,
  body.keirin-ai-category-page,
  body.keirin-ai-venue-page {
    background-color: #111417 !important;
  }

  body.keirin-ai-prediction-page #wrapper,
  body.keirin-ai-category-page #wrapper,
  body.keirin-ai-venue-page #wrapper {
    background-color: #111417 !important;
    background-image: none !important;
  }

  body.keirin-ai-prediction-page :where(#contents, #main-contents, #scroll-content, .cps-post-box, .cps-post, .cps-post-main-box, .post_content),
  body.keirin-ai-category-page :where(#contents, #main-contents, #scroll-content, .cps-post-box, .cps-post, .cps-post-main-box, .post_content),
  body.keirin-ai-venue-page :where(#contents, #main-contents, #scroll-content, .cps-post-box, .cps-post, .cps-post-main-box, .post_content) {
    background-color: transparent !important;
  }

  /* 記事ヘッダ（タイトル・投稿日） */
  body.keirin-ai-prediction-page :where(.cps-post-header, .cps-post-title, .cps-post-header h1),
  body.keirin-ai-category-page :where(.cps-post-header, .cps-post-title, .cps-post-header h1) {
    color: #eef1f4 !important;
  }

  body.keirin-ai-prediction-page :where(.cps-post-meta, .cps-post-meta a, .cps-post-date, .cps-post-date-box, .post-date, .cps-post-update),
  body.keirin-ai-category-page :where(.cps-post-meta, .cps-post-meta a, .cps-post-date, .cps-post-date-box, .post-date, .cps-post-update) {
    color: #aab1b9 !important;
  }

  /* テーマの前後記事ナビ・記事一覧カード・ページャ（明色カードのまま残る） */
  body.keirin-ai-prediction-page :where(a.prev, a.next, .post-list-link, .related-entry-card-wrap),
  body.keirin-ai-category-page :where(a.prev, a.next, .post-list-link, .related-entry-card-wrap) {
    border-color: #3d434a !important;
    background-color: #1c2024 !important;
  }

  body.keirin-ai-prediction-page :where(a.prev, a.next, .post-list-link) :where(span, div, p, time, h2, h3),
  body.keirin-ai-category-page :where(a.prev, a.next, .post-list-link) :where(span, div, p, time, h2, h3) {
    color: #dfe4e9 !important;
  }

  body.keirin-ai-prediction-page :where(.post-list-date, .post-list-desc, .post-list-meta),
  body.keirin-ai-category-page :where(.post-list-date, .post-list-desc, .post-list-meta) {
    color: #aab1b9 !important;
  }

  body.keirin-ai-prediction-page :where(.pagination a, .pagination span, .pagination .current),
  body.keirin-ai-category-page :where(.pagination a, .pagination span, .pagination .current) {
    border-color: #3d434a !important;
    color: #dfe4e9 !important;
    background-color: #1c2024 !important;
  }

  body.keirin-ai-prediction-page :where(.pagination a.inactive, .pagination a.inactive span),
  body.keirin-ai-category-page :where(.pagination a.inactive, .pagination a.inactive span) {
    color: #9aa2ab !important;
  }

  /* 本文中リンク（テーマ既定の #008db7 はダーク下地でコントラスト不足） */
  body.keirin-ai-prediction-page .cps-post-main a:not([class]),
  body.keirin-ai-category-page .cps-post-main a:not([class]) {
    color: #6cc8e8 !important;
  }

  /* ==========================================================
     2. アクセント（黄緑など）チップ上の文字色
     ----------------------------------------------------------
     .cps-post-main .keirin-article span { color: var(--keirin-text) } や
     .keirin-daily-predictions span { color: ... !important } が
     チップ内の文字まで明色にしてしまい、黄緑背景に白文字という
     判読不能な組み合わせになっていた。
     ========================================================== */
  body.keirin-ai-prediction-page .keirin-article :where(
    .keirin-selected-race__badge,
    .keirin-race-action--vote,
    .keirin-promo-code__copy,
    .keirin-registration-cta__button,
    .keirin-registration-cta__eyebrow,
    .vote-button:not(.vote-button-secondary):not(.vote-button--result),
    .venue-current
  ) {
    color: #102000 !important;
  }

  body.keirin-ai-prediction-page .keirin-article :where(
    .keirin-selected-race__badge,
    .keirin-race-action--vote,
    .keirin-promo-code__copy,
    .keirin-registration-cta__button,
    .keirin-registration-cta__eyebrow,
    .vote-button:not(.vote-button-secondary):not(.vote-button--result),
    .venue-current
  ) :where(span, strong, em, small) {
    color: inherit !important;
  }

  /* 締切間際・締切後のバッジは配色が変わるため個別に指定 */
  body.keirin-ai-prediction-page .keirin-article .keirin-selected-race__badge[data-state="closing"],
  body.keirin-ai-prediction-page .keirin-prediction-modal__status[data-state="closing"] {
    color: #2b1000 !important;
    background: #ffb787 !important;
  }

  body.keirin-ai-prediction-page .keirin-article .keirin-selected-race__badge[data-state="closed"],
  body.keirin-ai-prediction-page .keirin-article .keirin-selected-race__badge[data-state="finished"],
  body.keirin-ai-prediction-page .keirin-prediction-modal__status[data-state="closed"],
  body.keirin-ai-prediction-page .keirin-prediction-modal__status[data-state="finished"] {
    color: #e3e6ea !important;
    background: #3a4048 !important;
  }

  body.keirin-ai-category-page .keirin-daily-predictions :where(.keirin-date-current, .keirin-card-venue, .keirin-daily-card-attention),
  body.keirin-ai-category-page .keirin-daily-predictions :where(.keirin-date-current, .keirin-card-venue, .keirin-daily-card-attention) :where(span, strong) {
    color: #102000 !important;
  }

  /* ==========================================================
     3. 濃色パネル上に載るテキスト
     ----------------------------------------------------------
     --rp-white / --rp-ink をダーク時に反転させている影響で、
     濃色パネル上の文字まで暗色になっていた箇所を戻す。
     ========================================================== */
  body.keirin-ai-prediction-page .keirin-article .race-title,
  body.keirin-ai-prediction-page .cps-post-main .keirin-article .race-title,
  body.keirin-ai-prediction-page .keirin-article .race-title :where(span, small, em) {
    color: #ffffff !important;
  }

  body.keirin-ai-prediction-page :where(.keirin-nav-prev, .keirin-nav-next, .keirin-article-return__link, .keirin-race-action--secondary, .vote-button.vote-button-secondary),
  body.keirin-ai-prediction-page :where(.keirin-nav-prev, .keirin-nav-next, .keirin-article-return__link, .keirin-race-action--secondary, .vote-button.vote-button-secondary) :where(span, strong) {
    color: #f2f4f6 !important;
  }

  body.keirin-ai-prediction-page :where(.keirin-nav-prev, .keirin-nav-next, .keirin-article-return__link):hover,
  body.keirin-ai-prediction-page :where(.keirin-nav-prev, .keirin-nav-next, .keirin-article-return__link):hover :where(span, strong) {
    color: #102000 !important;
  }

  body.keirin-ai-prediction-page .keirin-article .keirin-race-action--text {
    color: #b7e26a !important;
  }

  /* ==========================================================
     4. 速報・的中判定パネル（keirin-article-live-data.css）
     ----------------------------------------------------------
     元指定が .keirin-article .keirin-race-evaluation.is-hit
     （詳細度 0,3,0）のため :where() ベースの上書きでは勝てない。
     ========================================================== */
  body.keirin-ai-prediction-page .keirin-article .keirin-race-evaluation,
  body.keirin-ai-prediction-page .keirin-race-explorer .keirin-race-evaluation,
  .keirin-prediction-modal .keirin-race-evaluation.keirin-race-evaluation {
    border-color: #444c54 !important;
    color: #dce1e5 !important;
    background: #252a2f !important;
  }

  body.keirin-ai-prediction-page .keirin-article .keirin-race-evaluation.is-hit,
  body.keirin-ai-prediction-page .keirin-race-explorer .keirin-race-evaluation.is-hit,
  .keirin-prediction-modal .keirin-race-evaluation.is-hit.is-hit {
    border-color: #7b642c !important;
    background: #2b2618 !important;
  }

  body.keirin-ai-prediction-page .keirin-article .keirin-race-evaluation.is-hit .keirin-race-evaluation__label,
  .keirin-prediction-modal .keirin-race-evaluation.is-hit.is-hit .keirin-race-evaluation__label {
    color: #f0c86b !important;
  }

  body.keirin-ai-prediction-page .keirin-article .keirin-race-evaluation.is-miss .keirin-race-evaluation__label,
  .keirin-prediction-modal .keirin-race-evaluation.is-miss.is-miss .keirin-race-evaluation__label {
    color: #aab1b9 !important;
  }

  body.keirin-ai-prediction-page .keirin-article .keirin-race-evaluation :where(.keirin-race-evaluation__actual, .keirin-race-evaluation__payout),
  .keirin-prediction-modal .keirin-race-evaluation.keirin-race-evaluation :where(.keirin-race-evaluation__actual, .keirin-race-evaluation__payout) {
    color: #e8ebee !important;
  }

  body.keirin-ai-prediction-page .keirin-article .keirin-race-evaluation .keirin-race-evaluation__provisional,
  .keirin-prediction-modal .keirin-race-evaluation.keirin-race-evaluation .keirin-race-evaluation__provisional {
    color: #cfd5da !important;
    background: #3a4046 !important;
  }

  /* ==========================================================
     5. 高額配当ランキングの明色チップ
     ========================================================== */
  body.keirin-ai-category-page .keirin-daily-predictions .keirin-high-payout-venue-status,
  .keirin-daily-predictions .keirin-high-payout-venue-status.keirin-high-payout-venue-status {
    color: #cfe9d8 !important;
    background: #1f3128 !important;
  }

  .keirin-daily-predictions .keirin-high-payout-rank.keirin-high-payout-rank {
    color: #e8ebee !important;
    background: #343a41 !important;
  }

  .keirin-daily-predictions .keirin-high-payout-rank.is-top {
    color: #2a2206 !important;
    background: #e3c05a !important;
  }

  .keirin-daily-predictions .keirin-high-payout-rank.is-second {
    color: #1d2125 !important;
    background: #c3cad1 !important;
  }

  .keirin-daily-predictions .keirin-high-payout-rank.is-third {
    color: #2b1c0c !important;
    background: #d3a06a !important;
  }

  /* ==========================================================
     6. 車番（1〜9）のコントラスト
     ----------------------------------------------------------
     車番色は競輪の規定色なので背景は変えず、白文字が沈む
     7（橙）・8（桃）だけ濃色文字にし、全車番へ細い縁取りを足して
     ダーク下地から浮かせる。
     ========================================================== */
  .keirin-ai-prediction-page :where(.keirin-num, .bike-number, .keirin-modal-riders__number),
  .keirin-prediction-modal :where(.keirin-num, .bike-number, .keirin-modal-riders__number) {
    box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.28) !important;
  }


  /* ==========================================================
     7. #wrapper をダーク化したことで下地が変わるテーマ領域
     ----------------------------------------------------------
     パンくず・前後記事・フッターの新着記事リストはテーマ既定の
     暗色文字のままなので、明示的に明色へ寄せる。
     テーマ側の指定が ID セレクタなので同じく ID を含める。
     ========================================================== */
  body.keirin-ai-prediction-page #breadcrumb,
  body.keirin-ai-category-page #breadcrumb,
  body.keirin-ai-venue-page #breadcrumb,
  body.keirin-ai-prediction-page #breadcrumb :where(a, span, li, i),
  body.keirin-ai-category-page #breadcrumb :where(a, span, li, i),
  body.keirin-ai-venue-page #breadcrumb :where(a, span, li, i) {
    color: #c8ced5 !important;
  }

  body.keirin-ai-prediction-page #prev-next :where(a, p, span, div, h2, h3),
  body.keirin-ai-category-page #prev-next :where(a, p, span, div, h2, h3) {
    color: #dfe4e9 !important;
  }

  body.keirin-ai-prediction-page :where(.new-entry-item-title, .new-entry-item-meta, .new-entry-item-meta a, .widgettitle, .footer-inner, .footer-inner a),
  body.keirin-ai-category-page :where(.new-entry-item-title, .new-entry-item-meta, .new-entry-item-meta a, .widgettitle, .footer-inner, .footer-inner a) {
    color: #dfe4e9 !important;
  }

  body.keirin-ai-prediction-page :where(.new-entry-item-date, .new-entry-item-meta time),
  body.keirin-ai-category-page :where(.new-entry-item-date, .new-entry-item-meta time) {
    color: #aab1b9 !important;
  }

  /* 本文直下に置かれた素の段落（.keirin-article の外側） */
  body.keirin-ai-prediction-page .cps-post-main > :where(p, h2, h3, h4, ul, ol, blockquote, dl),
  body.keirin-ai-category-page .cps-post-main > :where(p, h2, h3, h4, ul, ol, blockquote, dl) {
    color: #e2e6ea !important;
  }

  /* カテゴリラベル（純赤に白文字はコントラスト 4.0 で不足） */
  body.keirin-ai-category-page .post-list-cat,
  body.keirin-ai-prediction-page .post-list-cat {
    background-color: #c40000 !important;
  }

  /* ==========================================================
     8. 車番チップ
     ----------------------------------------------------------
     :where() は詳細度 0 なので、車番クラスは :where() の外に置いて
     元指定（.keirin-num.num-7 など）へ確実に勝たせる。
     ========================================================== */
  /* 個々のルールは .cps-post-main .keirin-article span.keirin-num.num-7
     （詳細度 0,4,1）で !important 付きのため、トークン側を差し替える。
     色相は競輪の規定色のまま、白文字が沈む 7（橙）・8（桃）を濃色文字に、
     6（緑）はわずかに深くしてコントラストを確保する。 */
  .keirin-ai-prediction-page,
  .keirin-prediction-modal,
  .keirin-daily-predictions {
    --k-color-6: #2f7233;
    --k-text-7: #26150a;
    --k-text-8: #26150a;
  }


  /* ==========================================================
     9. 信頼度マーク（◎○△）・的中履歴の矢印・無効ボタン
     ----------------------------------------------------------
     明色背景を前提にした濃いめの色をダーク下地向けに引き上げる。
     ========================================================== */
  .keirin-ai-prediction-page,
  .keirin-prediction-modal,
  .keirin-article {
    --keirin-conf-high: #ff6f68;
    --keirin-conf-medium: #6ab8f5;
    --keirin-conf-low: #a8b0b8;
  }

  .keirin-hit-history .keirin-hit-history__arrow {
    color: #9aa2ab;
  }

  .keirin-prediction-modal__page-button:disabled {
    color: #9aa2ab !important;
  }

}

@media (forced-colors: active) {
  :where(
    .keirin-article,
    .keirin-prediction-modal,
    .keirin-daily-predictions,
    .keirin-editorial-promo,
    .keirin-high-payout-logs,
    .keirin-hit-history
  ) :focus-visible {
    outline: 2px solid Highlight !important;
    outline-offset: 3px !important;
  }
}
