/* AI血統分析ページ専用。共通 CSS と衝突しないよう .RaceAiAnalysis 配下にスコープする */

.RaceAiAnalysis {
  --RaceAiAnalysis-paper: #ffffff;
  --RaceAiAnalysis-surface: #f8f8f8;
  --RaceAiAnalysis-map-bg: #aeb3b9;
  --RaceAiAnalysis-line: #cacaca;
  --RaceAiAnalysis-text: #444444;
  --RaceAiAnalysis-grass: #58af4a;
  --RaceAiAnalysis-dirt: #874c11;
  --RaceAiAnalysis-danger: #c53131;
  --RaceAiAnalysis-pink-soft: #ffefef;
  overflow: hidden;
  width: 100%;
  margin: 0 auto;
  background: #fff;
  color: var(--RaceAiAnalysis-text);
  font-size: 13px;
  line-height: 1.5;
}

.RaceAiAnalysis *,
.RaceAiAnalysis *::before,
.RaceAiAnalysis *::after {
  box-sizing: border-box;
}

.RaceAiAnalysis button,
.RaceAiAnalysis input {
  font: inherit;
}

.RaceAiAnalysis_Map {
  padding: 12px 16px 16px;
  background: var(--RaceAiAnalysis-surface);
}

.RaceAiAnalysis_MapTitle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 28px;
  padding: 0 10px;
}

.RaceAiAnalysis_MapTitleHeading {
  margin: 0;
  font-size: 13px;
  font-weight: 600;
  line-height: 18px;
}

.RaceAiAnalysis_MapControls {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  width: 856px;
  max-width: 100%;
  margin: 8px auto 14px;
}

.RaceAiAnalysis_Filter {
  position: relative;
  display: flex;
  align-items: center;
  gap: 5px;
  color: var(--RaceAiAnalysis-text);
  font-size: 12px;
  line-height: 18px;
  cursor: pointer;
  -webkit-user-select: none;
  user-select: none;
}

.RaceAiAnalysis_Filter + .RaceAiAnalysis_Filter {
  margin-left: 14px;
}

.RaceAiAnalysis_FilterInput {
  position: absolute !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  width: 1px !important;
  height: 1px !important;
  margin: -1px !important;
  padding: 0 !important;
  border: 0 !important;
  opacity: 0 !important;
}

.RaceAiAnalysis_FilterBox {
  display: inline-block;
  flex: 0 0 18px;
  position: relative;
  vertical-align: middle;
  width: 18px;
  height: 18px;
  border: 1px solid #999;
  border-radius: 3px;
  background: #fff;
}

.RaceAiAnalysis_FilterBox::after {
  content: "";
  position: absolute;
  left: 5px;
  top: 1px;
  width: 5px;
  height: 10px;
  border-right: 2px solid #fff;
  border-bottom: 2px solid #fff;
  -webkit-transform: rotate(40deg);
  -ms-transform: rotate(40deg);
  transform: rotate(40deg);
  opacity: 0;
}

.RaceAiAnalysis_FilterInput:checked + .RaceAiAnalysis_FilterBox {
  background: #777;
  border-color: #777;
}

.RaceAiAnalysis_FilterInput:checked + .RaceAiAnalysis_FilterBox::after {
  opacity: 1;
}

.RaceAiAnalysis_FilterInput:focus-visible + .RaceAiAnalysis_FilterBox {
  outline-offset: 2px;
  outline: 2px solid #4c83db;
}

.RaceAiAnalysis_FilterLabel {
  line-height: 18px;
}

.RaceAiAnalysis_PastRunnerFilterLegend {
  color: currentColor;
  white-space: nowrap;
}

.RaceAiAnalysis_PastRunnerFilterLegendItem {
  display: inline-flex;
  align-items: center;
  gap: 1px;
  color: var(--RaceAiAnalysis-text);
}

.RaceAiAnalysis_PastRunnerFilterLegendDot {
  flex: 0 0 auto;
  width: 8px;
  height: 8px;
  border: 1px solid rgba(255, 255, 255, 0.95);
  border-radius: 50%;
}

