/**
 * 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: #3e454c;
    background: #3e454c;
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.34);
  }

  .keirin-editorial-promo__coupon {
    background: linear-gradient(135deg, #201915, #0e1012);
  }

  .keirin-editorial-promo__prediction {
    color: #eef1f4;
    background: #1c2024;
  }

  .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;
  }
}

@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;
  }
}
