/* ═══════════════════════════════════════════════════════════════════════════
   TACTIX — rate columns + the moved live-only control      [cols-20260831]

   A separate sheet, loaded after the polish sheet, for the same reason that
   one exists: tactix-extracted.css is 115KB on one line with no source and no
   build step, and tactix-polish-20260831.css belongs to another pack whose
   rollback would delete this along with it.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── the derived rate columns ─────────────────────────────────────────────
   Tabular figures so 1.50 and 12.00 line up in a column people scan
   vertically, and a narrow width because these sit between existing columns
   on a table that already scrolls on a phone. */
.st-table th[data-ld-sort="g_per_app"], .st-table td.st-col-rate,
.st-table th[data-ld-sort="g_per_90"],
.st-table th[data-ld-sort="a_per_app"], .st-table th[data-ld-sort="a_per_90"],
.st-table th[data-ld-sort="bp_per_app"], .st-table th[data-ld-sort="bp_per_90"],
.st-table th[data-ld-sort="booking_points"] {
  white-space: nowrap;
}
.st-table td { font-variant-numeric: tabular-nums; }

/* ── a rate computed on very few minutes ──────────────────────────────────
   ⚠ Faded, NOT hidden. Every row carries Mins beside the rate, so the reader
   can already see what it rests on; removing the value would be a bigger lie
   than showing it quietly. The threshold is named in the note under the
   table — styling alone should never be the only place a rule is stated. */
.st-table td.st-thin {
  opacity: .5;
  font-style: italic;
}

/* ── the note under each leader table ─────────────────────────────────── */
.st-ratenote {
  margin: 10px 2px 2px;
  font-size: 11.5px;
  line-height: 1.5;
  color: var(--muted2, #8896B3);
}

/* ── R2-move · the live-only checkbox on the saved-filters row ───────────
   margin-left:auto pushes it to the far right of the row, which is where
   Chris pointed. The save button keeps its natural place after the chips, so
   the two never contend for the same space — that contention was the whole
   reason the control was put elsewhere the first time. */
.lsp-savedfilters .lsp-liveonly-slot {
  margin-left: auto;
  flex: 0 0 auto;
}

/* The row previously only ever appeared alongside saved chips, so it carried
   no minimum height of its own. It is permanent now. */
.lsp-savedfilters { min-height: 44px; }   /* WCAG 2.5.8, and it stops the row
                                             collapsing when the label is the
                                             only hidden thing in it */

/* .tx-liveonly-field is now unused — the control is no longer in its own
   grid cell. The class stays defined in the polish sheet; nothing references
   it, and nothing should re-add it without reading the R2-move patch. */