.RaceAiAnalysis_PastRunnerFilterLegendDot-1 {
  background: #f1cf2f;
}

.RaceAiAnalysis_PastRunnerFilterLegendDot-2 {
  background: #58d7e7;
}

.RaceAiAnalysis_PastRunnerFilterLegendDot-3 {
  background: #48be5b;
}

.RaceAiAnalysis_Chart {
  position: relative;
  width: 960px;
  max-width: 100%;
  height: 620px;
  margin: 0 auto;
}

.RaceAiAnalysis_Heatmap {
  position: absolute;
  left: 52px;
  top: 0;
  overflow: hidden;
  width: calc(100% - 104px);
  height: 570px;
  border-left: 1px solid #555;
  background: var(--RaceAiAnalysis-map-bg);
  cursor: grab;
  touch-action: none;
  user-select: none;
}

.RaceAiAnalysis_Heatmap.is-dragging {
  cursor: grabbing;
}

.RaceAiAnalysis_Heatmap svg {
  display: block;
  width: 100%;
  height: 100%;
}

.RaceAiAnalysis_DensityLegend {
  position: absolute;
  z-index: 2;
  top: 10px;
  left: 64px;
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 3px 5px;
  border: 1px solid rgba(255, 255, 255, 0.65);
  border-radius: 2px;
  background: rgba(255, 255, 255, 0.85);
  color: #444;
  font-size: 12px;
  font-weight: 600;
  line-height: 12px;
  pointer-events: none;
}

.RaceAiAnalysis_DensityLegendTitle {
  margin-right: 1px;
}

.RaceAiAnalysis_DensityLegendScale {
  display: block;
  width: 42px;
  height: 7px;
  border: 1px solid rgba(51, 51, 51, 0.18);
  background: linear-gradient(90deg, #275bc4 0 33.333%, #3f7ddd 33.333% 66.666%, #8fcdf7 66.666% 100%);
}

.RaceAiAnalysis.is-master-locked .RaceAiAnalysis_GoodLayer {
  visibility: hidden;
}

.RaceAiAnalysis_HorseList .is-master-dummy {
  cursor: pointer;
  user-select: none;
}

.RaceAiAnalysis_HorseList .RaceAiAnalysis_HorseMeta.is-master-dummy .RaceAiAnalysis_Mark {
  filter: blur(2px);
}

.RaceAiAnalysis_HorseList .RaceAiAnalysis_HorseCommentCell.is-master-dummy .RaceAiAnalysis_HorseComment {
  filter: blur(6px);
}

.RaceAiAnalysis_MapMasterLock {
  margin: 16px 0 0;
}

.RaceAiAnalysis_ZoomControls {
  position: absolute;
  top: 6px;
  right: 55px;
  z-index: 2;
}

.RaceAiAnalysis_ZoomButton {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border: 1px solid rgba(85, 85, 85, 0.55);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.9);
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18);
  color: #444;
  cursor: pointer;
}

.RaceAiAnalysis_ZoomButton svg {
  width: 20px;
  height: 20px;
  fill: currentColor;
}

.RaceAiAnalysis_ZoomButton .RaceAiAnalysis_ZoomIcon-expand {
  display: block;
}

.RaceAiAnalysis_ZoomButton .RaceAiAnalysis_ZoomIcon-collapse {
  display: none;
}

.RaceAiAnalysis_ZoomButton.is-zoomed .RaceAiAnalysis_ZoomIcon-expand {
  display: none;
}

.RaceAiAnalysis_ZoomButton.is-zoomed .RaceAiAnalysis_ZoomIcon-collapse {
  display: block;
}

.RaceAiAnalysis_ZoomButton:active {
  background: #f1f1f1;
  transform: translateY(1px);
}

.RaceAiAnalysis_ZoomButton:focus-visible {
  outline-offset: 2px;
  outline: 2px solid #4c83db;
}

