
/* Sprint40 Review Phase1 — shared semantic fixes.
   Keep the center-horse mark red on PC/tablet regardless of old review color rules. */
.kirin-review-room .kirin-summary-pick .kirin-recommended-mark--◎,
.kirin-review-room .kirin-review-horse-line .kirin-recommended-mark--◎{
  color:#ff6b63!important;
  border-color:rgba(255,107,99,.46)!important;
  background:rgba(255,107,99,.09)!important;
}

@media (min-width:721px) and (max-width:980px) and (orientation:portrait){
  /* Home-contract race identity: same visual hierarchy used by Home/Analysis. */
  .kirin-review-room{gap:12px!important;min-width:0!important}
  .kirin-review-room .kirin-review-header{
    display:block!important;
    padding:14px!important;
    min-width:0!important;
  }
  .kirin-review-room .kirin-review-header .kirin-breadcrumb,
  .kirin-review-room .kirin-review-header>div>p:last-child{
    margin:0 0 6px!important;
    font-size:10px!important;
    line-height:1.35!important;
  }
  .kirin-review-room .kirin-review-header h1{
    margin:0!important;
    font-size:22px!important;
    line-height:1.25!important;
    overflow-wrap:anywhere!important;
  }

  /* One reading column: prevent legacy tablet grids from squeezing content. */
  .kirin-review-room .kirin-review-sections{grid-template-columns:minmax(0,1fr)!important;gap:12px!important}
  .kirin-review-room .kirin-review-summary{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}
  .kirin-review-room .kirin-review-summary>div{min-width:0!important;padding:11px 12px!important}
  .kirin-review-room .kirin-review-summary .kirin-summary-pick{
    display:flex!important;align-items:center!important;gap:7px!important;min-width:0!important;
  }
  .kirin-review-room .kirin-review-summary .kirin-recommended-mark{flex:0 0 auto!important}
  .kirin-review-room .kirin-review-summary .kirin-horse-number-chip{flex:0 0 auto!important}
  .kirin-review-room .kirin-review-summary strong{min-width:0!important;overflow-wrap:anywhere!important}

  .kirin-review-room .kirin-review-nav{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important}
  .kirin-review-room .kirin-review-panel{min-width:0!important;padding:14px!important}
  .kirin-review-room .kirin-review-panel-heading{gap:8px!important}
  .kirin-review-room .kirin-review-panel-heading>div{min-width:0!important}
  .kirin-review-room .kirin-review-panel-heading h2{font-size:17px!important}
  .kirin-review-room .kirin-review-panel-heading p{font-size:10px!important;line-height:1.45!important}

  /* Result / payout: preserve the landscape corrections but fit portrait width. */
  .kirin-review-room .kirin-review-finishers{grid-template-columns:1fr!important;gap:7px!important}
  .kirin-review-room .kirin-review-result-top-block .kirin-review-finisher{min-width:0!important}
  .kirin-review-room .kirin-review-result-top-block .kirin-review-finisher strong span{white-space:normal!important;overflow-wrap:anywhere!important}
  .kirin-review-room .kirin-review-payout-groups{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important}
  .kirin-review-room .kirin-review-payout-group{min-width:0!important;padding:7px 9px!important}
  .kirin-review-room .kirin-review-payout-group p{grid-template-columns:minmax(0,1fr) auto!important;gap:7px!important}
  .kirin-review-room .kirin-review-payout-group em{min-width:58px!important}

  /* Saved tickets and comparison must not create horizontal overflow. */
  .kirin-review-room .kirin-review-recommended-panel,
  .kirin-review-room .kirin-review-recommended-panel *{min-width:0}
  .kirin-review-room .kirin-review-compare{grid-template-columns:1fr!important;gap:8px!important}
  .kirin-review-room .kirin-review-compare>b{transform:rotate(90deg)!important;justify-self:center!important}
  .kirin-review-room .kirin-review-causes{grid-template-columns:1fr!important}

  /* Learning: landscape's five columns are too narrow at 768 portrait. */
  .kirin-review-room .kirin-learning-timeline-steps{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important}
  .kirin-review-room .kirin-learning-candidate{grid-template-columns:1fr!important;min-width:0!important}
  .kirin-review-room .kirin-learning-candidate-meta{min-width:0!important}
  .kirin-review-room .kirin-learning-candidate h3,
  .kirin-review-room .kirin-learning-candidate p{overflow-wrap:anywhere!important}

  /* Same race-tree cleanup already accepted in iPad landscape. */
  .kirin-race-item>span{display:none!important}
  .kirin-race-item>strong{font-size:11px!important}
}


/* Sprint40 Review iPad portrait Phase2 — full relayout */
@media (min-width:721px) and (max-width:1024px) and (orientation:portrait){
.kirin-review-room{gap:10px!important}.kirin-review-room>.kirin-review-header{width:100%!important;max-width:none!important;box-sizing:border-box!important;margin:0!important;padding:14px!important;min-height:0!important}.kirin-review-room>.kirin-review-header .kirin-breadcrumb{margin:0 0 4px!important;font-size:11px!important;line-height:1.35!important}.kirin-review-room>.kirin-review-header h1{margin:0!important;font-size:28px!important;line-height:1.12!important;letter-spacing:-.02em!important}.kirin-review-room>.kirin-review-header>div>p:last-child{margin:5px 0 0!important;font-size:11px!important;line-height:1.35!important}
.kirin-review-room>.kirin-review-summary{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important}.kirin-review-room>.kirin-review-summary>div{min-height:0!important;padding:9px 11px!important}.kirin-review-room>.kirin-review-summary>div:nth-child(3){grid-column:1/-1!important}.kirin-review-room>.kirin-review-summary small{font-size:9px!important;line-height:1.25!important}.kirin-review-room>.kirin-review-summary strong{margin-top:3px!important;font-size:13px!important;line-height:1.3!important}.kirin-review-room .kirin-review-horse-line{display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:6px!important;min-width:0!important;margin-top:4px!important}.kirin-review-room .kirin-review-horse-line>em{display:none!important}.kirin-review-room .kirin-review-horse-line>.kirin-review-ipad-horse-chip{display:inline-flex!important;flex:0 0 auto!important;align-items:center!important}.kirin-review-room .kirin-review-horse-line .kirin-horse-number-chip{width:24px!important;height:24px!important;min-width:24px!important;padding:0!important;border-radius:4px!important;font-size:11px!important;line-height:1!important}.kirin-review-room .kirin-review-horse-line>span:last-child{min-width:0!important;white-space:normal!important;overflow-wrap:anywhere!important}
.kirin-review-room>.kirin-review-nav{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px!important;padding:8px!important}.kirin-review-room>.kirin-review-nav a{min-height:0!important;padding:8px 10px!important}.kirin-review-room>.kirin-review-nav strong{font-size:11px!important;line-height:1.25!important}.kirin-review-room>.kirin-review-nav small{margin-top:2px!important;font-size:8px!important;line-height:1.25!important}
.kirin-review-room .kirin-review-sections{grid-template-columns:1fr!important;gap:10px!important}.kirin-review-room .kirin-review-panel{min-width:0!important;padding:12px!important}.kirin-review-room .kirin-review-panel-heading{align-items:flex-start!important;gap:8px!important;margin-bottom:9px!important}.kirin-review-room .kirin-review-panel-heading h2{font-size:16px!important;line-height:1.2!important}.kirin-review-room .kirin-review-panel-heading p{margin-top:3px!important;font-size:9px!important;line-height:1.35!important}.kirin-review-room .kirin-review-panel-heading>span{flex:0 0 auto!important;padding:4px 8px!important;font-size:9px!important}
.kirin-review-room .kirin-review-result-top-block{padding-bottom:12px!important}.kirin-review-room .kirin-review-finishers{grid-template-columns:1fr!important;gap:6px!important}.kirin-review-room .kirin-review-finisher{min-height:0!important;padding:7px 10px!important}.kirin-review-room .kirin-review-finisher>strong{gap:6px!important;min-width:0!important}.kirin-review-room .kirin-review-finisher>strong .kirin-horse-number-chip{width:22px!important;height:22px!important;min-width:22px!important;padding:0!important;font-size:10px!important}.kirin-review-room .kirin-review-finisher>strong span{white-space:normal!important;overflow-wrap:anywhere!important}.kirin-review-room .kirin-review-all-results{margin-top:8px!important}.kirin-review-room .kirin-review-all-results summary{min-height:0!important;padding:7px 9px!important}.kirin-review-room .kirin-review-result-row{min-height:0!important;padding:6px 8px!important;gap:7px!important;font-size:9px!important}
.kirin-review-room .kirin-review-result-payout-block{padding-top:12px!important}.kirin-review-room .kirin-review-payout-groups{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px!important}.kirin-review-room .kirin-review-payout-group{min-height:0!important;padding:7px 9px!important}.kirin-review-room .kirin-review-payout-group>strong{margin:0 0 3px!important;font-size:10px!important;line-height:1.2!important}.kirin-review-room .kirin-review-payout-group>div{gap:1px!important}.kirin-review-room .kirin-review-payout-group p{min-height:16px!important;margin:0!important;grid-template-columns:minmax(0,1fr) auto!important;gap:6px!important;line-height:1.15!important}.kirin-review-room .kirin-review-payout-group p>span.kirin-ticket-combination{padding:0!important;border:0!important;background:transparent!important;font-size:9px!important;line-height:1.15!important}.kirin-review-room .kirin-review-payout-group em{min-width:58px!important;font-size:9px!important}
.kirin-review-room .kirin-review-recommended-panel{padding:12px!important}.kirin-review-room .kirin-review-recommended-panel .kirin-ticket-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px!important}.kirin-review-room .kirin-review-recommended-panel .kirin-ticket-card{min-height:0!important;padding:8px 9px!important;gap:5px 8px!important}.kirin-review-room .kirin-review-recommended-panel .kirin-ticket-card>strong{font-size:10px!important}.kirin-review-room .kirin-review-recommended-panel .kirin-ticket-card p,.kirin-review-room .kirin-review-recommended-panel .kirin-ticket-card small{font-size:8px!important;line-height:1.3!important}
.kirin-review-room .kirin-review-comparison-detail{min-width:0!important;overflow:visible!important}.kirin-review-room .kirin-review-comparison-table{width:100%!important;min-width:0!important;table-layout:fixed!important}.kirin-review-room .kirin-review-comparison-table th,.kirin-review-room .kirin-review-comparison-table td{padding:6px 7px!important;font-size:9px!important}.kirin-review-room .kirin-review-comparison-table th:first-child,.kirin-review-room .kirin-review-comparison-table td:first-child{width:60%!important}.kirin-review-room .kirin-review-comparison-horse{min-width:0!important;gap:5px!important}.kirin-review-room .kirin-review-comparison-horse>b{display:none!important}.kirin-review-room .kirin-review-comparison-horse>.kirin-review-ipad-horse-chip{display:inline-flex!important;flex:0 0 auto!important}.kirin-review-room .kirin-review-comparison-horse .kirin-horse-number-chip{width:22px!important;height:22px!important;min-width:22px!important;padding:0!important;font-size:10px!important}.kirin-review-room .kirin-review-comparison-horse>span:last-child{min-width:0!important;white-space:normal!important;overflow-wrap:anywhere!important}
.kirin-review-room #review-cause .kirin-review-cause-metrics{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:5px!important}.kirin-review-room #review-cause .kirin-review-cause-metric{min-height:0!important;padding:7px 8px!important}.kirin-review-room #review-cause .kirin-review-cause-metric small{font-size:8px!important}.kirin-review-room #review-cause .kirin-review-cause-metric strong{font-size:11px!important}.kirin-review-room #review-cause .kirin-review-causes{grid-template-columns:1fr!important;gap:7px!important}.kirin-review-room #review-cause .kirin-review-cause-card{min-height:0!important;padding:9px 10px!important}.kirin-review-room #review-cause .kirin-review-cause-card li{margin:0!important;font-size:9px!important;line-height:1.45!important}.kirin-review-room #review-cause .kirin-review-cause-card li+li{margin-top:3px!important}.kirin-review-room #review-cause .kirin-review-cause-verdict{padding:9px 10px!important}
.kirin-review-room #review-learning .kirin-review-learning{padding:10px!important}.kirin-review-room #review-learning .kirin-learning-summary,.kirin-review-room #review-learning .kirin-learning-timeline{padding:9px 10px!important}.kirin-review-room #review-learning .kirin-learning-timeline-steps{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px!important}.kirin-review-room #review-learning .kirin-learning-timeline-step{min-height:0!important;padding:7px 8px!important}.kirin-review-room #review-learning .kirin-learning-candidate{grid-template-columns:1fr!important;gap:8px!important;padding:10px!important}.kirin-review-room #review-learning .kirin-learning-candidate-meta{gap:5px!important}.kirin-review-room #review-learning .kirin-learning-candidate strong{font-size:12px!important;line-height:1.35!important}.kirin-review-room #review-learning .kirin-learning-candidate p{margin-top:5px!important;font-size:9px!important;line-height:1.45!important}.kirin-review-room #review-learning .kirin-learning-current-policy{margin-top:7px!important;padding-top:7px!important}.kirin-review-room #review-learning .kirin-learning-actions{justify-content:flex-start!important;gap:6px!important}.kirin-review-room #review-learning .kirin-learning-actions button{min-height:0!important;padding:6px 10px!important;font-size:9px!important}.kirin-review-room #review-learning .kirin-learning-plan{padding:9px 10px!important}.kirin-review-room #review-learning .kirin-learning-plan-grid{grid-template-columns:1fr!important;gap:6px!important}.kirin-review-room #review-learning .kirin-learning-plan-group{min-height:0!important;padding:8px 9px!important}
.kirin-race-item>span{display:none!important}.kirin-race-item>strong{font-size:11px!important}
}