.RaceAiAnalysis_AxisLabel {
  position: absolute;
  left: 24px;
  width: 20px;
  color: var(--RaceAiAnalysis-text);
  font-size: 12px;
  font-weight: 600;
  text-align: center;
  line-height: 18px;
}

.RaceAiAnalysis_AxisLabel-top {
  top: 0;
}

.RaceAiAnalysis_AxisLabel-bottom {
  top: 552px;
}

.RaceAiAnalysis_AxisLabel-axis {
  top: 0;
  bottom: 50px;
  left: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  writing-mode: vertical-rl;
  text-orientation: upright;
  font-size: 12px;
  line-height: 12px;
}

.RaceAiAnalysis_AxisLabel-axis::before,
.RaceAiAnalysis_AxisLabel-axis::after {
  content: "";
  position: absolute;
  left: 0;
  width: 7px;
  height: 26.1128%;
  background-repeat: no-repeat;
}

.RaceAiAnalysis_AxisLabel-axis::before {
  top: 0;
  background-image:
    linear-gradient(135deg, transparent 0 45%, #d9d9d9 45% 55%, transparent 55%),
    linear-gradient(45deg, transparent 0 45%, #d9d9d9 45% 55%, transparent 55%),
    linear-gradient(#d9d9d9, #d9d9d9);
  background-position:
    top left,
    top right,
    center 4px;
  background-size:
    4px 4px,
    4px 4px,
    1px calc(100% - 4px);
  top: 40px;
  left: 45%;
}

.RaceAiAnalysis_AxisLabel-axis::after {
  bottom: 0;
  background-image:
    linear-gradient(45deg, transparent 0 45%, #d9d9d9 45% 55%, transparent 55%),
    linear-gradient(135deg, transparent 0 45%, #d9d9d9 45% 55%, transparent 55%),
    linear-gradient(#d9d9d9, #d9d9d9);
  background-position:
    bottom left,
    bottom right,
    center top;
  background-size:
    4px 4px,
    4px 4px,
    1px calc(100% - 4px);
  bottom: 40px;
  left: 45%;
}

.RaceAiAnalysis_SurfaceScale {
  position: absolute;
  left: 52px;
  top: 570px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: calc(100% - 104px);
  border-top: 10px solid transparent;
  /* RGB上の中間色は緑が強く見えるため、中央を黄土色へ寄せつつ、芝側をわずかに残す。 */
  border-image: linear-gradient(90deg, #1fd16a 0%, #1fd16a 24%, #9ea538 50%, #ce9221 74%, #ce9221 100%) 1;
  font-size: 12px;
  font-weight: 600;
  line-height: 18px;
}

.RaceAiAnalysis_SurfaceScale span{
  margin-top: 8px;
}

.RaceAiAnalysis_Surface-turf,
.RaceAiAnalysis_Surface-dirt {
  font-size: 12px;
}

.RaceAiAnalysis_Surface-turf {
  color: var(--RaceAiAnalysis-grass);
}

.RaceAiAnalysis_Surface-dirt {
  color: var(--RaceAiAnalysis-dirt);
}

.RaceAiAnalysis_Map .Description_Box dl{
  margin: 12px auto 0;
  background: var(--RaceAiAnalysis-paper);
}

.RaceAiAnalysis_Map .Description_Box p{
  font-size: 13px;
  line-height: 1.55;
}

.RaceAiAnalysis_Map .Description_Box p em{
  font-weight: bold;
}

.RaceAiAnalysis_Evaluation {
  margin-top: 12px;
  background: #fff;
}

.RaceAiAnalysis_EvaluationTitle {
  height: 24px;
  margin: 0;
  padding: 0 10px;
  font-size: 13px;
  font-weight: 600;
  line-height: 24px;
}

.RaceAiAnalysis_HorseList {
  table-layout: fixed;
  border-spacing: 0;
  border-collapse: separate;
  width: 100%;
  border-top: 1px solid var(--RaceAiAnalysis-line);
}

.RaceAiAnalysis_ColWaku {
  width: 30px;
}

.RaceAiAnalysis_ColNo {
  width: 30px;
}

.RaceAiAnalysis_ColCheck {
  width: 76px;
}

.RaceAiAnalysis_ColOdds {
  width: 92px;
}

.RaceAiAnalysis_ColMark {
  width: 70px;
}

.RaceAiAnalysis_ColComment {
  width: 390px;
}

.RaceAiAnalysis_HorseHeader {
  background: #eaeaea;
  color: #777;
  font-size: 10px;
  font-weight: 600;
  line-height: 1.2;
}

.RaceAiAnalysis_HorseHeader th {
  font-weight: inherit;
  border:none;
}

.RaceAiAnalysis_HorseHeader .RaceAiAnalysis_HorseHeaderWaku,
.RaceAiAnalysis_HorseHeader .RaceAiAnalysis_HorseHeaderNo,
.RaceAiAnalysis_HorseHeader .RaceAiAnalysis_HorseHeaderCheck,
.RaceAiAnalysis_HorseHeader .RaceAiAnalysis_HorseHeaderName,
.RaceAiAnalysis_HorseHeader .RaceAiAnalysis_HorseHeaderMeta,
.RaceAiAnalysis_HorseHeader .RaceAiAnalysis_HorseHeaderComment {
  min-width: 0;
  height: 45px;
  border-right: 1px solid var(--RaceAiAnalysis-line);
  vertical-align: bottom;
}
.RaceAiAnalysis_HorseHeaderMeta,
.RaceAiAnalysis_HorseHeaderComment {
  min-width: 0;
  height: 45px;
  border-right: 1px solid var(--RaceAiAnalysis-line);
  vertical-align: bottom;
}

.RaceAiAnalysis_HorseHeaderWaku,
.RaceAiAnalysis_HorseHeaderNo,
.RaceAiAnalysis_HorseHeaderCheck,
.RaceAiAnalysis_HorseHeaderMeta,
.RaceAiAnalysis_HorseHeaderComment {
  padding: 2px;
  text-align: center;
}

.RaceAiAnalysis_HorseHeaderWaku,
.RaceAiAnalysis_HorseHeaderNo {
  position: relative;
  padding-bottom: 0;
  letter-spacing: 0;
  text-align: center;
  vertical-align: bottom;
}

.RaceAiAnalysis_HorseHeaderWakuText,
.RaceAiAnalysis_HorseHeaderNoText {
  position: absolute;
  bottom: 8px;
  left: 50%;
  writing-mode: vertical-rl;
  transform: translateX(-50%);
}

.RaceAiAnalysis_HorseHeaderCheck {
  gap: 3px;
}

.RaceAiAnalysis_HorseHeaderCheckToggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 31px;
  height: 18px;
  padding: 0 6px;
  border: 1px solid var(--RaceAiAnalysis-line);
  border-radius: 9px;
  background: #fff;
  color: #555;
  font-size: 10px;
  line-height: 1;
}

.RaceAiAnalysis_HorseHeaderName {
  padding: 7px 10px 8px;
}

.RaceAiAnalysis_HorseHeaderNameMain {
  display: block;
  text-align: left;
  margin-bottom: 5px;
  color: #444;
  font-size: 12px;
  font-weight: bold;
  line-height: 1;
}

.RaceAiAnalysis_HorseHeaderPedigree {
  display: flex;
  align-items: center;
  gap: 10px;
  color: #444;
  font-size: 12px;
  font-weight: bold;
  line-height: 1;
}

.RaceAiAnalysis_VisuallyHidden {
  position: absolute !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  width: 1px !important;
  height: 1px !important;
  margin: -1px !important;
  padding: 0 !important;
  border: 0 !important;
}

.RaceAiAnalysis_Horse {
  background: var(--row-bg, #fff);
  color: #333;
}

.RaceAiAnalysis_Horse > th,
.RaceAiAnalysis_Horse > td {
  border-top: 1px solid var(--RaceAiAnalysis-line);
}

.RaceAiAnalysis_HorseHeader > th:first-of-type,
.RaceAiAnalysis_Horse > :first-child{
  border-left: 1px solid var(--RaceAiAnalysis-line);
}
.RaceAiAnalysis_Horse > td:last-of-type{
  border-right: 1px solid var(--RaceAiAnalysis-line);
}

.RaceAiAnalysis_HorseWaku,
.RaceAiAnalysis_HorseGate {
  border-right: 1px solid var(--RaceAiAnalysis-line);
  font-size: 15px;
  font-weight: 400;
  line-height: 25px;
  text-align: center;
  vertical-align: middle;
}
.RaceAiAnalysis_HorseWaku{
  border-right: none;
}

.RaceAiAnalysis .RaceAiAnalysis_HorseWaku,
.RaceAiAnalysis .RaceAiAnalysis_HorseGate {
  background: #fff;
  font-size: 12px;
  font-weight: bold;
  color: #555;
  border-bottom: none;
}

.RaceAiAnalysis_HorseInfoCell {
  min-width: 0;
  padding: 0;
  background: var(--row-bg, #fff);
  border-right: 1px solid var(--RaceAiAnalysis-line);
  vertical-align: middle;
}

.RaceAiAnalysis_HorseInfoContent {
  display: block;
  min-width: 0;
}

.RaceAiAnalysis_HorseCheckCell {
  min-width: 0;
  padding: 0;
  border-right: 1px solid var(--RaceAiAnalysis-line);
  background: var(--row-bg, #fff);
  text-align: center;
  vertical-align: middle;
}

.RaceAiAnalysis_HorseNameCell {
  min-width: 0;
  padding: 0;
  border-right: 1px solid var(--RaceAiAnalysis-line);
  background: var(--row-bg, #fff);
  vertical-align: middle;
}

.RaceAiAnalysis_HorseBody {
  min-width: 0;
  padding: 10px 12px;
}

.RaceAiAnalysis_HorseCheck {
  display: inline-grid;
  place-items: center;
  flex: 0 0 27px;
  width: 27px;
  height: 27px;
  padding: 0;
  border: 1px solid var(--RaceAiAnalysis-line);
  border-radius: 6px;
  background: #fff;
  color: #bbb;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
}

.RaceAiAnalysis_Horse.is-checked .RaceAiAnalysis_HorseCheck {
  background: #ef5350;
  border-color: #ef5350;
  color: #fff;
}

.RaceAiAnalysis_HorseCheck:active {
  background: #f5f5f5;
}

.RaceAiAnalysis_Horse.is-checked .RaceAiAnalysis_HorseCheck:active {
  background: #e74946;
}

.RaceAiAnalysis_HorseCheck:focus-visible {
  outline-offset: 2px;
  outline: 2px solid #4c83db;
}

.RaceAiAnalysis_HorseName {
  overflow: hidden;
  min-width: 0;
  margin-bottom: 5px;
  font-size: 16px;
  font-weight: 600;
  line-height: 24px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.RaceAiAnalysis_PedigreeList {
  display: flex;
  flex-direction: column;
  gap: 5px;
  min-width: 0;
  margin: 0;
  padding: 0;
}

.RaceAiAnalysis_Pedigree {
  display: flex;
  align-items: center;
  min-width: 0;
  gap: 8px;
  font-size: 13px;
  font-weight: 600;
  line-height: 16px;
}

.RaceAiAnalysis_PedigreeTag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  min-width: 36px;
  height: 16px;
  padding: 0 7px;
  border-radius: 8px;
  color: #fff;
  font-size: 10px;
  line-height: 16px;
}

.RaceAiAnalysis_Pedigree dd {
  overflow: hidden;
  min-width: 0;
  margin: 0;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.RaceAiAnalysis_PedigreeTag-sire {
  background: #5b9fdf;
}

.RaceAiAnalysis_PedigreeTag-dam {
  background: #d3788d;
}

.RaceAiAnalysis_PedigreeTag-damsire {
  background: #f4dee3;
  color: #666;
}

.RaceAiAnalysis_HorseMeta {
  min-width: 0;
  background: var(--row-bg, #fff);
  border-right: 1px solid var(--RaceAiAnalysis-line);
  text-align: center;
  vertical-align: middle;
}

.RaceAiAnalysis_HorseMetaLabel {
  display: grid;
  place-items: center;
  min-height: 0;
  border-bottom: 1px solid var(--RaceAiAnalysis-line);
  color: #333;
  font-size: 12px;
  line-height: 12px;
}

.RaceAiAnalysis_HorseMetaValue {
  min-width: 0;
  min-height: 0;
  padding: 4px 2px;
  font-size: 14px;
  line-height: 15px;
}

.RaceAiAnalysis_Odds {
  display: block;
  margin-bottom: 5px;
  font-weight: 600;
}

.RaceAiAnalysis_Popularity {
  display: block;
  font-size: 13px;
}

.RaceAiAnalysis_Mark {
  font-size: 16px;
  font-weight: 600;
}

/* 評価印：出馬表と同じスプライト（icon_sprite_raceinfo.png）で表示（◎赤/◯青/△）。
   座標は出馬表の .Icon_Mark_01/02/03 と共通（background-size:124px 300px 前提）。 */
.RaceAiAnalysis_Mark-good,
.RaceAiAnalysis_Mark-normal,
.RaceAiAnalysis_Mark-light {
  display: inline-block;
  width: 20px;
  height: 20px;
  font-size: 0;
  color: transparent;
  vertical-align: middle;
  background-image: url("../img/icon/icon_sprite_raceinfo.png");
  background-repeat: no-repeat;
  background-size: 124px 300px;
}

.RaceAiAnalysis_Mark-good {
  background-position: -38px -157px; /* ◎＝赤の二重丸 */
}

.RaceAiAnalysis_Mark-normal {
  background-position: -38px -180px; /* ◯＝青丸 */
}

.RaceAiAnalysis_Mark-light {
  background-position: -38px -201px; /* △ */
}

/* 仮置き（評価未確定の「-」）。無彩色で控えめに表示。 */
.RaceAiAnalysis_Mark-none {
  color: #999;
}

.RaceAiAnalysis_HorseCommentCell {
  min-width: 0;
  padding: 10px 12px;
  border-right: 1px solid var(--RaceAiAnalysis-line);
  background: var(--row-bg, #fff);
  text-align: left;
  vertical-align: middle;
}

.RaceAiAnalysis_HorseComment {
  margin: 0;
  color: #444;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.42;
}

.RaceAiAnalysis_HorseList tbody tr:last-child > th,
.RaceAiAnalysis_HorseList tbody tr:last-child > td {
  border-bottom: 1px solid var(--RaceAiAnalysis-line);
}

.RaceAiAnalysis_HeatmapPoint {
  stroke: rgba(255, 255, 255, 0.95);
  stroke-width: 1;
  paint-order: stroke;
}

.RaceAiAnalysis_HeatmapPoint.waku1 {
  fill: #fff;
}

.RaceAiAnalysis_HeatmapPoint.waku2 {
  fill: #222;
}

.RaceAiAnalysis_HeatmapPoint.waku3 {
  fill: #dc3c3c;
}

.RaceAiAnalysis_HeatmapPoint.waku4 {
  fill: #2c53a9;
}

.RaceAiAnalysis_HeatmapPoint.waku5 {
  fill: #e4ca3b;
}

.RaceAiAnalysis_HeatmapPoint.waku6 {
  fill: #58af4a;
}

.RaceAiAnalysis_HeatmapPoint.waku7 {
  fill: #de8a26;
}

.RaceAiAnalysis_HeatmapPoint.waku8 {
  fill: #dc6179;
}

.RaceAiAnalysis_HeatmapNumber {
  font-family: Arial, sans-serif;
  font-size: 10px;
  font-weight: 700;
  text-anchor: middle;
  dominant-baseline: central;
  pointer-events: none;
}

.RaceAiAnalysis_HeatmapNumber.waku1 {
  fill: #555;
}

.RaceAiAnalysis_HeatmapNumber.waku2,
.RaceAiAnalysis_HeatmapNumber.waku3,
.RaceAiAnalysis_HeatmapNumber.waku4,
.RaceAiAnalysis_HeatmapNumber.waku5,
.RaceAiAnalysis_HeatmapNumber.waku6,
.RaceAiAnalysis_HeatmapNumber.waku7,
.RaceAiAnalysis_HeatmapNumber.waku8 {
  fill: #fff;
}

.RaceAiAnalysis_PastRunnerDot {
  stroke: #555;
  stroke-width: 1;
  paint-order: stroke;
}

.RaceAiAnalysis_PastRunnerDot-1 {
  fill: #f1cf2f;
}

.RaceAiAnalysis_PastRunnerDot-2 {
  fill: #58d7e7;
}

.RaceAiAnalysis_PastRunnerDot-3 {
  fill: #48be5b;
}

.RaceAiAnalysis_HeatmapCell {
  shape-rendering: crispEdges;
}

.RaceAiAnalysis_HeatmapPointRipple {
  fill: rgba(255, 255, 255, 0.7);
  pointer-events: none;
  transform-box: fill-box;
  transform-origin: center;
  animation: RaceAiAnalysis_HeatmapPointRippleFill 2.4s ease-out infinite;
}

@keyframes RaceAiAnalysis_HeatmapPointRippleFill {
  0% {
    opacity: 0.5;
    transform: scale(0.15);
  }

  100% {
    opacity: 0;
    transform: scale(1.6);
  }
}

@media (prefers-reduced-motion: reduce) {
  .RaceAiAnalysis_HeatmapPointRipple {
    animation: none;
    opacity: 0.65;
  }
}

/* ============================================================
   SVG埋め込み方式（八木さん側 heatmap_svg）用の重ねレイヤー
   #heatmap(.RaceAiAnalysis_Heatmap) 内に Viewport を置き、その上に
   出走馬プロット(_Plot)・過去3年好走馬(_Good) を left/top % で絶対配置する。
   座標系は SVG viewBox 0..100 に一致（PHP が 0..100 の値を出力）。
   ============================================================ */
.RaceAiAnalysis_Viewport {
  position: absolute;
  inset: 0;
  z-index: 1;
  transform-origin: 0 0;
  transition: transform .15s ease;
}
.RaceAiAnalysis_Heatmap.is-zoomed .RaceAiAnalysis_Viewport { transition: none; }
.RaceAiAnalysis_Viewport svg {
  display: block;
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
}
/* 出走馬プロット・過去好走馬は SVG より前面 */
.RaceAiAnalysis_Viewport .RaceAiAnalysis_Plot { z-index: 3; }
.RaceAiAnalysis_Viewport .RaceAiAnalysis_GoodLayer { position: absolute; inset: 0; z-index: 2; }

/* 基準線（十字の点線・黄色線）はヒートマップ SVG 側が描画するため CSS では引かない。 */

/* 出走馬プロット（枠番色。中心配置） */
.RaceAiAnalysis_Plot {
  position: absolute;
  z-index: 3;
  box-sizing: border-box;
  width: 24px;
  height: 24px;
  margin: -12px 0 0 -12px;
  border-radius: 50%;
  border: 2px solid #fff;
  font-size: 12px;
  font-weight: bold;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 1px 3px rgba(0, 0, 0, .4);
}
.RaceAiAnalysis_Heatmap .RaceAiAnalysis_Plot.waku1,
.RaceAiAnalysis .RaceAiAnalysis_HorseWaku.waku1 { background: #fff; color: #555; }
.RaceAiAnalysis_Heatmap .RaceAiAnalysis_Plot.waku2,
.RaceAiAnalysis .RaceAiAnalysis_HorseWaku.waku2 { background: #222; color: #fff; }
.RaceAiAnalysis_Heatmap .RaceAiAnalysis_Plot.waku3,
.RaceAiAnalysis .RaceAiAnalysis_HorseWaku.waku3 { background: #dc3c3c; color: #fff; }
.RaceAiAnalysis_Heatmap .RaceAiAnalysis_Plot.waku4,
.RaceAiAnalysis .RaceAiAnalysis_HorseWaku.waku4 { background: #2c53a9; color: #fff; }
.RaceAiAnalysis_Heatmap .RaceAiAnalysis_Plot.waku5,
.RaceAiAnalysis .RaceAiAnalysis_HorseWaku.waku5 { background: #e4ca3b; color: #fff; }
.RaceAiAnalysis_Heatmap .RaceAiAnalysis_Plot.waku6,
.RaceAiAnalysis .RaceAiAnalysis_HorseWaku.waku6 { background: #58af4a; color: #fff; }
.RaceAiAnalysis_Heatmap .RaceAiAnalysis_Plot.waku7,
.RaceAiAnalysis .RaceAiAnalysis_HorseWaku.waku7 { background: #de8a26; color: #fff; }
.RaceAiAnalysis_Heatmap .RaceAiAnalysis_Plot.waku8,
.RaceAiAnalysis .RaceAiAnalysis_HorseWaku.waku8 { background: #dc6179; color: #fff; }
.RaceAiAnalysis_Heatmap .RaceAiAnalysis_Plot.wakuNone,
.RaceAiAnalysis .RaceAiAnalysis_HorseWaku.wakuNone { background: #fff; color: #555; }
/* 印馬のみ表示（チェック連動）は JS が style.display で制御 */

/* 注目馬（AI総合スコア◎＝is-ripple）のプロットに波紋アニメ。プロット背面に広がる白い波紋。 */
.RaceAiAnalysis_Plot.is-ripple::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 24px;
  height: 24px;
  margin: -12px 0 0 -12px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.7);
  z-index: -1;
  pointer-events: none;
  transform-origin: center;
  animation: RaceAiAnalysis_PlotRipple 2.4s ease-out infinite;
}
@keyframes RaceAiAnalysis_PlotRipple {
  0%   { opacity: 0.5; transform: scale(0.4); }
  100% { opacity: 0;   transform: scale(2.4); }
}
@media (prefers-reduced-motion: reduce) {
  .RaceAiAnalysis_Plot.is-ripple::before { animation: none; opacity: 0; }
}

/* 過去3年好走馬プロット（別レイヤー・着順色・小さめ） */
.RaceAiAnalysis_GoodLayer.is-hide { display: none; }
.RaceAiAnalysis_Good {
  position: absolute;
  z-index: 2;
  width: 16px;
  height: 16px;
  margin: -8px 0 0 -8px;
  border-radius: 50%;
  border: 2px solid #fff;
  box-shadow: 0 1px 2px rgba(0, 0, 0, .4);
  opacity: .95;
}
.RaceAiAnalysis_Good.chaku1 { background: #e4ca3b; } /* 1着 */
.RaceAiAnalysis_Good.chaku2 { background: #6fd3e0; } /* 2着 */
.RaceAiAnalysis_Good.chaku3 { background: #58af4a; } /* 3着 */
.RaceAiAnalysis_Good.chakuNone { background: #bbb; }

/* 血統AI解説テーブル：チェックされた行の背景 */
.RaceAiAnalysis_Horse.is-checked td:not(.RaceAiAnalysis_HorseGate),
.RaceAiAnalysis_Horse.is-checked .RaceAiAnalysis_HorseNameCell {
  background: var(--RaceAiAnalysis-pink-soft);
}
.RaceAiAnalysis_HorseCheck.is-checked {
  background: var(--RaceAiAnalysis-danger);
  border-color: var(--RaceAiAnalysis-danger);
  color: #fff;
}