/* Sprint40 Review iPad portrait Phase3 — finish pass */
@media (min-width:721px) and (max-width:1024px) and (orientation:portrait){

  /* =========================================================
     TOP SUMMARY — final information hierarchy
     Row1: AI self-evaluation | AI learning
     Row2: pre-race center horse full width
     ========================================================= */
  .kirin-review-room>.kirin-review-summary{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    grid-template-areas:
      "self learning"
      "horse horse"!important;
    gap:7px!important;
  }
  .kirin-review-room>.kirin-review-summary>div:nth-child(1){grid-area:self!important}
  .kirin-review-room>.kirin-review-summary>div:nth-child(2){grid-area:learning!important}
  .kirin-review-room>.kirin-review-summary>div:nth-child(3){grid-area:horse!important}

  /* slightly reduce dead vertical space */
  .kirin-review-room>.kirin-review-summary>div{
    min-height:0!important;
    padding:8px 10px!important;
  }

  /* =========================================================
     RESULT TABLE — tighter 12-horse expanded list
     ========================================================= */
  .kirin-review-room .kirin-review-result-row{
    min-height:0!important;
    padding:5px 7px!important;
    gap:6px!important;
    line-height:1.2!important;
  }
  .kirin-review-room .kirin-review-result-row .kirin-horse-number-chip{
    width:21px!important;
    height:21px!important;
    min-width:21px!important;
    padding:0!important;
    font-size:9px!important;
  }
  .kirin-review-room .kirin-review-result-row>strong{
    min-width:0!important;
    font-size:9px!important;
  }

  /* =========================================================
     PAYOUT — one more density pass
     ========================================================= */
  .kirin-review-room .kirin-review-payout-groups{
    gap:5px!important;
  }
  .kirin-review-room .kirin-review-payout-group{
    padding:6px 8px!important;
  }
  .kirin-review-room .kirin-review-payout-group p{
    min-height:15px!important;
  }

  /* =========================================================
     AI RECOMMENDED TICKETS
     The live review DOM may expose list wrappers rather than
     the older ticket-grid names, so cover both contracts.
     ========================================================= */
  .kirin-review-room .kirin-review-recommended-panel .kirin-ticket-grid,
  .kirin-review-room .kirin-review-recommended-panel .kirin-review-ticket-grid,
  .kirin-review-room .kirin-review-recommended-panel .kirin-review-recommended-list,
  .kirin-review-room .kirin-review-recommended-panel>div:last-child{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:6px!important;
  }

  .kirin-review-room .kirin-review-recommended-panel .kirin-ticket-card,
  .kirin-review-room .kirin-review-recommended-panel .kirin-review-ticket,
  .kirin-review-room .kirin-review-recommended-panel .kirin-review-recommended-item{
    min-width:0!important;
    min-height:0!important;
    padding:8px 9px!important;
  }

  /* if the current cards are direct children with no dedicated class */
  .kirin-review-room .kirin-review-recommended-panel>div:last-child>div{
    min-width:0!important;
  }

  /* long formations can wrap without widening the card */
  .kirin-review-room .kirin-review-recommended-panel strong,
  .kirin-review-room .kirin-review-recommended-panel p,
  .kirin-review-room .kirin-review-recommended-panel span{
    min-width:0!important;
    overflow-wrap:anywhere!important;
    white-space:normal!important;
  }

  /* =========================================================
     COMPARISON — kill remaining horizontal scroll at the wrapper
     ========================================================= */
  .kirin-review-room #review-compare,
  .kirin-review-room #review-compare .kirin-review-panel-body,
  .kirin-review-room #review-compare .kirin-review-comparison-detail,
  .kirin-review-room #review-compare .kirin-review-comparison-table-wrap,
  .kirin-review-room #review-compare .kirin-review-table-wrap{
    min-width:0!important;
    width:100%!important;
    max-width:100%!important;
    overflow-x:hidden!important;
  }

  .kirin-review-room #review-compare table{
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    table-layout:fixed!important;
  }

  .kirin-review-room #review-compare th,
  .kirin-review-room #review-compare td{
    min-width:0!important;
    max-width:none!important;
    padding:6px 6px!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }

  .kirin-review-room #review-compare th:nth-child(1),
  .kirin-review-room #review-compare td:nth-child(1){width:58%!important}
  .kirin-review-room #review-compare th:nth-child(2),
  .kirin-review-room #review-compare td:nth-child(2){width:21%!important}
  .kirin-review-room #review-compare th:nth-child(3),
  .kirin-review-room #review-compare td:nth-child(3){width:21%!important}

  /* =========================================================
     CAUSE ANALYSIS — balanced density
     ========================================================= */
  .kirin-review-room #review-cause .kirin-review-cause-metrics{
    gap:4px!important;
  }
  .kirin-review-room #review-cause .kirin-review-cause-metric{
    padding:6px 7px!important;
  }
  .kirin-review-room #review-cause .kirin-review-cause-card{
    padding:8px 9px!important;
  }

  /* =========================================================
     RESULT MATCH / VERDICT — compact without hiding evidence
     ========================================================= */
  .kirin-review-room #review-cause .kirin-review-cause-verdict,
  .kirin-review-room .kirin-review-result-verdict,
  .kirin-review-room .kirin-review-verdict{
    min-height:0!important;
    padding:8px 9px!important;
  }

  /* =========================================================
     AI LEARNING — final pass
     ========================================================= */
  .kirin-review-room #review-learning .kirin-learning-summary,
  .kirin-review-room #review-learning .kirin-learning-timeline,
  .kirin-review-room #review-learning .kirin-learning-candidate,
  .kirin-review-room #review-learning .kirin-learning-plan{
    margin-top:6px!important;
  }

  .kirin-review-room #review-learning .kirin-learning-candidate{
    padding:9px!important;
  }
  .kirin-review-room #review-learning .kirin-learning-current-policy{
    margin-top:6px!important;
    padding-top:6px!important;
  }
  .kirin-review-room #review-learning .kirin-learning-plan-group{
    padding:7px 8px!important;
  }

  /* =========================================================
     PAGE RHYTHM / FOOTER
     ========================================================= */
  .kirin-review-room{
    gap:10px!important;
  }
  .kirin-review-room .kirin-review-panel{
    margin:0!important;
  }
  .kirin-review-room+.kirin-footer,
  .kirin-review-room~.kirin-footer{
    margin-top:12px!important;
  }
}


/* Sprint40 Review iPad portrait Phase4 — ticket + comparison exact fix */
@media (min-width:721px) and (max-width:1024px) and (orientation:portrait){

  /* =========================================================
     AI recommended tickets — exact current DOM contract only
     ========================================================= */
  .kirin-review-room .kirin-review-recommended-panel .kirin-ticket-grid{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:6px!important;
  }

  .kirin-review-room .kirin-review-recommended-panel .kirin-ticket-card{
    min-width:0!important;
    min-height:0!important;
    display:grid!important;
    grid-template-columns:auto minmax(0,1fr)!important;
    grid-template-areas:
      "type formation"
      "meta meta"!important;
    align-items:start!important;
    gap:5px 8px!important;
    padding:8px 9px!important;
  }

  .kirin-review-room .kirin-review-recommended-panel .kirin-ticket-card>strong{
    grid-area:type!important;
    align-self:start!important;
    min-width:max-content!important;
    white-space:nowrap!important;
    overflow-wrap:normal!important;
    word-break:keep-all!important;
    font-size:10px!important;
    line-height:1.3!important;
  }

  .kirin-review-room .kirin-review-recommended-panel .kirin-ticket-selections,
  .kirin-review-room .kirin-review-recommended-panel .kirin-ticket-formation{
    grid-area:formation!important;
    min-width:0!important;
    display:flex!important;
    flex-wrap:wrap!important;
    align-items:center!important;
    justify-content:flex-start!important;
    gap:4px!important;
    line-height:1.45!important;
    white-space:normal!important;
    overflow-wrap:normal!important;
    word-break:normal!important;
  }

  .kirin-review-room .kirin-review-recommended-panel .kirin-ticket-combination{
    display:inline-flex!important;
    align-items:center!important;
    gap:3px!important;
    flex-wrap:nowrap!important;
    width:auto!important;
    max-width:100%!important;
    min-width:0!important;
    padding:2px 4px!important;
    white-space:nowrap!important;
    overflow-wrap:normal!important;
    word-break:keep-all!important;
  }

  .kirin-review-room .kirin-review-recommended-panel .kirin-ticket-combination-separator,
  .kirin-review-room .kirin-review-recommended-panel .kirin-ticket-separator{
    flex:0 0 auto!important;
    white-space:nowrap!important;
    overflow-wrap:normal!important;
    word-break:keep-all!important;
  }

  .kirin-review-room .kirin-review-recommended-panel .kirin-ticket-card>small{
    grid-area:meta!important;
    min-width:0!important;
    white-space:normal!important;
    overflow-wrap:anywhere!important;
    word-break:normal!important;
    font-size:8px!important;
    line-height:1.35!important;
  }

  /* Undo Phase3 broad wrapping rules inside this panel. */
  .kirin-review-room .kirin-review-recommended-panel span{
    overflow-wrap:normal!important;
    word-break:normal!important;
  }

  /* Remove speculative broad wrapper grid from Phase3. */
  .kirin-review-room .kirin-review-recommended-panel>div:last-child{
    display:block!important;
  }
  .kirin-review-room .kirin-review-recommended-panel>div:last-child.kirin-ticket-grid{
    display:grid!important;
  }

  /* =========================================================
     Comparison — exact DIV-based current DOM
     ========================================================= */
  .kirin-review-room #review-compare{
    min-width:0!important;
    width:100%!important;
    max-width:100%!important;
    overflow:hidden!important;
  }

  .kirin-review-room #review-compare .kirin-review-comparison-detail{
    min-width:0!important;
    width:100%!important;
    max-width:100%!important;
    overflow:hidden!important;
  }

  .kirin-review-room #review-compare .kirin-review-comparison-table{
    display:grid!important;
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    overflow:hidden!important;
  }

  .kirin-review-room #review-compare .kirin-review-comparison-row{
    display:grid!important;
    grid-template-columns:minmax(0,1.8fr) 72px 72px 62px minmax(84px,.9fr)!important;
    align-items:center!important;
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    gap:5px!important;
    padding:6px 7px!important;
    box-sizing:border-box!important;
  }

  .kirin-review-room #review-compare .kirin-review-comparison-row>span{
    min-width:0!important;
    max-width:100%!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
    font-size:9px!important;
  }

  .kirin-review-room #review-compare .kirin-review-comparison-horse{
    display:flex!important;
    align-items:center!important;
    gap:5px!important;
    min-width:0!important;
    overflow:hidden!important;
  }

  .kirin-review-room #review-compare .kirin-review-comparison-horse>strong{
    min-width:0!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
  }

  .kirin-review-room #review-compare .kirin-review-comparison-verdict{
    min-width:0!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }

  /* Hide any horizontal scrollbar inherited from older wrappers. */
  .kirin-review-room #review-compare *{
    scrollbar-width:none!important;
  }
  .kirin-review-room #review-compare *::-webkit-scrollbar{
    display:none!important;
  }
}

/* Sprint40 iPad portrait Review Phase6 verified DOM fixes */
@media (min-width:721px) and (max-width:1024px) and (orientation:portrait){

  /* HEADER
     Renderer now uses renderRaceIdentity(model), exactly the same identity data contract as Home.
     Only density is adjusted here. */
  .kirin-review-room > .kirin-race-header{
    margin:0;
    padding:0;
    border:0;
    background:none;
  }
  .kirin-review-room > .kirin-race-header > .kirin-race-info{
    padding:14px 16px;
  }
  .kirin-review-room > .kirin-race-header .kirin-race-info__meta,
  .kirin-review-room > .kirin-race-header .kirin-race-info__summary{
    font-size:11px;
    line-height:1.35;
  }
  .kirin-review-room > .kirin-race-header .kirin-race-info__title{
    font-size:28px;
    line-height:1.15;
  }
  .kirin-review-room > .kirin-race-header > .kirin-status{
    top:14px;
    right:16px;
    padding:6px 9px;
    font-size:10px;
  }

  /* TOP 3 HORSE NUMBER CHIPS
     Actual DOM: .kirin-review-finisher > strong > .kirin-horse-number-chip.
     User contract: frame 1 numeral black; frames 2-8 numeral white. */
  .kirin-review-result-top-block .kirin-review-finisher > strong > .kirin-horse-number-chip{
    display:inline-grid !important;
    place-items:center !important;
    flex:0 0 26px !important;
    width:26px !important;
    min-width:26px !important;
    max-width:26px !important;
    height:26px !important;
    min-height:26px !important;
    max-height:26px !important;
    margin:0 7px 0 0 !important;
    padding:0 !important;
    font-size:11px !important;
    font-weight:900 !important;
    line-height:1 !important;
    letter-spacing:0 !important;
    writing-mode:horizontal-tb !important;
    text-orientation:mixed !important;
  }
  .kirin-review-result-top-block .kirin-horse-number-chip--frame-1{
    color:#111 !important;
  }
  .kirin-review-result-top-block .kirin-horse-number-chip--frame-2,
  .kirin-review-result-top-block .kirin-horse-number-chip--frame-3,
  .kirin-review-result-top-block .kirin-horse-number-chip--frame-4,
  .kirin-review-result-top-block .kirin-horse-number-chip--frame-5,
  .kirin-review-result-top-block .kirin-horse-number-chip--frame-6,
  .kirin-review-result-top-block .kirin-horse-number-chip--frame-7,
  .kirin-review-result-top-block .kirin-horse-number-chip--frame-8{
    color:#fff !important;
  }

  /* PAYOUTS
     Actual DOM from sprint33:
     .kirin-review-payout-group > div > p >
       .kirin-ticket-combination + em
     Keep the combination compact instead of stretching its horse numbers. */
  .kirin-review-result-payout-block .kirin-review-payout-group > div > p{
    display:grid !important;
    grid-template-columns:minmax(0,1fr) auto !important;
    align-items:center !important;
    column-gap:10px !important;
    margin:0 !important;
  }
  .kirin-review-result-payout-block .kirin-review-payout-group > div > p > .kirin-ticket-combination{
    display:inline-flex !important;
    align-items:center !important;
    justify-content:flex-start !important;
    justify-self:start !important;
    width:max-content !important;
    max-width:100% !important;
    min-width:0 !important;
    gap:2px !important;
    margin:0 !important;
    padding:0 !important;
    white-space:nowrap !important;
    letter-spacing:0 !important;
    word-spacing:0 !important;
  }
  .kirin-review-result-payout-block .kirin-ticket-combination > .kirin-ticket-separator{
    display:inline !important;
    flex:0 0 auto !important;
    width:auto !important;
    min-width:0 !important;
    margin:0 1px !important;
    padding:0 !important;
  }
  .kirin-review-result-payout-block .kirin-review-payout-group > div > p > em{
    justify-self:end !important;
    min-width:76px !important;
    white-space:nowrap !important;
  }

  /* AI RECOMMENDED TICKETS
     Actual DOM from Review renderer:
     .kirin-review-recommended-list >
       .kirin-review-recommended-row >
         strong + span + em
     Keep outer 2 columns, but stack the row internals by semantic role. */
  .kirin-review-recommended-panel .kirin-review-recommended-list{
    display:grid !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:8px !important;
    align-items:start !important;
  }
  .kirin-review-recommended-panel .kirin-review-recommended-row{
    display:grid !important;
    grid-template-columns:minmax(0,1fr) auto !important;
    grid-template-areas:
      "type state"
      "combo combo" !important;
    align-items:start !important;
    gap:6px 10px !important;
    min-width:0 !important;
    padding:11px 12px !important;
  }
  .kirin-review-recommended-panel .kirin-review-recommended-row > strong{
    grid-area:type !important;
    align-self:center !important;
    min-width:0 !important;
    margin:0 !important;
    white-space:nowrap !important;
    word-break:keep-all !important;
    overflow-wrap:normal !important;
  }
  .kirin-review-recommended-panel .kirin-review-recommended-row > em{
    grid-area:state !important;
    align-self:center !important;
    justify-self:end !important;
    margin:0 !important;
    white-space:nowrap !important;
  }
  .kirin-review-recommended-panel .kirin-review-recommended-row > span{
    grid-area:combo !important;
    display:block !important;
    width:100% !important;
    min-width:0 !important;
    margin:0 !important;
    padding:0 !important;
    font-size:12px !important;
    line-height:1.4 !important;
    letter-spacing:0 !important;
    word-break:normal !important;
    overflow-wrap:normal !important;
    white-space:normal !important;
  }
  .kirin-review-recommended-panel .kirin-review-recommended-row > span > small{
    display:block !important;
    margin:4px 0 0 !important;
    font-size:10px !important;
    line-height:1.35 !important;
    letter-spacing:0 !important;
    word-break:normal !important;
    overflow-wrap:break-word !important;
  }

  /* COMPARISON
     Actual DOM: mark is an optional direct <em>.
     When it is absent, reserve exactly the same mark width. */
  .kirin-review-comparison-table .kirin-review-comparison-horse{
    min-width:0 !important;
  }
  /* v9 removed stale no-em compensator: renderer always emits em */

  /* CAUSE ANALYSIS
     Actual DOM: .kirin-review-cause-card > ul > li.
     Sprint38 sets line-height:1.65; tighten only these two material lists. */
  #review-cause .kirin-review-cause-reasons .kirin-review-cause-card > small{
    margin-bottom:6px !important;
  }
  #review-cause .kirin-review-cause-reasons .kirin-review-cause-card > ul{
    display:grid !important;
    gap:2px !important;
    margin:0 !important;
    padding:0 !important;
  }
  #review-cause .kirin-review-cause-reasons .kirin-review-cause-card > ul > li{
    margin:0 !important;
    padding:0 !important;
    line-height:1.35 !important;
    letter-spacing:0 !important;
  }
}

/* Sprint40 iPad portrait Review HEADER GEOMETRY ONLY - shared contract */
@media (min-width:721px) and (max-width:1024px) and (orientation:portrait){

  /* Match the established shared page geometry used by Home / Analysis / Races / Settings.
     Do not alter Review header text/content. */
  .kirin-main > .kirin-review-room{
    width:100% !important;
    max-width:none !important;
    margin:0 !important;
    padding:0 !important;
    gap:10px !important;
    box-sizing:border-box !important;
  }

  .kirin-main > .kirin-review-room > .kirin-race-header{
    width:100% !important;
    max-width:none !important;
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
    border-radius:0 !important;
    background:none !important;
    box-sizing:border-box !important;
  }

  .kirin-main > .kirin-review-room > .kirin-race-header > .kirin-race-info{
    width:100% !important;
    max-width:none !important;
    margin:0 !important;
    padding:14px !important;
    box-sizing:border-box !important;
  }

  .kirin-main > .kirin-review-room > .kirin-race-header .kirin-race-info__meta,
  .kirin-main > .kirin-review-room > .kirin-race-header .kirin-race-info__summary{
    margin-left:0 !important;
    margin-right:0 !important;
    font-size:11px !important;
    line-height:1.35 !important;
  }

  .kirin-main > .kirin-review-room > .kirin-race-header .kirin-race-info__title{
    margin-left:0 !important;
    margin-right:0 !important;
    font-size:28px !important;
    line-height:1.15 !important;
  }
}

/* Sprint40 iPad portrait all-results exact 5-cell contract */
@media (min-width:721px) and (max-width:1024px) and (orientation:portrait){
  .kirin-review-all-results,
  .kirin-review-result-table{
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    overflow:hidden!important;
  }

  .kirin-review-result-row{
    display:grid!important;
    grid-template-columns:44px minmax(0,1fr) auto auto!important;
    grid-template-rows:auto!important;
    grid-template-areas:"rank horse odds time"!important;
    width:100%!important;
    min-width:0!important;
    min-height:0!important;
    height:auto!important;
    margin:0!important;
    padding:7px 8px!important;
    column-gap:10px!important;
    align-items:center!important;
  }

  .kirin-review-result-row>:nth-child(1){grid-area:rank!important}
  .kirin-review-result-row>:nth-child(2){grid-area:horse!important;min-width:0!important}
  .kirin-review-result-row>:nth-child(3){
    /* popularity: intentionally held per current PC decision */
    display:none!important;
  }
  .kirin-review-result-row>:nth-child(4){
    grid-area:odds!important;
    display:block!important;
    width:auto!important;
    min-width:0!important;
    white-space:nowrap!important;
    overflow:visible!important;
    text-overflow:clip!important;
    text-align:right!important;
  }
  .kirin-review-result-row>:nth-child(5){
    grid-area:time!important;
    display:block!important;
    width:auto!important;
    min-width:58px!important;
    white-space:nowrap!important;
    text-align:right!important;
    justify-self:end!important;
  }
}

/* Sprint40 iPad portrait all-results ODDS DOM retention */
@media (min-width:721px) and (max-width:1024px) and (orientation:portrait){
  .kirin-review-result-row{
    grid-template-columns:44px minmax(0,1fr) auto auto !important;
    grid-template-areas:"rank horse odds time" !important;
    align-items:center !important;
  }

  .kirin-review-result-row > :nth-child(1){grid-area:rank !important}
  .kirin-review-result-row > :nth-child(2){grid-area:horse !important}

  /* Popularity: deliberately held/hidden for now. */
  .kirin-review-result-row > :nth-child(3){
    display:none !important;
  }

  /* Win odds: independent visible DOM. */
  .kirin-review-result-row > :nth-child(4){
    grid-area:odds !important;
    display:block !important;
    width:auto !important;
    min-width:0 !important;
    max-width:none !important;
    white-space:nowrap !important;
    overflow:visible !important;
    text-overflow:clip !important;
    text-align:right !important;
    justify-self:end !important;
  }

  /* Time: last column, right aligned. */
  .kirin-review-result-row > :nth-child(5){
    grid-area:time !important;
    display:block !important;
    width:auto !important;
    min-width:58px !important;
    max-width:none !important;
    white-space:nowrap !important;
    text-align:right !important;
    justify-self:end !important;
  }
}

/* Sprint40 Review all-results stable 5-cell DOM device contracts */

/* iPad portrait: rank / horse / (popularity hidden) / odds / time */
@media (min-width:721px) and (max-width:1024px) and (orientation:portrait){
  .kirin-review-all-results .kirin-review-result-row{
    display:grid!important;
    grid-template-columns:32px minmax(0,1fr) auto auto!important;
    grid-template-areas:"rank horse odds time"!important;
    align-items:center!important;
    column-gap:6px!important;
  }
  .kirin-review-all-results .kirin-review-result-row>:nth-child(1){grid-area:rank!important}
  .kirin-review-all-results .kirin-review-result-row>:nth-child(2){grid-area:horse!important}
  .kirin-review-all-results .kirin-review-result-row>:nth-child(3){display:none!important}
  .kirin-review-all-results .kirin-review-result-row>:nth-child(4){
    grid-area:odds!important;
    display:block!important;
    visibility:visible!important;
    white-space:nowrap!important;
    text-align:right!important;
    overflow:visible!important;
    text-overflow:clip!important;
  }
  .kirin-review-all-results .kirin-review-result-row>:nth-child(5){
    grid-area:time!important;
    display:block!important;
    visibility:visible!important;
    min-width:58px!important;
    white-space:nowrap!important;
    text-align:right!important;
    justify-self:end!important;
  }
}

/* iPad landscape: same stable 5-cell DOM, with compact rank-to-horse spacing. */
@media (min-width:721px) and (max-width:1024px) and (orientation:landscape){
  .kirin-review-all-results,
  .kirin-review-result-table{
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    overflow:hidden!important;
  }

  .kirin-review-all-results .kirin-review-result-row{
    display:grid!important;
    grid-template-columns:32px minmax(0,1fr) 1px 82px 64px!important;
    grid-template-rows:auto!important;
    grid-template-areas:none!important;
    align-items:center!important;
    column-gap:6px!important;
    row-gap:0!important;
    min-width:0!important;
    width:100%!important;
    padding:7px 8px!important;
  }

  .kirin-review-all-results .kirin-review-result-row>:nth-child(1){
    grid-column:1!important;
    text-align:left!important;
  }
  .kirin-review-all-results .kirin-review-result-row>:nth-child(2){
    grid-column:2!important;
    min-width:0!important;
  }
  .kirin-review-all-results .kirin-review-result-row>:nth-child(3){
    grid-column:3!important;
    display:block!important;
    visibility:hidden!important;
    width:1px!important;
    min-width:1px!important;
    overflow:hidden!important;
  }
  .kirin-review-all-results .kirin-review-result-row>:nth-child(4){
    grid-column:4!important;
    display:block!important;
    visibility:visible!important;
    opacity:1!important;
    width:auto!important;
    min-width:0!important;
    white-space:nowrap!important;
    text-align:right!important;
    overflow:visible!important;
    text-overflow:clip!important;
  }
  .kirin-review-all-results .kirin-review-result-row>:nth-child(5){
    grid-column:5!important;
    display:block!important;
    visibility:visible!important;
    opacity:1!important;
    width:auto!important;
    min-width:58px!important;
    white-space:nowrap!important;
    text-align:right!important;
    justify-self:end!important;
    overflow:visible!important;
    text-overflow:clip!important;
    font-variant-numeric:tabular-nums!important;
  }
}

/* Sprint40 iPad landscape Review all-results horse-name single-line START */
/*
  Scope: iPad landscape only.
  Stable DOM contract remains:
  rank / horse / popularity / odds / time.
  Do not alter portrait, PC, iPhone, data, renderer, or normalizer.
*/
@media (min-width: 900px) and (max-width: 1100px) and (orientation: landscape) {
  .kirin-review-result-row > :nth-child(2) {
    min-width: 0 !important;
  }

  .kirin-review-result-row > :nth-child(2),
  .kirin-review-result-row > :nth-child(2) * {
    white-space: nowrap !important;
  }

  .kirin-review-result-row > :nth-child(2) {
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }
}
/* Sprint40 iPad landscape Review all-results horse-name single-line END */

/* Sprint40 iPad portrait Review cause materials two-column VERIFIED START */
/*
  VERIFIED against review-components-sprint37.js:
  .kirin-review-cause-reasons
    > .kirin-review-cause-card
    > .kirin-review-cause-card

  Scope: iPad portrait only.
  Typography remains unchanged.
*/
@media (min-width:721px) and (max-width:1024px) and (orientation:portrait){
  #review-cause .kirin-review-cause-reasons{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:10px!important;
    align-items:stretch!important;
  }

  #review-cause .kirin-review-cause-reasons > .kirin-review-cause-card{
    min-width:0!important;
    width:auto!important;
    margin:0!important;
  }
}
/* Sprint40 iPad portrait Review cause materials two-column VERIFIED END */

/* Sprint40 iPad landscape Review comparison/cause VERIFIED START */
/*
 VERIFIED DOM:
 .kirin-review-comparison-horse
   > optional em(mark)
   > b(number)
   > .kirin-review-ipad-horse-chip
   > strong(name)

 .kirin-review-cause-reasons
   > .kirin-review-cause-card
     > ul > li

 Scope: iPad landscape only.
*/
@media (min-width:900px) and (max-width:1100px) and (orientation:landscape){

  /* 1) 判断比較: reserve the same mark column even when the horse is unmarked. */
  .kirin-review-comparison-table .kirin-review-comparison-horse{
    display:grid!important;
    grid-template-columns:18px 30px minmax(0,1fr)!important;
    align-items:center!important;
    column-gap:6px!important;
    min-width:0!important;
  }

  .kirin-review-comparison-table .kirin-review-comparison-horse > em{
    grid-column:1!important;
    width:18px!important;
    min-width:18px!important;
    margin:0!important;
    text-align:center!important;
  }

  /* v9 removed stale no-em compensator: renderer always emits em */

  .kirin-review-comparison-table .kirin-review-comparison-horse > b{
    grid-column:2!important;
    margin:0!important;
  }

  .kirin-review-comparison-table .kirin-review-comparison-horse > .kirin-review-ipad-horse-chip{
    grid-column:2!important;
    margin:0!important;
  }

  .kirin-review-comparison-table .kirin-review-comparison-horse > strong{
    grid-column:3!important;
    min-width:0!important;
    margin:0!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }

  /* 2) 原因分析: tighten only the two material-list body texts. */
  #review-cause .kirin-review-cause-reasons > .kirin-review-cause-card > ul{
    margin:0!important;
    padding:0!important;
  }

  #review-cause .kirin-review-cause-reasons > .kirin-review-cause-card > ul > li{
    margin:0!important;
    padding:0!important;
    line-height:1.35!important;
    letter-spacing:0!important;
  }

  #review-cause .kirin-review-cause-reasons > .kirin-review-cause-card > small{
    margin-bottom:6px!important;
  }
}
/* Sprint40 iPad landscape Review comparison/cause VERIFIED END */

/* Sprint40 iPad portrait Review payout separator FINAL START */
/*
 VERIFIED renderer contract:
 pair/trio = hyphen, exacta/trifecta = arrow.
 Earlier shared ticket CSS can turn .kirin-ticket-separator into a hidden
 line-break node. In Review payout only, restore it as a visible inline glyph.
 Scope: iPad portrait only.
*/
@media (min-width:721px) and (max-width:1024px) and (orientation:portrait){

  .kirin-review-result-payout-block
  .kirin-review-payout-group
  .kirin-ticket-combination{
    display:inline-flex!important;
    align-items:center!important;
    justify-content:flex-start!important;
    gap:3px!important;
    width:max-content!important;
    max-width:100%!important;
    white-space:nowrap!important;
  }

  .kirin-review-result-payout-block
  .kirin-review-payout-group
  .kirin-ticket-combination
  > .kirin-ticket-separator{
    display:inline!important;
    flex:0 0 auto!important;
    flex-basis:auto!important;
    width:auto!important;
    min-width:0!important;
    height:auto!important;
    margin:0 1px!important;
    padding:0!important;
    overflow:visible!important;
    visibility:visible!important;
    opacity:1!important;
    line-height:inherit!important;
    color:inherit!important;
    font-size:inherit!important;
    font-weight:inherit!important;
    white-space:nowrap!important;
  }
}
/* Sprint40 iPad portrait Review payout separator FINAL END */

/* === Sprint40 iPad Review payout separator color parity START === */
/*
 * Review > 払戻 only.
 * Keep "-" / "→" visible and use the same foreground color as the
 * surrounding horse-number combination on both iPad orientations.
 * AI推奨馬券 and non-iPad layouts are intentionally out of scope.
 */
@media (min-width: 721px) and (max-width: 1180px) {
  .kirin-review-payout-group .kirin-ticket-combination .kirin-ticket-separator {
    display: inline !important;
    visibility: visible !important;
    color: inherit !important;
    opacity: 1 !important;
  }
}
/* === Sprint40 iPad Review payout separator color parity END === */

/* Sprint40 Review horse-line three-column alignment PORTRAIT START */
@media (min-width:721px) and (max-width:1024px) and (orientation:portrait){
  .kirin-review-room .kirin-review-horse-line{
    display:grid!important;
    grid-template-columns:16px 24px minmax(0,1fr)!important;
    align-items:center!important;
    column-gap:6px!important;
    min-width:0!important;
  }
  .kirin-review-room .kirin-review-horse-line>.kirin-review-prediction-mark{
    display:inline-grid!important;
    place-items:center!important;
    width:16px!important;
    min-width:16px!important;
    max-width:16px!important;
    margin:0!important;
    padding:0!important;
  }
  .kirin-review-room .kirin-review-horse-line>.kirin-review-prediction-mark--placeholder{
    visibility:hidden!important;
  }
  .kirin-review-room .kirin-review-horse-line>.kirin-horse-number-chip{
    justify-self:start!important;
    margin:0!important;
  }
  .kirin-review-room .kirin-review-horse-line>span:last-child{
    min-width:0!important;
    margin:0!important;
  }
}
/* Sprint40 Review horse-line three-column alignment PORTRAIT END */


/* === Sprint40 Review unmarked REAL DOM alignment START === */
@media (min-width:721px) and (max-width:1024px) and (orientation:portrait){
  /*
   * Actual renderer DOM:
   *   marked   = <em>mark</em><b>number</b><span chip hidden></span><strong>name</strong>
   *   unmarked =               <b>number</b><span chip hidden></span><strong>name</strong>
   *
   * Reserve the OPTIONAL direct <em> slot itself.
   * Previous patches targeted classes that do not exist in this renderer.
   */
  .kirin-review-room #review-compare .kirin-review-comparison-horse{
    display:grid!important;
    grid-template-columns:18px 22px minmax(0,1fr)!important;
    column-gap:5px!important;
    align-items:center!important;
  }
  .kirin-review-room #review-compare .kirin-review-comparison-horse>em{
    grid-column:1!important;
    grid-row:1!important;
    width:18px!important;
    min-width:18px!important;
    text-align:center!important;
  }
  .kirin-review-room #review-compare .kirin-review-comparison-horse>b{
    grid-column:2!important;
    grid-row:1!important;
    margin:0!important;
  }
  .kirin-review-room #review-compare .kirin-review-comparison-horse>strong{
    grid-column:3!important;
    grid-row:1!important;
    min-width:0!important;
  }
  /* v9 removed stale no-em compensator: renderer always emits em */
}
/* === Sprint40 Review unmarked REAL DOM alignment END === */
